@arcgis/eslint-config 4.33.0-next.7 → 4.33.0-next.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/config/extra.js +2 -3
  2. package/dist/config/index.d.ts +1 -18
  3. package/dist/config/index.js +7 -10
  4. package/dist/config/lumina.d.ts +1 -5
  5. package/dist/config/lumina.js +6 -13
  6. package/dist/config/storybook.d.ts +1 -1
  7. package/dist/{chunk-2RYQP4GD.js → makePlugin-D5j5CdH_.js} +2 -6
  8. package/dist/plugins/lumina/index.js +1967 -5
  9. package/dist/plugins/lumina/rules/add-missing-jsx-import.d.ts +1 -1
  10. package/dist/plugins/lumina/rules/auto-add-type.d.ts +2 -2
  11. package/dist/plugins/lumina/rules/component-placement-rules.d.ts +1 -1
  12. package/dist/plugins/lumina/rules/consistent-event-naming.d.ts +1 -1
  13. package/dist/plugins/lumina/rules/decorators-context.d.ts +1 -1
  14. package/dist/plugins/lumina/rules/explicit-setter-type.d.ts +18 -0
  15. package/dist/plugins/lumina/rules/member-ordering/build.d.ts +3 -3
  16. package/dist/plugins/lumina/rules/member-ordering/comments.d.ts +2 -2
  17. package/dist/plugins/lumina/rules/member-ordering/config.d.ts +1 -1
  18. package/dist/plugins/lumina/rules/member-ordering/normalize.d.ts +2 -2
  19. package/dist/plugins/lumina/rules/member-ordering.d.ts +1 -1
  20. package/dist/plugins/lumina/rules/no-ignore-jsdoc-tag.d.ts +1 -1
  21. package/dist/plugins/lumina/rules/no-incorrect-dynamic-tag-name.d.ts +2 -2
  22. package/dist/plugins/lumina/rules/no-inline-arrow-in-ref.d.ts +1 -1
  23. package/dist/plugins/lumina/rules/no-invalid-directives-prop.d.ts +1 -1
  24. package/dist/plugins/lumina/rules/no-jsx-spread.d.ts +1 -1
  25. package/dist/plugins/lumina/rules/no-listen-in-connected-callback.d.ts +1 -1
  26. package/dist/plugins/lumina/rules/no-non-component-exports.d.ts +1 -1
  27. package/dist/plugins/lumina/rules/no-property-name-start-with-on.d.ts +1 -1
  28. package/dist/plugins/lumina/rules/no-render-false.d.ts +2 -2
  29. package/dist/plugins/lumina/rules/no-unnecessary-attribute-name.d.ts +1 -1
  30. package/dist/plugins/lumina/rules/no-unnecessary-bind-this.d.ts +1 -1
  31. package/dist/plugins/lumina/rules/no-unnecessary-key.d.ts +1 -1
  32. package/dist/plugins/lumina/rules/tag-name-rules.d.ts +1 -1
  33. package/dist/plugins/lumina/utils/checker.d.ts +3 -1
  34. package/dist/plugins/lumina/utils/creator.d.ts +2 -2
  35. package/dist/plugins/lumina/utils/estree.d.ts +2 -1
  36. package/dist/plugins/utils/makePlugin.d.ts +2 -9
  37. package/dist/plugins/utils/tests.d.ts +1 -1
  38. package/dist/plugins/webgis/index.js +142 -5
  39. package/dist/plugins/webgis/rules/no-import-outside-src.d.ts +1 -1
  40. package/dist/plugins/webgis/rules/no-touching-jsdoc.d.ts +1 -1
  41. package/dist/plugins/webgis/rules/require-js-in-core-import.d.ts +1 -1
  42. package/dist/plugins/webgis/utils/creator.d.ts +2 -2
  43. package/package.json +2 -2
  44. package/dist/chunk-HFFSZYVU.js +0 -1975
  45. package/dist/chunk-UNQ3BNY3.js +0 -160
  46. package/dist/plugins/lumina/rules/add-missing-jsx-import.test.d.ts +0 -1
  47. package/dist/plugins/lumina/rules/auto-add-type.test.d.ts +0 -1
  48. package/dist/plugins/lumina/rules/component-placement-rules.test.d.ts +0 -1
  49. package/dist/plugins/lumina/rules/consistent-event-naming.test.d.ts +0 -1
  50. package/dist/plugins/lumina/rules/decorators-context.test.d.ts +0 -1
  51. package/dist/plugins/lumina/rules/member-ordering.test.d.ts +0 -1
  52. package/dist/plugins/lumina/rules/no-ignore-jsdoc-tag.test.d.ts +0 -1
  53. package/dist/plugins/lumina/rules/no-incorrect-dynamic-tag-name.test.d.ts +0 -1
  54. package/dist/plugins/lumina/rules/no-inline-arrow-in-ref.test.d.ts +0 -1
  55. package/dist/plugins/lumina/rules/no-invalid-directives-prop.test.d.ts +0 -1
  56. package/dist/plugins/lumina/rules/no-jsx-spread.test.d.ts +0 -1
  57. package/dist/plugins/lumina/rules/no-listen-in-connected-callback.test.d.ts +0 -1
  58. package/dist/plugins/lumina/rules/no-non-component-exports.test.d.ts +0 -1
  59. package/dist/plugins/lumina/rules/no-property-name-start-with-on.test.d.ts +0 -1
  60. package/dist/plugins/lumina/rules/no-render-false.test.d.ts +0 -1
  61. package/dist/plugins/lumina/rules/no-unnecessary-attribute-name.test.d.ts +0 -1
  62. package/dist/plugins/lumina/rules/no-unnecessary-bind-this.test.d.ts +0 -1
  63. package/dist/plugins/lumina/rules/no-unnecessary-key.test.d.ts +0 -1
  64. package/dist/plugins/lumina/rules/tag-name-rules.spec.d.ts +0 -1
  65. package/dist/plugins/webgis/rules/no-import-outside-src.test.d.ts +0 -1
  66. package/dist/plugins/webgis/rules/no-touching-jsdoc.test.d.ts +0 -1
  67. package/dist/plugins/webgis/rules/require-js-in-core-import.test.d.ts +0 -1
