Skip to main content

ParquetSchemaDefinitionCache

Extends​

Implements​

  • Disposable

Constructors​

new ParquetSchemaDefinitionCache()​

new ParquetSchemaDefinitionCache(max): ParquetSchemaDefinitionCache

Parameters​

ParameterTypeDefault value
maxnumber1000

Returns​

ParquetSchemaDefinitionCache

Overrides​

LRUCache<ParquetSchemaDefinition<any>, ParquetSchema<any>>.constructor

Properties​

[toStringTag]​

[toStringTag]: string;

A String value that is used in the creation of the default string description of an object. Called by the built-in method Object.prototype.toString.

Inherited from​

LRUCache.[toStringTag]


allowStale​

allowStale: boolean;

LRUCache.OptionsBase.allowStale

Inherited from​

LRUCache.allowStale


allowStaleOnFetchAbort​

allowStaleOnFetchAbort: boolean;

LRUCache.OptionsBase.allowStaleOnFetchAbort

Inherited from​

LRUCache.allowStaleOnFetchAbort


allowStaleOnFetchRejection​

allowStaleOnFetchRejection: boolean;

LRUCache.OptionsBase.allowStaleOnFetchRejection

Inherited from​

LRUCache.allowStaleOnFetchRejection


ignoreFetchAbort​

ignoreFetchAbort: boolean;

LRUCache.OptionsBase.ignoreFetchAbort

Inherited from​

LRUCache.ignoreFetchAbort


maxEntrySize​

maxEntrySize: number;

LRUCache.OptionsBase.maxEntrySize

Inherited from​

LRUCache.maxEntrySize


noDeleteOnFetchRejection​

noDeleteOnFetchRejection: boolean;

LRUCache.OptionsBase.noDeleteOnFetchRejection

Inherited from​

LRUCache.noDeleteOnFetchRejection


noDeleteOnStaleGet​

noDeleteOnStaleGet: boolean;

LRUCache.OptionsBase.noDeleteOnStaleGet

Inherited from​

LRUCache.noDeleteOnStaleGet


noDisposeOnSet​

noDisposeOnSet: boolean;

LRUCache.OptionsBase.noDisposeOnSet

Inherited from​

LRUCache.noDisposeOnSet


noUpdateTTL​

noUpdateTTL: boolean;

LRUCache.OptionsBase.noUpdateTTL

Inherited from​

LRUCache.noUpdateTTL


sizeCalculation?​

optional sizeCalculation: SizeCalculator<ParquetSchemaDefinition<any>, ParquetSchema<any>>;

LRUCache.OptionsBase.sizeCalculation

Inherited from​

LRUCache.sizeCalculation


ttl​

ttl: number;

LRUCache.OptionsBase.ttl

Inherited from​

LRUCache.ttl


ttlAutopurge​

ttlAutopurge: boolean;

LRUCache.OptionsBase.ttlAutopurge

Inherited from​

LRUCache.ttlAutopurge


ttlResolution​

ttlResolution: number;

LRUCache.OptionsBase.ttlResolution

Inherited from​

LRUCache.ttlResolution


updateAgeOnGet​

updateAgeOnGet: boolean;

LRUCache.OptionsBase.updateAgeOnGet

Inherited from​

LRUCache.updateAgeOnGet


updateAgeOnHas​

updateAgeOnHas: boolean;

LRUCache.OptionsBase.updateAgeOnHas

Inherited from​

LRUCache.updateAgeOnHas

Accessors​

calculatedSize​

get calculatedSize(): number

The total computed size of items in the cache (read-only)

Returns​

number

Inherited from​

LRUCache.calculatedSize


dispose​

get dispose(): undefined | Disposer<K, V>

LRUCache.OptionsBase.dispose (read-only)

Returns​

undefined | Disposer<K, V>

Inherited from​

LRUCache.dispose


disposeAfter​

get disposeAfter(): undefined | Disposer<K, V>

LRUCache.OptionsBase.disposeAfter (read-only)

Returns​

undefined | Disposer<K, V>

Inherited from​

LRUCache.disposeAfter


fetchMethod​

get fetchMethod(): undefined | Fetcher<K, V, FC>

LRUCache.OptionsBase.fetchMethod (read-only)

Returns​

undefined | Fetcher<K, V, FC>

Inherited from​

LRUCache.fetchMethod


max​

get max(): number

LRUCache.OptionsBase.max (read-only)

Returns​

number

Inherited from​

LRUCache.max


maxSize​

get maxSize(): number

LRUCache.OptionsBase.maxSize (read-only)

Returns​

number

Inherited from​

