0.3.275 • Published 8 months ago

asygen v0.3.275

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
8 months ago

Asygen

0-Deps, simple and fast async generator library for browser and NodeJS.

Supports ESM and CommonJS modules.

Build Status NPM version Downloads Coverage Status Maintainability

Installation

Npm installation

npm install asygen

Yarn installation

yarn add asygen

Utilities

Deferred

  • Represents a deferred operation.
  • Provides methods resolve and reject to control the wrapped promise.
  • Exposes properties promise and status to get the underlying promise and its current status.

Queue

  • A queue system for handling asynchronous tasks.
  • Offers methods push, pull, and done to manage tasks.

Generatorify

  • Convert a task into an asynchronous iterable.
  • The iterable can be used in for await...of loops to process values as they're produced.

Combine

  • Combine multiple asynchronous iterables into a single iterable.
  • The resulting iterable will yield values from all input iterables and complete when all of them are done.

Usage

Create deferred operation

import { defer, Status } from 'asygen';

const deferred = defer<number>();
console.log(deferred.status); // Status.PENDING

deferred.resolve(42);
deferred.promise.then((value) => {
  console.log(value); // 42
  console.log(deferred.status); // Status.RESOLVED
});

Create a deferred operation from events

import { defer } from 'asygen';

const result = defer();

console.log(result.status); // pending

task.once('data', error.resolve);
task.once('error', error.reject);
await result.promise;

console.log(result.status); // resolved or rejected

Task queue

import { createQueue } from 'asygen';

const queue = createQueue<number>();

queue.push(1);
queue.push(2);
queue.push(3);

queue.pull().promise.then((value) => console.log(value)); // 1
queue.pull().promise.then((value) => console.log(value)); // 2

Generatorify

import { generatorify } from 'asygen';

const task = async (callback) => {
  await callback('Hello');
  await callback('World');
  return 'Done!';
};

const iterable = generatorify(task);

(async () => {
  for await (const value of iterable) {
    console.log(value); // "Hello", then "World"
  }
})();

Convert events to asyncGenerator

import { once } from 'node:events';
import { generatorify, Task } from 'asygen';

// send data from the event until process exit
const task: Task = async (send) => {
  process.on('data', send);
  await once(process, 'exit');
};

for await (const data of generatorify(task)) {
  // handle data
}

Combine tasks

import { generatorify, combine } from 'asygen';

const task1 = async (callback) => {
  await callback('Task1 - Hello');
  await callback('Task1 - World');
};

const task2 = async (callback) => {
  await callback('Task2 - Foo');
  await callback('Task2 - Bar');
};

const iterable1 = generatorify(task1);
const iterable2 = generatorify(task2);

const combined = combine(iterable1, iterable2);

(async () => {
  for await (const value of combined) {
    console.log(value); // Logs values from both task1 and task2
  }
})();

Combine generators

import { combine } from 'asygen';

const sleep = (timeout: number) =>
  new Promise((resolve) => setTimeout(resolve, timeout));

async function* generate(timeout: number, count: number) {
  for (let index = 0; index < count; index++) {
    yield index;
    await sleep(timeout);
  }
}

for await (const data of combine(generate(100, 5), generate(500, 2))) {
  // handle data
}
// First:    0 1 2 3 4 -
// Second:   0 . . . . 1
// Combined: 0 0 1 2 3 4 1

License

License Apache-2.0 Copyright (c) 2023-present Ivan Zakharchanka

0.3.273

8 months ago

0.3.275

8 months ago

0.3.274

8 months ago

0.3.271

8 months ago

0.3.270

8 months ago

0.3.272

8 months ago

0.3.268

8 months ago

0.3.269

8 months ago

0.3.262

8 months ago

0.3.261

8 months ago

0.3.264

8 months ago

0.3.263

8 months ago

0.3.266

8 months ago

0.3.265

8 months ago

0.3.267

8 months ago

0.3.260

8 months ago

0.3.257

8 months ago

0.3.259

8 months ago

0.3.258

8 months ago

0.3.253

9 months ago

0.3.255

9 months ago

0.3.254

9 months ago

0.3.256

8 months ago

0.3.251

9 months ago

0.3.250

9 months ago

0.3.252

9 months ago

0.3.249

9 months ago

0.3.246

9 months ago

0.3.245

9 months ago

0.3.248

9 months ago

0.3.247

9 months ago

0.3.240

9 months ago

0.3.242

9 months ago

0.3.241

9 months ago

0.3.244

9 months ago

0.3.243

9 months ago

0.3.237

9 months ago

