# Module: undercomplicate

The LocusZoom data retrieval library was originally created as a standalone library, mainly for LZ usage. It is inlined into the LocusZoom source code, because there are no other places it is really used, and JSDoc references are much easier to generate with a package in the same repo.

See individual adapter classes (and their documentation) for helpful guides on what methods are available, and common customizations for LocusZoom use.

Source:
  - data/undercomplicate/index.js, line 1
See:
  - module:LocusZoom_Adapters~BaseLZAdapter

### Classes

LLNode
BaseAdapter
BaseUrlAdapter
LRUCache

### Methods

#### (static) full_outer_match(left, right, left_key, right_key) → {Array.<Object>}

Equivalent to FULL OUTER JOIN in SQL. Return records in either recordset, joined where appropriate.

##### Parameters:

Name | Type | Description
--- | --- | ---
`left` | Array.<object> | The left side recordset
`right` | Array.<object> | The right side recordset
`left_key` | string | The join field in left records
`right_key` | string | The join field in right records

Source:
  - data/undercomplicate/joins.js, line 105

##### Returns:

Type
  Array.<Object>

#### (static) groupBy(records, group_key) → {Map.<any, any>}

Simple grouping function, used to identify sets of records for joining.

Used internally by join helpers, exported mainly for unit testing

##### Parameters:

Name | Type | Description
--- | --- | ---
`records` | Array.<object> |
`group_key` | string |

Source:
  - data/undercomplicate/joins.js, line 16

##### Returns:

Type
  Map.<any, any>

#### (static) inner_match(left, right, left_key, right_key) → {Array.<Object>}

Equivalent to INNER JOIN in SQL. Only return record joins if the key field has a match on both left and right.

##### Parameters:

Name | Type | Description
--- | --- | ---
`left` | Array.<object> | The left side recordset
`right` | Array.<object> | The right side recordset
`left_key` | string | The join field in left records
`right_key` | string | The join field in right records

Source:
  - data/undercomplicate/joins.js, line 92

##### Returns:

Type
  Array.<Object>

#### (static) left_match(left, right, left_key, right_key) → {Array.<Object>}

Equivalent to LEFT OUTER JOIN in SQL. Return all left records, joined to matching right data where appropriate.

##### Parameters:

Name | Type | Description
--- | --- | ---
`left` | Array.<Object> | The left side recordset
`right` | Array.<Object> | The right side recordset
`left_key` | string | The join field in left records
`right_key` | string | The join field in right records

Source:
  - data/undercomplicate/joins.js, line 79

##### Returns:

Type
  Array.<Object>