0.41.3 • Published 4 months ago

@vapaaradikaali/helpers.js v0.41.3

Weekly downloads
-
License
ISC
Repository
github
Last release
4 months ago

Build Status Coverage Status

Modules

Classes

Functions

Errors

Errors~ConfigError

Kind: inner class of Errors Summary: Config error.

new ConfigError()

Errors~ConfigNotFoundError ⇐ ConfigError

Kind: inner class of Errors Summary: Config not found error. Extends: ConfigError

new ConfigNotFoundError()

Errors~ConfigParseError ⇐ ConfigError

Kind: inner class of Errors Summary: Config parse error. Extends: ConfigError

new ConfigParseError()

BrowserEvents

Kind: global class Summary: Browser events class.

new BrowserEvents()

browserEvents.on(eventName, callback)

Kind: instance method of BrowserEvents Summary: Register an event listener.

ParamTypeDescription
eventNamestringEvent name
callbackfunctionEvent listener

browserEvents.off(eventName, callback)

Kind: instance method of BrowserEvents Summary: Unregister event listeners, optionally only the given.

ParamTypeDescription
eventNamestringEvent name
callbackfunctionEvent listener

browserEvents.trigger(eventName)

Kind: instance method of BrowserEvents Summary: Trigger an event.

ParamTypeDescription
eventNamestringEvent name
...argsmixedEvent arguments

Config

Kind: global class Summary: Configuration class.

new Config()

config.constructor(values, schema)

Kind: instance method of Config Summary: Constructor.

ParamTypeDescription
valuesobjectInstance values
schemaobjectInstance schema

config.setDefaultValues() ⇒ Config

Kind: instance method of Config Summary: Set default values. Returns: Config - Self

config.getValidator() ⇒ jsonschema.Validator

Kind: instance method of Config Summary: Get a singleton instance of validator. Returns: jsonschema.Validator - Validator instance

config.getPath(path) ⇒ array

Kind: instance method of Config Summary: Internal helper to get path from the given argument. Returns: array - Path as an array

ParamTypeDescription
pathmixedString or an array of strings

config.set(path, value) ⇒ Config

Kind: instance method of Config Summary: Set configuration value. Returns: Config - Self

ParamTypeDescription
pathstring | Array.<string>or an array of strings
valuemixedAny value that can be serialized as JSON

config.del(path)

Kind: instance method of Config Summary: Delete a configuration value.

ParamTypeDescription
pathstring | Array.<string>or an array of strings

config.validateBeforeSet(path, value) ⇒ Config

Kind: instance method of Config Summary: Validate the value before setting it. Returns: Config - Self

ParamTypeDescription
pathstring | Array.<string>or an array of strings
valuemixedAny value that can be serialized as JSON

config.validate(values, schema) ⇒ Config

Kind: instance method of Config Summary: Validate configuration. Returns: Config - Self

ParamTypeDescription
valuesobjectValues; stored values when omitted
schemaobjectSchema to validate against

config.setValuesToPath(path, value, target) ⇒ object

Kind: instance method of Config Summary: Set value to path for the given target object. Returns: object - Target object

ParamTypeDescription
pathstring | Array.<string>or an array of strings
valuemixedAny value that can be serialized as JSON
targetobjectTarget object

config.get(paths, defaultValue) ⇒ mixed

Kind: instance method of Config Summary: Get configuration value. Returns: mixed - Stored configuration value or the given default value

ParamTypeDescription
pathsstring | Array.<string>String or an array of strings
defaultValuemixedDefault value if the stored is null or undefined

config.toJSON() ⇒ object

Kind: instance method of Config Summary: JSON serializer. Returns: object - JSON serializeable object

Datamap

Kind: global class Summary: Replacement for Javascript's native Map that is very slow to access data versus a purecode object.

new Datamap()

datamap.length : number

Kind: instance constant of Datamap Summary: Datamap length.

datamap.size : number

Kind: instance constant of Datamap Summary: Datamap size, alias to length.

datamap.clone : function

Kind: instance constant of Datamap Summary: Clone a datamap, alias for copy.

datamap.has(key) ⇒ boolean

Kind: instance method of Datamap Summary: Check if the datamap has the given key. Returns: boolean - True if a value exists

ParamTypeDescription
keymixedMap key

datamap.get(key) ⇒ mixed