@@ -1 +1 @@
1
- export declare const addMissingJsxImport: import("@typescript-eslint/utils/ts-eslint").RuleModule<"addMissingJsxImport", [], import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const addMissingJsxImport: import('@typescript-eslint/utils/ts-eslint').RuleModule<"addMissingJsxImport", [], import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
@@ -1,2 +1,2 @@
1
- import { ESLintUtils } from "@typescript-eslint/utils";
2
- export declare const autoAddType: ESLintUtils.RuleModule<"addType" | "typeAnnotationMismatchesActualType" | "noEmptyPropertyObject" | "noUnnecessaryType" | "unhandledType", [], import("../../utils/makePlugin").CommonDocs, ESLintUtils.RuleListener>;
1
+ import { ESLintUtils } from '@typescript-eslint/utils';
2
+ export declare const autoAddType: ESLintUtils.RuleModule<"addType" | "typeAnnotationMismatchesActualType" | "noEmptyPropertyObject" | "noUnnecessaryType" | "unhandledType", [], import('../../utils/makePlugin').CommonDocs, ESLintUtils.RuleListener>;
@@ -1 +1 @@
1
- export declare const componentPlacementRules: import("@typescript-eslint/utils/ts-eslint").RuleModule<"fileFolderNameMismatch" | "extensionNotTsx" | "noComponentOutsideSrcComponents", [], import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const componentPlacementRules: import('@typescript-eslint/utils/ts-eslint').RuleModule<"fileFolderNameMismatch" | "extensionNotTsx" | "noComponentOutsideSrcComponents", [], import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
@@ -11,5 +11,5 @@ type Options = [
11
11
  }
12
12
  ];
13
13
  type Messages = "componentNameInEventError" | "eventNamespaceError" | "missingPrivateJsDocTag" | "noComponentNameInEventError";
14
- export declare const consistentEventNaming: import("@typescript-eslint/utils/ts-eslint").RuleModule<Messages, Options, import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
14
+ export declare const consistentEventNaming: import('@typescript-eslint/utils/ts-eslint').RuleModule<Messages, Options, import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
15
15
  export {};
