@isentinel/eslint-config 6.4.0 → 6.5.0

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/dist/cli.mjs CHANGED
@@ -83,7 +83,7 @@ function oxfmtConfigNamesIn(directory) {
83
83
  }
84
84
  //#endregion
85
85
  //#region package.json
86
- var version = "6.4.0";
86
+ var version = "6.5.0";
87
87
  var package_default = {
88
88
  name: "@isentinel/eslint-config",
89
89
  version,
package/dist/index.d.mts CHANGED
@@ -3410,6 +3410,9 @@ interface MainRuleDefaults {
3410
3410
  "ts/no-for-in-array": {
3411
3411
  "*": "error";
3412
3412
  };
3413
+ "ts/no-generated-empty-object-type": {
3414
+ "*": "error";
3415
+ };
3413
3416
  "ts/no-implied-eval": {
3414
3417
  "*": "error";
3415
3418
  };
@@ -3508,6 +3511,9 @@ interface MainRuleDefaults {
3508
3511
  "ts/no-unsafe-declaration-merging": {
3509
3512
  "*": "error";
3510
3513
  };
3514
+ "ts/no-unsafe-enum-assignment": {
3515
+ "*": "error";
3516
+ };
3511
3517
  "ts/no-unsafe-enum-comparison": {
3512
3518
  "*": "error";
3513
3519
  };
@@ -7211,222 +7217,222 @@ interface RuleOptions {
7211
7217
  'eslint-plugin/unique-test-case-names'?: Linter.RuleEntry<[]>;
7212
7218
  /**
7213
7219
  * Enforce arrow function return style based on line length
7214
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/arrow-return-style/documentation.md
7220
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/arrow-return-style/documentation.md
7215
7221
  */
7216
7222
  'flawless/arrow-return-style'?: Linter.RuleEntry<FlawlessArrowReturnStyle>;
7217
7223
  /**
7218
7224
  * Limit the Cognitive Complexity of each function
7219
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/cognitive-complexity/documentation.md
7225
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/cognitive-complexity/documentation.md
7220
7226
  */
7221
7227
  'flawless/cognitive-complexity'?: Linter.RuleEntry<FlawlessCognitiveComplexity>;
7222
7228
  /**
7223
7229
  * Disallow shorthand boolean JSX attributes
7224
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/jsx-shorthand-boolean/documentation.md
7230
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/jsx-shorthand-boolean/documentation.md
7225
7231
  */
7226
7232
  'flawless/jsx-shorthand-boolean'?: Linter.RuleEntry<[]>;
7227
7233
  /**
7228
7234
  * Enforce a consistent fragment form: the shorthand `<>...</>` or a named fragment
7229
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/jsx-shorthand-fragment/documentation.md
7235
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/jsx-shorthand-fragment/documentation.md
7230
7236
  */
7231
7237
  'flawless/jsx-shorthand-fragment'?: Linter.RuleEntry<FlawlessJsxShorthandFragment>;
7232
7238
  /**
7233
7239
  * Limit comments by word count
7234
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/max-comment-length/documentation.md
7240
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/max-comment-length/documentation.md
7235
7241
  */
7236
7242
  'flawless/max-comment-length'?: Linter.RuleEntry<FlawlessMaxCommentLength>;
7237
7243
  /**
7238
7244
  * Enforce a maximum number of lines of code in a function
7239
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/max-lines-per-function/documentation.md
7245
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/max-lines-per-function/documentation.md
7240
7246
  */
7241
7247
  'flawless/max-lines-per-function'?: Linter.RuleEntry<FlawlessMaxLinesPerFunction>;
7242
7248
  /**
7243
7249
  * Enforce naming conventions for everything across a codebase
7244
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/naming-convention/documentation.md
7250
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/naming-convention/documentation.md
7245
7251
  */
7246
7252
  'flawless/naming-convention'?: Linter.RuleEntry<FlawlessNamingConvention>;
7247
7253
  /**
7248
7254
  * Disallow conditional empty-object spreads
7249
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-conditional-empty-object-spread/documentation.md
7255
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-conditional-empty-object-spread/documentation.md
7250
7256
  */
7251
7257
  'flawless/no-conditional-empty-object-spread'?: Linter.RuleEntry<[]>;
7252
7258
  /**
7253
7259
  * Disallow conditional logic in tests
7254
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-conditional-in-test/documentation.md
7260
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-conditional-in-test/documentation.md
7255
7261
  */
7256
7262
  'flawless/no-conditional-in-test'?: Linter.RuleEntry<FlawlessNoConditionalInTest>;
7257
7263
  /**
7258
7264
  * Disallow em dashes in comments, strings, JSX text, and Markdown prose
7259
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-em-dash/documentation.md
7265
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-em-dash/documentation.md
7260
7266
  */
7261
7267
  'flawless/no-em-dash'?: Linter.RuleEntry<[]>;
7262
7268
  /**
7263
7269
  * Disallow anonymous arrow functions as export default declarations
7264
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-export-default-arrow/documentation.md
7270
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-export-default-arrow/documentation.md
7265
7271
  */
7266
7272
  'flawless/no-export-default-arrow'?: Linter.RuleEntry<[]>;
7267
7273
  /**
7268
7274
  * Disallow exact equality checks involving floating-point-sensitive values
7269
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-floating-point-equality/documentation.md
7275
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-floating-point-equality/documentation.md
7270
7276
  */
7271
7277
  'flawless/no-floating-point-equality'?: Linter.RuleEntry<[]>;
7272
7278
  /**
7273
7279
  * Disallow ignoring the result of a built-in method that has no side effects
7274
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-ignored-return/documentation.md
7280
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-ignored-return/documentation.md
7275
7281
  */
7276
7282
  'flawless/no-ignored-return'?: Linter.RuleEntry<FlawlessNoIgnoredReturn>;
7277
7283
  /**
7278
7284
  * Disallow equality assertions whose operands have types that can never be equal
7279
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-incompatible-assertion-types/documentation.md
7285
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-incompatible-assertion-types/documentation.md
7280
7286
  */
7281
7287
  'flawless/no-incompatible-assertion-types'?: Linter.RuleEntry<[]>;
7282
7288
  /**
7283
7289
  * Disallow syntactically established values from flowing into explicitly broad or anonymous target types that discard useful evidence
7284
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-known-value-widening/documentation.md
7290
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-known-value-widening/documentation.md
7285
7291
  */
7286
7292
  'flawless/no-known-value-widening'?: Linter.RuleEntry<[]>;
7287
7293
  /**
7288
7294
  * Disallow copying an iterable into an array only to `filter` or `map` it
7289
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-materialized-filter-map/documentation.md
7295
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-materialized-filter-map/documentation.md
7290
7296
  */
7291
7297
  'flawless/no-materialized-filter-map'?: Linter.RuleEntry<FlawlessNoMaterializedFilterMap>;
7292
7298
  /**
7293
7299
  * Disallow function parameters that accept any object shape
7294
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-object-parameters/documentation.md
7300
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-object-parameters/documentation.md
7295
7301
  */
7296
7302
  'flawless/no-object-parameters'?: Linter.RuleEntry<[]>;
7297
7303
  /**
7298
7304
  * Disallow tsconfig options that redundantly re-set a value already provided by an extended config
7299
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-redundant-tsconfig-options/documentation.md
7305
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-redundant-tsconfig-options/documentation.md
7300
7306
  */
7301
7307
  'flawless/no-redundant-tsconfig-options'?: Linter.RuleEntry<[]>;
7302
7308
  /**
7303
7309
  * Disallow type annotations that restate the initializer's own type
7304
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-redundant-type-annotation/documentation.md
7310
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-redundant-type-annotation/documentation.md
7305
7311
  */
7306
7312
  'flawless/no-redundant-type-annotation'?: Linter.RuleEntry<FlawlessNoRedundantTypeAnnotation>;
7307
7313
  /**
7308
7314
  * Disallow the two-argument `Reflect.get` in favour of typed property access
7309
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-reflect-get/documentation.md
7315
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-reflect-get/documentation.md
7310
7316
  */
7311
7317
  'flawless/no-reflect-get'?: Linter.RuleEntry<[]>;
7312
7318
  /**
7313
7319
  * Disallow `Reflect.set` with a compile-time-fixed key in favour of a plain assignment
7314
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-reflect-set/documentation.md
7320
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-reflect-set/documentation.md
7315
7321
  */
7316
7322
  'flawless/no-reflect-set'?: Linter.RuleEntry<[]>;
7317
7323
  /**
7318
7324
  * Disallow the term 'shape' in declared symbol names
7319
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-shape-in-symbol-names/documentation.md
7325
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-shape-in-symbol-names/documentation.md
7320
7326
  */
7321
7327
  'flawless/no-shape-in-symbol-names'?: Linter.RuleEntry<[]>;
7322
7328
  /**
7323
7329
  * Disallow mocks created once and shared between tests
7324
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-shared-mocks/documentation.md
7330
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-shared-mocks/documentation.md
7325
7331
  */
7326
7332
  'flawless/no-shared-mocks'?: Linter.RuleEntry<[]>;
7327
7333
  /**
7328
7334
  * Disallow state declared outside tests and written inside them
7329
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-shared-test-state/documentation.md
7335
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-shared-test-state/documentation.md
7330
7336
  */
7331
7337
  'flawless/no-shared-test-state'?: Linter.RuleEntry<FlawlessNoSharedTestState>;
7332
7338
  /**
7333
7339
  * Disallow rarely used top-level functions that only forward their parameters or read a parameter's property
7334
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-trivial-functions/documentation.md
7340
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-trivial-functions/documentation.md
7335
7341
  */
7336
7342
  'flawless/no-trivial-functions'?: Linter.RuleEntry<FlawlessNoTrivialFunctions>;
7337
7343
  /**
7338
7344
  * Disallow `unknown` function parameters outside type-predicate subjects and recorded error causes
7339
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unknown-parameters/documentation.md
7345
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unknown-parameters/documentation.md
7340
7346
  */
7341
7347
  'flawless/no-unknown-parameters'?: Linter.RuleEntry<[]>;
7342
7348
  /**
7343
7349
  * Disallow explicit return type annotations that resolve to `unknown`
7344
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unknown-returns/documentation.md
7350
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unknown-returns/documentation.md
7345
7351
  */
7346
7352
  'flawless/no-unknown-returns'?: Linter.RuleEntry<[]>;
7347
7353
  /**
7348
7354
  * Disallow unnecessary aliases when destructuring component props
7349
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unnecessary-prop-alias/documentation.md
7355
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unnecessary-prop-alias/documentation.md
7350
7356
  */
7351
7357
  'flawless/no-unnecessary-prop-alias'?: Linter.RuleEntry<FlawlessNoUnnecessaryPropAlias>;
7352
7358
  /**
7353
7359
  * Disallow unnecessary usage of 'useCallback'
7354
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unnecessary-use-callback/documentation.md
7360
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unnecessary-use-callback/documentation.md
7355
7361
  */
7356
7362
  'flawless/no-unnecessary-use-callback'?: Linter.RuleEntry<[]>;
7357
7363
  /**
7358
7364
  * Disallow unnecessary usage of 'useMemo'
7359
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unnecessary-use-memo/documentation.md
7365
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unnecessary-use-memo/documentation.md
7360
7366
  */
7361
7367
  'flawless/no-unnecessary-use-memo'?: Linter.RuleEntry<[]>;
7362
7368
  /**
7363
7369
  * Disallow unsafe object dictionary value types
7364
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unsafe-dictionary-type/documentation.md
7370
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unsafe-dictionary-type/documentation.md
7365
7371
  */
7366
7372
  'flawless/no-unsafe-dictionary-type'?: Linter.RuleEntry<[]>;
7367
7373
  /**
7368
7374
  * Enforce a blank line after `expect.assertions` and `expect.hasAssertions`
7369
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/padding-after-expect-assertions/documentation.md
7375
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/padding-after-expect-assertions/documentation.md
7370
7376
  */
7371
7377
  'flawless/padding-after-expect-assertions'?: Linter.RuleEntry<[]>;
7372
7378
  /**
7373
7379
  * Enforce destructuring assignment for component props
7374
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-destructuring-assignment/documentation.md
7380
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-destructuring-assignment/documentation.md
7375
7381
  */
7376
7382
  'flawless/prefer-destructuring-assignment'?: Linter.RuleEntry<[]>;
7377
7383
  /**
7378
7384
  * Prefer having the last statement in a test be an assertion
7379
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-ending-with-an-expect/documentation.md
7385
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-ending-with-an-expect/documentation.md
7380
7386
  */
7381
7387
  'flawless/prefer-ending-with-an-expect'?: Linter.RuleEntry<FlawlessPreferEndingWithAnExpect>;
7382
7388
  /**
7383
7389
  * Prefer `expect.assertions(<count>)` over `expect.hasAssertions()`
7384
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-expect-assertions-count/documentation.md
7390
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-expect-assertions-count/documentation.md
7385
7391
  */
7386
7392
  'flawless/prefer-expect-assertions-count'?: Linter.RuleEntry<[]>;
7387
7393
  /**
7388
7394
  * Prefer `mockThrow` / `mockThrowOnce` over a mock implementation that only throws
7389
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-mock-throw/documentation.md
7395
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-mock-throw/documentation.md
7390
7396
  */
7391
7397
  'flawless/prefer-mock-throw'?: Linter.RuleEntry<[]>;
7392
7398
  /**
7393
7399
  * Enforce destructuring parameters in the function signature
7394
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-parameter-destructuring/documentation.md
7400
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-parameter-destructuring/documentation.md
7395
7401
  */
7396
7402
  'flawless/prefer-parameter-destructuring'?: Linter.RuleEntry<FlawlessPreferParameterDestructuring>;
7397
7403
  /**
7398
7404
  * Enforce that function component props are read-only
7399
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-read-only-props/documentation.md
7405
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-read-only-props/documentation.md
7400
7406
  */
7401
7407
  'flawless/prefer-read-only-props'?: Linter.RuleEntry<FlawlessPreferReadOnlyProps>;
7402
7408
  /**
7403
7409
  * Prefer test-bound Vitest APIs from the local test context
7404
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-vitest-local-context/documentation.md
7410
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-vitest-local-context/documentation.md
7405
7411
  */
7406
7412
  'flawless/prefer-vitest-local-context'?: Linter.RuleEntry<FlawlessPreferVitestLocalContext>;
7407
7413
  /**
7408
7414
  * Disallow impure calls such as `math.random` or `os.clock` during render
7409
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/purity/documentation.md
7415
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/purity/documentation.md
7410
7416
  */
7411
7417
  'flawless/purity'?: Linter.RuleEntry<FlawlessPurity>;
7412
7418
  /**
7413
7419
  * Prefer named imports for React runtime values and the React namespace for React types
7414
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/react-namespace/documentation.md
7420
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/react-namespace/documentation.md
7415
7421
  */
7416
7422
  'flawless/react-namespace'?: Linter.RuleEntry<FlawlessReactNamespace>;
7417
7423
  /**
7418
7424
  * Enforce a configured sort order for TOML keys and tables
7419
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/toml-sort-keys/documentation.md
7425
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/toml-sort-keys/documentation.md
7420
7426
  */
7421
7427
  'flawless/toml-sort-keys'?: Linter.RuleEntry<FlawlessTomlSortKeys>;
7422
7428
  /**
7423
7429
  * Enforce blank lines around top-level YAML block collection keys
7424
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/yaml-block-key-blank-lines/documentation.md
7430
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/yaml-block-key-blank-lines/documentation.md
7425
7431
  */
7426
7432
  'flawless/yaml-block-key-blank-lines'?: Linter.RuleEntry<[]>;
7427
7433
  /**
7428
7434
  * Enforce sorted YAML sequences of mappings by a key
7429
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/yaml-sort-sequence-by-key/documentation.md
7435
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/yaml-sort-sequence-by-key/documentation.md
7430
7436
  */
7431
7437
  'flawless/yaml-sort-sequence-by-key'?: Linter.RuleEntry<FlawlessYamlSortSequenceByKey>;
7432
7438
  /**
@@ -14221,7 +14227,7 @@ interface RuleOptions {
14221
14227
  * Disallow awaiting a value that is not a Thenable
14222
14228
  * @see https://typescript-eslint.io/rules/await-thenable
14223
14229
  */
14224
- 'ts/await-thenable'?: Linter.RuleEntry<[]>;
14230
+ 'ts/await-thenable'?: Linter.RuleEntry<TsAwaitThenable>;
14225
14231
  /**
14226
14232
  * Disallow `@ts-<directive>` comments or require descriptions after directives
14227
14233
  * @see https://typescript-eslint.io/rules/ban-ts-comment
@@ -14418,6 +14424,11 @@ interface RuleOptions {
14418
14424
  * @see https://typescript-eslint.io/rules/no-for-in-array
14419
14425
  */
14420
14426
  'ts/no-for-in-array'?: Linter.RuleEntry<[]>;
14427
+ /**
14428
+ * Disallow type operations that resolve to the "empty object" type
14429
+ * @see https://typescript-eslint.io/rules/no-generated-empty-object-type
14430
+ */
14431
+ 'ts/no-generated-empty-object-type'?: Linter.RuleEntry<[]>;
14421
14432
  /**
14422
14433
  * Disallow the use of `eval()`-like functions
14423
14434
  * @see https://typescript-eslint.io/rules/no-implied-eval
@@ -14617,6 +14628,11 @@ interface RuleOptions {
14617
14628
  * @see https://typescript-eslint.io/rules/no-unsafe-declaration-merging
14618
14629
  */
14619
14630
  'ts/no-unsafe-declaration-merging'?: Linter.RuleEntry<[]>;
14631
+ /**
14632
+ * Disallow assigning non-enum values to enum typed locations
14633
+ * @see https://typescript-eslint.io/rules/no-unsafe-enum-assignment
14634
+ */
14635
+ 'ts/no-unsafe-enum-assignment'?: Linter.RuleEntry<[]>;
14620
14636
  /**
14621
14637
  * Disallow comparing an enum value with a non-enum value
14622
14638
  * @see https://typescript-eslint.io/rules/no-unsafe-enum-comparison
@@ -18086,15 +18102,7 @@ type FlawlessTomlSortKeys = {
18086
18102
  pathPattern: string;
18087
18103
  }[];
18088
18104
  // ----- flawless/yaml-sort-sequence-by-key -----
18089
- type FlawlessYamlSortSequenceByKey = [{
18090
- key: string;
18091
- order?: {
18092
- caseSensitive?: boolean;
18093
- natural?: boolean;
18094
- type?: ("asc" | "desc");
18095
- };
18096
- pathPattern: string;
18097
- }, ...({
18105
+ type FlawlessYamlSortSequenceByKey = {
18098
18106
  key: string;
18099
18107
  order?: {
18100
18108
  caseSensitive?: boolean;
@@ -18102,7 +18110,7 @@ type FlawlessYamlSortSequenceByKey = [{
18102
18110
  type?: ("asc" | "desc");
18103
18111
  };
18104
18112
  pathPattern: string;
18105
- })[]];
18113
+ }[];
18106
18114
  // ----- format-lua/stylua -----
18107
18115
  type FormatLuaStylua = [] | [{
18108
18116
  language?: string;
@@ -26293,6 +26301,10 @@ type TsArrayType = [] | [{
26293
26301
  default?: ("array" | "generic" | "array-simple");
26294
26302
  readonly?: ("array" | "generic" | "array-simple");
26295
26303
  }];
26304
+ // ----- ts/await-thenable -----
26305
+ type TsAwaitThenable = [] | [{
26306
+ allowMixedPromiseArrays?: boolean;
26307
+ }];
26296
26308
  // ----- ts/ban-ts-comment -----
26297
26309
  type TsBanTsComment = [] | [{
26298
26310
  minimumDescriptionLength?: number;
@@ -26865,7 +26877,9 @@ type TsNoMeaninglessVoidOperator = [] | [{
26865
26877
  }];
26866
26878
  // ----- ts/no-misused-promises -----
26867
26879
  type TsNoMisusedPromises = [] | [{
26868
- checksConditionals?: boolean;
26880
+ checksConditionals?: (boolean | {
26881
+ flagUnions?: ("all" | "strict" | "none");
26882
+ });
26869
26883
  checksSpreads?: boolean;
26870
26884
  checksVoidReturn?: (boolean | {
26871
26885
  arguments?: boolean;
@@ -29225,7 +29239,7 @@ declare function flawless(options?: FlawlessRuleOptions & OptionsOverridesTypeAw
29225
29239
  * linted as standard-TS/Node land.
29226
29240
  */
29227
29241
  complementIgnores?: Array<string>;
29228
- }, prettierOptions?: PrettierOptions): Promise<Array<TypedFlatConfigItem>>;
29242
+ }, prettierOptions?: PrettierOptions): Array<TypedFlatConfigItem>;
29229
29243
  //#endregion
