@lexical/eslint-plugin 0.15.0 → 0.16.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/LexicalEslintPlugin.d.ts +3 -3
- package/LexicalEslintPlugin.dev.js +3 -3
- package/LexicalEslintPlugin.dev.mjs +2 -2
- package/LexicalEslintPlugin.js.flow +1 -0
- package/LexicalEslintPlugin.prod.js +2 -2
- package/LexicalEslintPlugin.prod.mjs +1 -1
- package/package.json +1 -1
- package/rules/rules-of-lexical.d.ts +0 -15
- package/util/getFunctionName.d.ts +1 -1
package/LexicalEslintPlugin.d.ts
CHANGED
|
@@ -5,8 +5,8 @@ declare namespace all {
|
|
|
5
5
|
};
|
|
6
6
|
export { rules_1 as rules };
|
|
7
7
|
}
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
import { name } from "../package.json";
|
|
9
|
+
import { version } from "../package.json";
|
|
10
10
|
export namespace configs {
|
|
11
11
|
export { all };
|
|
12
12
|
export { all as recommended };
|
|
@@ -16,6 +16,6 @@ export namespace meta {
|
|
|
16
16
|
export { version };
|
|
17
17
|
}
|
|
18
18
|
export let rules: {
|
|
19
|
-
'rules-of-lexical':
|
|
19
|
+
'rules-of-lexical': import("eslint").Rule.RuleModule;
|
|
20
20
|
};
|
|
21
21
|
export {};
|
|
@@ -33,7 +33,7 @@ var keywords = [
|
|
|
33
33
|
"lexical",
|
|
34
34
|
"editor"
|
|
35
35
|
];
|
|
36
|
-
var version$1 = "0.
|
|
36
|
+
var version$1 = "0.16.0";
|
|
37
37
|
var license = "MIT";
|
|
38
38
|
var repository = {
|
|
39
39
|
type: "git",
|
|
@@ -526,7 +526,7 @@ rulesOfLexical$1.rulesOfLexical = {
|
|
|
526
526
|
const pushIgnoredNode = ( /** @type {Node} */node) => ignoreSet.add(node);
|
|
527
527
|
const popIgnoredNode = ( /** @type {Node} */node) => ignoreSet.delete(node);
|
|
528
528
|
const pushFunction = ( /** @type {Node} */node) => {
|
|
529
|
-
const name = getFunctionNameIdentifier(getLexicalFunctionName(node));
|
|
529
|
+
const name = getFunctionNameIdentifier( /** @type {Node | undefined} */getLexicalFunctionName(node));
|
|
530
530
|
funStack.push({
|
|
531
531
|
name,
|
|
532
532
|
node
|
|
@@ -696,4 +696,4 @@ var plugin$1 = /*#__PURE__*/_mergeNamespaces({
|
|
|
696
696
|
*
|
|
697
697
|
*/
|
|
698
698
|
|
|
699
|
-
|
|
699
|
+
exports.default = plugin$1;
|
|
@@ -31,7 +31,7 @@ var keywords = [
|
|
|
31
31
|
"lexical",
|
|
32
32
|
"editor"
|
|
33
33
|
];
|
|
34
|
-
var version$1 = "0.
|
|
34
|
+
var version$1 = "0.16.0";
|
|
35
35
|
var license = "MIT";
|
|
36
36
|
var repository = {
|
|
37
37
|
type: "git",
|
|
@@ -524,7 +524,7 @@ rulesOfLexical$1.rulesOfLexical = {
|
|
|
524
524
|
const pushIgnoredNode = ( /** @type {Node} */node) => ignoreSet.add(node);
|
|
525
525
|
const popIgnoredNode = ( /** @type {Node} */node) => ignoreSet.delete(node);
|
|
526
526
|
const pushFunction = ( /** @type {Node} */node) => {
|
|
527
|
-
const name = getFunctionNameIdentifier(getLexicalFunctionName(node));
|
|
527
|
+
const name = getFunctionNameIdentifier( /** @type {Node | undefined} */getLexicalFunctionName(node));
|
|
528
528
|
funStack.push({
|
|
529
529
|
name,
|
|
530
530
|
node
|
|
@@ -15,6 +15,6 @@ l.rulesOfLexical={create(a){let c=a.getSourceCode(),e=D(a),b=new Set,h=new Set,g
|
|
|
15
15
|
d=>{g.pop();b.delete(d)},W=()=>{const d=g[g.length-1];return d?d.name:void 0};return{ArrowFunctionExpression:v,"ArrowFunctionExpression:exit":w,CallExpression:d=>{if(!u()){var f=E(d.callee);if(e.isLexicalProvider(f)||e.isSafeDollarFunction(f))b.add(d);else if(e.isDollarFunction(f)){var k=W();if(k&&!h.has(k)){h.add(k);var q=B(c,k),G=L(k,q),H=M(q),x={callee:c.getText(d.callee),caller:c.getText(k),suggestName:G};d=I=>{const J=new Set,y=[],K=m=>{J.has(m)||(J.add(m),y.push(I.replaceText(m,G)))};K(k);H&&
|
|
16
16
|
y.push(I.insertTextAfter(H,N(x)));if(q)for(const m of q.references)K(m.identifier);return y};a.report({data:x,fix:d,messageId:"rulesOfLexicalReport",node:k,suggest:[{data:x,fix:d,messageId:"rulesOfLexicalSuggestion"}]})}}}},"CallExpression:exit":F,ClassBody:d=>b.add(d),"ClassBody:exit":F,FunctionDeclaration:v,"FunctionDeclaration:exit":w,FunctionExpression:v,"FunctionExpression:exit":w}},meta:{docs:{description:"enforces the Rules of Lexical",recommended:!0,url:"https://lexical.dev/docs/packages/lexical-eslint-plugin"},
|
|
17
17
|
fixable:"code",hasSuggestions:!0,messages:{rulesOfLexicalReport:"{{ callee }} called from {{ caller }}, without $ prefix or read/update context",rulesOfLexicalSuggestion:"Rename {{ caller }} to {{ suggestName }}"},schema:[{additionalProperties:!1,properties:{isDollarFunction:O,isIgnoredFunction:O,isLexicalProvider:O,isSafeDollarFunction:O},type:"object"}],type:"suggestion"}};
|
|
18
|
-
let {name:P,version:Q}={name:"@lexical/eslint-plugin",description:"Lexical specific linting rules for ESLint",keywords:["eslint","eslint-plugin","eslintplugin","lexical","editor"],version:"0.
|
|
18
|
+
let {name:P,version:Q}={name:"@lexical/eslint-plugin",description:"Lexical specific linting rules for ESLint",keywords:["eslint","eslint-plugin","eslintplugin","lexical","editor"],version:"0.16.0",license:"MIT",repository:{type:"git",url:"git+https://github.com/facebook/lexical.git",directory:"packages/lexical-eslint-plugin"},main:"LexicalEslintPlugin.js",types:"index.d.ts",bugs:{url:"https://github.com/facebook/lexical/issues"},homepage:"https://lexical.dev/docs/packages/lexical-eslint-plugin",sideEffects:!1,
|
|
19
19
|
peerDependencies:{eslint:">=7.31.0 || ^8.0.0"},exports:{".":{"import":{types:"./index.d.ts",development:"./LexicalEslintPlugin.dev.mjs",production:"./LexicalEslintPlugin.prod.mjs",node:"./LexicalEslintPlugin.node.mjs","default":"./LexicalEslintPlugin.mjs"},require:{types:"./index.d.ts",development:"./LexicalEslintPlugin.dev.js",production:"./LexicalEslintPlugin.prod.js","default":"./LexicalEslintPlugin.js"}}},devDependencies:{"@types/eslint":"^8.56.9"},module:"LexicalEslintPlugin.mjs"},{rulesOfLexical:R}=
|
|
20
|
-
l,S={plugins:["@lexical"],rules:{"@lexical/rules-of-lexical":"warn"}};for(var T={configs:{all:S,recommended:S},meta:{name:P,version:Q},rules:{"rules-of-lexical":R}},U={__proto__:null,default:T&&T.__esModule&&Object.prototype.hasOwnProperty.call(T,"default")?T["default"]:T},V=[T],X=0;X<V.length;X++){var Y=V[X];if("string"!==typeof Y&&!Array.isArray(Y))for(var Z in Y)"default"===Z||Z in U||(U[Z]=Y[Z])}
|
|
20
|
+
l,S={plugins:["@lexical"],rules:{"@lexical/rules-of-lexical":"warn"}};for(var T={configs:{all:S,recommended:S},meta:{name:P,version:Q},rules:{"rules-of-lexical":R}},U={__proto__:null,default:T&&T.__esModule&&Object.prototype.hasOwnProperty.call(T,"default")?T["default"]:T},V=[T],X=0;X<V.length;X++){var Y=V[X];if("string"!==typeof Y&&!Array.isArray(Y))for(var Z in Y)"default"===Z||Z in U||(U[Z]=Y[Z])}exports.default=U
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];if("string"!=typeof i&&!Array.isArray(i))for(var r in i)"default"===r||r in e||(e[r]=i[r])}return e}function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var n={name:"@lexical/eslint-plugin",description:"Lexical specific linting rules for ESLint",keywords:["eslint","eslint-plugin","eslintplugin","lexical","editor"],version:"0.
|
|
9
|
+
function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];if("string"!=typeof i&&!Array.isArray(i))for(var r in i)"default"===r||r in e||(e[r]=i[r])}return e}function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var n={name:"@lexical/eslint-plugin",description:"Lexical specific linting rules for ESLint",keywords:["eslint","eslint-plugin","eslintplugin","lexical","editor"],version:"0.16.0",license:"MIT",repository:{type:"git",url:"git+https://github.com/facebook/lexical.git",directory:"packages/lexical-eslint-plugin"},main:"LexicalEslintPlugin.js",types:"index.d.ts",bugs:{url:"https://github.com/facebook/lexical/issues"},homepage:"https://lexical.dev/docs/packages/lexical-eslint-plugin",sideEffects:!1,peerDependencies:{eslint:">=7.31.0 || ^8.0.0"},exports:{".":{import:{types:"./index.d.ts",development:"./LexicalEslintPlugin.dev.mjs",production:"./LexicalEslintPlugin.prod.mjs",node:"./LexicalEslintPlugin.node.mjs",default:"./LexicalEslintPlugin.mjs"},require:{types:"./index.d.ts",development:"./LexicalEslintPlugin.dev.js",production:"./LexicalEslintPlugin.prod.js",default:"./LexicalEslintPlugin.js"}}},devDependencies:{"@types/eslint":"^8.56.9"},module:"LexicalEslintPlugin.mjs"},i={},r={},s={getParentAssignmentName:function(e){const t=e.parent;return"VariableDeclarator"===t.type&&t.init===e?t.id:"AssignmentExpression"===t.type&&t.right===e&&"="===t.operator?t.left:void 0}};const{getParentAssignmentName:o}=s;r.getFunctionName=function(e){return"FunctionDeclaration"===e.type||"FunctionExpression"===e.type&&e.id?e.id:"FunctionExpression"===e.type||"ArrowFunctionExpression"===e.type?o(e):void 0};var a={};a.buildMatcher=function(...e){const t=[],n=[];for(const r of e.flat(1))r&&("string"==typeof r?n.push(/^[(^]/.test(r)?r:`^${i=r,i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}$`):r&&r instanceof RegExp?r.flags?t.push((e=>r.test(e))):n.push(r.source):"function"==typeof r&&t.push(r));var i;const r=n.map((e=>`(?:${e})`)).join("|");if(r){const e=new RegExp(r);t.push((t=>e.test(t)))}return e=>{if(e){if("Identifier"!==e.type)throw new Error(`Expecting Identifier, not ${e.type}`);for(const n of t)if(n(e.name,e))return!0}return!1}};const{getFunctionName:l}=r,{getParentAssignmentName:c}=s,{buildMatcher:u}=a;const p={isDollarFunction:[/^\$[a-z_]/],isIgnoredFunction:[],isLexicalProvider:["parseEditorState","read","registerCommand","registerNodeTransform","update"],isSafeDollarFunction:[/^\$is[A-Z_]/]};function d(e){if(e)return"Identifier"===e.type?e:"MemberExpression"!==e.type||e.computed?void 0:d(e.property)}function f(e,t){const n=Array.isArray(e.options)?e.options[0]:void 0;return n&&t in n?n[t]:void 0}const g={oneOf:[{type:"string"},{contains:{type:"string"},type:"array"}]};i.rulesOfLexical={create(e){const t=function(e){return e.getSourceCode()}(e),n=function(e){const t={};for(const n in p){const i=n;t[i]=u(p[i],f(e,i))}return t}(e),i=new Set,r=new Set,s=[],o=e=>i.add(e),a=e=>i.delete(e),g=e=>{const t=d(function(e){const t=l(e);if(t)return t;const n=e.parent;if("CallExpression"===n.type&&n.arguments[0]===e&&function(e){return e&&"Identifier"===e.type&&/^use([A-Z]|$)/.test(e.name)}(d(n.callee)))return c(n)}(e));s.push({name:t,node:e}),(n.isDollarFunction(t)||n.isIgnoredFunction(t)||n.isLexicalProvider(t))&&o(e)},x=e=>{s.pop(),a(e)};return{ArrowFunctionExpression:g,"ArrowFunctionExpression:exit":x,CallExpression:a=>{if((()=>{if(i.size>0)return!0;const e=s[s.length-1];return e&&"Property"===e.node.parent.type})())return;const l=d(a.callee);if(n.isLexicalProvider(l)||n.isSafeDollarFunction(l))return void o(a);if(!n.isDollarFunction(l))return;const c=(e=>{const t=s[s.length-1];return t?t.name:void 0})();if(!c||r.has(c))return;r.add(c);const u=function(e,t){const n=e.scopeManager;for(let e=t;e;e=e.parent){const i=n.getDeclaredVariables(e).find((e=>e.identifiers.includes(t)));if(i)return i;const r=n.acquire(e);if(r)return r.set.get(t.name)||(r.upper?r.upper.set.get(t.name):void 0)}}(t,c),p=function(e,t){const n=function(e){return/^[a-z]/.test(e)?"$"+e:/^[A-Z][a-z]/.test(e)?"$"+e.slice(0,1).toLowerCase()+e.slice(1):`$_${e}`}(e.name);if(t)for(let e=t.scope;e;e=e.upper)if(e.set.has(n))return n+"_";return n}(c,u),f=function(e){if(e&&1===e.defs.length){const[{node:t}]=e.defs;if("ExportNamedDeclaration"===t.parent.type)return t.parent;if("VariableDeclaration"===t.parent.type&&"ExportNamedDeclaration"===t.parent.parent.type)return t.parent.parent}}(u),g={callee:t.getText(a.callee),caller:t.getText(c),suggestName:p},x=e=>{const t=new Set,n=[],i=i=>{t.has(i)||(t.add(i),n.push(e.replaceText(i,p)))};if(i(c),f&&n.push(e.insertTextAfter(f,function({caller:e,suggestName:t}){return`\n/** @deprecated renamed to {@link ${t}} by @lexical/eslint-plugin rules-of-lexical */\nexport const ${e} = ${t};`}(g))),u)for(const e of u.references)i(e.identifier);return n};e.report({data:g,fix:x,messageId:"rulesOfLexicalReport",node:c,suggest:[{data:g,fix:x,messageId:"rulesOfLexicalSuggestion"}]})},"CallExpression:exit":a,ClassBody:o,"ClassBody:exit":a,FunctionDeclaration:g,"FunctionDeclaration:exit":x,FunctionExpression:g,"FunctionExpression:exit":x}},meta:{docs:{description:"enforces the Rules of Lexical",recommended:!0,url:"https://lexical.dev/docs/packages/lexical-eslint-plugin"},fixable:"code",hasSuggestions:!0,messages:{rulesOfLexicalReport:"{{ callee }} called from {{ caller }}, without $ prefix or read/update context",rulesOfLexicalSuggestion:"Rename {{ caller }} to {{ suggestName }}"},schema:[{additionalProperties:!1,properties:{isDollarFunction:g,isIgnoredFunction:g,isLexicalProvider:g,isSafeDollarFunction:g},type:"object"}],type:"suggestion"}};const{name:x,version:m}=n,{rulesOfLexical:y}=i,h={plugins:["@lexical"],rules:{"@lexical/rules-of-lexical":"warn"}};var E={configs:{all:h,recommended:h},meta:{name:x,version:m},rules:{"rules-of-lexical":y}},v=e({__proto__:null,default:t(E)},[E]);export{v as default};
|
package/package.json
CHANGED
|
@@ -35,18 +35,3 @@ export type BaseMatchers<T> = {
|
|
|
35
35
|
*/
|
|
36
36
|
isSafeDollarFunction: T;
|
|
37
37
|
};
|
|
38
|
-
/**
|
|
39
|
-
* @typedef {import('../util/buildMatcher.js').ToMatcher} ToMatcher
|
|
40
|
-
* @typedef {import('../util/buildMatcher.js').IdentifierMatcher} IdentifierMatcher
|
|
41
|
-
*/
|
|
42
|
-
/**
|
|
43
|
-
* @template T
|
|
44
|
-
* @typedef {Object} BaseMatchers<T>
|
|
45
|
-
* @property {T} isDollarFunction Catch all identifiers that begin with '$' or 'INTERNAL_$' followed by a lowercase Latin character or underscore
|
|
46
|
-
* @property {T} isIgnoredFunction These functions may call any $functions even though they do not have the isDollarFunction naming convention
|
|
47
|
-
* @property {T} isLexicalProvider Certain calls through the editor or editorState allow for implicit access to call $functions: read, registerCommand, registerNodeTransform, update.
|
|
48
|
-
* @property {T} isSafeDollarFunction It's usually safe to call $isNode functions, so any '$is' or 'INTERNAL_$is' function may be called in any context.
|
|
49
|
-
*/
|
|
50
|
-
/** @type {BaseMatchers<Exclude<ToMatcher, undefined>[]>} */
|
|
51
|
-
declare const BaseMatchers: BaseMatchers<Exclude<ToMatcher, undefined>[]>;
|
|
52
|
-
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export function getFunctionName(node: import('eslint').Rule.Node):
|
|
1
|
+
export function getFunctionName(node: import('eslint').Rule.Node): import("estree").Pattern | null | undefined;
|