Kind: instance method of Datamap Summary: Get the datamap value. Returns: mixed - Stored value

ParamTypeDescription
keymixedMap key

datamap.set(key, value)

Kind: instance method of Datamap Summary: Set the datamap value.

ParamTypeDescription
keymixedMap key
valuemixedStored value

datamap.add(value)

Kind: instance method of Datamap Summary: Add an indexed datamap value.

ParamTypeDescription
valueobjectAny value

datamap.setIndex(index)

Kind: instance method of Datamap Summary: Set index for datamap values.

ParamTypeDescription
indexstringAny value

datamap.keys() ⇒ Array.<string>

Kind: instance method of Datamap Summary: Get the datamap keys. Returns: Array.<string> - Stored keys

datamap.values() ⇒ Array.<mixed>

Kind: instance method of Datamap Summary: Get the datamap values. Returns: Array.<mixed> - Stored values

datamap.clear()

Kind: instance method of Datamap Summary: Clear the datamap.

datamap.delete(key)

Kind: instance method of Datamap Summary: Delete a datamap key.

ParamTypeDescription
keymixedMap key

datamap.forEach(iterator)

Kind: instance method of Datamap Summary: Iterate a datamap.

ParamTypeDescription
iteratorfunctionIterator callback function

datamap.map(iterator) ⇒ Array.<mixed>

Kind: instance method of Datamap Summary: Map function for a datamap. Returns: Array.<mixed> - Iterator output

ParamTypeDescription
iteratorfunctionIterator callback function

datamap.reduce(iterator, initialValue) ⇒ mixed

Kind: instance method of Datamap Summary: Reduce function for a datamap. Returns: mixed - Iterator output

ParamTypeDescription
iteratorfunctionIterator callback function
initialValuemixedInitial value

datamap.filter(iterator) ⇒ Datamap

Kind: instance method of Datamap Summary: Filter function for Datamap. Returns: Datamap - Filtered datamap

ParamTypeDescription
iteratorfunctionIterator callback function

datamap.copy() ⇒ Datamap

Kind: instance method of Datamap Summary: Copy function for datamap. Returns: Datamap - Copy of the datamap

datamap.slice(start, end) ⇒ Datamap

Kind: instance method of Datamap Summary: Slice function for datamap. Returns: Datamap - Sliced copy of the datamap

ParamTypeDescription
startnumberStart index
endnumberEnd index

Datamap.Options : Options

Kind: static constant of Datamap Summary: Options object for Datamaps.

Dataset

Kind: global class Summary: Dataset. Implements: Set

new Dataset(data, options)

ParamTypeDescription
dataArray | SetInitial data
optionsobjectOptions

dataset.size

Kind: instance property of Dataset Summary: Alias "length" for "size".

dataset.includes

Kind: instance property of Dataset Summary: Alias "includes" for "has".

dataset.contains

Kind: instance property of Dataset Summary: Alias "contains" for has.

dataset.clear

Kind: instance property of Dataset Summary: Alias "truncate" for "clear".

dataset.*iterator()

Kind: instance method of Dataset Summary: Iterator protocol.

dataset.toArray() ⇒

Kind: instance method of Dataset Summary: Convert dataset to an array. Returns: Array

dataset.addToMap(values) ⇒ Dataset

Kind: instance method of Dataset Summary: Add values to map. Returns: Dataset - This instance

ParamTypeDescription
valuesmixedAn individual value, an array or a Set

dataset.add(values)

Kind: instance method of Dataset Summary: Add an item.

ParamTypeDescription
valuesArray.<mixed>Any value

dataset.addToIndices(values) ⇒ Dataset

Kind: instance method of Dataset Summary: Add values to indices. Returns: Dataset - This instance

ParamTypeDescription
valuesmixedAn individual value, an array or a Set

dataset.copy() ⇒ Dataset

Kind: instance method of Dataset Summary: Copy the current dataset. Returns: Dataset - Copy of this instance

dataset.merge(data) ⇒ Dataset

Kind: instance method of Dataset Summary: Merge datasets. Returns: Dataset - Merged datasets

ParamTypeDescription
dataArray.<Dataset>Datasets to merge

dataset.concat()

Kind: instance method of Dataset Summary: Alias for merge.

dataset.delete(values)

Kind: instance method of Dataset Summary: Delete an item.

ParamTypeDescription
valuesArray.<mixed>Any value

dataset.clear()

