@agilebot/eslint-plugin 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.d.ts CHANGED
@@ -4,6 +4,8 @@ declare namespace _default {
4
4
  namespace recommended {
5
5
  export let plugins: string[];
6
6
  let rules_1: {
7
+ '@agilebot/no-unnecessary-template-literals': string;
8
+ '@agilebot/no-async-array-methods': string;
7
9
  '@agilebot/react-prefer-named-property-access': string;
8
10
  '@agilebot/react-hook-use-ref': string;
9
11
  '@agilebot/react-prefer-sx-prop': string;
@@ -12,7 +14,6 @@ declare namespace _default {
12
14
  '@agilebot/tss-class-naming': string;
13
15
  '@agilebot/import-enforce-icon-alias': string;
14
16
  '@agilebot/import-monorepo': string;
15
- '@agilebot/stylistic-no-unnecessary-template-literals': string;
16
17
  };
17
18
  export { rules_1 as rules };
18
19
  export namespace settings {
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @agilebot/eslint-plugin v0.3.1
2
+ * @license @agilebot/eslint-plugin v0.3.2
3
3
  *
4
4
  * Copyright (c) Agilebot, Inc. and its affiliates.
5
5
  *
@@ -2497,6 +2497,56 @@ var preferSxProp = {
2497
2497
  }
2498
2498
  };
2499
2499
 
2500
+ var noAsyncArrayMethods = {
2501
+ meta: {
2502
+ docs: {
2503
+ description:
2504
+ 'No async callback for Array methods forEach, map, filter, reduce, some, every, etc.',
2505
+ category: 'Array',
2506
+ recommended: true
2507
+ },
2508
+ fixable: undefined,
2509
+ schema: []
2510
+ },
2511
+ create: function (context) {
2512
+ return {
2513
+ ExpressionStatement: function (node) {
2514
+ const notAllowedArrayMethods = [
2515
+ 'forEach',
2516
+ 'filter',
2517
+ 'some',
2518
+ 'every',
2519
+ 'map',
2520
+ 'reduce',
2521
+ 'reduceRight',
2522
+ 'flatMap',
2523
+ 'find',
2524
+ 'findIndex',
2525
+ 'findLast',
2526
+ 'findLastIndex'
2527
+ ];
2528
+ const { callee } = node.expression;
2529
+ if (!callee || !callee.property || !callee.property.name) {
2530
+ return;
2531
+ }
2532
+ if (notAllowedArrayMethods.includes(callee.property.name)) {
2533
+ const functionArguments = node.expression.arguments.find(n => {
2534
+ return ['ArrowFunctionExpression', 'FunctionExpression'].includes(
2535
+ n.type
2536
+ );
2537
+ });
2538
+ if (functionArguments && functionArguments.async) {
2539
+ context.report({
2540
+ node,
2541
+ message: `No async function in method '${callee.property.name}'`
2542
+ });
2543
+ }
2544
+ }
2545
+ }
2546
+ };
2547
+ }
2548
+ };
2549
+
2500
2550
  var noUnnecessaryTemplateLiterals = {
2501
2551
  meta: {
2502
2552
  type: 'problem',
@@ -2544,15 +2594,16 @@ var ruleFiles = /*#__PURE__*/Object.freeze({
2544
2594
  rules_react_hook_use_ref: hookUseRef,
2545
2595
  rules_react_prefer_named_property_access: preferNamedPropertyAccess,
2546
2596
  rules_react_prefer_sx_prop: preferSxProp,
2547
- rules_stylistic_no_unnecessary_template_literals: noUnnecessaryTemplateLiterals,
2548
2597
  rules_tss_class_naming: classNaming,
2549
2598
  rules_tss_no_color_value: noColorValue,
2550
- rules_tss_unused_classes: unusedClasses
2599
+ rules_tss_unused_classes: unusedClasses,
2600
+ rules_unprefixed_no_async_array_methods: noAsyncArrayMethods,
2601
+ rules_unprefixed_no_unnecessary_template_literals: noUnnecessaryTemplateLiterals
2551
2602
  });
2552
2603
 
2553
2604
  const rules = {};
2554
2605
  Object.keys(ruleFiles).forEach(key => {
2555
- const ruleKey = key.replace(/^rules_/, '');
2606
+ const ruleKey = key.replace(/^rules_/, '').replace(/^unprefixed_/, '');
2556
2607
  const finalKey = ruleKey.replace(/_/g, '-');
2557
2608
  rules[finalKey] = ruleFiles[key];
2558
2609
  });
@@ -2562,6 +2613,8 @@ var index = {
2562
2613
  recommended: {
2563
2614
  plugins: ['@agilebot'],
2564
2615
  rules: {
2616
+ '@agilebot/no-unnecessary-template-literals': 'error',
2617
+ '@agilebot/no-async-array-methods': 'error',
2565
2618
  '@agilebot/react-prefer-named-property-access': 'error',
2566
2619
  '@agilebot/react-hook-use-ref': 'warn',
2567
2620
  '@agilebot/react-prefer-sx-prop': 'error',
@@ -2569,8 +2622,7 @@ var index = {
2569
2622
  '@agilebot/tss-no-color-value': 'error',
2570
2623
  '@agilebot/tss-class-naming': 'error',
2571
2624
  '@agilebot/import-enforce-icon-alias': 'error',
2572
- '@agilebot/import-monorepo': 'error',
2573
- '@agilebot/stylistic-no-unnecessary-template-literals': 'error'
2625
+ '@agilebot/import-monorepo': 'error'
2574
2626
  },
2575
2627
  settings: {
2576
2628
  react: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agilebot/eslint-plugin",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Agilebot's ESLint plugin",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -20,7 +20,7 @@
20
20
  "dependencies": {
21
21
  "@typescript-eslint/utils": "~7.7.0",
22
22
  "eslint-plugin-react": "^7.34.1",
23
- "@agilebot/eslint-utils": "0.3.1"
23
+ "@agilebot/eslint-utils": "0.3.2"
24
24
  },
25
25
  "peerDependencies": {
26
26
  "eslint": "^7.0.0 || ^8.0.0"