29230
29244
  //#region src/eslint/configs/gitignore.d.ts
29231
29245
  interface GitignoreOptions {
@@ -29248,7 +29262,7 @@ declare function javascript({ complementIgnores, isInEditor, overrides, roblox,
29248
29262
  * standard-TS/Node land.
29249
29263
  */
29250
29264
  complementIgnores?: Array<string>;
29251
- }): Promise<Array<TypedFlatConfigItem>>;
29265
+ }): Array<TypedFlatConfigItem>;
29252
29266
  //#endregion
29253
29267
  //#region src/eslint/configs/jsdoc.d.ts
29254
29268
  declare function jsdoc({ full, stylistic, type }?: JsdocOptions & OptionsProjectType & OptionsStylistic): Array<TypedFlatConfigItem>;
@@ -29277,7 +29291,7 @@ declare const MARKDOWN_PROCESSOR_NAME = "@eslint/markdown/markdown";
29277
29291
  declare function markdown({ antiSlop, componentExts: componentExtensions, files, overrides, type }?: FlawlessRuleOptions & OptionsComponentExtensions & OptionsFiles & OptionsOverrides & OptionsProjectType): Array<TypedFlatConfigItem>;
29278
29292
  //#endregion
29279
29293
  //#region src/eslint/configs/naming.d.ts