@@ -1 +1 @@
1
- export declare const decoratorsContext: import("@typescript-eslint/utils/ts-eslint").RuleModule<"publicApiMustBePublic" | "noPropertyDecoratorOnMethods" | "noCombinedPropertyEvent" | "noCombinedPropertyState" | "noComputedName", [], import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const decoratorsContext: import('@typescript-eslint/utils/ts-eslint').RuleModule<"publicApiMustBePublic" | "noPropertyDecoratorOnMethods" | "noCombinedPropertyEvent" | "noCombinedPropertyState" | "noComputedName", [], import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
@@ -0,0 +1,18 @@
1
+ import { ESLintUtils } from '@typescript-eslint/utils';
2
+ /**
3
+ * @remarks
4
+ * It is easier to to do this in an ESLint rule rather than at build-time.
5
+ * Reason:
6
+ * - TypeScript does not have a syntax for retrieving the setter type
7
+ * (https://github.com/microsoft/TypeScript/issues/60162)
8
+ * - While we could copy the setter type from bound setter at build-time,
9
+ * copying types between files is tricky because of need for adding correct
10
+ * imports for anything referenced in that type and not already included in
11
+ * current file. Doing so in automated way is quite tricky, slow and
12
+ * error-prone.
13
+ *
14
+ * Instead, this rule will require developer to explicitly provide the setter
15
+ * type. Then we can use it as is in the .d.ts file. The getter type can be
16
+ * retrieved easily via `typeof` operator.
17
+ */
18
+ export declare const explicitSetterType: ESLintUtils.RuleModule<"explicitSetterType" | "addExplicitSetterType", [], import('../../utils/makePlugin').CommonDocs, ESLintUtils.RuleListener>;
@@ -1,4 +1,4 @@
1
- import { type StrayComments } from "./comments";
2
- import type { NormalizedRegions } from "./normalize";
3
- import { type TSESLint } from "@typescript-eslint/utils";
1
+ import { StrayComments } from './comments';
2
+ import { NormalizedRegions } from './normalize';
3
+ import { TSESLint } from '@typescript-eslint/utils';
4
4
  export declare function buildNewBody(normalizedRegions: NormalizedRegions, strayComments: Omit<StrayComments, "membersByName">, sourceCode: TSESLint.SourceCode): string;