Kind: instance method of Dataset Summary: Clear the dataset.

dataset.getById(id) ⇒ mixed

Kind: instance method of Dataset Summary: Get item by id. Returns: mixed - Stored value

ParamTypeDescription
idnumber | stringValue of the id property

dataset.getByIndex(index, id) ⇒ mixed

Kind: instance method of Dataset Summary: Get item by indexed value. Returns: mixed - Stored value

ParamTypeDescription
indexstringIndex
idnumber | stringValue of the id property

dataset.getByProperty(prop, value, recursive)

Kind: instance method of Dataset Summary: Get by property.

ParamTypeDescription
propstringProperty
valuemixedNeedle
recursivestringRecursive property

dataset.map(iterator) ⇒ Dataset

Kind: instance method of Dataset Summary: Map like an array map. Returns: Dataset - Dataset of the values returned by the iterator

ParamTypeDescription
iteratorfunctionIterator function

dataset.filetr(iterator, matchAny) ⇒ Array.<mixed>

Kind: instance method of Dataset Summary: Filter like an array filter. Returns: Array.<mixed> - An array with the value iterator gives

ParamTypeDescription
iteratorfunction | objectIterator function or an object filter
matchAnybooleanMatch any flag

dataset.reduce(reducer, initial) ⇒ mixed

Kind: instance method of Dataset Summary: Reduce the dataset. Returns: mixed - Reduced value

ParamTypeDescription
reducerfunctionReducer function
initialmixedInitial value

dataset.sort(callback) ⇒ Dataset

Kind: instance method of Dataset Summary: Sort a dataset. Returns: Dataset - Sorted dataset

ParamTypeDescription
callbackfunctionSort callback

dataset.reverse() ⇒ Dataset

Kind: instance method of Dataset Summary: Reverse a dataset. Returns: Dataset - Reversed dataset

dataset.find(callback) ⇒ mixed

Kind: instance method of Dataset Summary: Find the first occurence from a dataset. Returns: mixed - Dataset item

ParamTypeDescription
callbackfunctionFind callback

dataset.findLast(callback) ⇒ mixed

Kind: instance method of Dataset Summary: Find the last occurence from a dataset. Returns: mixed - Dataset item

ParamTypeDescription
callbackfunctionFind callback

dataset.toJSON() ⇒ array

Kind: instance method of Dataset Summary: Serialize dataset as JSON. Returns: array - JSON serializable array

dataset.splitIntoChunks(length) ⇒ Array.<Dataset>

Kind: instance method of Dataset Summary: Split the dataset into chunks. Returns: Array.<Dataset> - An array of datasets

ParamTypeDescription
lengthnumberNumber of chunks

LocalizationError

Kind: global class Summary: Localization error.

new LocalizationError()

InvalidTimestamp

Kind: global class Summary: Invalid timestamp error.

new InvalidTimestamp()

InvalidFormatter

Kind: global class Summary: Invalid formatter error.

new InvalidFormatter()

Localization

Kind: global class Summary: Localization class.

new Localization(lang, fallbackLang)

ParamTypeDescription
langstringLocalization language
fallbackLangstringFallback language if the main language is not found

Example

`const l10n = new Localization('fi', 'en')`

localization.errors : object

Kind: instance constant of Localization Summary: Errors wrapper.

localization.registerLogger(logger) ⇒ Localization

Kind: instance method of Localization Summary: Shorthand for the static method Localization.registerLogger. Returns: Localization - This instance

ParamTypeDescription
loggerfunctionCallback function

localization.logger(level, args) ⇒ Localization

Kind: instance method of Localization Summary: Call logger. Returns: Localization - This instance

ParamTypeDescription
levelnumberLog level
argsarrayLogger arguments

localization.registerLocale() ⇒ function

Kind: instance method of Localization Summary: Alias to the static registerLocale method. Returns: function - Constructor.toCase function

localization.registerLocales() ⇒ function

Kind: instance method of Localization Summary: Alias to the static registerLocales method. Returns: function - Constructor.toCase function

localization.getLocales(lang) ⇒ object

Kind: instance method of Localization Summary: Get locales, an instance convenience alias for the static method Localization.getLocales. Returns: object - Registered locales

ParamTypeDescription
langstringLanguage constraint

localization.unregisterLocales() ⇒ function

Kind: instance method of Localization Summary: Alias to the static registerLocales method. Returns: function - Constructor.toCase function