29280
- declare function naming(options?: NamingConfig & OptionsTypeScriptParserOptions & OptionsTypeScriptWithTypes): Promise<Array<TypedFlatConfigItem>>;
29294
+ declare function naming(options?: NamingConfig & OptionsTypeScriptParserOptions & OptionsTypeScriptWithTypes): Array<TypedFlatConfigItem>;
29281
29295
  //#endregion
29282
29296
  //#region src/eslint/configs/node.d.ts
29283
29297
  declare function node({ files, ignores }?: OptionsFiles & {
@@ -29334,7 +29348,7 @@ declare function sonarjs({ complementIgnores, isInEditor, roblox }: OptionsHasRo
29334
29348
  * standard-TS/Node land.
29335
29349
  */
29336
29350
  complementIgnores?: Array<string>;
29337
- }): Promise<Array<TypedFlatConfigItem>>;
29351
+ }): Array<TypedFlatConfigItem>;
29338
29352
  //#endregion
29339
29353
  //#region src/eslint/configs/sort.d.ts
29340
29354
  /**
@@ -29352,7 +29366,7 @@ declare function sortGithubAction(): Array<TypedFlatConfigItem>;
29352
29366
  *
29353
29367
  * @returns A promise resolving to an array of flat configuration items.
29354
29368
  */
29355
- declare function sortMiseToml(): Promise<Array<TypedFlatConfigItem>>;
29369
+ declare function sortMiseToml(): Array<TypedFlatConfigItem>;
29356
29370
  declare function sortPnpmWorkspace(): Array<TypedFlatConfigItem>;
29357
29371
  /**
29358
29372
  * Sort Rojo .project.json files.
@@ -29411,7 +29425,7 @@ declare function unicorn({ complementIgnores, nameReplacements, roblox, root: cu
29411
29425
  */
29412
29426
  complementIgnores?: Array<string>;
29413
29427
  root?: Array<string>;
29414
- }): Promise<Array<TypedFlatConfigItem>>;
29428
+ }): Array<TypedFlatConfigItem>;
29415
29429
  //#endregion
29416
29430
  //#region src/eslint/configs/yaml.d.ts
29417
29431
  declare function yaml({ files, overrides, prettierOptions, stylistic }?: OptionsFiles & OptionsFormatters & OptionsOverrides & OptionsStylistic): Promise<Array<TypedFlatConfigItem>>;
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { createRequire } from "node:module";
1
+ import { createRequire, findPackageJSON } from "node:module";
2
2
  import { FlatConfigComposer } from "eslint-flat-config-utils";
3
3
  import { findUp, findUpSync } from "find-up-simple";
4
4
  import { isPackageExists } from "local-pkg";
@@ -10,8 +10,8 @@ import * as yamlESLintParser from "yaml-eslint-parser";
10
10
  import { VisitorKeys, getStaticYAMLValue, parseForESLint, parseYAML, traverseNodes } from "yaml-eslint-parser";
11
11
  import { isMainThread } from "node:worker_threads";
12
12
  import { minVersion } from "semver";
13
- import fs$1 from "node:fs/promises";
14
13
  import { fileURLToPath, pathToFileURL } from "node:url";
14
+ import fs$1 from "node:fs/promises";
15
15
  import globals from "globals";
16
16
  import { mergeProcessors, processorPassThrough } from "eslint-merge-processors";
17
17
  import { eslintCompatPlugin } from "@oxlint/plugins";
@@ -1894,9 +1894,13 @@ const hydrated = /* @__PURE__ */ new Set();
1894
1894
  * Register a plugin without loading it.
1895
1895
  *
1896
1896
  * **Register with `lazyPlugin`; reach for `interopDefault(import(...))` only
1897
- * when the config module reads the plugin object at composition time.** Today
1898
- * that is `stylistic.ts` (`configs.customize`) and `typescript.ts`
1899
- * (`pluginTs.configs`, spread into the rules) — everything else merely puts the
1897
+ * when the config module reads the plugin object at composition time**, as
1898
+ * `stylistic.ts` (`configs.customize`) and `typescript.ts` (`pluginTs.configs`,
1899
+ * spread into the rules) do. A module that registers such a prefix again must
1900
+ * reuse that eager object (`react.ts` with `ts`), because a prefix registered
1901
+ * twice has to be the same object. A package whose `exports` has only an
1902
+ * `import` condition (the `eslint-plugin-react-*` family) must also stay eager,
1903
+ * because `hydrate` loads with `require`. Everything else merely puts the
1900
1904
  * object in a `plugins` record, and reading it is ESLint's job. Parsers are the
1901
1905
  * standing exception and cannot use this at all: ESLint's
1902
1906
  * `languageOptionsSchema` merge calls `hasMethod` on `languageOptions.parser`,
@@ -1913,9 +1917,17 @@ const hydrated = /* @__PURE__ */ new Set();
1913
1917
  * the resolved rule set, so coverage is unchanged and the cost simply moves to
1914
1918
  * the run that needs it.
1915
1919
  *
