8.0.5 • Published 9 months ago

@furystack/utils v8.0.5

Weekly downloads
115
License
GPL-2.0
Repository
github
Last release
9 months ago

@furystack/utils

General utilities, forked from @furystack/utils

Disposable

You can implement disposable resources and use them with a using() or usingAsync() syntax. Example:

class Resource implements IDisposable {
  dispose() {
    // cleanup logics
  }
}

using(new Resource(), resource => {
  // do something with the resource
})

usingAsync(new Resource(), async resource => {
  // do something with the resource, allows awaiting promises
})

ObservableValue and ValueObservers

You can track value changes using with this simple Observable implementation.

Example:

const observableValue = new ObservableValue<number>(0)
const observer = observableValue.subscribe(newValue => {
  console.log('Value changed:', newValue)
})

// To update the value
observableValue.setValue(Math.random())
// if you want to dispose a single observer
observer.dispose()
// if you want to dispose the whole observableValue with all of its observers:
observableValue.dispose()

PathHelper

The class contains small helper methods for path transformation and manipulation.

Retrier

Retrier is a utility that can keep trying an operation until it succeeds, times out or reach a specified retry limit.

const funcToRetry: () => Promise<boolean> = async () => {
  const hasSucceeded = false
  // ...
  // custom logic
  // ...
  return hasSucceeded
}
const retrierSuccess = await Retrier.create(funcToRetry)
  .setup({
    Retries: 3,
    RetryIntervalMs: 1,
    timeoutMs: 1000,
  })
  .run()

Trace

Trace is an utility that can be used to track method calls, method returns and errors

const methodTracer: IDisposable = Trace.method({
  object: myObjectInstance, // You can define an object constructor for static methods as well
  method: myObjectInstance.method, // The method to be tracked
  isAsync: true, // if you set to async, method finished will be *await*-ed
  onCalled: traceData => {
    console.log('Method called:', traceData)
  },
  onFinished: traceData => {
    console.log('Method call finished:', traceData)
  },
  onError: traceData => {
    console.log('Method throwed an error:', traceData)
  },
})

// if you want to stop receiving events
methodTracer.dispose()
8.0.5

9 months ago

8.0.4

10 months ago

8.0.3

10 months ago

7.0.2

1 year ago

8.0.1

12 months ago

8.0.0

12 months ago

8.0.2

11 months ago

7.0.1

1 year ago

7.0.0

1 year ago

6.0.1

1 year ago

6.0.0

1 year ago

5.0.0

1 year ago

4.0.17

1 year ago

4.0.16

1 year ago

4.0.15

1 year ago

4.0.14

1 year ago

4.0.13

1 year ago

4.0.12

2 years ago

4.0.7

2 years ago

4.0.6

2 years ago

4.0.9

2 years ago

4.0.8

2 years ago

4.0.10

2 years ago

4.0.11

2 years ago

4.0.5

2 years ago

4.0.4

2 years ago

4.0.1

2 years ago

4.0.0

2 years ago

4.0.3

2 years ago

4.0.2

2 years ago

3.1.8

2 years ago

3.1.7

2 years ago

3.1.6

2 years ago

3.1.5

2 years ago

3.1.3

3 years ago

3.1.2

3 years ago

3.1.1

3 years ago

3.1.4

2 years ago

3.1.0

3 years ago

3.0.8

3 years ago

3.0.7

3 years ago

3.0.9

3 years ago

3.0.4

3 years ago

3.0.6

3 years ago

3.0.5

3 years ago

3.0.3

3 years ago

3.0.2

3 years ago

3.0.1

3 years ago

3.0.0

3 years ago

2.1.0

3 years ago

2.0.5

3 years ago

2.0.3

3 years ago

2.0.2

3 years ago

2.0.4

3 years ago

2.0.0

4 years ago

1.2.46

4 years ago

1.2.45

4 years ago

1.2.44

4 years ago

1.2.43

4 years ago

1.2.41

4 years ago

1.2.42

4 years ago

1.2.40

4 years ago

1.2.38

4 years ago

1.2.39

4 years ago

1.2.36

4 years ago

1.2.37

4 years ago

1.2.34

4 years ago

1.2.35

4 years ago

1.2.32

4 years ago

1.2.33

4 years ago

1.2.28

4 years ago

1.2.29

4 years ago

1.2.30

4 years ago

1.2.31

4 years ago

1.2.27

4 years ago

1.2.26

4 years ago

1.2.25

4 years ago

1.2.24

4 years ago

1.2.23

4 years ago

1.2.22

4 years ago

1.2.20

4 years ago

1.2.21

4 years ago

1.2.19

4 years ago

1.2.18

4 years ago

1.2.17

5 years ago

1.2.16

5 years ago

1.2.15

5 years ago

1.2.14

5 years ago

1.2.13

5 years ago

1.2.12

5 years ago

1.2.11

5 years ago

1.2.10

5 years ago

1.2.9

5 years ago

1.2.8

5 years ago

1.2.7

5 years ago

1.2.6

5 years ago

1.2.5

5 years ago

1.2.4

5 years ago

1.2.3

5 years ago

1.2.2

5 years ago

1.2.1

5 years ago

1.2.0

5 years ago

1.1.19

5 years ago

1.1.18

5 years ago

1.1.17

5 years ago

1.1.16

5 years ago

1.1.15

5 years ago

1.1.12

5 years ago

1.1.11

5 years ago

1.1.10

5 years ago

1.1.9

5 years ago

1.1.8

5 years ago

1.1.7

5 years ago

1.1.6

5 years ago

1.1.5

5 years ago

1.1.3

5 years ago

1.1.2

5 years ago

1.1.1

5 years ago

1.1.0

6 years ago

1.0.1

6 years ago