localization.unregisterLocale() ⇒ function

Kind: instance method of Localization Summary: Alias to the static registerLocales method. Returns: function - Constructor.toCase function

localization.toCase() ⇒ function

Kind: instance method of Localization Summary: Alias to the static toCase method. Returns: function - Constructor.toCase function

Localization.UPPERCASE : string

Kind: static constant of Localization

Localization.LOWERCASE : string

Kind: static constant of Localization

Localization.TITLECASE : string

Kind: static constant of Localization

Localization.PARAGRAPHCASE : string

Kind: static constant of Localization

Localization.CAMELCASE : string

Kind: static constant of Localization

Localization.UNDERSCORECASE : string

Kind: static constant of Localization

Localization.INVALID_TIMESTAMP : Errors.InvalidTimestamp

Kind: static constant of Localization

Localization.errors : object

Kind: static constant of Localization Summary: Static errros wrapper.

Localization.validateRounding(rounding)

Kind: static method of Localization Summary: Validate rounding type.

ParamTypeDescription
roundingstringEnumerates "round", "ceil", "floor"

Localization.getRoundedNumber(value, precision, rounding) ⇒ number

Kind: static method of Localization Summary: Get rounded number. Returns: number - Rounded number

ParamTypeDefaultDescription
valuenumber | stringNumber or a numeric string to round
precisionnumberRounding precision
roundingstring"\"round\""Enumerates "round", "ceil", "floor"

Localization.toCase(input, toCase) ⇒ string

Kind: static method of Localization Summary: Convert case for a string. Returns: string - String converted to the given case

ParamTypeDescription
inputstringInput string
toCasestringCase for the output

Localization.registerLogger(logger)

Kind: static method of Localization Summary: Register a logger for the localization.

ParamTypeDescription
loggerfunctionCallback function

Example

Localization.registerLogger((...args) => console.log(...args))

Localization.registerLocale(locale, translations) ⇒ Localization

Kind: static method of Localization Summary: Register locales. Returns: Localization - This instance

ParamTypeDescription
localestringLocale key
translationsobjectTranslations

Localization.registerLocales(data) ⇒ Localization

Kind: static method of Localization Summary: Register locales. Returns: Localization - This instance

ParamTypeDescription
dataobjectLocales to register

Localization.getLocales(lang) ⇒ object

Kind: static method of Localization Summary: Get locales. Returns: object - Registered locales

ParamTypeDescription
langstringLanguage constraint

Localization.unregisterLocales(data) ⇒ Localization

Kind: static method of Localization Summary: Unregister locales. Returns: Localization - This instance

ParamTypeDescription
datamixedLocales to be registered as a string or array of strings

Localization.unregisterLocale() ⇒ function

Kind: static method of Localization Summary: Alias to the static registerLocales method. Returns: function - Constructor.toCase function

Storage

Kind: global class Summary: Storage class.

new Storage(engine)

ParamTypeDescription
enginemixedStorage engine

storage.setEngines(engine)

Kind: instance method of Storage Summary: Set storage engine.

ParamTypeDescription
enginemixedStorage engine

storage.set(key, value, expiresAt)

Kind: instance method of Storage Summary: Set stored value.

ParamTypeDescription
keystringStorage key
valuemixedStorage value
expiresAtmixedISO 8601 temporal, seconds as number or anything Moment.js accepts

storage.get(key, defaultValue) ⇒

Kind: instance method of Storage Summary: Get stored value. Returns: mixed Stored value, default value or null

ParamTypeDescription
keystringStorage key
defaultValuemixedValue if storage does not have anything

storage.del(key)

Kind: instance method of Storage Summary: Delete a storage key.

ParamTypeDescription
keystringStorage key

storage.clear()

Kind: instance method of Storage Summary: Clear storage.

Storage.StorageEngine : StorageEngine

Kind: static constant of Storage Summary: Storage engine.

Storage.validateKey(key)

Kind: static method of Storage Summary: Validate storage key.

ParamTypeDescription
keystringStorage key

Storage.getExpiresAt(expiresAt) ⇒ undefined | Moment

Kind: static method of Storage Summary: Get expires at. Returns: undefined | Moment - Undefined when no expiration is given, an instance of Moment otherwise

ParamTypeDescription
expiresAtmixedISO 8601 temporal, seconds as number or anything Moment.js accepts