@@ -1,5 +1,5 @@
1
- import { type TSESLint, type TSESTree } from "@typescript-eslint/utils";
2
- import type { MemberData } from "./config";
1
+ import { TSESLint, TSESTree } from '@typescript-eslint/utils';
2
+ import { MemberData } from './config';
3
3
  export type StrayComments = {
4
4
  header: TSESTree.Comment[];
5
5
  regionFooter: Map<string, {
@@ -1,4 +1,4 @@
1
- import { type TSESTree } from "@typescript-eslint/utils";
1
+ import { TSESTree } from '@typescript-eslint/utils';
2
2
  /**
3
3
  * Fred:
4
4
  * I got this order by observing how much navigation I have been doing in the
@@ -1,5 +1,5 @@
1
- import type { StrayComments } from "./comments";
2
- import { type MemberData, type RegionName } from "./config";
1
+ import { StrayComments } from './comments';
2
+ import { MemberData, RegionName } from './config';
3
3
  export type NormalizedRegions = readonly (readonly [RegionName, MemberData[]])[];
4
4
  export declare function getNormalizedRegions(membersByName: StrayComments["membersByName"]): NormalizedRegions;
5
5
  /**
@@ -1 +1 @@
1
- export declare const memberOrdering: import("@typescript-eslint/utils/ts-eslint").RuleModule<"memberOrdering" | "unsupportedElementType", [], import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const memberOrdering: import('@typescript-eslint/utils/ts-eslint').RuleModule<"memberOrdering" | "unsupportedElementType", [], import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
@@ -1 +1 @@
1
- export declare const noIgnoreJsDocTag: import("@typescript-eslint/utils/ts-eslint").RuleModule<"noIgnoreJsDocTag", [], import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const noIgnoreJsDocTag: import('@typescript-eslint/utils/ts-eslint').RuleModule<"noIgnoreJsDocTag", [], import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
@@ -1,2 +1,2 @@
1
- import { ESLintUtils } from "@typescript-eslint/utils";
2
- export declare const noIncorrectDynamicTagName: ESLintUtils.RuleModule<"incorrectDynamicTagName", [], import("../../utils/makePlugin").CommonDocs, ESLintUtils.RuleListener>;
1
+ import { ESLintUtils } from '@typescript-eslint/utils';
2
+ export declare const noIncorrectDynamicTagName: ESLintUtils.RuleModule<"incorrectDynamicTagName", [], import('../../utils/makePlugin').CommonDocs, ESLintUtils.RuleListener>;
@@ -1 +1 @@
1
- export declare const noInlineArrowInRef: import("@typescript-eslint/utils/ts-eslint").RuleModule<"errorInlineArrow", [], import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const noInlineArrowInRef: import('@typescript-eslint/utils/ts-eslint').RuleModule<"errorInlineArrow", [], import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
@@ -1 +1 @@
1
- export declare const noInvalidDirectivesProp: import("@typescript-eslint/utils/ts-eslint").RuleModule<"noInvalidDirectivesProp", [], import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const noInvalidDirectivesProp: import('@typescript-eslint/utils/ts-eslint').RuleModule<"noInvalidDirectivesProp", [], import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
@@ -1 +1 @@
1
- export declare const noJsxSpread: import("@typescript-eslint/utils/ts-eslint").RuleModule<"noJsxSpread", [], import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const noJsxSpread: import('@typescript-eslint/utils/ts-eslint').RuleModule<"noJsxSpread", [], import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
@@ -1 +1 @@
1
- export declare const noListenInConnectedCallback: import("@typescript-eslint/utils/ts-eslint").RuleModule<"errorListenInConnectedCallback", [], import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const noListenInConnectedCallback: import('@typescript-eslint/utils/ts-eslint').RuleModule<"errorListenInConnectedCallback", [], import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
@@ -1 +1 @@
1
- export declare const noNonComponentExports: import("@typescript-eslint/utils/ts-eslint").RuleModule<"noNonComponentExports" | "noDefaultExports" | "noExportAll", [], import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const noNonComponentExports: import('@typescript-eslint/utils/ts-eslint').RuleModule<"noNonComponentExports" | "noDefaultExports" | "noExportAll", [], import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
@@ -1 +1 @@
1
- export declare const noPropertyNameStartWithOn: import("@typescript-eslint/utils/ts-eslint").RuleModule<"noPropertyNameStartWithOn", [], import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const noPropertyNameStartWithOn: import('@typescript-eslint/utils/ts-eslint').RuleModule<"noPropertyNameStartWithOn", [], import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
@@ -1,2 +1,2 @@
1
- import { ESLintUtils } from "@typescript-eslint/utils";
2
- export declare const noRenderFalse: ESLintUtils.RuleModule<"errorFalseRendered", [], import("../../utils/makePlugin").CommonDocs, ESLintUtils.RuleListener>;
1
+ import { ESLintUtils } from '@typescript-eslint/utils';
2
+ export declare const noRenderFalse: ESLintUtils.RuleModule<"errorFalseRendered", [], import('../../utils/makePlugin').CommonDocs, ESLintUtils.RuleListener>;
@@ -1 +1 @@
1
- export declare const noUnnecessaryAttributeName: import("@typescript-eslint/utils/ts-eslint").RuleModule<"noUnnecessaryAttributeName", [], import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const noUnnecessaryAttributeName: import('@typescript-eslint/utils/ts-eslint').RuleModule<"noUnnecessaryAttributeName", [], import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
@@ -1 +1 @@
1
- export declare const noUnnecessaryBindThis: import("@typescript-eslint/utils/ts-eslint").RuleModule<"noUnnecessaryBindThis", [], import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const noUnnecessaryBindThis: import('@typescript-eslint/utils/ts-eslint').RuleModule<"noUnnecessaryBindThis", [], import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
@@ -1 +1 @@
1
- export declare const noUnnecessaryKey: import("@typescript-eslint/utils/ts-eslint").RuleModule<"noUnnecessaryKey", [], import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const noUnnecessaryKey: import('@typescript-eslint/utils/ts-eslint').RuleModule<"noUnnecessaryKey", [], import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
@@ -4,5 +4,5 @@ type Options = [
4
4
  }
5
5
  ];
6
6
  type Messages = "duplicateDeclaration" | "duplicateDeclareGlobal" | "invalidTagName" | "lowercaseTagName" | "missingClassDeclaration" | "missingHyphen" | "mustNotSubclassHtmlElement" | "mustSubclass" | "noComputedTagName" | "noNonStringTagName" | "noTagNameIdentifier" | "requireNamespace" | "reservedTagName" | "tagNameClassNameMismatch" | "unexpectedDeclarationType" | "unexpectedDeclareElementsEntry" | "unexpectedTypeArguments";
7
- export declare const tagNameRules: import("@typescript-eslint/utils/ts-eslint").RuleModule<Messages, Options, import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
7
+ export declare const tagNameRules: import('@typescript-eslint/utils/ts-eslint').RuleModule<Messages, Options, import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
8
8
  export {};
@@ -1,2 +1,4 @@
1
- import ts from "typescript";
1
+ import { default as ts } from 'typescript';
2
2
  export declare function isLuminaJsxType(type: ts.Type): boolean;
3
+ export declare const hasTypeFlag: (type: ts.Type, flag: ts.TypeFlags) => boolean;
4
+ export declare const literalTypeFlag: number;
@@ -1,3 +1,3 @@
1
- import { ESLintUtils } from "@typescript-eslint/utils";
2
- import type { CommonDocs } from "../../utils/makePlugin";
1
+ import { ESLintUtils } from '@typescript-eslint/utils';
2
+ import { CommonDocs } from '../../utils/makePlugin';
3
3
  export declare const createRule: <Options extends readonly unknown[], MessageIds extends string>({ meta, name, ...rule }: Readonly<ESLintUtils.RuleWithMetaAndName<Options, MessageIds, CommonDocs>>) => ESLintUtils.RuleModule<MessageIds, Options, CommonDocs, ESLintUtils.RuleListener>;
@@ -1,6 +1,7 @@
1
- import type { TSESTree } from "@typescript-eslint/utils";
1
+ import { TSESTree } from '@typescript-eslint/utils';
2
2
  export declare const unwrapExpression: <T extends TSESTree.Node>(expression: T) => T | TSESTree.Expression;
3
3
  export declare const luminaEntrypointName = "@arcgis/lumina";
4
+ export declare const luminaTestEntrypointName = "@arcgis/lumina-compiler/testing";
4
5
  export declare const luminaJsxExportName = "h";
5
6
  type LuminaJsxCheck = (node: TSESTree.ImportDeclaration) => void;
6
7
  export declare function checkForLuminaJsx(): LuminaJsxCheck & {
@@ -1,12 +1,5 @@
1
- /**
2
- * @remarks
3
- * Not using eslint-plugin-eslint-plugin as most rules there are not applicable
4
- * when using TypeScript. Sad that ESLint ecosystem doesn't have a strong
5
- * TypeScript culture. Some other rules are not applicable since we are using
6
- * typescript-eslint.
7
- */
8
- import type { RuleModule } from "@typescript-eslint/utils/ts-eslint";
9
- import type { TSESLint } from "@typescript-eslint/utils";
1
+ import { RuleModule } from '@typescript-eslint/utils/ts-eslint';
2
+ import { TSESLint } from '@typescript-eslint/utils';
10
3
  export type CommonDocs = {
11
4
  description: string;
12
5
  defaultLevel: "error" | "warn";
@@ -1,4 +1,4 @@
1
- import { RuleTester } from "@typescript-eslint/rule-tester";
1
+ import { RuleTester } from '@typescript-eslint/rule-tester';
2
2
  export declare const untypedRuleTester: RuleTester;
3
3
  export declare const typedRuleTester: RuleTester;
4
4
  /**
@@ -1,7 +1,144 @@
1
- import {
2
- webgis_default
3
- } from "../../chunk-UNQ3BNY3.js";
4
- import "../../chunk-2RYQP4GD.js";
1
+ import { m as makeEslintPlugin } from "../../makePlugin-D5j5CdH_.js";
2
+ import { ESLintUtils, AST_NODE_TYPES } from "@typescript-eslint/utils";
3
+ import { resolve } from "node:path/posix";
4
+ const isTestFile = (filePath) => filePath.includes("/test") || filePath.includes(".test") || filePath.includes(".spec") || filePath.includes("e2e") || filePath.includes("__") || filePath.includes("/.");
5
+ const createRule = ESLintUtils.RuleCreator(
6
+ (rule) => `https://devtopia.esri.com/WebGIS/arcgis-web-components/tree/main/packages/support-packages/eslint-config/src/plugins/webgis/rules/${rule}.ts`
7
+ );
8
+ const description$2 = `Imports of files outside the src/ folder are not-portable and likely to break for consumers of this package.`;
9
+ const noImportOutsideSrc = createRule({
10
+ name: "no-import-outside-src",
11
+ meta: {
12
+ docs: {
13
+ description: description$2,
14
+ defaultLevel: "error"
15
+ },
16
+ messages: {
17
+ noImportOutsideSrc: description$2
18
+ },
19
+ type: "problem",
20
+ schema: []
21
+ },
22
+ defaultOptions: [],
23
+ create(context) {
24
+ const fileName = context.filename;
25
+ const srcIndex = fileName.indexOf("/src/");
26
+ if (srcIndex === -1) {
27
+ return {};
28
+ }
29
+ const basePath = fileName.slice(0, srcIndex + "/src/".length);
30
+ if (isTestFile(fileName)) {
31
+ return {};
32
+ }
33
+ return {
34
+ ImportDeclaration(node) {
35
+ const specifier = node.source.value;
36
+ const isRelativeAncestor = specifier.startsWith("../");
37
+ if (!isRelativeAncestor) {
38
+ return;
39
+ }
40
+ const relativePath = resolve(fileName, "..", specifier);
41
+ if (!relativePath.startsWith(basePath) && !relativePath.endsWith(".json")) {
42
+ context.report({
43
+ messageId: "noImportOutsideSrc",
44
+ node: node.source
45
+ });
46
+ }
47
+ }
48
+ };
49
+ }
50
+ });
51
+ const description$1 = `Having two JSDoc comments next to each other is most likely a mistake - consider combining them into one, or separating them for clarity.`;
52
+ const noTouchingJsDoc = createRule({
53
+ name: "no-touching-jsdoc",
54
+ meta: {
55
+ docs: {
56
+ description: description$1,
57
+ defaultLevel: "warn"
58
+ },
59
+ messages: {
60
+ noTouchingJsDoc: description$1
61
+ },
62
+ type: "problem",
63
+ schema: []
64
+ },
65
+ defaultOptions: [],
66
+ create(context) {
67
+ return {
68
+ Program() {
69
+ Array.from(context.sourceCode.text.matchAll(reTouchingJsDoc), (match) => {
70
+ const previousJsDocStart = context.sourceCode.text.slice(0, match.index).lastIndexOf("/**");
71
+ if (previousJsDocStart === -1) {
72
+ return void 0;
73
+ }
74
+ const previousJsDocContent = context.sourceCode.text.slice(
75
+ previousJsDocStart + "/**".length,
76
+ match.index - "*/".length
77
+ );
78
+ const containsOtherComments = previousJsDocContent.includes("*/");
79
+ if (containsOtherComments) {
80
+ return void 0;
81
+ }
82
+ context.report({
83
+ messageId: "noTouchingJsDoc",
84
+ loc: {
85
+ start: context.sourceCode.getLocFromIndex(match.index),
86
+ end: context.sourceCode.getLocFromIndex(match.index + match[0].length)
87
+ }
88
+ });
89
+ return void 0;
90
+ });
91
+ }
92
+ };
93
+ }
94
+ });
95
+ const reTouchingJsDoc = /\*\/\s+\/\*\*/gu;
96
+ const description = `@arcgis/core imports need to end with .js for better compatibility with @arcgis/core ESM CDN builds.`;
97
+ const requireJsInCoreImport = createRule({
98
+ name: "require-js-in-core-import",
99
+ meta: {
100
+ docs: {
101
+ description,
102
+ defaultLevel: "warn"
103
+ },
104
+ messages: {
105
+ requireJsInCoreImport: description
106
+ },
107
+ type: "problem",
108
+ fixable: "code",
109
+ schema: []
110
+ },
111
+ defaultOptions: [],
112
+ create(context) {
113
+ if (isTestFile(context.filename)) {
114
+ return {};
115
+ }
116
+ function updateSpecifier(node) {
117
+ if (node.source.type !== AST_NODE_TYPES.Literal || node.importKind === "type") {
118
+ return;
119
+ }
120
+ const specifier = node.source.value;
121
+ if (typeof specifier !== "string" || !specifier.startsWith("@arcgis/core/") || // Already ends with .js or .json
122
+ specifier.includes(".")) {
123
+ return;
124
+ }
125
+ context.report({
126
+ node: node.source,
127
+ messageId: "requireJsInCoreImport",
128
+ fix: (fixer) => fixer.replaceText(node.source, `"${specifier}.js"`)
129
+ });
130
+ }
131
+ return {
132
+ ImportDeclaration: updateSpecifier,
133
+ ImportExpression: updateSpecifier
134
+ };
135
+ }
136
+ });
137
+ const webgisPlugin = makeEslintPlugin("webgis", {
138
+ "no-import-outside-src": noImportOutsideSrc,
139
+ "no-touching-jsdoc": noTouchingJsDoc,
140
+ "require-js-in-core-import": requireJsInCoreImport
141
+ });
5
142
  export {
6
- webgis_default as default
143
+ webgisPlugin as default
7
144
  };
