@anterior/brrr 0.1.199 → 0.1.202

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.
Files changed (125) hide show
  1. package/dist/app.d.ts +40 -0
  2. package/dist/app.d.ts.map +1 -0
  3. package/dist/app.js +115 -0
  4. package/dist/app.js.map +1 -0
  5. package/dist/app.test.d.ts +2 -0
  6. package/dist/app.test.d.ts.map +1 -0
  7. package/dist/app.test.js +538 -0
  8. package/dist/app.test.js.map +1 -0
  9. package/dist/backends/dynamo.d.ts +18 -0
  10. package/dist/backends/dynamo.d.ts.map +1 -0
  11. package/dist/backends/dynamo.js +137 -0
  12. package/dist/backends/dynamo.js.map +1 -0
  13. package/dist/backends/dynamo.test-integration.d.ts +2 -0
  14. package/dist/backends/dynamo.test-integration.d.ts.map +1 -0
  15. package/dist/backends/dynamo.test-integration.js +19 -0
  16. package/dist/backends/dynamo.test-integration.js.map +1 -0
  17. package/dist/backends/in-memory.d.ts +29 -0
  18. package/dist/backends/in-memory.d.ts.map +1 -0
  19. package/dist/backends/in-memory.js +78 -0
  20. package/dist/backends/in-memory.js.map +1 -0
  21. package/dist/backends/in-memory.test.d.ts +2 -0
  22. package/dist/backends/in-memory.test.d.ts.map +1 -0
  23. package/dist/backends/in-memory.test.js +18 -0
  24. package/dist/backends/in-memory.test.js.map +1 -0
  25. package/dist/backends/index.d.ts +4 -0
  26. package/dist/backends/index.d.ts.map +1 -0
  27. package/dist/backends/index.js +4 -0
  28. package/dist/backends/index.js.map +1 -0
  29. package/dist/backends/redis.d.ts +13 -0
  30. package/dist/backends/redis.d.ts.map +1 -0
  31. package/dist/backends/redis.js +27 -0
  32. package/dist/backends/redis.js.map +1 -0
  33. package/dist/backends/redis.test-integration.d.ts +2 -0
  34. package/dist/backends/redis.test-integration.d.ts.map +1 -0
  35. package/dist/backends/redis.test-integration.js +53 -0
  36. package/dist/backends/redis.test-integration.js.map +1 -0
  37. package/{src/call.ts → dist/call.d.ts} +4 -3
  38. package/dist/call.d.ts.map +1 -0
  39. package/dist/call.js +2 -0
  40. package/dist/call.js.map +1 -0
  41. package/dist/codec.d.ts +7 -0
  42. package/dist/codec.d.ts.map +1 -0
  43. package/dist/codec.js +2 -0
  44. package/dist/codec.js.map +1 -0
  45. package/dist/codec.test.d.ts +3 -0
  46. package/dist/codec.test.d.ts.map +1 -0
  47. package/dist/codec.test.js +79 -0
  48. package/dist/codec.test.js.map +1 -0
  49. package/dist/connection.d.ts +43 -0
  50. package/dist/connection.d.ts.map +1 -0
  51. package/dist/connection.js +120 -0
  52. package/dist/connection.js.map +1 -0
  53. package/dist/emitter.d.ts +11 -0
  54. package/dist/emitter.d.ts.map +1 -0
  55. package/dist/emitter.js +2 -0
  56. package/dist/emitter.js.map +1 -0
  57. package/dist/errors.d.ts +25 -0
  58. package/dist/errors.d.ts.map +1 -0
  59. package/dist/errors.js +38 -0
  60. package/dist/errors.js.map +1 -0
  61. package/dist/index.d.ts +11 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +7 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/internal-codecs.d.ts +18 -0
  66. package/dist/internal-codecs.d.ts.map +1 -0
  67. package/{src/internal-codecs.ts → dist/internal-codecs.js} +10 -13
  68. package/dist/internal-codecs.js.map +1 -0
  69. package/dist/local-app.d.ts +21 -0
  70. package/dist/local-app.d.ts.map +1 -0
  71. package/dist/local-app.js +69 -0
  72. package/dist/local-app.js.map +1 -0
  73. package/dist/naive-json-codec.d.ts +20 -0
  74. package/dist/naive-json-codec.d.ts.map +1 -0
  75. package/dist/naive-json-codec.js +55 -0
  76. package/dist/naive-json-codec.js.map +1 -0
  77. package/dist/naive-json-codec.test.d.ts +2 -0
  78. package/dist/naive-json-codec.test.d.ts.map +1 -0
  79. package/dist/naive-json-codec.test.js +9 -0
  80. package/dist/naive-json-codec.test.js.map +1 -0
  81. package/dist/store.d.ts +70 -0
  82. package/dist/store.d.ts.map +1 -0
  83. package/dist/store.js +133 -0
  84. package/dist/store.js.map +1 -0
  85. package/dist/store.test.d.ts +8 -0
  86. package/dist/store.test.d.ts.map +1 -0
  87. package/dist/store.test.js +274 -0
  88. package/dist/store.test.js.map +1 -0
  89. package/dist/symbol.d.ts +4 -0
  90. package/dist/symbol.d.ts.map +1 -0
  91. package/{src/symbol.ts → dist/symbol.js} +1 -2
  92. package/dist/symbol.js.map +1 -0
  93. package/dist/tagged-tuple.d.ts +34 -0
  94. package/dist/tagged-tuple.d.ts.map +1 -0
  95. package/dist/tagged-tuple.js +61 -0
  96. package/dist/tagged-tuple.js.map +1 -0
  97. package/dist/tagged-tuple.test.d.ts +2 -0
  98. package/dist/tagged-tuple.test.d.ts.map +1 -0
  99. package/dist/tagged-tuple.test.js +56 -0
  100. package/dist/tagged-tuple.test.js.map +1 -0
  101. package/package.json +23 -6
  102. package/npm-version-to-git.sh +0 -10
  103. package/package.nix +0 -6
  104. package/src/app.test.ts +0 -705
  105. package/src/app.ts +0 -201
  106. package/src/backends/dynamo.test-integration.ts +0 -20
  107. package/src/backends/dynamo.ts +0 -184
  108. package/src/backends/in-memory.test.ts +0 -19
  109. package/src/backends/in-memory.ts +0 -110
  110. package/src/backends/redis.test-integration.ts +0 -61
  111. package/src/backends/redis.ts +0 -48
  112. package/src/codec.test.ts +0 -91
  113. package/src/codec.ts +0 -12
  114. package/src/connection.ts +0 -186
  115. package/src/emitter.ts +0 -20
  116. package/src/errors.ts +0 -50
  117. package/src/local-app.ts +0 -93
  118. package/src/naive-json-codec.test.ts +0 -9
  119. package/src/naive-json-codec.ts +0 -72
  120. package/src/store.test.ts +0 -398
  121. package/src/store.ts +0 -251
  122. package/src/tagged-tuple.test.ts +0 -69
  123. package/src/tagged-tuple.ts +0 -96
  124. package/tsconfig.json +0 -37
  125. /package/{brrr-test-integration → scripts/brrr-test-integration.sh} +0 -0
