@slip-stream-kit/eslint-plugin 0.41.0 → 0.43.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/index.js +19 -4
- package/dist/index.js.map +2 -2
- package/dist/rules/layer-imports/layer-imports.d.ts +2 -0
- package/package.json +2 -2
- package/readme.md +7 -0
package/dist/index.js
CHANGED
|
@@ -1824,13 +1824,19 @@ var layerImports = {
|
|
|
1824
1824
|
type: "array",
|
|
1825
1825
|
items: { type: "string" },
|
|
1826
1826
|
description: "Optional globs; the rule is skipped for matching files."
|
|
1827
|
+
},
|
|
1828
|
+
isolate: {
|
|
1829
|
+
type: "array",
|
|
1830
|
+
items: { type: "string" },
|
|
1831
|
+
description: "Folders whose subfolders may not import each other (`commands/a` \u2192 `commands/b`)."
|
|
1827
1832
|
}
|
|
1828
1833
|
},
|
|
1829
1834
|
additionalProperties: false
|
|
1830
1835
|
}
|
|
1831
1836
|
],
|
|
1832
1837
|
messages: {
|
|
1833
|
-
upward: "`{{fromLayer}}` cannot import `{{specifier}}` from the higher layer `{{toLayer}}`. Layers import only their own level or below: {{order}}. Move the shared code down into a lower layer, or pass it in from above."
|
|
1838
|
+
upward: "`{{fromLayer}}` cannot import `{{specifier}}` from the higher layer `{{toLayer}}`. Layers import only their own level or below: {{order}}. Move the shared code down into a lower layer, or pass it in from above.",
|
|
1839
|
+
sibling: "`{{fromLayer}}/{{fromUnit}}` cannot import `{{specifier}}` from its sibling `{{fromLayer}}/{{toUnit}}`: folders under `{{fromLayer}}/` are isolated from each other. Move the shared code down into a lower layer, or pass it in from above."
|
|
1834
1840
|
}
|
|
1835
1841
|
},
|
|
1836
1842
|
create(context) {
|
|
@@ -1842,20 +1848,29 @@ var layerImports = {
|
|
|
1842
1848
|
}
|
|
1843
1849
|
const layers = options.layers ?? DEFAULT_LAYERS;
|
|
1844
1850
|
const levels = levelIndex(layers);
|
|
1845
|
-
const fromLayer = fileDirsUnderSrc(filename, srcDir)
|
|
1851
|
+
const [fromLayer, fromUnit] = fileDirsUnderSrc(filename, srcDir);
|
|
1846
1852
|
const fromLevel = fromLayer === void 0 ? void 0 : levels.get(fromLayer);
|
|
1847
1853
|
if (fromLayer === void 0 || fromLevel === void 0) {
|
|
1848
1854
|
return {};
|
|
1849
1855
|
}
|
|
1850
1856
|
const allowTypeImports = options.allowTypeImports ?? true;
|
|
1851
1857
|
const rootAlias = options.rootAlias ?? DEFAULT_ROOT_ALIAS;
|
|
1858
|
+
const isolated = fromUnit !== void 0 && (options.isolate ?? []).includes(fromLayer);
|
|
1852
1859
|
const check = (node) => {
|
|
1853
1860
|
const source = readImportSource(node);
|
|
1854
1861
|
if (source === null || allowTypeImports && source.typeOnly) {
|
|
1855
1862
|
return;
|
|
1856
1863
|
}
|
|
1857
|
-
const toLayer = resolveUnderSrc(filename, srcDir, source.specifier, rootAlias)
|
|
1864
|
+
const [toLayer, toUnit] = resolveUnderSrc(filename, srcDir, source.specifier, rootAlias) ?? [];
|
|
1858
1865
|
const toLevel = toLayer === void 0 ? void 0 : levels.get(toLayer);
|
|
1866
|
+
if (isolated && toLayer === fromLayer && toUnit !== void 0 && toUnit !== fromUnit) {
|
|
1867
|
+
context.report({
|
|
1868
|
+
node: source.node,
|
|
1869
|
+
messageId: "sibling",
|
|
1870
|
+
data: { fromLayer, fromUnit, toUnit, specifier: source.specifier }
|
|
1871
|
+
});
|
|
1872
|
+
return;
|
|
1873
|
+
}
|
|
1859
1874
|
if (toLevel === void 0 || toLevel <= fromLevel) {
|
|
1860
1875
|
return;
|
|
1861
1876
|
}
|
|
@@ -3515,7 +3530,7 @@ var PLUGIN_NAME = "@wl";
|
|
|
3515
3530
|
var plugin = {
|
|
3516
3531
|
meta: {
|
|
3517
3532
|
name: "@wl/eslint-plugin",
|
|
3518
|
-
version: "0.
|
|
3533
|
+
version: "0.43.0"
|
|
3519
3534
|
},
|
|
3520
3535
|
rules,
|
|
3521
3536
|
configs: {}
|