LRUCache.maxSize


memoMethod​

get memoMethod(): undefined | Memoizer<K, V, FC>

Returns​

undefined | Memoizer<K, V, FC>

Inherited from​

LRUCache.memoMethod


size​

get size(): number

The number of items stored in the cache (read-only)

Returns​

number

Inherited from​

LRUCache.size

Methods​

[dispose]()​

dispose: Promise<void>

Returns​

Promise<void>

Implementation of​

Disposable.[dispose]


[iterator]()​

iterator: Generator<[ParquetSchemaDefinition<any>, ParquetSchema<any>], void, unknown>

Iterating over the cache itself yields the same results as LRUCache.entries

Returns​

Generator<[ParquetSchemaDefinition<any>, ParquetSchema<any>], void, unknown>

Inherited from​

LRUCache.[iterator]


clear()​

clear(): void

Clear the cache entirely, throwing away all values.

Returns​

void

Inherited from​

LRUCache.clear


delete()​

delete(k): boolean

Deletes a key out of the cache.

Returns true if the key was deleted, false otherwise.

Parameters​

ParameterType
kParquetSchemaDefinition<any>

Returns​

boolean

Inherited from​

LRUCache.delete


dump()​

dump(): [ParquetSchemaDefinition<any>, Entry<ParquetSchema<any>>][]

Return an array of [key, LRUCache.Entry] tuples which can be passed to LRLUCache#load.

The start fields are calculated relative to a portable Date.now() timestamp, even if performance.now() is available.

Stale entries are always included in the dump, even if LRUCache.OptionsBase.allowStale is false.

Note: this returns an actual array, not a generator, so it can be more easily passed around.

Returns​

[ParquetSchemaDefinition<any>, Entry<ParquetSchema<any>>][]

Inherited from​

LRUCache.dump


entries()​

entries(): Generator<[ParquetSchemaDefinition<any>, ParquetSchema<any>], void, unknown>

Return a generator yielding [key, value] pairs, in order from most recently used to least recently used.

Returns​

Generator<[ParquetSchemaDefinition<any>, ParquetSchema<any>], void, unknown>

Inherited from​

LRUCache.entries


fetch()​

fetch(k, fetchOptions)​

fetch(k, fetchOptions): Promise<undefined | ParquetSchema<any>>

Make an asynchronous cached fetch using the LRUCache.OptionsBase.fetchMethod function.

If the value is in the cache and not stale, then the returned Promise resolves to the value.

If not in the cache, or beyond its TTL staleness, then fetchMethod(key, staleValue, { options, signal, context }) is called, and the value returned will be added to the cache once resolved.

If called with allowStale, and an asynchronous fetch is currently in progress to reload a stale value, then the former stale value will be returned.

If called with forceRefresh, then the cached item will be re-fetched, even if it is not stale. However, if allowStale is also set, then the old value will still be returned. This is useful in cases where you want to force a reload of a cached value. If a background fetch is already in progress, then forceRefresh has no effect.

If multiple fetches for the same key are issued, then they will all be coalesced into a single call to fetchMethod.

Note that this means that handling options such as LRUCache.OptionsBase.allowStaleOnFetchAbort, LRUCache.FetchOptions.signal, and LRUCache.OptionsBase.allowStaleOnFetchRejection will be determined by the FIRST fetch() call for a given key.

This is a known (fixable) shortcoming which will be addresed on when someone complains about it, as the fix would involve added complexity and may not be worth the costs for this edge case.

If LRUCache.OptionsBase.fetchMethod is not specified, then this is effectively an alias for Promise.resolve(cache.get(key)).

When the fetch method resolves to a value, if the fetch has not been aborted due to deletion, eviction, or being overwritten, then it is added to the cache using the options provided.

If the key is evicted or deleted before the fetchMethod resolves, then the AbortSignal passed to the fetchMethod will receive an abort event, and the promise returned by fetch() will reject with the reason for the abort.

If a signal is passed to the fetch() call, then aborting the signal will abort the fetch and cause the fetch() promise to reject with the reason provided.

Setting context

If an FC type is set to a type other than unknown, void, or undefined in the LRUCache constructor, then all calls to cache.fetch() must provide a context option. If set to undefined or void, then calls to fetch must not provide a context option.

The context param allows you to provide arbitrary data that might be relevant in the course of fetching the data. It is only relevant for the course of a single fetch() operation, and discarded afterwards.

Note: fetch() calls are inflight-unique

If you call fetch() multiple times with the same key value, then every call after the first will resolve on the same promise1, even if they have different settings that would otherwise change the behavior of the fetch, such as noDeleteOnFetchRejection or ignoreFetchAbort.

