Skip to content

@studnicky/no-function-registries ​

Disallows object literals containing two or more function implementations. A function registry obscures ownership, turns unrelated operations into a faux module, and makes a growing list of inline implementations the unit of reuse. Each operation belongs in an independently named module or cohesive class.

Fixable: No · Options: No · Suggested severity: error

✗ Incorrect ​

ts
const operators = {
  equals: (value: string): boolean => value === 'audit',
  contains: (value: string): boolean => value.includes('audit')
};
ts
const handlers = {
  created() { return publish('created'); },
  deleted() { return publish('deleted'); }
};

✓ Correct ​

ts
export class EqualsOperator {
  evaluate(value: string): boolean {
    const result = value === 'audit';
    return result;
  }
}
ts
export class ContainsOperator {
  evaluate(value: string): boolean {
    const result = value.includes('audit');
    return result;
  }
}

An object with one function property remains valid when it represents one cohesive operation at an integration boundary. Data objects and object literals that contain no function implementations remain valid.