Storage.hasExpired(expiresAt) ⇒ boolean

Kind: static method of Storage Summary: Check if the timestamp is in the past. Returns: boolean - True if expired, otherwise false

ParamTypeDescription
expiresAtstringExpiration timestamp as ISO 8601 string

TreeError

Kind: global class Summary: Tree error baseclass. Implements: Error

new TreeError()

PropertyError

Kind: global class Summary: PropertyError. Implements: TreeError

new PropertyError()

new PropertyError()

PropertyError

Kind: global class Summary: InvalidArgument. Implements: TreeError

new PropertyError()

new PropertyError()

NodeNotFound

Kind: global class Summary: NodeNotFound. Implements: TreeError

new NodeNotFound()

Tree

Kind: global class Summary: Tree traversal class.

new Tree(items, idProperty, parentProperty)

ParamTypeDefaultDescription
itemsArray.<object>Items
idPropertystring"'id'"Attribute used for identifier
parentPropertystring"'parent'"Attribute used for parent

Example

const nodes = [
      {
        attr_id: 1,
        attr_parent: null
      },
      {
        attr_id: 11,
        attr_parent: 1
      },
      {
        attr_id: 12,
        attr_parent: 1
      },
      {
        attr_id: 2,
        attr_parent: null
      }
    ]
    const tree = new Tree(nodes, 'attr_id', 'attr_parent)

tree.addNode() ⇒ Tree

Kind: instance method of Tree Summary: An alias to addNodes. Returns: Tree - This instance

tree.addNodes(items) ⇒ Tree

Kind: instance method of Tree Summary: Add nodes to the tree. Returns: Tree - This instance

ParamTypeDescription
itemsobject | Array.<object>Nodes to add

tree.getNode(needle) ⇒ Node

Kind: instance method of Tree Summary: Get node. Returns: Node - Matching node

ParamTypeDescription
needlemixedNeedle to search

tree.getBranch(needle, metadata) ⇒ Array.<object>

Kind: instance method of Tree Summary: Get branch starting from the given node. Returns: Array.<object> - Original items of the branch

ParamTypeDescription
needlemixedNeedle to search
metadatabooleanFlag to define if the function should return Nodes instead of original objects

tree.getParents(needle, metadata) ⇒ Array.<object>

Kind: instance method of Tree Summary: Get branch starting from the given node. Returns: Array.<object> - Original items of the parent tree

ParamTypeDescription
needlemixedNeedle to search
metadatabooleanFlag to define if the function should return Nodes instead of original objects

tree.getParents(needle, metadata) ⇒ object

Kind: instance method of Tree Summary: Get root node for the given needle. Returns: object - Original items of the parent tree

ParamTypeDescription
needlemixedNeedle to search
metadatabooleanFlag to define if the function should return Nodes instead of original objects

tree.getParents(needle, metadata) ⇒ object

Kind: instance method of Tree Summary: Get leaves or the outmost part of the branch for the given needle. Returns: object - Original items of the parent tree

ParamTypeDescription
needlemixedNeedle to search
metadatabooleanFlag to define if the function should return Nodes instead of original objects

tree.isInTree(needle, haystack, metadata) ⇒ boolean

Kind: instance method of Tree Summary: Get branch starting from the given node. Returns: boolean - True if in the same tree, false if not

ParamTypeDescription
needlemixedNeedle to search
haystackmixedHaystrack to search
metadatabooleanFlag to define if the function should return Nodes instead of original objects

tree.getItems(metadata)

Kind: instance method of Tree Summary: Get tree contents.

ParamTypeDescription
metadatabooleanFlag to define if the function should return Nodes instead of original objects

tree.removeItem(needle)

Kind: instance method of Tree Summary: Remove an item.

ParamTypeDescription
needlemixedNeedle to search

tree.removeItems(needles)

Kind: instance method of Tree Summary: Remove multiple items or flush the whole tree if no needle is provided.

ParamTypeDescription
needlesmixedNeedles to search

tree.removeItems(needles)

Kind: instance method of Tree Summary: Flush the whole tree.

ParamTypeDescription
needlesmixedNeedles to search

Tree.errors

Kind: static constant of Tree Summary: Errors.

Tree.DEFAULT_ID_PROPERTY : string

Kind: static constant of Tree Summary: Default id property. Default: "id"

Tree.DEFAULT_PARENT_PROPERTY : string

Kind: static constant of Tree Summary: Default parent property. Default: "parent"

setSchema(schema) ⇒ Config

Kind: global function Summary: Set JSON schema validation for the configuration. Returns: Config - Self

ParamTypeDescription
schemaobjectJSON schema

addSchema(schema) ⇒ Config

Kind: global function Summary: Add a JSON schema to config validator. Returns: Config - Self

ParamTypeDescription
schemaobjectJSON schema

normalizeSchemaId(id) ⇒ string

Kind: global function Summary: Normalize schema id. Returns: string - Normalized schema id

ParamTypeDescription
idstringSchema ID

buildUrl(args)

Kind: global function Summary: Build URL from the given parameters.

ParamTypeDescription
argsstring | Array.<string>Arguments

Example

`buildUrl('postgresql', 'localhost', null, 'postgres', 'databaseName', { keepAlive: false })` returns `postgresql://postgres@localhost/databaseName?keepAlive=false`

buildUrl(protocol, host, port, username, password, location, query) ⇒ string

Kind: global function Summary: Build URL from the given parameters. Returns: string - Constructed URL

ParamTypeDescription
protocolstring | objectProtocol or full configuration
hoststringHost name
portnumberPort
usernamestringUsername
passwordstringPassword
locationstringLocation
queryobjectQuery parameters

Example

`buildUrl('postgresql', 'localhost', null, 'postgres', 'databaseName', { keepAlive: false })` returns `postgresql://postgres@localhost/databaseName?keepAlive=false`

castObjectAsArray(source, recurse) ⇒ array

Kind: global function Summary: Cast an indexed object as array. Returns: array - Array conversion of the object

ParamTypeDescription
sourceobjectSource object
recursebooleanRecurse to child objects

castToArray(input) ⇒ mixed

Kind: global function Summary: Cast values. Returns: mixed - Merged object or array

ParamTypeDescription
inputmixedMixed input

Example

`castToArray(null)` returns an empty array `[]`
`castToArray('foo')` returns `['foo']`
`castToArray(['foo'])` returns `['foo']`
`castToArray({ foo: 'bar '})` returns `[{ foo: 'bar' }]`

copyObject(source) ⇒ mixed

Kind: global function Summary: Create a deep copy of an object or an array. Returns: mixed - Copy of the given value

ParamTypeDescription
sourcemixedSource object/primitive to copy

escapeSql(arg, quote, force) ⇒ mixed

Kind: global function Summary: Escape SQL argument. Returns: mixed - Escaped string or an object or and array of escaped strings

ParamTypeDefaultDescription
argmixedArgument to escape
quotestring"'\"'"Quote type, either " or '
forcebooleanfalseFlag to force quotes

Example

escapeSql takes a value (string, number, boolean, null) and escapes it if
it should be escaped. Second argument can be either the quote type (' and ")
are accepted. Third argument is force flag to force quote. If second argument
is a boolea
0.41.3

4 months ago

0.41.1

6 months ago

0.41.0

6 months ago

0.40.2

7 months ago

0.40.3

7 months ago

0.40.0

7 months ago

0.40.1

7 months ago

0.38.2

8 months ago

0.36.4

9 months ago

0.39.0

7 months ago

0.38.1

8 months ago

0.36.3

9 months ago

0.38.0

8 months ago

0.37.1

8 months ago

0.36.2

9 months ago

0.37.0

8 months ago

0.36.1

10 months ago

0.36.0

11 months ago

0.38.3

8 months ago

0.40.4

7 months ago

0.35.3

12 months ago

0.35.2

12 months ago

0.33.7

1 year ago

0.33.6

1 year ago

0.34.4

1 year ago

0.33.5

1 year ago

0.34.3

1 year ago

0.33.4

1 year ago

0.35.1

1 year ago

0.34.2

1 year ago

0.33.3

1 year ago

0.35.0

1 year ago

0.34.1

1 year ago

0.33.2

1 year ago

0.34.0

1 year ago

0.33.1

1 year ago

0.32.2

1 year ago

0.33.0

1 year ago

0.33.9

1 year ago

0.33.8

1 year ago

0.30.7

1 year ago

0.30.6

1 year ago

0.30.5

1 year ago

0.32.1

1 year ago

0.32.0

1 year ago

0.31.0

1 year ago

0.30.4

1 year ago