1916
- * `name` and `meta` hydrate like any other property. `eslint --print-config`
1917
- * serializes both (but not `rules`) and so materializes everything; that is a
1918
- * separate short-lived process, and faking `meta` would change its output.
1920
+ * Plugin identity never hydrates. With `--cache`, ESLint hashes each file's
1921
+ * merged config, and `Config#toJSON()` reads every plugin's `name`, `version`
1922
+ * and `meta` (`getObjectId`) — on warm runs too, where no rule runs. So `meta`
1923
+ * answers `{ name, version }` from the package's `package.json`, and the
1924
+ * top-level `name` and `version` answer `undefined`. Once the plugin is
1925
+ * loaded, `meta` is the real one with the same `name` and `version` laid over
1926
+ * it, so the cache hash is the same before and after hydration. A package
1927
+ * whose nearest `package.json` has no `name` and `version` gets its real
1928
+ * `meta`, which loads it. The cost: `eslint --print-config` prints the package
1929
+ * name and version, which differ from the plugin's own `meta` for a few
1930
+ * plugins (`antfu`, `small-rules`).
1919
1931
  *
1920
1932
  * @template T - The plugin's shape. Registration-only call sites can leave this
1921
1933
  * as the untyped default; where the module reads the object, `import type`
@@ -1931,17 +1943,34 @@ function lazyPlugin(specifier, transform) {
1931
1943
  const existing = proxies.get(specifier);
1932
1944
  if (existing !== void 0) return existing;
1933
1945
  let plugin;
1946
+ /** `false` once the `package.json` turned out to have no identity. */
1947
+ let identity;
1948
+ let loadedMeta;
1934
1949
  function load() {
1935
1950
  plugin ??= hydrate(specifier, transform);
1936
1951
  return plugin;
1937
1952
  }
1953
+ function identityMeta() {
1954
+ identity ??= readIdentity(specifier) ?? false;
1955
+ if (identity === false) return Reflect.get(load(), "meta");
1956
+ if (plugin === void 0) return identity;
1957
+ if (loadedMeta === void 0) {
1958
+ const real = Reflect.get(plugin, "meta");
1959
+ loadedMeta = {
1960
+ ...isRecord(real) ? real : {},
1961
+ ...identity
1962
+ };
1963
+ }
1964
+ return loadedMeta;
1965
+ }
1938
1966
  const proxy = new Proxy({}, {
1939
1967
  defineProperty: (_target, property, descriptor) => {
1940
1968
  return Reflect.defineProperty(load(), property, descriptor);
1941
1969
  },
1942
1970
  deleteProperty: (_target, property) => Reflect.deleteProperty(load(), property),
1943
1971
  get: (_target, property) => {
1944
- if (property === "then") return;
1972
+ if (property === "then" || property === "name" || property === "version") return;
1973
+ if (property === "meta") return identityMeta();
1945
1974
  return Reflect.get(load(), property);
1946
1975
  },
1947
1976
  getOwnPropertyDescriptor: (_target, property) => {
@@ -1960,6 +1989,23 @@ function lazyPlugin(specifier, transform) {
1960
1989
  return proxy;
1961
1990
  }
1962
1991
  /**
1992
+ * Read a plugin's identity from the `package.json` nearest to the entry that
1993
+ * `hydrate` would load. This resolves the specifier but does not load it.
1994
+ *
1995
+ * @param specifier - The plugin package.
1996
+ * @returns The package name and version, or `undefined` when the nearest
1997
+ * `package.json` does not have both.
1998
+ */
1999
+ function readIdentity(specifier) {
2000
+ const manifestPath = findPackageJSON(pathToFileURL(require$2.resolve(specifier)));
2001
+ const manifest = manifestPath === void 0 ? void 0 : require$2(manifestPath);
2002
+ if (!isRecord(manifest) || typeof manifest["name"] !== "string" || typeof manifest["version"] !== "string") return;
2003
+ return {
2004
+ name: manifest["name"],
2005
+ version: manifest["version"]
2006
+ };
2007
+ }
2008
+ /**
1963
2009
  * Load a plugin synchronously. `engines.node` is `>=24.15.0`, where
1964
2010
  * `require(esm)` is stable, so the ESM-only plugins need no async fallback.
1965
2011
  *
@@ -2413,9 +2459,9 @@ function antiSlopTypeAwareRules({ roblox = true }) {
2413
2459
  //#endregion
2414
2460
  //#region src/eslint/configs/flawless.ts
2415
2461
  init_globs();
2416
- async function flawless(options = {}, prettierOptions = {}) {
2462
+ function flawless(options = {}, prettierOptions = {}) {
2417
2463
  const { antiSlop = false, complementIgnores, overridesTypeAware = {}, roblox = true, stylistic = true, typeAware = true } = options;
2418
- const eslintPluginFlawless = await interopDefault(import("eslint-plugin-flawless"));
2464
+ const eslintPluginFlawless = lazyPlugin("eslint-plugin-flawless");
2419
2465
  const filesTypeAware = [GLOB_TS, GLOB_TSX];
2420
2466
  const ignoresTypeAware = options.ignoresTypeAware ?? [`**/*.md/**`, "**/*.d.{,c,m}ts"];
2421
2467
  const isTypeAware = (typeAware ? getTsConfig(options.tsconfigPath) : void 0) !== void 0;
@@ -2958,11 +3004,11 @@ function javascriptRules({ isInEditor = false, roblox = true, stylistic = true }
2958
3004
  //#endregion
2959
3005
  //#region src/eslint/configs/javascript.ts
2960
3006
  init_globs();
2961
- async function javascript({ complementIgnores, isInEditor = false, overrides = {}, roblox = true, stylistic = true } = {}) {
3007
+ function javascript({ complementIgnores, isInEditor = false, overrides = {}, roblox = true, stylistic = true } = {}) {
2962
3008
  const pluginAntfu = lazyPlugin("eslint-plugin-antfu");
2963
3009
  const pluginDeMorgan = lazyPlugin("eslint-plugin-de-morgan");
2964
3010
  const pluginMaxParameters = lazyPlugin("eslint-plugin-better-max-params");
2965
- const pluginUnusedImports = await interopDefault(import("eslint-plugin-unused-imports"));
3011
+ const pluginUnusedImports = lazyPlugin("eslint-plugin-unused-imports");
2966
3012
  const idLengthRules = stylistic !== false ? { "id-length": ["error", ID_LENGTH_OPTIONS] } : {};
2967
3013
  return [
2968
3014
  {
@@ -3507,9 +3553,9 @@ const REACT_ELEMENT_RETURN_TYPES = [{ returns: {
3507
3553
  name: "ReactNode",
3508
3554
  from: RBXTS_REACT
3509
3555
  } }];
3510
- async function naming(options = {}) {
3556
+ function naming(options = {}) {
3511
3557
  const { allowedWords = false, overridesTypeAware = {}, roblox: isRoblox = true, selectors = [], selectorsTsx = [], typeAware = true } = options;
3512
- const eslintPluginFlawless = await interopDefault(import("eslint-plugin-flawless"));
3558
+ const eslintPluginFlawless = lazyPlugin("eslint-plugin-flawless");
3513
3559
  const configuredWords = allowedWords === true ? ROBLOX_ALLOWED_WORDS : allowedWords;
3514
3560
  const words = configuredWords === false || configuredWords.length === 0 ? void 0 : configuredWords;
3515
3561
  const tsFilesTypeAware = [GLOB_TS];
@@ -4938,13 +4984,13 @@ async function react(options = {}) {
4938
4984
  if (testing) await ensurePackages(["eslint-plugin-testing-library"]);
4939
4985
  const pluginSmallRules = loadSmallRulesPlugin();
4940
4986
  const pluginStylistic = lazyPlugin("@stylistic/eslint-plugin");
4941
- const [pluginReactCore, pluginReactJsx, pluginFlawless, pluginTs, pluginUnicorn, pluginUnusedImports] = await Promise.all([
4987
+ const pluginUnicorn = lazyPlugin("eslint-plugin-unicorn");
4988
+ const pluginFlawless = lazyPlugin("eslint-plugin-flawless");
4989
+ const pluginUnusedImports = lazyPlugin("eslint-plugin-unused-imports");
4990
+ const [pluginReactCore, pluginReactJsx, pluginTs] = await Promise.all([
4942
4991
  interopDefault(import("eslint-plugin-react-x")),
4943
4992
  interopDefault(import("eslint-plugin-react-jsx")),
4944
- interopDefault(import("eslint-plugin-flawless")),
4945
- interopDefault(import("@typescript-eslint/eslint-plugin")),
4946
- interopDefault(import("eslint-plugin-unicorn")),
4947
- interopDefault(import("eslint-plugin-unused-imports"))
4993
+ interopDefault(import("@typescript-eslint/eslint-plugin"))
4948
4994
  ]);
4949
4995
  const isTypeAware = (typeAware ? getTsConfig(options.tsconfigPath) : void 0) !== void 0;
4950
4996
  const reactSettings = {
@@ -4978,7 +5024,7 @@ async function react(options = {}) {
4978
5024
  }] : [],
4979
5025
  ...testing ? [{
4980
5026
  name: "isentinel/react/setup/testing-library",
4981
- plugins: { "testing-library": await interopDefault(import("eslint-plugin-testing-library")) }
5027
+ plugins: { "testing-library": lazyPlugin("eslint-plugin-testing-library") }
4982
5028
  }] : [],
4983
5029
  {
4984
5030
  name: "isentinel/react/rules",
@@ -5224,10 +5270,10 @@ function sonarjsTestRules({ jest = false, roblox = true } = {}) {
5224
5270
  //#endregion
5225
5271
  //#region src/eslint/configs/sonarjs.ts
5226
5272
  init_globs();
5227
- async function sonarjs({ complementIgnores, isInEditor, roblox }) {
5273
+ function sonarjs({ complementIgnores, isInEditor, roblox }) {
5228
5274
  return [{
5229
5275
  name: "isentinel/sonarjs",
5230
- plugins: { sonar: await interopDefault(import("eslint-plugin-sonarjs")) },
5276
+ plugins: { sonar: lazyPlugin("eslint-plugin-sonarjs") },
5231
5277
  rules: sonarjsRules({
5232
5278
  isInEditor,
5233
5279
  roblox
@@ -5577,8 +5623,8 @@ function sortGithubAction() {
5577
5623
  *
5578
5624
  * @returns A promise resolving to an array of flat configuration items.
5579
5625
  */
5580
- async function sortMiseToml() {
5581
- const eslintPluginFlawless = await interopDefault(import("eslint-plugin-flawless"));
5626
+ function sortMiseToml() {
5627
+ const eslintPluginFlawless = lazyPlugin("eslint-plugin-flawless");
5582
5628
  return [{
5583
5629
  name: "isentinel/sort/mise-toml",
5584
5630
  files: [...GLOB_MISE],
@@ -6711,6 +6757,7 @@ function typescriptTypeAwareRules({ roblox = true } = {}) {
6711
6757
  ignoreVoid: true
6712
6758
  }],
6713
6759
  "ts/no-for-in-array": "error",
6760
+ "ts/no-generated-empty-object-type": "error",
6714
6761
  "ts/no-implied-eval": "error",
6715
6762
  "ts/no-meaningless-void-operator": "error",
6716
6763
  "ts/no-misused-promises": "error",
@@ -6730,6 +6777,7 @@ function typescriptTypeAwareRules({ roblox = true } = {}) {
6730
6777
  "ts/no-unsafe-argument": "error",
6731
6778
  "ts/no-unsafe-assignment": "error",
6732
6779
  "ts/no-unsafe-call": "error",
6780
+ "ts/no-unsafe-enum-assignment": "error",
6733
6781
  "ts/no-unsafe-enum-comparison": "error",
6734
6782
  "ts/no-unsafe-member-access": "error",
6735
6783
  "ts/no-unsafe-return": "error",
@@ -7055,8 +7103,8 @@ function unicornRootRules(options = {}) {
7055
7103
  //#endregion
7056
7104
  //#region src/eslint/configs/unicorn.ts
7057
7105
  init_globs();
7058
- async function unicorn({ complementIgnores, nameReplacements, roblox = true, root: customRootGlobs, stylistic = true } = {}) {
7059
- const pluginUnicorn = await interopDefault(import("eslint-plugin-unicorn"));
7106
+ function unicorn({ complementIgnores, nameReplacements, roblox = true, root: customRootGlobs, stylistic = true } = {}) {
7107
+ const pluginUnicorn = lazyPlugin("eslint-plugin-unicorn");
7060
7108
  const rootGlobs = mergeGlobs(GLOB_ROOT.map(toSourceGlob), customRootGlobs?.map(toSourceGlob));
7061
7109
  return [
7062
7110
  {
@@ -16189,11 +16237,8 @@ var init_lib = __esmMin((() => {
16189
16237
  //#region src/eslint/configs/yaml.ts
16190
16238
  init_globs();
16191
16239
  async function yaml({ files = [GLOB_YAML, "**/github-actions-workflow"], overrides = {}, prettierOptions = {}, stylistic = true } = {}) {
16192
- const [pluginYaml, parserYaml, eslintPluginFlawless] = await Promise.all([
16193
- interopDefault(Promise.resolve().then(() => (init_lib(), lib_exports))),
16194
- interopDefault(import("yaml-eslint-parser")),
16195
- interopDefault(import("eslint-plugin-flawless"))
16196
- ]);
16240
+ const eslintPluginFlawless = lazyPlugin("eslint-plugin-flawless");
16241
+ const [pluginYaml, parserYaml] = await Promise.all([interopDefault(Promise.resolve().then(() => (init_lib(), lib_exports))), interopDefault(import("yaml-eslint-parser"))]);
16197
16242
  return [{
16198
16243
  name: "isentinel/yaml/setup",
16199
16244
  plugins: {
@@ -16421,6 +16466,7 @@ const typeAwareRuleIds = /* @__PURE__ */ new Set([
16421
16466
  "ts/no-duplicate-type-constituents",
16422
16467
  "ts/no-floating-promises",
16423
16468
  "ts/no-for-in-array",
16469
+ "ts/no-generated-empty-object-type",
16424
16470
  "ts/no-implied-eval",
16425
16471
  "ts/no-meaningless-void-operator",
16426
16472
  "ts/no-misused-promises",
@@ -16438,6 +16484,7 @@ const typeAwareRuleIds = /* @__PURE__ */ new Set([
16438
16484
  "ts/no-unsafe-argument",
16439
16485
  "ts/no-unsafe-assignment",
16440
16486
  "ts/no-unsafe-call",
16487
+ "ts/no-unsafe-enum-assignment",
16441
16488
  "ts/no-unsafe-enum-comparison",
16442
16489
  "ts/no-unsafe-member-access",
16443
16490
  "ts/no-unsafe-return",
@@ -18196,6 +18243,7 @@ var init_oxlint_capabilities = __esmMin((() => {
18196
18243
  "ts/no-extraneous-class",
18197
18244
  "ts/no-floating-promises",
18198
18245
  "ts/no-for-in-array",
18246
+ "ts/no-generated-empty-object-type",
18199
18247
  "ts/no-implied-eval",
18200
18248
  "ts/no-import-type-side-effects",
18201
18249
  "ts/no-inferrable-types",
@@ -18235,6 +18283,7 @@ var init_oxlint_capabilities = __esmMin((() => {
18235
18283
  "ts/no-unsafe-assignment",
18236
18284
  "ts/no-unsafe-call",
18237
18285
  "ts/no-unsafe-declaration-merging",
18286
+ "ts/no-unsafe-enum-assignment",
18238
18287
  "ts/no-unsafe-enum-comparison",
18239
18288
  "ts/no-unsafe-function-type",
18240
18289
  "ts/no-unsafe-member-access",
@@ -18827,6 +18876,7 @@ var init_oxlint_capabilities = __esmMin((() => {
18827
18876
  "ts/no-duplicate-type-constituents",
18828
18877
  "ts/no-floating-promises",
18829
18878
  "ts/no-for-in-array",
18879
+ "ts/no-generated-empty-object-type",
18830
18880
  "ts/no-implied-eval",
18831
18881
  "ts/no-meaningless-void-operator",
18832
18882
  "ts/no-misused-promises",
@@ -18844,6 +18894,7 @@ var init_oxlint_capabilities = __esmMin((() => {
18844
18894
  "ts/no-unsafe-argument",
18845
18895
  "ts/no-unsafe-assignment",
18846
18896
  "ts/no-unsafe-call",
18897
+ "ts/no-unsafe-enum-assignment",
18847
18898
  "ts/no-unsafe-enum-comparison",
18848
18899
  "ts/no-unsafe-member-access",
18849
18900
  "ts/no-unsafe-return",
@@ -19450,6 +19501,7 @@ var init_oxlint_capabilities = __esmMin((() => {
19450
19501
  "ts/no-extraneous-class",
19451
19502
  "ts/no-floating-promises",
19452
19503
  "ts/no-for-in-array",
19504
+ "ts/no-generated-empty-object-type",
19453
19505
  "ts/no-implied-eval",
19454
19506
  "ts/no-import-type-side-effects",
19455
19507
  "ts/no-inferrable-types",
@@ -19482,6 +19534,7 @@ var init_oxlint_capabilities = __esmMin((() => {
19482
19534
  "ts/no-unsafe-assignment",
19483
19535
  "ts/no-unsafe-call",
19484
19536
  "ts/no-unsafe-declaration-merging",
19537
+ "ts/no-unsafe-enum-assignment",
19485
19538
  "ts/no-unsafe-enum-comparison",
19486
19539
  "ts/no-unsafe-function-type",
19487
19540
  "ts/no-unsafe-member-access",
package/dist/lint-cli.mjs CHANGED
@@ -42,7 +42,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
42
42
  }) : target, mod));
43
43
  //#endregion
44
44
  //#region package.json
45
- var version = "6.4.0";
45
+ var version = "6.5.0";
46
46
  //#endregion
47
47
  //#region src/lint-cli/lib/cli/types.ts
48
48
  /**
package/dist/oxlint.d.mts CHANGED
@@ -4534,222 +4534,222 @@ interface RuleOptions {
4534
4534
  'eslint-plugin/unique-test-case-names'?: Linter.RuleEntry<[]>;
4535
4535
  /**
4536
4536
  * Enforce arrow function return style based on line length
4537
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/arrow-return-style/documentation.md
4537
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/arrow-return-style/documentation.md
4538
4538
  */
4539
4539
  'flawless/arrow-return-style'?: Linter.RuleEntry<FlawlessArrowReturnStyle>;
4540
4540
  /**
4541
4541
  * Limit the Cognitive Complexity of each function
4542
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/cognitive-complexity/documentation.md
4542
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/cognitive-complexity/documentation.md
4543
4543
  */
4544
4544
  'flawless/cognitive-complexity'?: Linter.RuleEntry<FlawlessCognitiveComplexity>;
4545
4545
  /**
4546
4546
  * Disallow shorthand boolean JSX attributes
4547
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/jsx-shorthand-boolean/documentation.md
4547
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/jsx-shorthand-boolean/documentation.md
4548
4548
  */
4549
4549
  'flawless/jsx-shorthand-boolean'?: Linter.RuleEntry<[]>;
4550
4550
  /**
4551
4551
  * Enforce a consistent fragment form: the shorthand `<>...</>` or a named fragment
4552
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/jsx-shorthand-fragment/documentation.md
4552
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/jsx-shorthand-fragment/documentation.md
4553
4553
  */
4554
4554
  'flawless/jsx-shorthand-fragment'?: Linter.RuleEntry<FlawlessJsxShorthandFragment>;
4555
4555
  /**
4556
4556
  * Limit comments by word count
4557
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/max-comment-length/documentation.md
4557
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/max-comment-length/documentation.md
4558
4558
  */
4559
4559
  'flawless/max-comment-length'?: Linter.RuleEntry<FlawlessMaxCommentLength>;
4560
4560
  /**
4561
4561
  * Enforce a maximum number of lines of code in a function
4562
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/max-lines-per-function/documentation.md
4562
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/max-lines-per-function/documentation.md
4563
4563
  */
4564
4564
  'flawless/max-lines-per-function'?: Linter.RuleEntry<FlawlessMaxLinesPerFunction>;
4565
4565
  /**
4566
4566
  * Enforce naming conventions for everything across a codebase
4567
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/naming-convention/documentation.md
4567
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/naming-convention/documentation.md
4568
4568
  */
4569
4569
  'flawless/naming-convention'?: Linter.RuleEntry<FlawlessNamingConvention>;
4570
4570
  /**
4571
4571
  * Disallow conditional empty-object spreads
4572
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-conditional-empty-object-spread/documentation.md
4572
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-conditional-empty-object-spread/documentation.md
4573
4573
  */
4574
4574
  'flawless/no-conditional-empty-object-spread'?: Linter.RuleEntry<[]>;
4575
4575
  /**
4576
4576
  * Disallow conditional logic in tests
4577
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-conditional-in-test/documentation.md
4577
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-conditional-in-test/documentation.md
4578
4578
  */
4579
4579
  'flawless/no-conditional-in-test'?: Linter.RuleEntry<FlawlessNoConditionalInTest>;
4580
4580
  /**
4581
4581
  * Disallow em dashes in comments, strings, JSX text, and Markdown prose
4582
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-em-dash/documentation.md
4582
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-em-dash/documentation.md
4583
4583
  */
4584
4584
  'flawless/no-em-dash'?: Linter.RuleEntry<[]>;
4585
4585
  /**
4586
4586
  * Disallow anonymous arrow functions as export default declarations
4587
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-export-default-arrow/documentation.md
4587
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-export-default-arrow/documentation.md
4588
4588
  */
4589
4589
  'flawless/no-export-default-arrow'?: Linter.RuleEntry<[]>;
4590
4590
  /**
4591
4591
  * Disallow exact equality checks involving floating-point-sensitive values
4592
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-floating-point-equality/documentation.md
4592
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-floating-point-equality/documentation.md
4593
4593
  */
4594
4594
  'flawless/no-floating-point-equality'?: Linter.RuleEntry<[]>;
4595
4595
  /**
4596
4596
  * Disallow ignoring the result of a built-in method that has no side effects
4597
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-ignored-return/documentation.md
4597
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-ignored-return/documentation.md
4598
4598
  */
4599
4599
  'flawless/no-ignored-return'?: Linter.RuleEntry<FlawlessNoIgnoredReturn>;
4600
4600
  /**
4601
4601
  * Disallow equality assertions whose operands have types that can never be equal
4602
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-incompatible-assertion-types/documentation.md
4602
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-incompatible-assertion-types/documentation.md
4603
4603
  */
4604
4604
  'flawless/no-incompatible-assertion-types'?: Linter.RuleEntry<[]>;
4605
4605
  /**
4606
4606
  * Disallow syntactically established values from flowing into explicitly broad or anonymous target types that discard useful evidence
4607
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-known-value-widening/documentation.md
4607
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-known-value-widening/documentation.md
4608
4608
  */
4609
4609
  'flawless/no-known-value-widening'?: Linter.RuleEntry<[]>;
4610
4610
  /**
4611
4611
  * Disallow copying an iterable into an array only to `filter` or `map` it
4612
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-materialized-filter-map/documentation.md
4612
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-materialized-filter-map/documentation.md
4613
4613
  */
4614
4614
  'flawless/no-materialized-filter-map'?: Linter.RuleEntry<FlawlessNoMaterializedFilterMap>;
4615
4615
  /**
4616
4616
  * Disallow function parameters that accept any object shape
4617
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-object-parameters/documentation.md
4617
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-object-parameters/documentation.md
4618
4618
  */
4619
4619
  'flawless/no-object-parameters'?: Linter.RuleEntry<[]>;
4620
4620
  /**
4621
4621
  * Disallow tsconfig options that redundantly re-set a value already provided by an extended config
4622
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-redundant-tsconfig-options/documentation.md
4622
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-redundant-tsconfig-options/documentation.md
4623
4623
  */
4624
4624
  'flawless/no-redundant-tsconfig-options'?: Linter.RuleEntry<[]>;
4625
4625
  /**
4626
4626
  * Disallow type annotations that restate the initializer's own type
4627
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-redundant-type-annotation/documentation.md
4627
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-redundant-type-annotation/documentation.md
4628
4628
  */
4629
4629
  'flawless/no-redundant-type-annotation'?: Linter.RuleEntry<FlawlessNoRedundantTypeAnnotation>;
4630
4630
  /**
4631
4631
  * Disallow the two-argument `Reflect.get` in favour of typed property access
4632
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-reflect-get/documentation.md
4632
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-reflect-get/documentation.md
4633
4633
  */
4634
4634
  'flawless/no-reflect-get'?: Linter.RuleEntry<[]>;
4635
4635
  /**
4636
4636
  * Disallow `Reflect.set` with a compile-time-fixed key in favour of a plain assignment
4637
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-reflect-set/documentation.md
4637
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-reflect-set/documentation.md
4638
4638
  */
4639
4639
  'flawless/no-reflect-set'?: Linter.RuleEntry<[]>;
4640
4640
  /**
4641
4641
  * Disallow the term 'shape' in declared symbol names
4642
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-shape-in-symbol-names/documentation.md
4642
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-shape-in-symbol-names/documentation.md
4643
4643
  */
4644
4644
  'flawless/no-shape-in-symbol-names'?: Linter.RuleEntry<[]>;
4645
4645
  /**
4646
4646
  * Disallow mocks created once and shared between tests
4647
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-shared-mocks/documentation.md
4647
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-shared-mocks/documentation.md
4648
4648
  */
4649
4649
  'flawless/no-shared-mocks'?: Linter.RuleEntry<[]>;
4650
4650
  /**
4651
4651
  * Disallow state declared outside tests and written inside them
4652
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-shared-test-state/documentation.md
4652
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-shared-test-state/documentation.md
4653
4653
  */
4654
4654
  'flawless/no-shared-test-state'?: Linter.RuleEntry<FlawlessNoSharedTestState>;
4655
4655
  /**
4656
4656
  * Disallow rarely used top-level functions that only forward their parameters or read a parameter's property
4657
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-trivial-functions/documentation.md
4657
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-trivial-functions/documentation.md
4658
4658
  */
4659
4659
  'flawless/no-trivial-functions'?: Linter.RuleEntry<FlawlessNoTrivialFunctions>;
4660
4660
  /**
4661
4661
  * Disallow `unknown` function parameters outside type-predicate subjects and recorded error causes
4662
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unknown-parameters/documentation.md
4662
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unknown-parameters/documentation.md
4663
4663
  */
4664
4664
  'flawless/no-unknown-parameters'?: Linter.RuleEntry<[]>;
4665
4665
  /**
4666
4666
  * Disallow explicit return type annotations that resolve to `unknown`
4667
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unknown-returns/documentation.md
4667
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unknown-returns/documentation.md
4668
4668
  */
4669
4669
  'flawless/no-unknown-returns'?: Linter.RuleEntry<[]>;
4670
4670
  /**
4671
4671
  * Disallow unnecessary aliases when destructuring component props
4672
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unnecessary-prop-alias/documentation.md
4672
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unnecessary-prop-alias/documentation.md
4673
4673
  */
4674
4674
  'flawless/no-unnecessary-prop-alias'?: Linter.RuleEntry<FlawlessNoUnnecessaryPropAlias>;
4675
4675
  /**
4676
4676
  * Disallow unnecessary usage of 'useCallback'
4677
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unnecessary-use-callback/documentation.md
4677
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unnecessary-use-callback/documentation.md
4678
4678
  */
4679
4679
  'flawless/no-unnecessary-use-callback'?: Linter.RuleEntry<[]>;
4680
4680
  /**
4681
4681
  * Disallow unnecessary usage of 'useMemo'
4682
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unnecessary-use-memo/documentation.md
4682
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unnecessary-use-memo/documentation.md
4683
4683
  */
4684
4684
  'flawless/no-unnecessary-use-memo'?: Linter.RuleEntry<[]>;
4685
4685
  /**
4686
4686
  * Disallow unsafe object dictionary value types
4687
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unsafe-dictionary-type/documentation.md
4687
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unsafe-dictionary-type/documentation.md
4688
4688
  */
4689
4689
  'flawless/no-unsafe-dictionary-type'?: Linter.RuleEntry<[]>;
4690
4690
  /**
4691
4691
  * Enforce a blank line after `expect.assertions` and `expect.hasAssertions`
4692
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/padding-after-expect-assertions/documentation.md
4692
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/padding-after-expect-assertions/documentation.md
4693
4693
  */
4694
4694
  'flawless/padding-after-expect-assertions'?: Linter.RuleEntry<[]>;
4695
4695
  /**
4696
4696
  * Enforce destructuring assignment for component props
4697
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-destructuring-assignment/documentation.md
4697
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-destructuring-assignment/documentation.md
4698
4698
  */
4699
4699
  'flawless/prefer-destructuring-assignment'?: Linter.RuleEntry<[]>;
4700
4700
  /**
4701
4701
  * Prefer having the last statement in a test be an assertion
4702
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-ending-with-an-expect/documentation.md
4702
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-ending-with-an-expect/documentation.md
4703
4703
  */
4704
4704
  'flawless/prefer-ending-with-an-expect'?: Linter.RuleEntry<FlawlessPreferEndingWithAnExpect>;
4705
4705
  /**
4706
4706
  * Prefer `expect.assertions(<count>)` over `expect.hasAssertions()`
4707
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-expect-assertions-count/documentation.md
4707
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-expect-assertions-count/documentation.md
4708
4708
  */
4709
4709
  'flawless/prefer-expect-assertions-count'?: Linter.RuleEntry<[]>;
4710
4710
  /**
4711
4711
  * Prefer `mockThrow` / `mockThrowOnce` over a mock implementation that only throws
4712
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-mock-throw/documentation.md
4712
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-mock-throw/documentation.md
4713
4713
  */
4714
4714
  'flawless/prefer-mock-throw'?: Linter.RuleEntry<[]>;
4715
4715
  /**
4716
4716
  * Enforce destructuring parameters in the function signature
4717
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-parameter-destructuring/documentation.md
4717
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-parameter-destructuring/documentation.md
4718
4718
  */
4719
4719
  'flawless/prefer-parameter-destructuring'?: Linter.RuleEntry<FlawlessPreferParameterDestructuring>;
4720
4720
  /**
4721
4721
  * Enforce that function component props are read-only
4722
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-read-only-props/documentation.md
4722
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-read-only-props/documentation.md
4723
4723
  */
4724
4724
  'flawless/prefer-read-only-props'?: Linter.RuleEntry<FlawlessPreferReadOnlyProps>;
4725
4725
  /**
4726
4726
  * Prefer test-bound Vitest APIs from the local test context
4727
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-vitest-local-context/documentation.md
4727
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-vitest-local-context/documentation.md
4728
4728
  */
4729
4729
  'flawless/prefer-vitest-local-context'?: Linter.RuleEntry<FlawlessPreferVitestLocalContext>;
4730
4730
  /**
4731
4731
  * Disallow impure calls such as `math.random` or `os.clock` during render
4732
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/purity/documentation.md
4732
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/purity/documentation.md
4733
4733
  */
4734
4734
  'flawless/purity'?: Linter.RuleEntry<FlawlessPurity>;
4735
4735
  /**
4736
4736
  * Prefer named imports for React runtime values and the React namespace for React types
4737
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/react-namespace/documentation.md
4737
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/react-namespace/documentation.md
4738
4738
  */
4739
4739
  'flawless/react-namespace'?: Linter.RuleEntry<FlawlessReactNamespace>;
4740
4740
  /**
4741
4741
  * Enforce a configured sort order for TOML keys and tables
4742
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/toml-sort-keys/documentation.md
4742
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/toml-sort-keys/documentation.md
4743
4743
  */
4744
4744
  'flawless/toml-sort-keys'?: Linter.RuleEntry<FlawlessTomlSortKeys>;
4745
4745
  /**
4746
4746
  * Enforce blank lines around top-level YAML block collection keys
4747
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/yaml-block-key-blank-lines/documentation.md
4747
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/yaml-block-key-blank-lines/documentation.md
4748
4748
  */
4749
4749
  'flawless/yaml-block-key-blank-lines'?: Linter.RuleEntry<[]>;
4750
4750
  /**
4751
4751
  * Enforce sorted YAML sequences of mappings by a key
4752
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/yaml-sort-sequence-by-key/documentation.md
4752
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/yaml-sort-sequence-by-key/documentation.md
4753
4753
  */
4754
4754
  'flawless/yaml-sort-sequence-by-key'?: Linter.RuleEntry<FlawlessYamlSortSequenceByKey>;
4755
4755
  /**
@@ -11544,7 +11544,7 @@ interface RuleOptions {
11544
11544
  * Disallow awaiting a value that is not a Thenable
11545
11545
  * @see https://typescript-eslint.io/rules/await-thenable
11546
11546
  */
11547
- 'ts/await-thenable'?: Linter.RuleEntry<[]>;
11547
+ 'ts/await-thenable'?: Linter.RuleEntry<TsAwaitThenable>;
11548
11548
  /**
11549
11549
  * Disallow `@ts-<directive>` comments or require descriptions after directives
11550
11550
  * @see https://typescript-eslint.io/rules/ban-ts-comment
@@ -11741,6 +11741,11 @@ interface RuleOptions {
11741
11741
  * @see https://typescript-eslint.io/rules/no-for-in-array
11742
11742
  */
11743
11743
  'ts/no-for-in-array'?: Linter.RuleEntry<[]>;
11744
+ /**
11745
+ * Disallow type operations that resolve to the "empty object" type
11746
+ * @see https://typescript-eslint.io/rules/no-generated-empty-object-type
11747
+ */
11748
+ 'ts/no-generated-empty-object-type'?: Linter.RuleEntry<[]>;
11744
11749
  /**
11745
11750
  * Disallow the use of `eval()`-like functions
11746
11751
  * @see https://typescript-eslint.io/rules/no-implied-eval
@@ -11940,6 +11945,11 @@ interface RuleOptions {
11940
11945
  * @see https://typescript-eslint.io/rules/no-unsafe-declaration-merging
11941
11946
  */
11942
11947
  'ts/no-unsafe-declaration-merging'?: Linter.RuleEntry<[]>;
11948
+ /**
11949
+ * Disallow assigning non-enum values to enum typed locations
11950
+ * @see https://typescript-eslint.io/rules/no-unsafe-enum-assignment
11951
+ */
11952
+ 'ts/no-unsafe-enum-assignment'?: Linter.RuleEntry<[]>;
11943
11953
  /**
11944
11954
  * Disallow comparing an enum value with a non-enum value
11945
11955
  * @see https://typescript-eslint.io/rules/no-unsafe-enum-comparison
@@ -15409,15 +15419,7 @@ type FlawlessTomlSortKeys = {
15409
15419
  pathPattern: string;
15410
15420
  }[];
15411
15421
  // ----- flawless/yaml-sort-sequence-by-key -----
15412
- type FlawlessYamlSortSequenceByKey = [{
15413
- key: string;
15414
- order?: {
15415
- caseSensitive?: boolean;
15416
- natural?: boolean;
15417
- type?: ("asc" | "desc");
15418
- };
15419
- pathPattern: string;
15420
- }, ...({
15422
+ type FlawlessYamlSortSequenceByKey = {
15421
15423
  key: string;
15422
15424
  order?: {
15423
15425
  caseSensitive?: boolean;
@@ -15425,7 +15427,7 @@ type FlawlessYamlSortSequenceByKey = [{
15425
15427
  type?: ("asc" | "desc");
15426
15428
  };
15427
15429
  pathPattern: string;
15428
- })[]];
15430
+ }[];
15429
15431
  // ----- format-lua/stylua -----
15430
15432
  type FormatLuaStylua = [] | [{
15431
15433
  language?: string;
@@ -23616,6 +23618,10 @@ type TsArrayType = [] | [{
23616
23618
  default?: ("array" | "generic" | "array-simple");
23617
23619
  readonly?: ("array" | "generic" | "array-simple");
23618
23620
  }];
23621
+ // ----- ts/await-thenable -----
23622
+ type TsAwaitThenable = [] | [{
23623
+ allowMixedPromiseArrays?: boolean;
23624
+ }];
23619
23625
  // ----- ts/ban-ts-comment -----
23620
23626
  type TsBanTsComment = [] | [{
23621
23627
  minimumDescriptionLength?: number;
@@ -24188,7 +24194,9 @@ type TsNoMeaninglessVoidOperator = [] | [{
24188
24194
  }];
24189
24195
  // ----- ts/no-misused-promises -----
24190
24196
  type TsNoMisusedPromises = [] | [{
24191
- checksConditionals?: boolean;
24197
+ checksConditionals?: (boolean | {
24198
+ flagUnions?: ("all" | "strict" | "none");
24199
+ });
24192
24200
  checksSpreads?: boolean;
24193
24201
  checksVoidReturn?: (boolean | {
24194
24202
  arguments?: boolean;
package/dist/oxlint.mjs CHANGED
@@ -1368,6 +1368,7 @@ const jsPluginRuleNames = /* @__PURE__ */ new Set([
1368
1368
  "ts/no-extraneous-class",
1369
1369
  "ts/no-floating-promises",
1370
1370
  "ts/no-for-in-array",
1371
+ "ts/no-generated-empty-object-type",
1371
1372
  "ts/no-implied-eval",
1372
1373
  "ts/no-import-type-side-effects",
1373
1374
  "ts/no-inferrable-types",
@@ -1407,6 +1408,7 @@ const jsPluginRuleNames = /* @__PURE__ */ new Set([
1407
1408
  "ts/no-unsafe-assignment",
1408
1409
  "ts/no-unsafe-call",
1409
1410
  "ts/no-unsafe-declaration-merging",
1411
+ "ts/no-unsafe-enum-assignment",
1410
1412
  "ts/no-unsafe-enum-comparison",
1411
1413
  "ts/no-unsafe-function-type",
1412
1414
  "ts/no-unsafe-member-access",
@@ -2004,6 +2006,7 @@ const typeAwareJsPluginRuleNames = /* @__PURE__ */ new Set([
2004
2006
  "ts/no-duplicate-type-constituents",
2005
2007
  "ts/no-floating-promises",
2006
2008
  "ts/no-for-in-array",
2009
+ "ts/no-generated-empty-object-type",
2007
2010
  "ts/no-implied-eval",
2008
2011
  "ts/no-meaningless-void-operator",
2009
2012
  "ts/no-misused-promises",
@@ -2021,6 +2024,7 @@ const typeAwareJsPluginRuleNames = /* @__PURE__ */ new Set([
2021
2024
  "ts/no-unsafe-argument",
2022
2025
  "ts/no-unsafe-assignment",
2023
2026
  "ts/no-unsafe-call",
2027
+ "ts/no-unsafe-enum-assignment",
2024
2028
  "ts/no-unsafe-enum-comparison",
2025
2029
  "ts/no-unsafe-member-access",
2026
2030
  "ts/no-unsafe-return",
@@ -2628,6 +2632,7 @@ const effectivePresetRuleNames = /* @__PURE__ */ new Set([
2628
2632
  "ts/no-extraneous-class",
2629
2633
  "ts/no-floating-promises",
2630
2634
  "ts/no-for-in-array",
2635
+ "ts/no-generated-empty-object-type",
2631
2636
  "ts/no-implied-eval",
2632
2637
  "ts/no-import-type-side-effects",
2633
2638
  "ts/no-inferrable-types",
@@ -2660,6 +2665,7 @@ const effectivePresetRuleNames = /* @__PURE__ */ new Set([
2660
2665
  "ts/no-unsafe-assignment",
2661
2666
  "ts/no-unsafe-call",
2662
2667
  "ts/no-unsafe-declaration-merging",
2668
+ "ts/no-unsafe-enum-assignment",
2663
2669
  "ts/no-unsafe-enum-comparison",
2664
2670
  "ts/no-unsafe-function-type",
2665
2671
  "ts/no-unsafe-member-access",
@@ -3635,6 +3641,7 @@ const enabledPresetRuleNames = /* @__PURE__ */ new Set([
3635
3641
  "ts/no-extraneous-class",
3636
3642
  "ts/no-floating-promises",
3637
3643
  "ts/no-for-in-array",
3644
+ "ts/no-generated-empty-object-type",
3638
3645
  "ts/no-implied-eval",
3639
3646
  "ts/no-import-type-side-effects",
3640
3647
  "ts/no-inferrable-types",
@@ -3664,6 +3671,7 @@ const enabledPresetRuleNames = /* @__PURE__ */ new Set([
3664
3671
  "ts/no-unsafe-assignment",
3665
3672
  "ts/no-unsafe-call",
3666
3673
  "ts/no-unsafe-declaration-merging",
3674
+ "ts/no-unsafe-enum-assignment",
3667
3675
  "ts/no-unsafe-enum-comparison",
3668
3676
  "ts/no-unsafe-function-type",
3669
3677
  "ts/no-unsafe-member-access",
@@ -9499,6 +9507,7 @@ function typescriptTypeAwareRules({ roblox = true } = {}) {
9499
9507
  ignoreVoid: true
9500
9508
  }],
9501
9509
  "ts/no-for-in-array": "error",
9510
+ "ts/no-generated-empty-object-type": "error",
9502
9511
  "ts/no-implied-eval": "error",
9503
9512
  "ts/no-meaningless-void-operator": "error",
9504
9513
  "ts/no-misused-promises": "error",
@@ -9518,6 +9527,7 @@ function typescriptTypeAwareRules({ roblox = true } = {}) {
9518
9527
  "ts/no-unsafe-argument": "error",
9519
9528
  "ts/no-unsafe-assignment": "error",
9520
9529
  "ts/no-unsafe-call": "error",
9530
+ "ts/no-unsafe-enum-assignment": "error",
9521
9531
  "ts/no-unsafe-enum-comparison": "error",
9522
9532
  "ts/no-unsafe-member-access": "error",
9523
9533
  "ts/no-unsafe-return": "error",
@@ -9645,7 +9655,7 @@ function oxlintTypescript(options = {}) {
9645
9655
  ];
9646
9656
  const typeAwareRules = typescriptTypeAwareRules({ roblox }) ?? {};
9647
9657
  const gatedTypeAwareRules = typeAware ? typeAwareRules : Object.fromEntries(Object.entries(typeAwareRules).filter(([rule]) => !runsInTsgolint(rule)));
9648
- return [...createOxlintConfigs({
9658
+ return createOxlintConfigs({
9649
9659
  name: "isentinel/typescript",
9650
9660
  ...excludeFiles ? { excludeFiles } : {},
9651
9661
  files,
@@ -9657,16 +9667,7 @@ function oxlintTypescript(options = {}) {
9657
9667
  ...gatedTypeAwareRules,
9658
9668
  ...erasableOnly ? erasableSyntaxOnlyRules() : {}
9659
9669
  }
9660
- }), ...typeAware ? [{
9661
- name: "isentinel/typescript/oxlint",
9662
- ...excludeFiles ? { excludeFiles } : {},
9663
- files,
9664
- plugins: ["typescript"],
9665
- rules: {
9666
- "typescript/no-generated-empty-object-type": "error",
9667
- "typescript/no-unsafe-enum-assignment": "error"
9668
- }
9669
- }] : []];
9670
+ });
9670
9671
  }
9671
9672
  //#endregion
9672
9673
  //#region src/rules/unicorn.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isentinel/eslint-config",
3
- "version": "6.4.0",
3
+ "version": "6.5.0",
4
4
  "description": "iSentinel's ESLint config",
5
5
  "keywords": [
6
6
  "eslint-config",
@@ -68,8 +68,8 @@
68
68
  "@oxlint/plugins": "1.92.0",
69
69
  "@pobammer-ts/small-rules": "3.11.0",
70
70
  "@stylistic/eslint-plugin": "5.10.0",
71
- "@typescript-eslint/eslint-plugin": "8.65.0",
72
- "@typescript-eslint/parser": "8.65.0",
71
+ "@typescript-eslint/eslint-plugin": "8.72.2",
72
+ "@typescript-eslint/parser": "8.72.2",
73
73
  "ansis": "4.3.1",
74
74
  "concurrently": "10.0.6",
75
75
  "eslint-config-flat-gitignore": "2.3.0",
@@ -80,10 +80,10 @@
80
80
  "eslint-plugin-better-max-params": "1.0.0",
81
81
  "eslint-plugin-comment-length": "2.3.1",
82
82
  "eslint-plugin-de-morgan": "2.1.3",
83
- "eslint-plugin-flawless": "1.16.0",
83
+ "eslint-plugin-flawless": "1.16.2",
84
84
  "eslint-plugin-format-lua": "2.0.0",
85
85
  "eslint-plugin-import-lite": "0.6.0",
86
- "eslint-plugin-jsdoc": "65.4.5",
86
+ "eslint-plugin-jsdoc": "65.4.6",
87
87
  "eslint-plugin-jsonc": "3.3.0",
88
88
  "eslint-plugin-oxfmt": "0.18.0",
89
89
  "eslint-plugin-package-json": "1.7.0",
@@ -117,7 +117,7 @@
117
117
  "@antfu/ni": "30.5.0",
118
118
  "@eslint-react/shared": "5.17.3",
119
119
  "@eslint/config-inspector": "3.1.0",
120
- "@isentinel/eslint-config": "6.4.0",
120
+ "@isentinel/eslint-config": "6.5.0",
121
121
  "@isentinel/tsconfig": "3.0.0",
122
122
  "@rbxts/types": "1.0.943",
123
123
  "@stylistic/eslint-plugin-migrate": "4.4.1",