@anterior/brrr 0.1.259 → 0.1.261

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.
package/README.md CHANGED
@@ -34,7 +34,7 @@ Highlights:
34
34
  ```python
35
35
  import brrr
36
36
 
37
- async def fib(app: brrr.ActiveWorker, n: int, salt=None):
37
+ async def fib(app: DemoContext, n: int, salt=None):
38
38
  match n:
39
39
  case 0: return 0
40
40
  case 1: return 1
@@ -44,13 +44,13 @@ async def fib(app: brrr.ActiveWorker, n: int, salt=None):
44
44
  ))
45
45
 
46
46
 
47
- async def fib_and_print(app: brrr.ActiveWorker, n: str):
47
+ async def fib_and_print(app: DemoContext, n: str):
48
48
  f = await app.call(fib)(int(n))
49
49
  print(f"fib({n}) = {f}", flush=True)
50
50
  return f
51
51
 
52
52
 
53
- async def hello(app: brrr.ActiveWorker, greetee: str):
53
+ async def hello(app: DemoContext, greetee: str):
54
54
  greeting = f"Hello, {greetee}!"
55
55
  print(greeting, flush=True)
56
56
  return greeting
@@ -147,6 +147,10 @@ Brrr has no central scheduling agent. Workers contend for the same jobs and the
147
147
 
148
148
  Workers have to specify on which topic(s) they listen, and once a worker listens on a topic it must be able to handle _every_ incoming job.
149
149
 
150
+ ## Context
151
+
152
+ A brrr task takes user-defined "context" as its first argument. The context is created in the codec's `invokeTask` method, so you have full control over what context to inject. This is useful for, e.g. injecting dependencies like an authenticated API client.
153
+
150
154
  ## Copyright & License
151
155
 
152
156
  Brrr is authored by [Anterior](https://anterior.com), based in NYC, USA.
package/demo/cli.ts CHANGED
@@ -2,7 +2,8 @@
2
2
  import {
3
3
  ActiveWorker,
4
4
  AppWorker,
5
- NaiveJsonCodec,
5
+ DemoJsonCodec,
6
+ type DemoJsonCodecContext,
6
7
  Server,
7
8
  } from "../src/index.ts";
8
9
  import { Dynamo, Redis } from "../src/backends/index.ts";
@@ -40,7 +41,10 @@ type Arg = { n: number; salt: string | null };
40
41
  * Lucas number: lucas(n) = fib(n - 1) + fib(n + 1)
41
42
  * https://en.wikipedia.org/wiki/Lucas_number
42
43
  */
43
- async function lucas(app: ActiveWorker, { n, salt }: Arg): Promise<number> {
44
+ async function lucas(
45
+ app: DemoJsonCodecContext,
46
+ { n, salt }: Arg,
47
+ ): Promise<number> {
44
48
  if (n < 2) {
45
49
  return 2 - n;
46
50
  }
@@ -51,7 +55,10 @@ async function lucas(app: ActiveWorker, { n, salt }: Arg): Promise<number> {
51
55
  return a + b;
52
56
  }
53
57
 
54
- async function fib(app: ActiveWorker, { n, salt }: Arg): Promise<number> {
58
+ async function fib(
59
+ app: DemoJsonCodecContext,
60
+ { n, salt }: Arg,
61
+ ): Promise<number> {
55
62
  if (n < 2) {
56
63
  return n;
57
64
  }
@@ -68,7 +75,7 @@ const server = new Server(dynamo, redis, {
68
75
  },
69
76
  });
70
77
 
71
- const codec = new NaiveJsonCodec();
78
+ const codec = new DemoJsonCodec();
72
79
 
73
80
  const app = new AppWorker(codec, server, { fib, lucas });
74
81
 
package/dist/app.d.ts CHANGED
@@ -1,35 +1,32 @@
1
1
  import { type Connection, Defer, type Request, type Response } from "./connection.ts";
2
2
  import type { Codec } from "./codec.ts";
3
- import { BrrrTaskSymbol } from "./symbol.ts";
4
- export type Task<A extends unknown[] = any[], R = any> = ((...args: [ActiveWorker, ...A]) => R) & {
5
- readonly [BrrrTaskSymbol]?: (...args: A) => R;
3
+ export type Task<C, A extends unknown[] = any[], R = any> = NoContextTask<[
4
+ C,
5
+ ...A
6
+ ], R>;
7
+ export type NoContextTask<A extends unknown[] = any[], R = any> = (...args: A) => R | Promise<R>;
8
+ export type Handlers<C> = Readonly<Record<string, Task<C, any[], any>>>;
9
+ export type Registry<C> = {
10
+ codec: Codec<C>;
11
+ handlers: Handlers<C>;
6
12
  };
7
- export type StripLeadingActiveWorker<A extends unknown[]> = A extends [
8
- ActiveWorker,
9
- ...infer Rest
10
- ] ? Rest : A;
11
- export type NoAppTask<A extends unknown[], R> = (...args: StripLeadingActiveWorker<A>) => Promise<R>;
12
- export type Handlers = Readonly<Record<string, Task>>;
13
- export type TaskIdentifier<A extends unknown[], R> = ((...args: A) => R | Promise<R>) | string;
14
- export declare function taskIdentifierToName(identifier: TaskIdentifier<any[], any>, handlers: Handlers): string;
15
- export declare function taskFn<A extends unknown[], R>(fn: (...args: A) => R): Task<A, R>;
16
- export declare class AppConsumer {
17
- readonly codec: Codec;
13
+ export type TaskIdentifier<C, A extends unknown[], R> = Task<C, A, R> | string;
14
+ export declare function taskIdentifierToName(identifier: TaskIdentifier<any, any[], any>, handlers: Handlers<any>): string;
15
+ export declare class AppConsumer<C> {
18
16
  readonly connection: Connection;
19
- readonly handlers: Handlers;
20
- constructor(codec: Codec, connection: Connection, handlers?: Handlers);
21
- schedule<A extends unknown[], R>(taskIdentifier: TaskIdentifier<A, R>, topic: string): NoAppTask<A, void>;
22
- read<A extends unknown[], R>(taskIdentifier: TaskIdentifier<A, R>): NoAppTask<A, R>;
17
+ readonly registry: Registry<C>;
18
+ constructor(codec: Codec<C>, connection: Connection, handlers?: Handlers<C>);
19
+ schedule<A extends unknown[], R>(taskIdentifier: TaskIdentifier<C, A, R>, topic: string): (...args: A) => Promise<void>;
20
+ read<A extends unknown[], R>(taskIdentifier: TaskIdentifier<C, A, R>): (...args: A) => Promise<R>;
23
21
  }
24
- export declare class AppWorker extends AppConsumer {
22
+ export declare class AppWorker<C> extends AppConsumer<C> {
25
23
  readonly handle: (request: Request, connection: Connection) => Promise<Response | Defer>;
26
24
  }
27
- export declare class ActiveWorker {
25
+ export declare class ActiveWorker<C> {
28
26
  private readonly connection;
29
- private readonly codec;
30
- private readonly handlers;
31
- constructor(connection: Connection, codec: Codec, handlers: Handlers);
32
- call<A extends unknown[], R>(taskIdentifier: TaskIdentifier<A, R>, topic?: string | undefined): NoAppTask<A, R>;
27
+ private readonly registry;
28
+ constructor(connection: Connection, registry: Registry<C>);
29
+ call<A extends unknown[], R>(taskIdentifier: TaskIdentifier<C, A, R>, topic?: string | undefined): (...args: A) => Promise<R>;
33
30
  gather<T1>(t1: T1): Promise<[Awaited<T1>]>;
34
31
  gather<T1, T2>(t1: T1, t2: T2): Promise<[Awaited<T1>, Awaited<T2>]>;
35
32
  gather<T1, T2, T3>(t1: T1, t2: T2, t3: T3): Promise<[Awaited<T1>, Awaited<T2>, Awaited<T3>]>;
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
package/dist/app.js CHANGED
@@ -1,45 +1,34 @@
1
1
  import { Defer, } from "./connection.js";
2
2
  import { NotFoundError, TaskNotFoundError } from "./errors.js";
3
- import { BrrrTaskSymbol } from "./symbol.js";
4
3
  export function taskIdentifierToName(identifier, handlers) {
5
4
  if (typeof identifier === "string") {
6
5
  return identifier;
7
6
  }
8
7
  for (const [name, handler] of Object.entries(handlers)) {
9
- if (handler[BrrrTaskSymbol] === identifier || handler === identifier) {
8
+ if (handler === identifier) {
10
9
  return name;
11
10
  }
12
11
  }
13
12
  throw new TaskNotFoundError(identifier.name);
14
13
  }
15
- export function taskFn(fn) {
16
- const task = (_, ...args) => fn(...args);
17
- return Object.defineProperty(task, BrrrTaskSymbol, {
18
- value: fn,
19
- writable: false,
20
- configurable: false,
21
- });
22
- }
23
14
  export class AppConsumer {
24
- codec;
25
15
  connection;
26
- handlers;
16
+ registry;
27
17
  constructor(codec, connection, handlers = {}) {
28
- this.codec = codec;
29
18
  this.connection = connection;
30
- this.handlers = handlers;
19
+ this.registry = { codec, handlers };
31
20
  }
32
21
  schedule(taskIdentifier, topic) {
33
- const taskName = taskIdentifierToName(taskIdentifier, this.handlers);
22
+ const taskName = taskIdentifierToName(taskIdentifier, this.registry.handlers);
34
23
  return async (...args) => {
35
- const call = await this.codec.encodeCall(taskName, args);
24
+ const call = await this.registry.codec.encodeCall(taskName, args);
36
25
  await this.connection.scheduleRaw(topic, call);
37
26
  };
38
27
  }
39
28
  read(taskIdentifier) {
40
29
  return async (...args) => {
41
- const taskName = taskIdentifierToName(taskIdentifier, this.handlers);
42
- const call = await this.codec.encodeCall(taskName, args);
30
+ const taskName = taskIdentifierToName(taskIdentifier, this.registry.handlers);
31
+ const call = await this.registry.codec.encodeCall(taskName, args);
43
32
  const payload = await this.connection.memory.getValue(call.callHash);
44
33
  if (!payload) {
45
34
  throw new NotFoundError({
@@ -47,21 +36,18 @@ export class AppConsumer {
47
36
  callHash: call.callHash,
48
37
  });
49
38
  }
50
- return this.codec.decodeReturn(taskName, payload);
39
+ return this.registry.codec.decodeReturn(taskName, payload);
51
40
  };
52
41
  }
53
42
  }
54
43
  export class AppWorker extends AppConsumer {
55
44
  handle = async (request, connection) => {
56
- const handler = this.handlers[request.call.taskName];
45
+ const handler = this.registry.handlers[request.call.taskName];
57
46
  if (!handler) {
58
47
  throw new TaskNotFoundError(request.call.taskName);
59
48
  }
60
49
  try {
61
- const activeWorker = new ActiveWorker(connection, this.codec, this.handlers);
62
- const payload = await this.codec.invokeTask(request.call, (...args) => {
63
- return handler(activeWorker, ...args);
64
- });
50
+ const payload = await this.registry.codec.invokeTask(request.call, handler, new ActiveWorker(connection, this.registry));
65
51
  return { payload };
66
52
  }
67
53
  catch (err) {
@@ -74,22 +60,20 @@ export class AppWorker extends AppConsumer {
74
60
  }
75
61
  export class ActiveWorker {
76
62
  connection;
77
- codec;
78
- handlers;
79
- constructor(connection, codec, handlers) {
63
+ registry;
64
+ constructor(connection, registry) {
80
65
  this.connection = connection;
81
- this.codec = codec;
82
- this.handlers = handlers;
66
+ this.registry = registry;
83
67
  }
84
68
  call(taskIdentifier, topic) {
85
- const taskName = taskIdentifierToName(taskIdentifier, this.handlers);
69
+ const taskName = taskIdentifierToName(taskIdentifier, this.registry.handlers);
86
70
  return async (...args) => {
87
- const call = await this.codec.encodeCall(taskName, args);
71
+ const call = await this.registry.codec.encodeCall(taskName, args);
88
72
  const payload = await this.connection.memory.getValue(call.callHash);
89
73
  if (!payload) {
90
74
  throw new Defer({ topic, call });
91
75
  }
92
- return this.codec.decodeReturn(taskName, payload);
76
+ return this.registry.codec.decodeReturn(taskName, payload);
93
77
  };
94
78
  }
95
79
  async gather(...promises) {
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,GAIN,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAyB7C,MAAM,UAAU,oBAAoB,CAClC,UAAsC,EACtC,QAAkB;IAElB,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,UAAU,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,MAAM,IAAI,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,EAAqB;IAErB,MAAM,IAAI,GAAe,CAAC,CAAe,EAAE,GAAG,IAAO,EAAK,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;QACjD,KAAK,EAAE,EAA8C;QACrD,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,WAAW;IACN,KAAK,CAAQ;IACb,UAAU,CAAa;IACvB,QAAQ,CAAW;IAEnC,YACE,KAAY,EACZ,UAAsB,EACtB,WAAqB,EAAE;QAEvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEM,QAAQ,CACb,cAAoC,EACpC,KAAa;QAEb,MAAM,QAAQ,GAAG,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrE,OAAO,KAAK,EAAE,GAAG,IAAiC,EAAE,EAAE;YACpD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC,CAAC;IACJ,CAAC;IAEM,IAAI,CACT,cAAoC;QAEpC,OAAO,KAAK,EAAE,GAAG,IAAiC,EAAE,EAAE;YACpD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,aAAa,CAAC;oBACtB,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CAAC;YACL,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAM,CAAC;QACzD,CAAC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,WAAW;IACxB,MAAM,GAAG,KAAK,EAC5B,OAAgB,EAChB,UAAsB,EACK,EAAE;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,YAAY,CACnC,UAAU,EACV,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,QAAQ,CACd,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;gBACpE,OAAO,OAAO,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;gBACzB,OAAO,GAAG,CAAC;YACb,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;CACH;AAED,MAAM,OAAO,YAAY;IACN,UAAU,CAAa;IACvB,KAAK,CAAQ;IACb,QAAQ,CAAW;IAEpC,YAAmB,UAAsB,EAAE,KAAY,EAAE,QAAkB;QACzE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEM,IAAI,CACT,cAAoC,EACpC,KAA0B;QAE1B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrE,OAAO,KAAK,EAAE,GAAG,IAAiC,EAAc,EAAE;YAChE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAM,CAAC;QACzD,CAAC,CAAC;IACJ,CAAC;IA0BM,KAAK,CAAC,MAAM,CAAI,GAAG,QAAsB;QAC9C,SAAS,eAAe,CAAC,KAAQ;YAC/B,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,KAAmB;aAClB,CAAC;QACb,CAAC;QAED,SAAS,qBAAqB,CAAC,KAAc;YAC3C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,OAAO;oBACL,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,KAAK;iBACJ,CAAC;YACb,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,uFAAuF;QACvF,qFAAqF;QACrF,uCAAuC;QACvC,uFAAuF;QACvF,yCAAyC;QACzC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACvB,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,qBAAqB,CAAC,CACrD,CACF,CAAC;QAEF,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,MAAM,UAAU,GAAmB,EAAE,CAAC;QAEtC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC1B,MAAM;gBACR,CAAC;gBACD,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACvC,MAAM;gBACR,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC;oBACR,MAAM,CAAC,GAAU,MAAM,CAAC,CAAC,uBAAuB;gBAClD,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
package/dist/app.test.js CHANGED
@@ -1,17 +1,18 @@
1
1
  import { beforeEach, suite, test } from "node:test";
2
2
  import { strictEqual } from "node:assert";
3
- import { AppConsumer, AppWorker, taskFn, } from "./app.js";
3
+ import { ActiveWorker, AppConsumer, AppWorker, } from "./app.js";
4
4
  import { Defer, Server, SubscriberServer, } from "./connection.js";
5
5
  import { InMemoryCache, InMemoryEmitter, InMemoryStore, } from "./backends/in-memory.js";
6
- import { NaiveJsonCodec } from "./naive-json-codec.js";
6
+ import { DemoJsonCodec } from "./demo-json-codec.js";
7
7
  import { NotFoundError, SpawnLimitError } from "./errors.js";
8
8
  import { deepStrictEqual, ok, rejects } from "node:assert/strict";
9
9
  import { LocalApp, LocalBrrr } from "./local-app.js";
10
10
  import { BrrrShutdownSymbol, BrrrTaskDoneEventSymbol } from "./symbol.js";
11
11
  import { parse, stringify } from "superjson";
12
12
  import { matrixSuite } from "./fixture.test.js";
13
+ import { decoder, encoder } from "./internal-codecs.js";
13
14
  await matrixSuite(import.meta.filename, async (_, matrix) => {
14
- const codec = new NaiveJsonCodec();
15
+ const codec = new DemoJsonCodec();
15
16
  const topic = matrix.topic;
16
17
  const subtopics = {
17
18
  t1: "t1",
@@ -23,23 +24,20 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
23
24
  let emitter;
24
25
  let server;
25
26
  // Test tasks
26
- function bar(a) {
27
+ function bar(_, a) {
27
28
  return 456;
28
29
  }
29
30
  async function foo(app, a) {
30
31
  return (await app.call(bar, topic)(a + 1)) + 1;
31
32
  }
32
- function one(a) {
33
+ function one(_, a) {
33
34
  return a + 5;
34
35
  }
35
36
  async function two(app, a) {
36
37
  const result = await app.call("one", subtopics.t1)(a + 3);
37
38
  strictEqual(result, 15);
38
39
  }
39
- const handlers = {
40
- bar: taskFn(bar),
41
- foo,
42
- };
40
+ const handlers = { bar, foo };
43
41
  function waitFor(call, predicate) {
44
42
  return new Promise((resolve) => {
45
43
  emitter.onEventSymbol?.(BrrrTaskDoneEventSymbol, async ({ callHash }) => {
@@ -71,13 +69,11 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
71
69
  return done;
72
70
  });
73
71
  await test(AppConsumer.name, async () => {
74
- function foo(n) {
72
+ function foo(_, n) {
75
73
  return n * n;
76
74
  }
77
75
  const workerServer = new SubscriberServer(store, cache, emitter);
78
- const appWorker = new AppWorker(codec, workerServer, {
79
- foo: taskFn(foo),
80
- });
76
+ const appWorker = new AppWorker(codec, workerServer, { foo });
81
77
  workerServer.listen(topic, appWorker.handle);
82
78
  const appConsumer = new AppConsumer(codec, workerServer);
83
79
  const call = await codec.encodeCall(foo.name, [5]);
@@ -90,17 +86,17 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
90
86
  return done;
91
87
  });
92
88
  await test(LocalBrrr.name, async () => {
93
- const brrr = new LocalBrrr(topic, handlers, codec);
89
+ const brrr = new LocalBrrr(topic, { handlers, codec });
94
90
  strictEqual(await brrr.run(foo)(122), 457);
95
91
  });
96
92
  await suite("gather", async () => {
97
93
  async function callNestedGather(useBrrGather = true) {
98
94
  const calls = [];
99
- function foo(a) {
95
+ function foo(_, a) {
100
96
  calls.push(`foo(${a})`);
101
97
  return a * 2;
102
98
  }
103
- function bar(a) {
99
+ function bar(_, a) {
104
100
  calls.push(`bar(${a})`);
105
101
  return a - 1;
106
102
  }
@@ -116,10 +112,9 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
116
112
  return Promise.all(xs.map((x) => notBrrrTask(app, x)));
117
113
  }
118
114
  const localBrrr = new LocalBrrr(topic, {
119
- foo: taskFn(foo),
120
- bar: taskFn(bar),
121
- top,
122
- }, codec);
115
+ codec,
116
+ handlers: { foo, bar, top },
117
+ });
123
118
  await localBrrr.run(top)([3, 4]);
124
119
  return calls;
125
120
  }
@@ -147,9 +142,7 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
147
142
  });
148
143
  });
149
144
  await test("topics separate app same connection", async () => {
150
- const app1 = new AppWorker(codec, server, {
151
- one: taskFn(one),
152
- });
145
+ const app1 = new AppWorker(codec, server, { one });
153
146
  const app2 = new AppWorker(codec, server, { two });
154
147
  const call = await codec.encodeCall("two", [7]);
155
148
  const done = waitFor(call);
@@ -161,9 +154,7 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
161
154
  await test("topics separate app separate connection", async () => {
162
155
  const server1 = new SubscriberServer(store, cache, emitter);
163
156
  const server2 = new SubscriberServer(store, cache, emitter);
164
- const app1 = new AppWorker(codec, server1, {
165
- one: taskFn(one),
166
- });
157
+ const app1 = new AppWorker(codec, server1, { one });
167
158
  const app2 = new AppWorker(codec, server2, { two });
168
159
  server1.listen(subtopics.t1, app1.handle);
169
160
  server2.listen(subtopics.t2, app2.handle);
@@ -173,10 +164,7 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
173
164
  return done;
174
165
  });
175
166
  await test("topics same app", async () => {
176
- const app = new AppWorker(codec, server, {
177
- one: taskFn(one),
178
- two,
179
- });
167
+ const app = new AppWorker(codec, server, { one, two });
180
168
  server.listen(subtopics.t1, app.handle);
181
169
  server.listen(subtopics.t2, app.handle);
182
170
  const call = await codec.encodeCall("two", [7]);
@@ -195,13 +183,13 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
195
183
  .map(() => app.call(foo)(a - 1)));
196
184
  return results.reduce((sum, val) => sum + val);
197
185
  }
198
- const brrr = new LocalBrrr(topic, { foo }, codec);
186
+ const brrr = new LocalBrrr(topic, { codec, handlers: { foo } });
199
187
  await brrr.run(foo)(3);
200
188
  deepStrictEqual(Object.fromEntries(calls), { 0: 1, 1: 2, 2: 2, 3: 2 });
201
189
  });
202
190
  await test("no debounce parent", async () => {
203
191
  const calls = new Map();
204
- function one(_) {
192
+ function one(_ctx, _a) {
205
193
  calls.set("one", (calls.get("one") || 0) + 1);
206
194
  return 1;
207
195
  }
@@ -211,14 +199,14 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
211
199
  return results.reduce((sum, val) => sum + val);
212
200
  }
213
201
  const brrr = new LocalBrrr(topic, {
214
- one: taskFn(one),
215
- foo,
216
- }, codec);
202
+ codec,
203
+ handlers: { one, foo },
204
+ });
217
205
  await brrr.run(foo)(50);
218
206
  deepStrictEqual(Object.fromEntries(calls), { one: 50, foo: 51 });
219
207
  });
220
208
  await test("app handler names", async () => {
221
- function foo(a) {
209
+ function foo(_, a) {
222
210
  return a * a;
223
211
  }
224
212
  async function bar(app, a) {
@@ -226,7 +214,7 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
226
214
  (await app.call("quux/zim")(a)));
227
215
  }
228
216
  const worker = new AppWorker(codec, server, {
229
- "quux/zim": taskFn(foo),
217
+ "quux/zim": foo,
230
218
  "quux/bar": bar,
231
219
  });
232
220
  const localApp = new LocalApp(topic, server, worker);
@@ -286,7 +274,7 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
286
274
  class MyError extends Error {
287
275
  }
288
276
  let errors = 5;
289
- async function foo(a) {
277
+ async function foo(_, a) {
290
278
  if (errors) {
291
279
  errors--;
292
280
  throw new MyError();
@@ -296,7 +284,7 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
296
284
  }
297
285
  const app = new AppWorker(codec, server, {
298
286
  ...handlers,
299
- foo: taskFn(foo),
287
+ foo,
300
288
  });
301
289
  while (true) {
302
290
  try {
@@ -319,7 +307,7 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
319
307
  class MyError extends Error {
320
308
  }
321
309
  let errors = 5;
322
- function bar(a) {
310
+ function bar(_, a) {
323
311
  if (errors) {
324
312
  errors--;
325
313
  throw new MyError();
@@ -332,7 +320,7 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
332
320
  const app = new AppWorker(codec, server, {
333
321
  ...handlers,
334
322
  foo,
335
- bar: taskFn(bar),
323
+ bar,
336
324
  });
337
325
  while (true) {
338
326
  try {
@@ -361,16 +349,16 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
361
349
  const n = await app.call(fib)(1000n);
362
350
  deepStrictEqual(n, 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875n);
363
351
  }
364
- const codec = new NaiveJsonCodec({ stringify, parse });
352
+ const codec = new DemoJsonCodec({ stringify, parse });
365
353
  const app = new AppWorker(codec, server, { fib, top });
366
354
  await app.schedule(top, topic)();
367
355
  await Promise.all(new Array(10).keys().map(() => server.loop(topic, app.handle, flusher)));
368
356
  });
369
357
  await test("app subclass", async () => {
370
- function bar(a) {
358
+ function bar(_, a) {
371
359
  return a + 1;
372
360
  }
373
- function baz(a) {
361
+ function baz(_, a) {
374
362
  return a + 10;
375
363
  }
376
364
  async function foo(app, a) {
@@ -390,11 +378,7 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
390
378
  return response;
391
379
  };
392
380
  }
393
- const app = new MyAppWorker(codec, server, {
394
- foo,
395
- bar: taskFn(bar),
396
- baz: taskFn(baz),
397
- });
381
+ const app = new MyAppWorker(codec, server, { foo, bar, baz });
398
382
  await app.schedule(foo, topic)(4);
399
383
  await server.loop(topic, app.myHandle, flusher);
400
384
  strictEqual(await app.read(foo)(4), 14);
@@ -420,7 +404,7 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
420
404
  strictEqual(n, server.spawnLimit);
421
405
  });
422
406
  await test("spawn limit recoverable", async () => {
423
- function one(_) {
407
+ function one(_ctx, _a) {
424
408
  return 1;
425
409
  }
426
410
  async function foo(app, a) {
@@ -434,7 +418,7 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
434
418
  });
435
419
  const n = server.spawnLimit + 1;
436
420
  let spawnLimitEncountered = false;
437
- const app = new AppWorker(codec, server, { one: taskFn(one), foo });
421
+ const app = new AppWorker(codec, server, { one, foo });
438
422
  while (true) {
439
423
  // reset cache
440
424
  Object.defineProperty(cache, "cache", {
@@ -458,7 +442,7 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
458
442
  });
459
443
  await test("spawn limit breadth mapped", async () => {
460
444
  const calls = new Map();
461
- function one(_) {
445
+ function one(_ctx, _a) {
462
446
  calls.set("one", (calls.get("one") || 0) + 1);
463
447
  return 1;
464
448
  }
@@ -467,14 +451,14 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
467
451
  const results = await app.gather(...new Array(a).keys().map((i) => app.call(one)(i)));
468
452
  return results.reduce((sum, val) => sum + val);
469
453
  }
470
- const app = new AppWorker(codec, server, { one: taskFn(one), foo });
454
+ const app = new AppWorker(codec, server, { one, foo });
471
455
  await app.schedule(foo, topic)(server.spawnLimit + 4);
472
456
  await rejects(server.loop(topic, app.handle, flusher), SpawnLimitError);
473
457
  strictEqual(calls.get(foo.name), 1);
474
458
  });
475
459
  await test("spawn limit breadth manual", async () => {
476
460
  const calls = new Map();
477
- function one(_) {
461
+ function one(_ctx, _a) {
478
462
  calls.set("one", (calls.get("one") || 0) + 1);
479
463
  return 1;
480
464
  }
@@ -491,7 +475,7 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
491
475
  Object.defineProperty(server, "spawnLimit", {
492
476
  value: 100,
493
477
  });
494
- const app = new AppWorker(codec, server, { foo, one: taskFn(one) });
478
+ const app = new AppWorker(codec, server, { foo, one });
495
479
  await app.schedule(foo, topic)(server.spawnLimit + 3);
496
480
  await rejects(server.loop(topic, app.handle, flusher));
497
481
  deepStrictEqual(Object.fromEntries(calls), {
@@ -502,7 +486,7 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
502
486
  await test("spawn limit cached", async () => {
503
487
  let n = 0;
504
488
  let final = undefined;
505
- function same(a) {
489
+ function same(_, a) {
506
490
  n++;
507
491
  return a;
508
492
  }
@@ -516,13 +500,43 @@ await matrixSuite(import.meta.filename, async (_, matrix) => {
516
500
  Object.defineProperty(server, "spawnLimit", {
517
501
  value: 100,
518
502
  });
519
- const app = new AppWorker(codec, server, { foo, same: taskFn(same) });
503
+ const app = new AppWorker(codec, server, { foo, same });
520
504
  await app.schedule(foo, topic)(server.spawnLimit + 5);
521
505
  await server.loop(topic, app.handle, flusher);
522
506
  strictEqual(n, 1);
523
507
  strictEqual(final, server.spawnLimit + 5);
524
508
  });
525
509
  });
510
+ await test("custom context", async () => {
511
+ // Inject task name as a custom context.
512
+ class MyCodec {
513
+ async decodeReturn(_, payload) {
514
+ return decoder.decode(payload);
515
+ }
516
+ async encodeCall(taskName, _args) {
517
+ return { taskName, payload: new Uint8Array(), callHash: taskName };
518
+ }
519
+ async invokeTask(call, handler, _activeWorker) {
520
+ // @ts-expect-error type cheat for test.
521
+ const result = await handler(call.taskName);
522
+ return encoder.encode(result);
523
+ }
524
+ }
525
+ function foo(ctx) {
526
+ return ctx;
527
+ }
528
+ function bar(ctx) {
529
+ return ctx;
530
+ }
531
+ const codec = new MyCodec();
532
+ const server = new Server(store, cache, publisher);
533
+ const app = new AppWorker(codec, server, { foo, bar });
534
+ await app.schedule(foo, topic)();
535
+ await app.schedule(bar, topic)();
536
+ await server.loop(topic, app.handle, flusher);
537
+ strictEqual(await app.read(foo)(), "foo");
538
+ strictEqual(await app.read(bar)(), "bar");
539
+ });
526
540
  });
527
541
  });
528
542
  //# sourceMappingURL=app.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.test.js","sourceRoot":"","sources":["../src/app.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.test.js","sourceRoot":"","sources":["../src/app.test.ts"],"names":[],"mappings":"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"}
package/dist/codec.d.ts CHANGED
@@ -1,7 +1,8 @@
1
+ import type { ActiveWorker, Task } from "./app.ts";
1
2
  import type { Call } from "./call.ts";
2
- export interface Codec {
3
+ export interface Codec<C> {
3
4
  encodeCall<A extends unknown[]>(taskName: string, args: A): Promise<Call>;
4
- invokeTask<A extends unknown[], R>(call: Call, task: (...args: A) => Promise<R>): Promise<Uint8Array>;
5
+ invokeTask<A extends unknown[], R>(call: Call, task: Task<C, A, R>, activeWorker: ActiveWorker<C>): Promise<Uint8Array>;
5
6
  decodeReturn(taskName: string, payload: Uint8Array): unknown;
6
7
  }
7
8
  //# sourceMappingURL=codec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,WAAW,KAAK;IACpB,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1E,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAC/B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC;CAC9D"}
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,WAAW,KAAK,CAAC,CAAC;IACtB,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1E,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAC/B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACnB,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC;CAC9D"}
@@ -1,3 +1,3 @@
1
1
  import type { Codec } from "./codec.ts";
2
- export declare function codecContractTest(codec: Codec): Promise<void>;
2
+ export declare function codecContractTest<C>(codec: Codec<C>, contextFactory: () => C): Promise<void>;
3
3
  //# sourceMappingURL=codec.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codec.test.d.ts","sourceRoot":"","sources":["../src/codec.test.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,KAAK,iBAkFnD"}
1
+ {"version":3,"file":"codec.test.d.ts","sourceRoot":"","sources":["../src/codec.test.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGxC,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,cAAc,EAAE,MAAM,CAAC,iBAyFxB"}
@@ -1,6 +1,7 @@
1
1
  import { suite, test } from "node:test";
2
2
  import { deepStrictEqual, notDeepStrictEqual } from "node:assert/strict";
3
- export async function codecContractTest(codec) {
3
+ import { ActiveWorker } from "./app.js";
4
+ export async function codecContractTest(codec, contextFactory) {
4
5
  await suite("store-contract", async () => {
5
6
  const cases = {
6
7
  simple: [
@@ -50,15 +51,18 @@ export async function codecContractTest(codec) {
50
51
  }
51
52
  });
52
53
  await suite("round trip: encodeCall -> invokeTask -> decodeReturn", async () => {
53
- async function identify(a) {
54
+ async function identify(_, a) {
54
55
  return a;
55
56
  }
56
57
  for (const [name, args] of Object.entries(cases)) {
57
58
  await test(name, async () => {
58
59
  const call = await codec.encodeCall(identify.name, [args[0]]);
59
- const result = await codec.invokeTask(call, identify);
60
+ const context = contextFactory();
61
+ const result = await codec.invokeTask(call, identify,
62
+ // @ts-expect-error type cheat for test
63
+ () => null);
60
64
  const decoded = await codec.decodeReturn(identify.name, result);
61
- deepStrictEqual(decoded, await identify(args[1]));
65
+ deepStrictEqual(decoded, await identify(context, args[1]));
62
66
  });
63
67
  }
64
68
  });
@@ -1 +1 @@
1
- {"version":3,"file":"codec.test.js","sourceRoot":"","sources":["../src/codec.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codec.test.js","sourceRoot":"","sources":["../src/codec.test.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,33 @@
1
1
  import type { Call } from "./call.ts";
2
2
  import type { Codec } from "./codec.ts";
3
+ import { ActiveWorker, type Task } from "./app.ts";
3
4
  type Json = {
4
5
  parse: <T = unknown>(text: string) => T;
5
6
  stringify: (value: unknown) => string;
6
7
  };
8
+ export type DemoJsonCodecContext = ActiveWorker<DemoJsonCodecContext>;
7
9
  /**
8
- * Naive JSON codec that uses built-in `JSON` for serialization and deserialization.
10
+ * An opinionated codec for demo/testing purposes.
9
11
  *
10
- * You can provide a custom JSON implementation if you want to support more datatypes.
12
+ * Uses built-in `JSON` for serialization and deserialization, and expects
13
+ * `ActiveWorker` as a context. Can take custom JSON implementation to
14
+ * customize its behavior.
11
15
  *
12
16
  * It tries its best to ensure that the serialized data is deterministic by
13
17
  * sorting object keys recursively before serialization, but it's not
14
18
  * reccommended for production use; the primary purpose of this codec is
15
19
  * executable documentation.
16
20
  */
17
- export declare class NaiveJsonCodec implements Codec {
21
+ export declare class DemoJsonCodec implements Codec<DemoJsonCodecContext> {
18
22
  static readonly algorithm = "sha256";
19
23
  static readonly binaryToTextEncoding = "hex";
20
24
  private readonly json;
21
25
  constructor(json?: Json);
22
26
  decodeReturn(_: string, payload: Uint8Array): Promise<unknown>;
23
27
  encodeCall<A extends unknown[]>(taskName: string, args: A): Promise<Call>;
24
- invokeTask<A extends unknown[], R>(call: Call, task: (...args: A) => Promise<R>): Promise<Uint8Array>;
28
+ invokeTask<A extends unknown[], R>(call: Call, handler: Task<DemoJsonCodecContext, A, R>, activeWorker: DemoJsonCodecContext): Promise<Uint8Array>;
25
29
  protected hashCall<A extends unknown>(taskName: string, args: A): Promise<string>;
26
30
  protected static sortObjectKeys<T>(unordered: T): T;
27
31
  }
28
32
  export {};
29
- //# sourceMappingURL=naive-json-codec.d.ts.map
33
+ //# sourceMappingURL=demo-json-codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo-json-codec.d.ts","sourceRoot":"","sources":["../src/demo-json-codec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,KAAK,IAAI,EAAE,MAAM,UAAU,CAAC;AAEnD,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC,CAAC;IACxC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC,oBAAoB,CAAC,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,YAAW,KAAK,CAAC,oBAAoB,CAAC;IAC/D,gBAAuB,SAAS,YAAY;IAC5C,gBAAuB,oBAAoB,SACJ;IAEvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAO;gBAET,IAAI,GAAE,IAAW;IAIvB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9D,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,EACzC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,CAAC,GACN,OAAO,CAAC,IAAI,CAAC;IAQH,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAC5C,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAE,CAAC,CAAC,EACzC,YAAY,EAAE,oBAAoB,GACjC,OAAO,CAAC,UAAU,CAAC;cAQN,QAAQ,CAAC,CAAC,SAAS,OAAO,EACxC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,CAAC,GACN,OAAO,CAAC,MAAM,CAAC;IAOlB,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC;CAepD"}
@@ -1,16 +1,19 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { decoder, encoder } from "./internal-codecs.js";
3
+ import { ActiveWorker } from "./app.js";
3
4
  /**
4
- * Naive JSON codec that uses built-in `JSON` for serialization and deserialization.
5
+ * An opinionated codec for demo/testing purposes.
5
6
  *
6
- * You can provide a custom JSON implementation if you want to support more datatypes.
7
+ * Uses built-in `JSON` for serialization and deserialization, and expects
8
+ * `ActiveWorker` as a context. Can take custom JSON implementation to
9
+ * customize its behavior.
7
10
  *
8
11
  * It tries its best to ensure that the serialized data is deterministic by
9
12
  * sorting object keys recursively before serialization, but it's not
10
13
  * reccommended for production use; the primary purpose of this codec is
11
14
  * executable documentation.
12
15
  */
13
- export class NaiveJsonCodec {
16
+ export class DemoJsonCodec {
14
17
  static algorithm = "sha256";
15
18
  static binaryToTextEncoding = "hex";
16
19
  json;
@@ -22,39 +25,39 @@ export class NaiveJsonCodec {
22
25
  return this.json.parse(decoded);
23
26
  }
24
27
  async encodeCall(taskName, args) {
25
- const sortedArgs = args.map(NaiveJsonCodec.sortObjectKeys);
28
+ const sortedArgs = args.map(DemoJsonCodec.sortObjectKeys);
26
29
  const data = this.json.stringify(sortedArgs);
27
30
  const payload = encoder.encode(data);
28
31
  const callHash = await this.hashCall(taskName, sortedArgs);
29
32
  return { taskName, payload, callHash };
30
33
  }
31
- async invokeTask(call, task) {
34
+ async invokeTask(call, handler, activeWorker) {
32
35
  const decoded = decoder.decode(call.payload);
33
36
  const args = this.json.parse(decoded);
34
- const result = await task(...args);
37
+ const result = await handler(activeWorker, ...args);
35
38
  const resultJson = this.json.stringify(result);
36
39
  return encoder.encode(resultJson);
37
40
  }
38
41
  async hashCall(taskName, args) {
39
42
  const data = this.json.stringify([taskName, args]);
40
- return createHash(NaiveJsonCodec.algorithm)
43
+ return createHash(DemoJsonCodec.algorithm)
41
44
  .update(data)
42
- .digest(NaiveJsonCodec.binaryToTextEncoding);
45
+ .digest(DemoJsonCodec.binaryToTextEncoding);
43
46
  }
44
47
  static sortObjectKeys(unordered) {
45
48
  if (!unordered || typeof unordered !== "object") {
46
49
  return unordered;
47
50
  }
48
51
  if (Array.isArray(unordered)) {
49
- return unordered.map(NaiveJsonCodec.sortObjectKeys);
52
+ return unordered.map(DemoJsonCodec.sortObjectKeys);
50
53
  }
51
54
  const entries = Object.keys(unordered)
52
55
  .sort()
53
56
  .map((key) => [
54
57
  key,
55
- NaiveJsonCodec.sortObjectKeys(unordered[key]),
58
+ DemoJsonCodec.sortObjectKeys(unordered[key]),
56
59
  ]);
57
60
  return Object.fromEntries(entries);
58
61
  }
59
62
  }
60
- //# sourceMappingURL=naive-json-codec.js.map
63
+ //# sourceMappingURL=demo-json-codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo-json-codec.js","sourceRoot":"","sources":["../src/demo-json-codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,UAAU,EAAE,MAAM,aAAa,CAAC;AAGpE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAa,MAAM,UAAU,CAAC;AASnD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,aAAa;IACjB,MAAM,CAAU,SAAS,GAAG,QAAQ,CAAC;IACrC,MAAM,CAAU,oBAAoB,GACzC,KAAoC,CAAC;IAEtB,IAAI,CAAO;IAE5B,YAAmB,OAAa,IAAI;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,CAAS,EAAE,OAAmB;QACtD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,UAAU,CACrB,QAAgB,EAChB,IAAO;QAEP,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC3D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,UAAU,CACrB,IAAU,EACV,OAAyC,EACzC,YAAkC;QAElC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAES,KAAK,CAAC,QAAQ,CACtB,QAAgB,EAChB,IAAO;QAEP,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QACnD,OAAO,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC;aACvC,MAAM,CAAC,IAAI,CAAC;aACZ,MAAM,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAChD,CAAC;IAES,MAAM,CAAC,cAAc,CAAI,SAAY;QAC7C,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAChD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,cAAc,CAAM,CAAC;QAC1D,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;aACnC,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;YACZ,GAAG;YACH,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC,GAA6B,CAAC,CAAC;SACvE,CAAC,CAAC;QACL,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=demo-json-codec.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo-json-codec.test.d.ts","sourceRoot":"","sources":["../src/demo-json-codec.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { suite, test } from "node:test";
2
+ import { DemoJsonCodec } from "./demo-json-codec.js";
3
+ import { codecContractTest } from "./codec.test.js";
4
+ await suite(import.meta.filename, async () => {
5
+ await test(DemoJsonCodec.name, async () => {
6
+ await codecContractTest(new DemoJsonCodec(),
7
+ // @ts-expect-error type cheat for test
8
+ () => null);
9
+ });
10
+ });
11
+ //# sourceMappingURL=demo-json-codec.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo-json-codec.test.js","sourceRoot":"","sources":["../src/demo-json-codec.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAA6B,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IAC3C,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,iBAAiB,CACrB,IAAI,aAAa,EAAE;QACnB,uCAAuC;QACvC,GAAG,EAAE,CAAC,IAA4B,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- export { type Task, type Handlers, taskFn, AppConsumer, AppWorker, ActiveWorker, } from "./app.ts";
1
+ export { type Task, type Handlers, type Registry, AppConsumer, AppWorker, ActiveWorker, } from "./app.ts";
2
2
  export type { Call } from "./call.ts";
3
3
  export type { Codec } from "./codec.ts";
4
4
  export { Server, SubscriberServer, Connection, Defer, type DeferredCall, type Response, type Request, type RequestHandler, } from "./connection.ts";
5
5
  export type { Publisher, Subscriber } from "./emitter.ts";
6
6
  export { LocalApp, LocalBrrr } from "./local-app.ts";
7
- export { NaiveJsonCodec } from "./naive-json-codec.ts";
7
+ export { DemoJsonCodec, type DemoJsonCodecContext } from "./demo-json-codec.ts";
8
8
  export type { Store, Cache } from "./store.ts";
9
9
  export { BrrrShutdownSymbol, BrrrTaskDoneEventSymbol } from "./symbol.ts";
10
10
  export { NotFoundError, CasRetryLimitReachedError, SpawnLimitError, TaskNotFoundError, TagMismatchError, MalformedTaggedTupleError, } from "./errors.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,EACT,KAAK,QAAQ,EACb,MAAM,EACN,WAAW,EACX,SAAS,EACT,YAAY,GACb,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,UAAU,EACV,KAAK,EACL,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,EACT,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,WAAW,EACX,SAAS,EACT,YAAY,GACb,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,UAAU,EACV,KAAK,EACL,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAChF,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- export { taskFn, AppConsumer, AppWorker, ActiveWorker, } from "./app.js";
1
+ export { AppConsumer, AppWorker, ActiveWorker, } from "./app.js";
2
2
  export { Server, SubscriberServer, Connection, Defer, } from "./connection.js";
3
3
  export { LocalApp, LocalBrrr } from "./local-app.js";
4
- export { NaiveJsonCodec } from "./naive-json-codec.js";
4
+ export { DemoJsonCodec } from "./demo-json-codec.js";
5
5
  export { BrrrShutdownSymbol, BrrrTaskDoneEventSymbol } from "./symbol.js";
6
6
  export { NotFoundError, CasRetryLimitReachedError, SpawnLimitError, TaskNotFoundError, TagMismatchError, MalformedTaggedTupleError, } from "./errors.js";
7
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EACN,WAAW,EACX,SAAS,EACT,YAAY,GACb,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,UAAU,EACV,KAAK,GAKN,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,WAAW,EACX,SAAS,EACT,YAAY,GACb,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,UAAU,EACV,KAAK,GAKN,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,aAAa,EAA6B,MAAM,sBAAsB,CAAC;AAEhF,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,aAAa,CAAC"}
@@ -1,21 +1,19 @@
1
1
  import { SubscriberServer } from "./connection.ts";
2
- import { AppWorker, type Handlers, type NoAppTask, type StripLeadingActiveWorker, type TaskIdentifier } from "./app.ts";
3
- import type { Codec } from "./codec.ts";
4
- export declare class LocalApp {
2
+ import { AppWorker, type NoContextTask, type TaskIdentifier, type Registry } from "./app.ts";
3
+ export declare class LocalApp<C> {
5
4
  readonly topic: string;
6
5
  readonly server: SubscriberServer;
7
- readonly app: AppWorker;
6
+ readonly app: AppWorker<C>;
8
7
  private hasRun;
9
- constructor(topic: string, server: SubscriberServer, app: AppWorker);
10
- schedule<A extends unknown[], R>(handler: Parameters<typeof this.app.schedule<A, R>>[0]): NoAppTask<A, void>;
11
- read<A extends unknown[], R>(...args: Parameters<typeof this.app.read<A, R>>): NoAppTask<A, R>;
8
+ constructor(topic: string, server: SubscriberServer, app: AppWorker<C>);
9
+ schedule<A extends unknown[], R>(handler: Parameters<typeof this.app.schedule<A, R>>[0]): NoContextTask<A, void>;
10
+ read<A extends unknown[], R>(...args: Parameters<typeof this.app.read<A, R>>): NoContextTask<A, R>;
12
11
  run(): void;
13
12
  }
14
- export declare class LocalBrrr {
13
+ export declare class LocalBrrr<C> {
15
14
  private readonly topic;
16
- private readonly handlers;
17
- private readonly codec;
18
- constructor(topic: string, handlers: Handlers, codec: Codec);
19
- run<A extends unknown[], R>(taskIdentifier: TaskIdentifier<A, R>): (...args: StripLeadingActiveWorker<A>) => Promise<R>;
15
+ private readonly registry;
16
+ constructor(topic: string, registry: Registry<C>);
17
+ run<A extends unknown[], R>(taskIdentifier: TaskIdentifier<C, A, R>): (...args: A) => Promise<R>;
20
18
  }
21
19
  //# sourceMappingURL=local-app.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-app.d.ts","sourceRoot":"","sources":["../src/local-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,SAAS,EACT,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EAEpB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AASxC,qBAAa,QAAQ;IACnB,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,MAAM,EAAE,gBAAgB,CAAC;IACzC,SAAgB,GAAG,EAAE,SAAS,CAAC;IAE/B,OAAO,CAAC,MAAM,CAAS;gBAEJ,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,SAAS;IAMnE,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EACpC,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACrD,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC;IAId,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAChC,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAC9C,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAIX,GAAG,IAAI,IAAI;CAOnB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAEX,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK;IAM3D,GAAG,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,IAQvD,GAAG,MAAM,wBAAwB,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAAC;CAqBlE"}
1
+ {"version":3,"file":"local-app.d.ts","sourceRoot":"","sources":["../src/local-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,SAAS,EACT,KAAK,aAAa,EAElB,KAAK,cAAc,EAEnB,KAAK,QAAQ,EACd,MAAM,UAAU,CAAC;AAUlB,qBAAa,QAAQ,CAAC,CAAC;IACrB,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,MAAM,EAAE,gBAAgB,CAAC;IACzC,SAAgB,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAElC,OAAO,CAAC,MAAM,CAAS;gBAGrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;IAOZ,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EACpC,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACrD,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC;IAIlB,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAChC,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAC9C,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAIf,GAAG,IAAI,IAAI;CAOnB;AAED,qBAAa,SAAS,CAAC,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;gBAEpB,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAKhD,GAAG,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAe1D,GAAG,MAAM,CAAC,KAAG,OAAO,CAAC,CAAC,CAAC;CAwBxC"}
package/dist/local-app.js CHANGED
@@ -29,25 +29,23 @@ export class LocalApp {
29
29
  }
30
30
  export class LocalBrrr {
31
31
  topic;
32
- handlers;
33
- codec;
34
- constructor(topic, handlers, codec) {
32
+ registry;
33
+ constructor(topic, registry) {
35
34
  this.topic = topic;
36
- this.handlers = handlers;
37
- this.codec = codec;
35
+ this.registry = registry;
38
36
  }
39
37
  run(taskIdentifier) {
40
38
  const store = new InMemoryStore();
41
39
  const cache = new InMemoryCache();
42
40
  const emitter = new InMemoryEmitter();
43
41
  const server = new SubscriberServer(store, cache, emitter);
44
- const worker = new AppWorker(this.codec, server, this.handlers);
42
+ const worker = new AppWorker(this.registry.codec, server, this.registry.handlers);
45
43
  const localApp = new LocalApp(this.topic, server, worker);
46
- const taskName = taskIdentifierToName(taskIdentifier, this.handlers);
44
+ const taskName = taskIdentifierToName(taskIdentifier, this.registry.handlers);
47
45
  return async (...args) => {
48
46
  localApp.run();
49
47
  await localApp.schedule(taskName)(...args);
50
- const call = await this.codec.encodeCall(taskName, args);
48
+ const call = await this.registry.codec.encodeCall(taskName, args);
51
49
  return new Promise((resolve) => {
52
50
  emitter.onEventSymbol(BrrrTaskDoneEventSymbol, async ({ callHash }) => {
53
51
  if (callHash === call.callHash) {
@@ -58,7 +56,7 @@ export class LocalBrrr {
58
56
  callHash,
59
57
  });
60
58
  }
61
- const result = this.codec.decodeReturn(taskName, payload);
59
+ const result = this.registry.codec.decodeReturn(taskName, payload);
62
60
  resolve(result);
63
61
  }
64
62
  });
@@ -1 +1 @@
1
- {"version":3,"file":"local-app.js","sourceRoot":"","sources":["../src/local-app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-app.js","sourceRoot":"","sources":["../src/local-app.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anterior/brrr",
3
- "version": "0.1.259",
3
+ "version": "0.1.261",
4
4
  "description": "Horizontally scalable workflow scheduling with pluggable backends",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"naive-json-codec.d.ts","sourceRoot":"","sources":["../src/naive-json-codec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGxC,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC,CAAC;IACxC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;CACvC,CAAC;AAEF;;;;;;;;;GASG;AACH,qBAAa,cAAe,YAAW,KAAK;IAC1C,gBAAuB,SAAS,YAAY;IAC5C,gBAAuB,oBAAoB,SACJ;IAEvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAO;gBAET,IAAI,GAAE,IAAW;IAIvB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9D,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,EACzC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,CAAC,GACN,OAAO,CAAC,IAAI,CAAC;IAQH,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAC5C,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,UAAU,CAAC;cAQN,QAAQ,CAAC,CAAC,SAAS,OAAO,EACxC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,CAAC,GACN,OAAO,CAAC,MAAM,CAAC;IAOlB,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC;CAepD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"naive-json-codec.js","sourceRoot":"","sources":["../src/naive-json-codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,UAAU,EAAE,MAAM,aAAa,CAAC;AAGpE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAOxD;;;;;;;;;GASG;AACH,MAAM,OAAO,cAAc;IAClB,MAAM,CAAU,SAAS,GAAG,QAAQ,CAAC;IACrC,MAAM,CAAU,oBAAoB,GACzC,KAAoC,CAAC;IAEtB,IAAI,CAAO;IAE5B,YAAmB,OAAa,IAAI;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,CAAS,EAAE,OAAmB;QACtD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,UAAU,CACrB,QAAgB,EAChB,IAAO;QAEP,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC3D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,UAAU,CACrB,IAAU,EACV,IAAgC;QAEhC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAES,KAAK,CAAC,QAAQ,CACtB,QAAgB,EAChB,IAAO;QAEP,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QACnD,OAAO,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC;aACxC,MAAM,CAAC,IAAI,CAAC;aACZ,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;IACjD,CAAC;IAES,MAAM,CAAC,cAAc,CAAI,SAAY;QAC7C,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAChD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,CAAM,CAAC;QAC3D,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;aACnC,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;YACZ,GAAG;YACH,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,GAA6B,CAAC,CAAC;SACxE,CAAC,CAAC;QACL,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=naive-json-codec.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"naive-json-codec.test.d.ts","sourceRoot":"","sources":["../src/naive-json-codec.test.ts"],"names":[],"mappings":""}
@@ -1,9 +0,0 @@
1
- import { suite, test } from "node:test";
2
- import { NaiveJsonCodec } from "./naive-json-codec.js";
3
- import { codecContractTest } from "./codec.test.js";
4
- await suite(import.meta.filename, async () => {
5
- await test(NaiveJsonCodec.name, async () => {
6
- await codecContractTest(new NaiveJsonCodec());
7
- });
8
- });
9
- //# sourceMappingURL=naive-json-codec.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"naive-json-codec.test.js","sourceRoot":"","sources":["../src/naive-json-codec.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IAC3C,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,iBAAiB,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}