@jalvin/runtime 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,560 @@
1
+ "use strict";
2
+ // ─────────────────────────────────────────────────────────────────────────────
3
+ // Jalvin Coroutine runtime
4
+ //
5
+ // Provides primitives on top of the JS event loop:
6
+ // • launch { } — fire-and-forget, returns a Job
7
+ // • async { } — returns a Deferred<T> (a typed Promise)
8
+ // • Dispatchers — Main, IO, Default (all map to appropriate JS queues)
9
+ // • withContext — switch dispatcher mid-coroutine
10
+ // • delay — suspendable sleep
11
+ // • CoroutineScope — structured concurrency scope
12
+ // • cancelAll — cancel all children of a scope
13
+ // ─────────────────────────────────────────────────────────────────────────────
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.Flow = exports.Channel = exports.ChannelClosedException = exports.TimeoutCancellationException = exports.CoroutineScope = exports.Deferred = exports.JobCancellationException = exports.Job = void 0;
16
+ exports.yield_ = yield_;
17
+ exports.launch = launch;
18
+ exports.async_ = async_;
19
+ exports.delay = delay;
20
+ exports.withContext = withContext;
21
+ exports.repeat = repeat;
22
+ exports.runBlocking = runBlocking;
23
+ exports.withTimeout = withTimeout;
24
+ exports.withTimeoutOrNull = withTimeoutOrNull;
25
+ exports.flow = flow;
26
+ exports.flowOf = flowOf;
27
+ exports.asFlow = asFlow;
28
+ exports.coroutineScope = coroutineScope;
29
+ exports.supervisorScope = supervisorScope;
30
+ class Job {
31
+ _state = "active";
32
+ _children = new Set();
33
+ _promise;
34
+ _resolve;
35
+ _reject;
36
+ constructor() {
37
+ this._promise = new Promise((res, rej) => {
38
+ this._resolve = res;
39
+ this._reject = rej;
40
+ });
41
+ }
42
+ get isActive() { return this._state === "active"; }
43
+ get isCancelled() { return this._state === "cancelled" || this._state === "cancelling"; }
44
+ get isCompleted() { return this._state === "completed"; }
45
+ async join() {
46
+ return this._promise;
47
+ }
48
+ cancel(reason) {
49
+ if (this._state !== "active")
50
+ return;
51
+ this._state = "cancelling";
52
+ for (const child of this._children)
53
+ child.cancel(reason);
54
+ this._state = "cancelled";
55
+ this._reject(new JobCancellationException(reason ?? "Job was cancelled"));
56
+ }
57
+ /** @internal */
58
+ _complete() {
59
+ if (this._state === "active") {
60
+ this._state = "completed";
61
+ this._resolve();
62
+ }
63
+ }
64
+ /** @internal */
65
+ _fail(reason) {
66
+ if (this._state === "active") {
67
+ this._state = "cancelled";
68
+ this._reject(reason);
69
+ }
70
+ }
71
+ /** @internal */
72
+ _addChild(job) {
73
+ this._children.add(job);
74
+ job._promise.finally(() => this._children.delete(job));
75
+ }
76
+ }
77
+ exports.Job = Job;
78
+ class JobCancellationException extends Error {
79
+ constructor(message) {
80
+ super(message);
81
+ this.name = "JobCancellationException";
82
+ }
83
+ }
84
+ exports.JobCancellationException = JobCancellationException;
85
+ // ---------------------------------------------------------------------------
86
+ // Deferred<T>
87
+ // ---------------------------------------------------------------------------
88
+ class Deferred {
89
+ _promise;
90
+ _resolve;
91
+ _reject;
92
+ _completed = false;
93
+ constructor() {
94
+ this._promise = new Promise((res, rej) => {
95
+ this._resolve = res;
96
+ this._reject = rej;
97
+ });
98
+ }
99
+ complete(value) {
100
+ if (!this._completed) {
101
+ this._completed = true;
102
+ this._resolve(value);
103
+ }
104
+ }
105
+ completeExceptionally(reason) {
106
+ if (!this._completed) {
107
+ this._completed = true;
108
+ this._reject(reason);
109
+ }
110
+ }
111
+ async await() {
112
+ return this._promise;
113
+ }
114
+ /** @internal */
115
+ toPromise() {
116
+ return this._promise;
117
+ }
118
+ }
119
+ exports.Deferred = Deferred;
120
+ /** Yield to the next microtask */
121
+ async function yield_() {
122
+ return new Promise((res) => setTimeout(res, 0));
123
+ }
124
+ // ---------------------------------------------------------------------------
125
+ // CoroutineScope
126
+ // ---------------------------------------------------------------------------
127
+ class CoroutineScope {
128
+ _jobs = new Set();
129
+ _cancelled = false;
130
+ get isCancelled() { return this._cancelled; }
131
+ /**
132
+ * Launch a fire-and-forget coroutine in this scope.
133
+ */
134
+ launch(fn) {
135
+ if (this._cancelled) {
136
+ const j = new Job();
137
+ j.cancel("Scope is cancelled");
138
+ return j;
139
+ }
140
+ const job = new Job();
141
+ this._jobs.add(job);
142
+ fn()
143
+ .then(() => job._complete())
144
+ .catch((e) => {
145
+ if (e instanceof JobCancellationException) {
146
+ job.cancel(e.message);
147
+ }
148
+ else {
149
+ job._fail(e);
150
+ }
151
+ })
152
+ .finally(() => this._jobs.delete(job));
153
+ return job;
154
+ }
155
+ /**
156
+ * Launch an async coroutine that returns a value.
157
+ */
158
+ async_(fn) {
159
+ const deferred = new Deferred();
160
+ fn()
161
+ .then((v) => deferred.complete(v))
162
+ .catch((e) => deferred.completeExceptionally(e));
163
+ return deferred;
164
+ }
165
+ /** Cancel all running jobs in this scope */
166
+ cancel(reason) {
167
+ this._cancelled = true;
168
+ for (const job of this._jobs) {
169
+ job.cancel(reason);
170
+ }
171
+ }
172
+ /** Wait for all running jobs to complete */
173
+ async joinAll() {
174
+ await Promise.all([...this._jobs].map((j) => j.join().catch(() => void 0)));
175
+ }
176
+ }
177
+ exports.CoroutineScope = CoroutineScope;
178
+ // ---------------------------------------------------------------------------
179
+ // Top-level launch / async helpers (global scope)
180
+ // ---------------------------------------------------------------------------
181
+ const _globalScope = new CoroutineScope();
182
+ /**
183
+ * Fire-and-forget coroutine at global scope.
184
+ *
185
+ * launch {
186
+ * val data = Bibi("https://api.example.com").get<User>("/me")
187
+ * println(data.body())
188
+ * }
189
+ */
190
+ function launch(fn) {
191
+ return _globalScope.launch(fn);
192
+ }
193
+ /**
194
+ * Async block that returns a Deferred<T>.
195
+ *
196
+ * val job = async { expensiveCompute() }
197
+ * val result = job.await()
198
+ */
199
+ function async_(fn) {
200
+ return _globalScope.async_(fn);
201
+ }
202
+ // ---------------------------------------------------------------------------
203
+ // delay — suspendable sleep
204
+ // ---------------------------------------------------------------------------
205
+ function delay(ms) {
206
+ return new Promise((res) => setTimeout(res, ms));
207
+ }
208
+ // ---------------------------------------------------------------------------
209
+ // withContext — switch dispatcher context
210
+ // In JS all dispatchers are the same event loop; we yield for fairness.
211
+ // ---------------------------------------------------------------------------
212
+ async function withContext(_dispatcher, fn) {
213
+ await yield_();
214
+ return fn();
215
+ }
216
+ // ---------------------------------------------------------------------------
217
+ // repeat — repeat a suspend block N times
218
+ // ---------------------------------------------------------------------------
219
+ async function repeat(times, fn) {
220
+ for (let i = 0; i < times; i++) {
221
+ await fn(i);
222
+ }
223
+ }
224
+ // ---------------------------------------------------------------------------
225
+ // runBlocking — bridges suspend world into sync (test helper, not for UI)
226
+ // ---------------------------------------------------------------------------
227
+ function runBlocking(fn) {
228
+ let result;
229
+ let error;
230
+ let done = false;
231
+ fn().then((v) => { result = v; done = true; }).catch((e) => { error = e; done = true; });
232
+ // Spin — only safe in Node.js test environments
233
+ const start = Date.now();
234
+ while (!done) {
235
+ if (Date.now() - start > 10_000)
236
+ throw new Error("runBlocking timeout");
237
+ // No synchronous spin possible in pure JS — callers should use await
238
+ }
239
+ if (error !== undefined)
240
+ throw error;
241
+ return result;
242
+ }
243
+ // ---------------------------------------------------------------------------
244
+ // withTimeout / withTimeoutOrNull
245
+ // ---------------------------------------------------------------------------
246
+ class TimeoutCancellationException extends Error {
247
+ constructor(ms) {
248
+ super(`Timed out waiting for ${ms} ms`);
249
+ this.name = "TimeoutCancellationException";
250
+ }
251
+ }
252
+ exports.TimeoutCancellationException = TimeoutCancellationException;
253
+ /**
254
+ * Run `fn` and throw `TimeoutCancellationException` if it doesn't complete
255
+ * within `timeoutMs` milliseconds.
256
+ */
257
+ async function withTimeout(timeoutMs, fn) {
258
+ let timer = null;
259
+ const timeoutPromise = new Promise((_, reject) => {
260
+ timer = setTimeout(() => reject(new TimeoutCancellationException(timeoutMs)), timeoutMs);
261
+ });
262
+ try {
263
+ const result = await Promise.race([fn(), timeoutPromise]);
264
+ return result;
265
+ }
266
+ finally {
267
+ if (timer !== null)
268
+ clearTimeout(timer);
269
+ }
270
+ }
271
+ /**
272
+ * Like `withTimeout` but returns `null` on timeout instead of throwing.
273
+ */
274
+ async function withTimeoutOrNull(timeoutMs, fn) {
275
+ try {
276
+ return await withTimeout(timeoutMs, fn);
277
+ }
278
+ catch (e) {
279
+ if (e instanceof TimeoutCancellationException)
280
+ return null;
281
+ throw e;
282
+ }
283
+ }
284
+ // ---------------------------------------------------------------------------
285
+ // Channel<T>
286
+ // A basic rendezvous channel. Senders await receivers and vice versa.
287
+ // ---------------------------------------------------------------------------
288
+ class ChannelClosedException extends Error {
289
+ constructor() {
290
+ super("Channel is closed");
291
+ this.name = "ChannelClosedException";
292
+ }
293
+ }
294
+ exports.ChannelClosedException = ChannelClosedException;
295
+ /**
296
+ * An unbuffered (rendezvous) channel`.
297
+ *
298
+ * ```
299
+ * val ch = Channel<Int>()
300
+ * launch { ch.send(42) }
301
+ * val v = ch.receive()
302
+ * ```
303
+ */
304
+ class Channel {
305
+ _buffer = [];
306
+ _capacity;
307
+ _closed = false;
308
+ _sendWaiters = [];
309
+ _recvWaiters = [];
310
+ constructor(capacity = 0) {
311
+ this._capacity = capacity;
312
+ }
313
+ /** Send a value to the channel. Suspends if the buffer is full. */
314
+ async send(value) {
315
+ if (this._closed)
316
+ throw new ChannelClosedException();
317
+ // If there's a waiting receiver, hand off directly
318
+ const receiver = this._recvWaiters.shift();
319
+ if (receiver) {
320
+ receiver.resolve(value);
321
+ return;
322
+ }
323
+ // If buffered capacity allows, enqueue
324
+ if (this._buffer.length < this._capacity) {
325
+ this._buffer.push(value);
326
+ return;
327
+ }
328
+ // Otherwise, suspend until a receiver is ready
329
+ return new Promise((resolve, reject) => {
330
+ this._sendWaiters.push({ value, resolve, reject });
331
+ });
332
+ }
333
+ /** Receive a value from the channel. Suspends if no value is available. */
334
+ async receive() {
335
+ // If there's a buffered value, return it and wake a pending sender
336
+ if (this._buffer.length > 0) {
337
+ const value = this._buffer.shift();
338
+ const sender = this._sendWaiters.shift();
339
+ if (sender) {
340
+ this._buffer.push(sender.value);
341
+ sender.resolve();
342
+ }
343
+ return value;
344
+ }
345
+ if (this._closed)
346
+ throw new ChannelClosedException();
347
+ // If there's a pending sender, receive directly
348
+ const sender = this._sendWaiters.shift();
349
+ if (sender) {
350
+ sender.resolve();
351
+ return sender.value;
352
+ }
353
+ // Suspend until a value arrives
354
+ return new Promise((resolve, reject) => {
355
+ this._recvWaiters.push({ resolve, reject });
356
+ });
357
+ }
358
+ /** Try to receive without suspending. Returns undefined if empty. */
359
+ tryReceive() {
360
+ if (this._buffer.length > 0)
361
+ return this._buffer.shift();
362
+ const sender = this._sendWaiters.shift();
363
+ if (sender) {
364
+ sender.resolve();
365
+ return sender.value;
366
+ }
367
+ return undefined;
368
+ }
369
+ /** Close the channel — subsequent sends throw; pending receives get ChannelClosedException. */
370
+ close() {
371
+ this._closed = true;
372
+ for (const waiter of this._recvWaiters) {
373
+ waiter.reject(new ChannelClosedException());
374
+ }
375
+ this._recvWaiters = [];
376
+ }
377
+ get isClosed() { return this._closed; }
378
+ get isEmpty() { return this._buffer.length === 0 && this._sendWaiters.length === 0; }
379
+ /** Consume all values as an async iterable */
380
+ async *[Symbol.asyncIterator]() {
381
+ while (!this._closed || !this.isEmpty) {
382
+ try {
383
+ yield await this.receive();
384
+ }
385
+ catch (e) {
386
+ if (e instanceof ChannelClosedException)
387
+ return;
388
+ throw e;
389
+ }
390
+ }
391
+ }
392
+ }
393
+ exports.Channel = Channel;
394
+ /**
395
+ * A cold asynchronous stream. The producer block only runs when `.collect()`
396
+ * is called — each collector gets its own independent execution.
397
+ *
398
+ * ```jalvin
399
+ * val flow = flow<Int> {
400
+ * emit(1)
401
+ * emit(2)
402
+ * emit(3)
403
+ * }
404
+ * flow.collect { println(it) }
405
+ * ```
406
+ */
407
+ class Flow {
408
+ producer;
409
+ constructor(producer) {
410
+ this.producer = producer;
411
+ }
412
+ async collect(collector) {
413
+ await this.producer(async (v) => { await collector(v); });
414
+ }
415
+ map(transform) {
416
+ return new Flow(async (emit) => {
417
+ await this.collect(async (v) => emit(await transform(v)));
418
+ });
419
+ }
420
+ filter(predicate) {
421
+ return new Flow(async (emit) => {
422
+ await this.collect(async (v) => { if (await predicate(v))
423
+ await emit(v); });
424
+ });
425
+ }
426
+ take(count) {
427
+ return new Flow(async (emit) => {
428
+ let n = 0;
429
+ await this.collect(async (v) => {
430
+ if (n++ < count)
431
+ await emit(v);
432
+ });
433
+ });
434
+ }
435
+ drop(count) {
436
+ return new Flow(async (emit) => {
437
+ let n = 0;
438
+ await this.collect(async (v) => { if (n++ >= count)
439
+ await emit(v); });
440
+ });
441
+ }
442
+ distinct() {
443
+ return new Flow(async (emit) => {
444
+ const seen = new Set();
445
+ await this.collect(async (v) => { if (!seen.has(v)) {
446
+ seen.add(v);
447
+ await emit(v);
448
+ } });
449
+ });
450
+ }
451
+ onEach(action) {
452
+ return new Flow(async (emit) => {
453
+ await this.collect(async (v) => { await action(v); await emit(v); });
454
+ });
455
+ }
456
+ async toList() {
457
+ const result = [];
458
+ await this.collect((v) => { result.push(v); });
459
+ return result;
460
+ }
461
+ async first() {
462
+ return new Promise((resolve, reject) => {
463
+ let found = false;
464
+ this.collect((v) => {
465
+ if (!found) {
466
+ found = true;
467
+ resolve(v);
468
+ }
469
+ }).catch(reject);
470
+ });
471
+ }
472
+ async firstOrNull() {
473
+ return new Promise((resolve) => {
474
+ let found = false;
475
+ this.collect((v) => {
476
+ if (!found) {
477
+ found = true;
478
+ resolve(v);
479
+ }
480
+ }).then(() => { if (!found)
481
+ resolve(null); }).catch(() => resolve(null));
482
+ });
483
+ }
484
+ /** Combine two flows, emitting pairs whenever either emits */
485
+ static combine(a, b) {
486
+ return new Flow(async (emit) => {
487
+ let latestA;
488
+ let latestB;
489
+ let hasA = false;
490
+ let hasB = false;
491
+ const pa = a.collect(async (v) => { latestA = v; hasA = true; if (hasB)
492
+ await emit([latestA, latestB]); });
493
+ const pb = b.collect(async (v) => { latestB = v; hasB = true; if (hasA)
494
+ await emit([latestA, latestB]); });
495
+ await Promise.all([pa, pb]);
496
+ });
497
+ }
498
+ /** Merge multiple flows into one */
499
+ static merge(...flows) {
500
+ return new Flow(async (emit) => {
501
+ await Promise.all(flows.map((f) => f.collect(emit)));
502
+ });
503
+ }
504
+ }
505
+ exports.Flow = Flow;
506
+ /**
507
+ * Build a cold Flow from a producer block.
508
+ *
509
+ * ```jalvin
510
+ * val numbers = flow<Int> {
511
+ * for (i in 1..5) {
512
+ * emit(i)
513
+ * delay(100)
514
+ * }
515
+ * }
516
+ * ```
517
+ */
518
+ function flow(producer) {
519
+ return new Flow(producer);
520
+ }
521
+ /**
522
+ * Build a Flow from a fixed collection.
523
+ */
524
+ function flowOf(...values) {
525
+ return new Flow(async (emit) => {
526
+ for (const v of values)
527
+ await emit(v);
528
+ });
529
+ }
530
+ /**
531
+ * Build a Flow from an async iterable (e.g. a Channel).
532
+ */
533
+ function asFlow(source) {
534
+ return new Flow(async (emit) => {
535
+ for await (const v of source)
536
+ await emit(v);
537
+ });
538
+ }
539
+ // ---------------------------------------------------------------------------
540
+ // Structured-concurrency builders
541
+ // ---------------------------------------------------------------------------
542
+ /**
543
+ * Creates a new coroutine scope, executes the given block, and returns once
544
+ * all launched child jobs complete.
545
+ */
546
+ async function coroutineScope(fn) {
547
+ const scope = new CoroutineScope();
548
+ const result = await Promise.resolve(fn(scope));
549
+ await scope.joinAll();
550
+ return result;
551
+ }
552
+ /**
553
+ * Like `coroutineScope` but child failures do not cancel siblings.
554
+ * In a JS environment all unhandled promise rejections are already independent,
555
+ * so this is equivalent to `coroutineScope`.
556
+ */
557
+ async function supervisorScope(fn) {
558
+ return coroutineScope(fn);
559
+ }
560
+ //# sourceMappingURL=coroutines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coroutines.js","sourceRoot":"","sources":["../src/coroutines.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export { Bibi, BibiRequestBuilder, BibiError } from "./bibi.js";
2
+ export type { BibiMethod, BibiRequestOptions, BibiResponse, BibiInterceptor } from "./bibi.js";
3
+ export { Job, JobCancellationException, Deferred, CoroutineScope, launch, async_ as async, delay, withContext, repeat, runBlocking, yield_, withTimeout, withTimeoutOrNull, TimeoutCancellationException, Channel, ChannelClosedException, Flow, flow, flowOf, asFlow, coroutineScope, supervisorScope, } from "./coroutines.js";
4
+ export type { Dispatcher, FlowCollector } from "./coroutines.js";
5
+ export { MutableStateFlow, mapFlow, filterFlow, debounceFlow, ViewModel, viewModel, clearViewModel, clearAllViewModels, } from "./stateflow.js";
6
+ export type { StateFlow, Subscriber, Unsubscribe } from "./stateflow.js";
7
+ export { mutableStateOf, remember, rememberMutableStateOf, collectAsState, useViewModel, LaunchedEffect, DisposableEffect, SideEffect, } from "./ui.js";
8
+ export type { MutableState } from "./ui.js";
9
+ export { notNull, NullPointerException, safeCast, range, delegate, lazy, Delegates, LazyDelegate, ObservableDelegate, println, print, listOf, mutableListOf, setOf, mutableSetOf, mapOf, mutableMapOf, pairOf, tripleOf, checkNotNull, requireNotNull, requireCondition, check, error, IllegalArgumentException, IllegalStateException, UnsupportedOperationException, IndexOutOfBoundsException, NoSuchElementException, let_, run_, apply, also, with_, takeIf, takeUnless, map, filter, filterNotNull, forEach, fold, reduce, sumOf, any, all, none, count, first, firstOrNull, last, lastOrNull, find, findLast, flatMap, flatten, groupBy, associate, zip, distinct, distinctBy, sortedBy, sortedByDescending, reversed, chunked, windowed, partition, withIndex, minOf, maxOf, minOrNull, maxOrNull, joinToString, take, takeWhile, drop, dropWhile, coerceAtLeast, coerceAtMost, coerceIn, Int, Long, trimIndent, repeat_ as repeatString, isBlank, isNotBlank, isNullOrBlank, toIntOrNull, toDoubleOrNull, toBooleanOrNull, padStart, padEnd, capitalize, decapitalize, substringBefore, substringAfter, substringBeforeLast, substringAfterLast, removePrefix, removeSuffix, lines, lineSequence, ifEmpty, ifBlank, toInt, toLong, toFloat, toDouble, toChar, charCodeOf, toString, abs, ceil, floor, round, sqrt, pow, exp, ln, log2, log10, sin, cos, tan, asin, acos, atan, atan2, sign, hypot, truncate, clamp, truncDiv, PI, E, IntRange, downTo, step, StringBuilder, buildString, buildList, buildSet, buildMap, Result, runCatching, runCatchingAsync, Regex, RegexResult, measureTimeMillis, measureTimeMillisAsync, measureTimedValue, Random, Default as DefaultRandom, randomUUID, jalvinEquals, Pair, Triple, } from "./utils.js";
10
+ export type { PropertyDelegate, TimedValue } from "./utils.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}