In most cases, this is not a problem (in fact, only fetching something once is what you probably want, if you're caching in the first place). If you are changing the fetch() options dramatically between runs, there's a good chance that you might be trying to fit divergent semantics into a single object, and would be better off with multiple cache instances.

1: Ie, they're not the "same Promise", but they resolve at the same time, because they're both waiting on the same underlying fetchMethod response.

Parameters​
ParameterType
kParquetSchemaDefinition<any>
fetchOptionsFetchOptions<ParquetSchemaDefinition<any>, ParquetSchema<any>, unknown>
Returns​

Promise<undefined | ParquetSchema<any>>

Inherited from​

LRUCache.fetch

fetch(k, fetchOptions)​

fetch(k, fetchOptions?): Promise<undefined | ParquetSchema<any>>
Parameters​
ParameterType
kParquetSchemaDefinition<any>
fetchOptions?FetchOptions<ParquetSchemaDefinition<any>, ParquetSchema<any>, unknown>
Returns​

Promise<undefined | ParquetSchema<any>>

Inherited from​

LRUCache.fetch


find()​

find(fn, getOptions?): undefined | ParquetSchema<any>

Find a value for which the supplied fn method returns a truthy value, similar to Array.find(). fn is called as fn(value, key, cache).

Parameters​

ParameterType
fn(v, k, self) => boolean
getOptions?GetOptions<ParquetSchemaDefinition<any>, ParquetSchema<any>, unknown>

Returns​

undefined | ParquetSchema<any>

Inherited from​

LRUCache.find


findOrCreateSchema()​

findOrCreateSchema<T>(schemaDef): ParquetSchema<T>

Type Parameters​

Type Parameter
T extends ParquetRecordLike

Parameters​

ParameterType
schemaDefParquetSchemaDefinition<T>

Returns​

ParquetSchema<T>


forceFetch()​

forceFetch(k, fetchOptions)​

forceFetch(k, fetchOptions): Promise<ParquetSchema<any>>

In some cases, cache.fetch() may resolve to undefined, either because a LRUCache.OptionsBase#fetchMethod was not provided (turning cache.fetch(k) into just an async wrapper around cache.get(k)) or because ignoreFetchAbort was specified (either to the constructor or in the LRUCache.FetchOptions). Also, the OptionsBase.fetchMethod may return undefined or void, making the test even more complicated.

Because inferring the cases where undefined might be returned are so cumbersome, but testing for undefined can also be annoying, this method can be used, which will reject if this.fetch() resolves to undefined.

Parameters​
ParameterType
kParquetSchemaDefinition<any>
fetchOptionsFetchOptions<ParquetSchemaDefinition<any>, ParquetSchema<any>, unknown>
Returns​

Promise<ParquetSchema<any>>

Inherited from​

LRUCache.forceFetch

forceFetch(k, fetchOptions)​

forceFetch(k, fetchOptions?): Promise<ParquetSchema<any>>
Parameters​
ParameterType
kParquetSchemaDefinition<any>
fetchOptions?FetchOptions<ParquetSchemaDefinition<any>, ParquetSchema<any>, unknown>
Returns​

Promise<ParquetSchema<any>>

Inherited from​

LRUCache.forceFetch


forEach()​

forEach(fn, thisp?): void

Call the supplied function on each item in the cache, in order from most recently used to least recently used.

fn is called as fn(value, key, cache).

If thisp is provided, function will be called in the this-context of the provided object, or the cache if no thisp object is provided.

Does not update age or recenty of use, or iterate over stale values.

Parameters​

ParameterType
fn(v, k, self) => any
thisp?any

Returns​

void

Inherited from​

LRUCache.forEach


get()​

get(k, getOptions?): undefined | ParquetSchema<any>

Return a value from the cache. Will update the recency of the cache entry found.

If the key is not found, get() will return undefined.

Parameters​

ParameterType
kParquetSchemaDefinition<any>
getOptions?GetOptions<ParquetSchemaDefinition<any>, ParquetSchema<any>, unknown>

Returns​

undefined | ParquetSchema<any>

Inherited from​

LRUCache.get


getRemainingTTL()​

getRemainingTTL(key): number

Return the number of ms left in the item's TTL. If item is not in cache, returns 0. Returns Infinity if item is in cache without a defined TTL.

Parameters​

ParameterType
keyParquetSchemaDefinition<any>

Returns​

number

Inherited from​

LRUCache.getRemainingTTL


has()​

has(k, hasOptions?): boolean

Check if a key is in the cache, without updating the recency of use. Will return false if the item is stale, even though it is technically in the cache.

Check if a key is in the cache, without updating the recency of use. Age is updated if LRUCache.OptionsBase.updateAgeOnHas is set to true in either the options or the constructor.

Will return false if the item is stale, even though it is technically in the cache. The difference can be determined (if it matters) by using a status argument, and inspecting the has field.

Will not update item age unless LRUCache.OptionsBase.updateAgeOnHas is set.

Parameters​

ParameterType
kParquetSchemaDefinition<any>
hasOptions?HasOptions<ParquetSchemaDefinition<any>, ParquetSchema<any>, unknown>

Returns​

boolean

Inherited from​

LRUCache.has


info()​

info(key): undefined | Entry<ParquetSchema<any>>

Get the extended info about a given entry, to get its value, size, and TTL info simultaneously. Returns undefined if the key is not present.

Unlike LRUCache#dump, which is designed to be portable and survive serialization, the start value is always the current timestamp, and the ttl is a calculated remaining time to live (negative if expired).

Always returns stale values, if their info is found in the cache, so be sure to check for expirations (ie, a negative LRUCache.Entry#ttl) if relevant.

Parameters​

ParameterType
keyParquetSchemaDefinition<any>

Returns​

undefined | Entry<ParquetSchema<any>>

Inherited from​

LRUCache.info


keys()​

keys(): Generator<ParquetSchemaDefinition<any>, void, unknown>

Return a generator yielding the keys in the cache, in order from most recently used to least recently used.

Returns​

Generator<ParquetSchemaDefinition<any>, void, unknown>

Inherited from​

LRUCache.keys


load()​

load(arr): void

Reset the cache and load in the items in entries in the order listed.

The shape of the resulting cache may be different if the same options are not used in both caches.

The start fields are assumed to be calculated relative to a portable Date.now() timestamp, even if performance.now() is available.

Parameters​

ParameterType
arr[ParquetSchemaDefinition<any>, Entry<ParquetSchema<any>>][]

Returns​

void

Inherited from​

LRUCache.load


memo()​

memo(k, memoOptions)​

memo(k, memoOptions): ParquetSchema<any>

If the key is found in the cache, then this is equivalent to LRUCache#get. If not, in the cache, then calculate the value using the LRUCache.OptionsBase.memoMethod, and add it to the cache.

If an FC type is set to a type other than unknown, void, or undefined in the LRUCache constructor, then all calls to cache.memo() must provide a context option. If set to undefined or void, then calls to memo must not provide a context option.

The context param allows you to provide arbitrary data that might be relevant in the course of fetching the data. It is only relevant for the course of a single memo() operation, and discarded afterwards.

Parameters​
ParameterType
kParquetSchemaDefinition<any>
memoOptionsMemoOptions<ParquetSchemaDefinition<any>, ParquetSchema<any>, unknown>
Returns​

ParquetSchema<any>

Inherited from​

LRUCache.memo

memo(k, memoOptions)​

memo(k, memoOptions?): ParquetSchema<any>
Parameters​
ParameterType
kParquetSchemaDefinition<any>
memoOptions?MemoOptions<ParquetSchemaDefinition<any>, ParquetSchema<any>, unknown>
Returns​

ParquetSchema<any>

Inherited from​

LRUCache.memo


peek()​

peek(k, peekOptions?): undefined | ParquetSchema<any>

Like LRUCache#get but doesn't update recency or delete stale items.

Returns undefined if the item is stale, unless LRUCache.OptionsBase.allowStale is set.

Parameters​

ParameterType
kParquetSchemaDefinition<any>
peekOptions?PeekOptions<ParquetSchemaDefinition<any>, ParquetSchema<any>, unknown>

Returns​

undefined | ParquetSchema<any>

Inherited from​

LRUCache.peek


pop()​

pop(): undefined | ParquetSchema<any>

Evict the least recently used item, returning its value or undefined if cache is empty.

Returns​

undefined | ParquetSchema<any>

Inherited from​

LRUCache.pop


purgeStale()​

purgeStale(): boolean

Delete any stale entries. Returns true if anything was removed, false otherwise.

Returns​

boolean

Inherited from​

LRUCache.purgeStale


rentries()​

rentries(): Generator<(undefined | ParquetSchemaDefinition<any> | ParquetSchema<any> | BackgroundFetch<ParquetSchema<any>>)[], void, unknown>

Inverse order version of LRUCache.entries

Return a generator yielding [key, value] pairs, in order from least recently used to most recently used.

Returns​

Generator<(undefined | ParquetSchemaDefinition<any> | ParquetSchema<any> | BackgroundFetch<ParquetSchema<any>>)[], void, unknown>

Inherited from​

LRUCache.rentries


rforEach()​

rforEach(fn, thisp?): void

The same as LRUCache.forEach but items are iterated over in reverse order. (ie, less recently used items are iterated over first.)

Parameters​

ParameterType
fn(v, k, self) => any
thisp?any

Returns​

void

Inherited from​

LRUCache.rforEach


rkeys()​

rkeys(): Generator<ParquetSchemaDefinition<any>, void, unknown>

Inverse order version of LRUCache.keys

Return a generator yielding the keys in the cache, in order from least recently used to most recently used.

Returns​

Generator<ParquetSchemaDefinition<any>, void, unknown>

Inherited from​

LRUCache.rkeys


rvalues()​

rvalues(): Generator<undefined | ParquetSchema<any> | BackgroundFetch<ParquetSchema<any>>, void, unknown>

Inverse order version of LRUCache.values

Return a generator yielding the values in the cache, in order from least recently used to most recently used.

Returns​

Generator<undefined | ParquetSchema<any> | BackgroundFetch<ParquetSchema<any>>, void, unknown>

Inherited from​

LRUCache.rvalues


set()​

set(
k,
v,
setOptions?): this

Add a value to the cache.

Note: if undefined is specified as a value, this is an alias for LRUCache#delete

Fields on the LRUCache.SetOptions options param will override their corresponding values in the constructor options for the scope of this single set() operation.

If start is provided, then that will set the effective start time for the TTL calculation. Note that this must be a previous value of performance.now() if supported, or a previous value of Date.now() if not.

Options object may also include size, which will prevent calling the sizeCalculation function and just use the specified number if it is a positive integer, and noDisposeOnSet which will prevent calling a dispose function in the case of overwrites.

If the size (or return value of sizeCalculation) for a given entry is greater than maxEntrySize, then the item will not be added to the cache.

Will update the recency of the entry.

If the value is undefined, then this is an alias for cache.delete(key). undefined is never stored in the cache.

Parameters​

ParameterType
kParquetSchemaDefinition<any>
vundefined | ParquetSchema<any> | BackgroundFetch<ParquetSchema<any>>
setOptions?SetOptions<ParquetSchemaDefinition<any>, ParquetSchema<any>, unknown>

Returns​

this

Inherited from​

LRUCache.set


values()​

values(): Generator<ParquetSchema<any>, void, unknown>

Return a generator yielding the values in the cache, in order from most recently used to least recently used.

Returns​

Generator<ParquetSchema<any>, void, unknown>

Inherited from​

LRUCache.values


unsafeExposeInternals()​

static unsafeExposeInternals<K, V, FC>(c): object

Do not call this method unless you need to inspect the inner workings of the cache. If anything returned by this object is modified in any way, strange breakage may occur.

These fields are private for a reason!

Type Parameters​

Type ParameterDefault type
K extends object-
V extends object-
FC extends unknownunknown

Parameters​

ParameterType
cLRUCache<K, V, FC>

Returns​

object

backgroundFetch()​
backgroundFetch: (k, index, options, context) => BackgroundFetch<V>;
Parameters​
ParameterType
kK
indexundefined | number
optionsFetchOptions<K, V, FC>
contextany
Returns​

BackgroundFetch<V>

free​
free: StackLike;
readonly head: Index;
indexes()​
indexes: (options?) => Generator<Index, void, unknown>;
Parameters​
ParameterType
options?object
options.allowStale?boolean
Returns​

Generator<Index, void, unknown>

isBackgroundFetch()​
isBackgroundFetch: (p) => boolean;
Parameters​
ParameterType
pany
Returns​

boolean

isStale()​
isStale: (index) => boolean;
Parameters​
ParameterType
indexundefined | number
Returns​

boolean

keyList​
keyList: (undefined | K)[];
keyMap​
keyMap: Map<K, number>;
moveToTail()​
moveToTail: (index) => void;
Parameters​
ParameterType
indexnumber
Returns​

void

next​
next: NumberArray;
prev​
prev: NumberArray;
rindexes()​
rindexes: (options?) => Generator<Index, void, unknown>;
Parameters​
ParameterType
options?object
options.allowStale?boolean
Returns​

Generator<Index, void, unknown>

sizes​
sizes: undefined | ZeroArray;
starts​
starts: undefined | ZeroArray;
tail​
readonly tail: Index;
ttls​
ttls: undefined | ZeroArray;
valList​
valList: (undefined | V | BackgroundFetch<V>)[];

Inherited from​

LRUCache.unsafeExposeInternals