0.3.236

10 months ago

0.3.239

9 months ago

0.3.238

9 months ago

0.3.231

10 months ago

0.3.233

10 months ago

0.3.232

10 months ago

0.3.235

10 months ago

0.3.234

10 months ago

0.3.228

10 months ago

0.3.227

10 months ago

0.3.230

10 months ago

0.3.229

10 months ago

0.3.224

10 months ago

0.3.226

10 months ago

0.3.225

10 months ago

0.3.222

10 months ago

0.3.223

10 months ago

0.3.220

11 months ago

0.3.221

11 months ago

0.3.219

11 months ago

0.3.218

11 months ago

0.3.217

11 months ago

0.3.216

11 months ago

0.3.213

11 months ago

0.3.215

11 months ago

0.3.214

11 months ago

0.3.211

11 months ago

0.3.210

11 months ago

0.3.212

11 months ago

0.3.208

11 months ago

0.3.209

11 months ago

0.3.207

11 months ago

0.3.204

12 months ago

0.3.206

11 months ago

0.3.205

12 months ago

0.3.202

12 months ago

0.3.203

12 months ago

0.3.201

12 months ago

0.3.196

12 months ago

0.3.198

12 months ago

0.3.197

12 months ago

0.3.199

12 months ago

0.3.200

12 months ago

0.3.195

1 year ago

0.3.194

1 year ago

0.3.193

1 year ago

0.3.192

1 year ago

0.3.191

1 year ago

0.3.190

1 year ago

0.3.185

1 year ago

0.3.184

1 year ago

0.3.187

1 year ago

0.3.186

1 year ago

0.3.189

1 year ago

0.3.188

1 year ago

0.3.181

1 year ago

0.3.180

1 year ago

0.3.183

1 year ago

0.3.182

1 year ago

0.3.172

1 year ago

0.3.171

1 year ago

0.3.174

1 year ago

0.3.173

1 year ago

0.3.176

1 year ago

0.3.175

1 year ago

0.3.178

1 year ago

0.3.177

1 year ago

0.3.179

1 year ago

0.3.170

1 year ago

0.3.169

1 year ago

0.3.167

1 year ago

0.3.166

1 year ago

0.3.168

1 year ago

0.3.165

1 year ago

0.3.164

1 year ago

0.3.163

1 year ago

0.3.162

1 year ago

0.3.161

1 year ago

0.3.160

1 year ago

0.3.150

1 year ago

0.3.152

1 year ago

0.3.151

1 year ago

0.3.154

1 year ago

0.3.153

1 year ago

0.3.156

1 year ago

0.3.155

1 year ago

0.3.158

1 year ago

0.3.157

1 year ago

0.3.159

1 year ago

0.3.149

1 year ago

0.3.147

1 year ago

0.3.148

1 year ago

0.3.145

1 year ago

0.3.146

1 year ago

0.3.141

1 year ago

0.3.140

1 year ago

0.3.143

1 year ago

0.3.142

1 year ago

0.3.144

1 year ago

0.3.139

1 year ago

0.3.138

1 year ago

0.3.137

1 year ago

0.3.136

1 year ago

0.3.135

1 year ago

0.3.134

1 year ago

0.3.133

1 year ago

0.3.132

1 year ago

0.3.131

1 year ago

0.3.130

1 year ago

0.3.129

2 years ago

0.3.128

2 years ago

0.3.127

2 years ago

0.3.126

2 years ago

0.3.125

2 years ago

0.3.124

2 years ago

0.3.123

2 years ago

0.3.122

2 years ago

0.3.121

2 years ago

0.3.120

2 years ago

0.3.119

2 years ago

0.3.118

2 years ago

0.3.116

2 years ago

0.3.117

2 years ago

0.3.115

2 years ago

0.3.114

2 years ago

0.3.113

2 years ago

0.3.112

2 years ago

0.3.111

2 years ago

0.3.110

2 years ago

0.3.109

2 years ago

0.3.108

2 years ago

0.3.107

2 years ago

0.3.106

2 years ago

0.3.105

2 years ago

0.3.104

2 years ago

0.3.103

2 years ago

0.3.102

2 years ago

0.3.101

2 years ago

0.3.100

2 years ago

0.3.99

2 years ago

0.3.98

2 years ago

0.3.97

2 years ago

0.3.96

2 years ago

0.3.95

2 years ago

0.3.94

2 years ago

0.3.93

2 years ago

0.3.92

2 years ago

0.3.91

2 years ago

0.3.90

2 years ago

0.3.89

2 years ago

0.3.88

