47 lines
1.7 KiB
JavaScript
47 lines
1.7 KiB
JavaScript
import tseslint from "typescript-eslint";
|
|
|
|
export default tseslint.config(
|
|
{
|
|
ignores: ["**/dist/**", "**/node_modules/**", "**/*.js", "**/*.mjs"],
|
|
},
|
|
...tseslint.configs.recommended,
|
|
{
|
|
rules: {
|
|
"@typescript-eslint/no-explicit-any": "error",
|
|
"@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_" }],
|
|
},
|
|
},
|
|
// Engine RHS purity: ban impure globals in rete/src
|
|
{
|
|
files: ["packages/rete/src/**/*.ts"],
|
|
rules: {
|
|
"no-restricted-globals": [
|
|
"error",
|
|
{ name: "Date", message: "RHS purity: use session.now() instead" },
|
|
{ name: "performance", message: "RHS purity: forbidden in engine" },
|
|
{ name: "setTimeout", message: "RHS purity: forbidden in engine" },
|
|
{ name: "setInterval", message: "RHS purity: forbidden in engine" },
|
|
{ name: "clearTimeout", message: "RHS purity: forbidden in engine" },
|
|
{ name: "clearInterval", message: "RHS purity: forbidden in engine" },
|
|
{ name: "fetch", message: "RHS purity: forbidden in engine" },
|
|
{ name: "console", message: "RHS purity: use debug flag instead" },
|
|
],
|
|
"no-restricted-syntax": [
|
|
"error",
|
|
{
|
|
selector: "MemberExpression[object.name='Math'][property.name='random']",
|
|
message: "RHS purity: Math.random() forbidden in engine",
|
|
},
|
|
],
|
|
},
|
|
},
|
|
// EventLog is a transcript, not rule logic — wall-clock timestamps
|
|
// are intentional here (see SPEC.md §Rete II Reference Target and
|
|
// eventlog.ts header). Carve it out from the RHS-purity Date ban.
|
|
{
|
|
files: ["packages/rete/src/eventlog.ts"],
|
|
rules: {
|
|
"no-restricted-globals": "off",
|
|
},
|
|
}
|
|
);
|