@@ -1 +1 @@
1
- export declare const noImportOutsideSrc: import("@typescript-eslint/utils/ts-eslint").RuleModule<"noImportOutsideSrc", [], import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const noImportOutsideSrc: import('@typescript-eslint/utils/ts-eslint').RuleModule<"noImportOutsideSrc", [], import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
@@ -1 +1 @@
1
- export declare const noTouchingJsDoc: import("@typescript-eslint/utils/ts-eslint").RuleModule<"noTouchingJsDoc", [], import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const noTouchingJsDoc: import('@typescript-eslint/utils/ts-eslint').RuleModule<"noTouchingJsDoc", [], import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
@@ -1 +1 @@
1
- export declare const requireJsInCoreImport: import("@typescript-eslint/utils/ts-eslint").RuleModule<"requireJsInCoreImport", [], import("../../utils/makePlugin").CommonDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1
+ export declare const requireJsInCoreImport: import('@typescript-eslint/utils/ts-eslint').RuleModule<"requireJsInCoreImport", [], import('../../utils/makePlugin').CommonDocs, import('@typescript-eslint/utils/ts-eslint').RuleListener>;
@@ -1,3 +1,3 @@
1
- import { ESLintUtils } from "@typescript-eslint/utils";
2
- import type { CommonDocs } from "../../utils/makePlugin";
1
+ import { ESLintUtils } from '@typescript-eslint/utils';
2
+ import { CommonDocs } from '../../utils/makePlugin';
3
3
  export declare const createRule: <Options extends readonly unknown[], MessageIds extends string>({ meta, name, ...rule }: Readonly<ESLintUtils.RuleWithMetaAndName<Options, MessageIds, CommonDocs>>) => ESLintUtils.RuleModule<MessageIds, Options, CommonDocs, ESLintUtils.RuleListener>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcgis/eslint-config",
3
- "version": "4.33.0-next.7",
3
+ "version": "4.33.0-next.71",
4
4
  "description": "ESLint configuration for arcgis-web-components",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -19,7 +19,7 @@
19
19
  ],
20
20
  "license": "SEE LICENSE IN LICENSE.md",
21
21
  "dependencies": {
22
- "@arcgis/components-utils": "4.33.0-next.7",
22
+ "@arcgis/components-utils": "4.33.0-next.71",
23
23
  "@eslint/js": "^9.17.0",
24
24
  "@types/confusing-browser-globals": "^1.0.3",
25
25
  "confusing-browser-globals": "^1.0.11",