2 years ago

0.3.87

2 years ago

0.3.86

2 years ago

0.3.85

2 years ago

0.3.84

2 years ago

0.3.83

2 years ago

0.3.82

2 years ago

0.3.81

2 years ago

0.3.80

2 years ago

0.3.79

2 years ago

0.3.78

2 years ago

0.3.75

2 years ago

0.3.77

2 years ago

0.3.76

2 years ago

0.3.74

2 years ago

0.3.73

2 years ago

0.3.72

2 years ago

0.3.71

2 years ago

0.3.70

2 years ago

0.3.69

2 years ago

0.3.68

2 years ago

0.3.67

2 years ago

0.3.66

2 years ago

0.3.65

2 years ago

0.3.64

2 years ago

0.3.63

2 years ago

0.3.62

2 years ago

0.3.61

2 years ago

0.3.60

2 years ago

0.3.59

2 years ago

0.3.58

2 years ago

0.3.57

2 years ago

0.3.56

2 years ago

0.3.55

2 years ago

0.3.54

2 years ago

0.3.53

2 years ago

0.3.52

2 years ago

0.3.51

2 years ago

0.3.50

2 years ago

0.3.49

2 years ago

0.3.48

2 years ago

0.3.47

2 years ago

0.3.46

2 years ago

0.2.27

2 years ago

0.2.26

2 years ago

0.2.25

2 years ago

0.2.24

2 years ago

0.2.23

2 years ago

0.2.22

2 years ago

0.2.21

2 years ago

0.2.20

2 years ago

0.2.19

2 years ago

0.2.18

2 years ago

0.2.17

2 years ago

0.2.16

2 years ago

0.2.15

2 years ago

0.2.14

2 years ago

0.2.13

2 years ago

0.2.12

2 years ago

0.2.11

2 years ago

0.2.10

2 years ago

0.3.0

2 years ago

0.3.6

2 years ago

0.3.5

2 years ago

0.3.8

2 years ago

0.3.7

2 years ago

0.3.2

2 years ago

0.3.1

2 years ago

0.3.4

2 years ago

0.3.3

2 years ago

0.3.42

2 years ago

0.3.41

2 years ago

0.3.40

2 years ago

0.3.45

2 years ago

0.3.44

2 years ago

0.3.43

2 years ago

0.3.31

2 years ago

0.3.30

2 years ago

0.3.39

2 years ago

0.3.38

2 years ago

0.3.37

2 years ago

0.3.36

2 years ago

0.3.35

2 years ago

0.3.34

2 years ago

0.3.33

2 years ago

0.3.32

2 years ago

0.3.29

2 years ago

0.3.20

2 years ago

0.3.28

2 years ago

0.3.27

2 years ago

0.3.26

2 years ago

0.3.25

2 years ago

0.3.24

2 years ago

0.3.23

2 years ago

0.3.22

2 years ago

0.3.21

2 years ago

0.3.19

2 years ago

0.3.18

2 years ago

0.3.9

2 years ago

0.3.17

2 years ago

0.3.16

2 years ago

0.3.15

2 years ago

0.3.14

2 years ago

0.3.13

2 years ago

0.3.12

2 years ago

0.3.11

2 years ago

0.3.10

2 years ago

0.2.30

2 years ago

0.2.29

2 years ago

0.2.28

2 years ago

0.2.7

2 years ago

0.2.9

2 years ago

0.2.8

2 years ago

0.2.6

2 years ago

0.2.5

2 years ago

0.1.27

2 years ago

0.1.26

2 years ago

0.2.1

2 years ago

0.2.3

2 years ago

0.2.2

2 years ago

0.2.4

2 years ago

0.1.15

2 years ago

0.1.20

2 years ago

0.1.21

2 years ago

0.1.22

2 years ago

0.1.23

2 years ago

0.1.24

2 years ago

0.1.25

2 years ago

0.1.16

2 years ago

0.1.17

2 years ago

0.1.18

2 years ago

0.1.19

2 years ago

0.1.10

2 years ago

0.1.11

2 years ago

0.1.12

2 years ago

0.1.13

2 years ago

0.1.14

2 years ago

0.1.8

2 years ago

0.1.7

3 years ago

0.1.9

2 years ago

0.1.4

3 years ago

0.1.3

3 years ago

0.1.6

3 years ago

0.1.5

3 years ago

0.0.12

3 years ago

0.0.13

3 years ago

0.1.0

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.0.11

3 years ago

0.0.10

3 years ago

0.0.9

3 years ago

0.0.8

3 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.5

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago