socionics-core
v1.0.1
Published
Canonical socionics data and query library — 16 types, intertype relations, quadras, clubs and temperaments.
Maintainers
Readme
socionics-core
Canonical socionics data and query library. Covers all 16 types, 16 intertype relations, 8 functions, quadras, clubs and temperaments — structured for use in any JavaScript project.
No dependencies. No build step. Works in Node.js 12+.
npm install socionics-coreQuick start
const socionics = require('socionics-core');
// Get a type
const lii = socionics.getType('LII');
console.log(lii.name); // 'The Analyst'
console.log(lii.mbti); // 'INTj'
console.log(lii.quadra); // 'Alpha'
console.log(lii.functions[0].code); // 'Ti' (Leading)
console.log(lii.functions[4].code); // 'Fe' (Suggestive)
// Get the relation between two types
const rel = socionics.getRelation('LII', 'ESE');
console.log(rel.name); // 'Dual'
console.log(rel.orientation); // 'Hetroverted'
console.log(rel.rhythm); // 'Rhythmic'
console.log(rel.vibe); // 'Attractive'
// Asymmetric relations include direction
const ben = socionics.getRelation('ILE', 'EIE');
console.log(ben.name); // 'Benefaction'
console.log(ben.direction.benefactor); // 'ILE'
console.log(ben.direction.beneficiary); // 'EIE'
// Look up by MBTI equivalent
const ile = socionics.getTypeByMbti('ENTp');
console.log(ile.code); // 'ILE'
// Get quadra, club, temperament — by type code or group name
socionics.getQuadra('LII'); // Alpha quadra object
socionics.getClub('Researcher'); // Researcher club object
socionics.getTemperament('IJ'); // IJ temperament objectAPI
Types
getType(code) → object
Returns the full type object for a socionics code. Case-insensitive.
getType('LII') // or 'lii', 'Lii'Type object shape:
{
code: 'LII',
name: 'The Analyst',
mbti: 'INTj',
quadra: 'Alpha',
club: 'Researcher',
temperament: 'IJ',
extraversion: false,
rationality: 'Rational',
romanceStyle: 'Infantile',
communicationStyle: 'Cool',
stimulus: 'Confident',
argumentation: 'Constructor',
functions: [
{ position: 1, block: 'Ego', role: 'Leading', code: 'Ti' },
{ position: 2, block: 'Ego', role: 'Creative', code: 'Ne' },
{ position: 3, block: 'Super-ego', role: 'Role', code: 'Fi' },
{ position: 4, block: 'Super-ego', role: 'Vulnerable', code: 'Se' },
{ position: 5, block: 'Super-id', role: 'Suggestive', code: 'Fe' },
{ position: 6, block: 'Super-id', role: 'Mobilising', code: 'Si' },
{ position: 7, block: 'Id', role: 'Ignoring', code: 'Te' },
{ position: 8, block: 'Id', role: 'Demonstrative','code': 'Ni' }
]
}getAllTypes() → object[]
Returns all 16 type objects as an array.
getTypeByMbti(mbti) → object | null
Looks up a type by its MBTI equivalent (e.g. 'INTj'). Returns null if not found.
Functions
getFunction(code) → object
Returns the function object for a code ('Ne', 'Ti', 'Fe' etc).
{
code: 'Ne',
name: 'Extraverted Intuition',
attitude: 'Extraverted',
domain: 'Intuition',
slide: 'Creative Thinking',
description: 'Noticing trends and possibilities in a reality filled with unknown opportunities'
}The slide field is the SLIDE attitude name — a secondary descriptive label for each function used in socionics theory.
getAllFunctions() → object[]
Returns all 8 function objects as an array.
Relations
getRelation(typeA, typeB) → object
Returns the intertype relation between two types. Handles both directions of asymmetric relations (benefaction, supervision) automatically.
Relation object shape:
{
relation: 'dual', // camelCase relation key
name: 'Dual', // display name
from: 'LII',
to: 'ESE',
orientation: 'Hetroverted', // or 'Monoverted'
rhythm: 'Rhythmic', // or 'Arrhythmic'
vibe: 'Attractive', // or 'Repulsive'
symmetry: 'Symmetrical', // or 'Asymmetrical'
description: '...'
}For asymmetric relations a direction field is added:
// getRelation('ILE', 'EIE')
{
relation: 'benefaction',
direction: { benefactor: 'ILE', beneficiary: 'EIE' },
...
}
// getRelation('ILE', 'LSI')
{
relation: 'supervision',
direction: { supervisor: 'ILE', supervisee: 'LSI' },
...
}getRelationsFor(code) → object[]
Returns all 16 intertype relation objects for a given type (including identity).
getTypesByRelation(code, relationName) → object[]
Returns the type(s) that share a given relation with the specified type.
getTypesByRelation('LII', 'dual') // [ESE type object]
getTypesByRelation('LII', 'conflict') // [SEE type object]
getTypesByRelation('LII', 'benefaction') // [IEI, SLI type objects]Groups
getQuadra(codeOrName) → object
Accepts a type code ('LII') or quadra name ('Alpha').
{
name: 'Alpha',
types: ['ILE', 'LII', 'ESE', 'SEI'],
mbti: ['ENTp', 'INTj', 'ESFj', 'ISFp'],
theme: 'Reflecting and delighting in',
dualStyle: 'Careful-Infantile',
lifeStage: 'Childhood',
valuedFunctions: ['Ne', 'Ti', 'Fe', 'Si'],
description: '...'
}getClub(codeOrName) → object
Accepts a type code or club name ('Researcher', 'Socializer', 'Pragmatist', 'Humanitarian').
getTemperament(codeOrName) → object
Accepts a type code or temperament code ('EP', 'EJ', 'IP', 'IJ').
getAllGroups() → object
Returns the raw groups data containing all quadras, clubs and temperaments.
Raw data access
const { data } = require('socionics-core');
data.types // all 16 type objects keyed by code
data.relations // byType lookup + relation metadata
data.functions // all 8 function objects keyed by code
data.groups // quadras, clubs, temperamentsThe 16 types
| Code | Name | MBTI | Quadra | |------|------|------|--------| | ILE | The Searcher | ENTp | Alpha | | LII | The Analyst | INTj | Alpha | | ESE | The Enthusiast | ESFj | Alpha | | SEI | The Mediator | ISFp | Alpha | | EIE | The Actor | ENFj | Beta | | IEI | The Romantic | INFp | Beta | | SLE | The Marshal | ESTp | Beta | | LSI | The Inspector | ISTj | Beta | | SEE | The Ambassador | ESFp | Gamma | | ESI | The Guardian | ISFj | Gamma | | LIE | The Pioneer | ENTj | Gamma | | ILI | The Critic | INTp | Gamma | | IEE | The Psychologist | ENFp | Delta | | EII | The Humanist | INFj | Delta | | LSE | The Director | ESTj | Delta | | SLI | The Craftsman | ISTp | Delta |
The 16 intertype relations
| Relation | Orientation | Rhythm | Vibe | Symmetry | |----------|-------------|--------|------|----------| | Identity | Monoverted | Rhythmic | Repulsive | Symmetrical | | Dual | Hetroverted | Rhythmic | Attractive | Symmetrical | | Activation | Monoverted | Arrhythmic | Attractive | Symmetrical | | Mirror | Hetroverted | Arrhythmic | Repulsive | Symmetrical | | Kindred | Monoverted | Rhythmic | Repulsive | Symmetrical | | Semi-dual | Hetroverted | Rhythmic | Attractive | Symmetrical | | Business | Monoverted | Rhythmic | Repulsive | Symmetrical | | Quasi-identity | Monoverted | Arrhythmic | Attractive | Symmetrical | | Benefactor | Monoverted | Arrhythmic | Attractive | Asymmetrical | | Beneficiary | Monoverted | Arrhythmic | Attractive | Asymmetrical | | Supervisor | Hetroverted | Arrhythmic | Repulsive | Asymmetrical | | Supervisee | Hetroverted | Arrhythmic | Repulsive | Asymmetrical | | Super-ego | Monoverted | Rhythmic | Repulsive | Symmetrical | | Extinguishment | Hetroverted | Rhythmic | Attractive | Symmetrical | | Mirage | Hetroverted | Rhythmic | Attractive | Symmetrical | | Conflict | Hetroverted | Arrhythmic | Repulsive | Symmetrical |
Background
Socionics is a theory of personality and interpersonal relations developed by Aušra Augustinavičiūtė in the 1970s, building on Carl Jung's work on psychological types. It shares the familiar 16-type structure with MBTI but takes a different road — the function ordering differs, and the intertype relations system has no MBTI equivalent.
For human-readable explanations of every type, function and relation, see socionicsinsight.com.
For a plain-English introduction to socionics, see the Socionics Made Simple Kindle series: amazon.com/dp/B0XXXXX.
Contributing
Corrections, additional attributes, and translations are welcome. Please open an issue before submitting a PR for anything beyond a data fix.
Licence
MIT