package/dist/app.d.ts ADDED
@@ -0,0 +1,40 @@
1
+ import { type Connection, Defer, type Request, type Response } from "./connection.ts";
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;
6
+ };
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;
18
+ 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>;
23
+ }
24
+ export declare class AppWorker extends AppConsumer {
25
+ readonly handle: (request: Request, connection: Connection) => Promise<Response | Defer>;
26
+ }
27
+ export declare class ActiveWorker {
28
+ 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>;
33
+ gather<T1>(t1: T1): Promise<[Awaited<T1>]>;
34
+ gather<T1, T2>(t1: T1, t2: T2): Promise<[Awaited<T1>, Awaited<T2>]>;
35
+ gather<T1, T2, T3>(t1: T1, t2: T2, t3: T3): Promise<[Awaited<T1>, Awaited<T2>, Awaited<T3>]>;
36
+ gather<T1, T2, T3, T4>(t1: T1, t2: T2, t3: T3, t4: T4): Promise<[Awaited<T1>, Awaited<T2>, Awaited<T3>, Awaited<T4>]>;
37
+ gather<T1, T2, T3, T4, T5>(t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): Promise<[Awaited<T1>, Awaited<T2>, Awaited<T3>, Awaited<T4>, Awaited<T5>]>;
38
+ gather<T>(...promises: Promise<T>[]): Promise<Awaited<T>[]>;
39
+ }
40
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
package/dist/app.js ADDED
@@ -0,0 +1,115 @@
1
+ import { Defer, } from "./connection.js";
2
+ import { NotFoundError, TaskNotFoundError } from "./errors.js";
3
+ import { BrrrTaskSymbol } from "./symbol.js";
4
+ export function taskIdentifierToName(identifier, handlers) {
5
+ if (typeof identifier === "string") {
6
+ return identifier;
7
+ }
8
+ for (const [name, handler] of Object.entries(handlers)) {
9
+ if (handler[BrrrTaskSymbol] === identifier || handler === identifier) {
10
+ return name;
11
+ }
12
+ }
13
+ throw new TaskNotFoundError(identifier.name);
14
+ }
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
+ export class AppConsumer {
24
+ codec;
25
+ connection;
26
+ handlers;
27
+ constructor(codec, connection, handlers = {}) {
28
+ this.codec = codec;
29
+ this.connection = connection;
30
+ this.handlers = handlers;
31
+ }
32
+ schedule(taskIdentifier, topic) {
33
+ const taskName = taskIdentifierToName(taskIdentifier, this.handlers);
34
+ return async (...args) => {
35
+ const call = await this.codec.encodeCall(taskName, args);
36
+ await this.connection.scheduleRaw(topic, call);
37
+ };
38
+ }
39
+ read(taskIdentifier) {
40
+ return async (...args) => {
41
+ const taskName = taskIdentifierToName(taskIdentifier, this.handlers);
42
+ const call = await this.codec.encodeCall(taskName, args);
43
+ const payload = await this.connection.memory.getValue(call.callHash);
44
+ if (!payload) {
45
+ throw new NotFoundError({
46
+ type: "value",
47
+ callHash: call.callHash,
48
+ });
49
+ }
50
+ return this.codec.decodeReturn(taskName, payload);
51
+ };
52
+ }
53
+ }
54
+ export class AppWorker extends AppConsumer {
55
+ handle = async (request, connection) => {
56
+ const handler = this.handlers[request.call.taskName];
57
+ if (!handler) {
58
+ throw new TaskNotFoundError(request.call.taskName);
59
+ }
60
+ 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
+ });
65
+ return { payload };
66
+ }
67
+ catch (err) {
68
+ if (err instanceof Defer) {
69
+ return err;
70
+ }
71
+ throw err;
72
+ }
73
+ };
74
+ }
75
+ export class ActiveWorker {
76
+ connection;
77
+ codec;
78
+ handlers;
79
+ constructor(connection, codec, handlers) {
80
+ this.connection = connection;
81
+ this.codec = codec;
82
+ this.handlers = handlers;
83
+ }
84
+ call(taskIdentifier, topic) {
85
+ const taskName = taskIdentifierToName(taskIdentifier, this.handlers);
86
+ return async (...args) => {
87
+ const call = await this.codec.encodeCall(taskName, args);
88
+ const payload = await this.connection.memory.getValue(call.callHash);
89
+ if (!payload) {
90
+ throw new Defer({ topic, call });
91
+ }
92
+ return this.codec.decodeReturn(taskName, payload);
93
+ };
94
+ }
95
+ async gather(...promises) {
96
+ const deferredCalls = [];
97
+ const values = [];
98
+ for (const promise of promises) {
99
+ try {
100
+ values.push(await promise);
101
+ }
102
+ catch (err) {
103
+ if (!(err instanceof Defer)) {
104
+ throw err;
105
+ }
106
+ deferredCalls.push(...err.calls);
107
+ }
108
+ }
109
+ if (deferredCalls.length) {
110
+ throw new Defer(...deferredCalls);
111
+ }
112
+ return values;
113
+ }
114
+ }
115
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=app.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.test.d.ts","sourceRoot":"","sources":["../src/app.test.ts"],"names":[],"mappings":""}