@toa.io/generic
TypeScript icon, indicating that this package has built-in type declarations

0.24.0-alpha.0 • Public • Published

Toa Generic Tools

Library is for internal use only. Barely documented. If you really need to understand something, see tests.

Range

range(input: string): number[]

Transforms:

  • 1-3 into [1, 2, 3]
  • 1..3 into [1, 2, 3]
  • 1-3, 5, 10..12 into [1, 2, 3, 5, 10, 11, 12]

See tests.

Shards

shards(input: string): string[]

Transforms amqp://shard{0-2}.domain.com into:

[
  'amqp://shard0.domain.com',
  'amqp://shard1.domain.com',
  'amqp://shard2.domain.com'
]

Uses range.

See tests.

Entries

entries(object: object): [key, value][]

Object.entries including Symbols.

Generate

generate(generate: function): object

generate function's signature is (segments: string[], value?: any): any | void

segments are nested property names, used to access the generated object and optional value is passed if property was assigned with a value.

Example

const generator = (segments, [key, value]) => {} // any property is an object
const object = generate(generator)

const _0 = object.a // will call callback with (['a'])
const _1 = object.a.b // (['a', 'b'])

object.a.b.c = 1 // (['a', 'b', 'c'], 1)

Echo

echo(input: string, variables?: Record<string, string>): string

Returns the input string. Substitutes variables to a placeholders following ${NAME} syntax. If no variables are passed, then environment variables are used.

Example

Environment variables

process.env['FOO'] = 'bar'

const output = echo('foo: ${FOO}')

console.log(output) // foo: bar

Custom variables

const variables = { foo: 'world' }
const output = echo('hello ${foo}', variables)

console.log(output) // hello world

Index substitutions

echo(input: string, values: string[]): string

When the second argument is an Array, its values are substituted to a placeholders following {N} syntax.

echo('make {0} not {1}', ['love', 'war'])

Arguments substitution

When the second argument is a string, it and next arguments are substituted as an array.

echo('make {0} not {1}', 'love', 'war')

Map

map(object: object, transformation: Function): object

Traverse through a given plain object replacing its values (or key-value pairs) with a given transformation function. If the transformation function returns undefined then the current key-value pair will remain unchanged.

Transformation function signature is:

(value: any) => any | void

or

(key: string, value: any) => [string, any] | void

Plain

plain(candidate: any): boolean

Returns true if an argument is a POJO, false otherwise.

Filter

async filter(array: any[], test): any[]

test function signature is async (any) => boolean

Async array filter.

Pick

pick(source: object, properties: string[]): object

Constructs an object by picking the set of properties from source object.

Trim

trim (input: string): string

Trim lines of multiline text.

Buffer

Buffer a stream.

buffer (stream: Readable): Buffer

Memo

Meoizes function returned value.

Readme

Keywords

none

Package Sidebar

Install

npm i @toa.io/generic

Homepage

toa.io

Weekly Downloads

1,266

Version

0.24.0-alpha.0

License

MIT

Unpacked Size

92.4 kB

Total Files

111

Last publish

Collaborators

  • agurtovoi