@resonatehq/supabase 0.1.7 → 0.1.9
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/dist/index.d.ts +2 -14
- package/dist/index.js +15 -32
- package/package.json +1 -1
- package/src/index.ts +27 -61
package/dist/index.d.ts
CHANGED
|
@@ -1,23 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type OnTerminateCallback = (result: {
|
|
3
|
-
status: "completed";
|
|
4
|
-
data?: any;
|
|
5
|
-
} | {
|
|
6
|
-
status: "suspended";
|
|
7
|
-
result: string[];
|
|
8
|
-
}) => Promise<void>;
|
|
9
|
-
export { Context };
|
|
1
|
+
import { type Encryptor, type Func } from "@resonatehq/sdk";
|
|
10
2
|
export declare class Resonate {
|
|
11
3
|
private registry;
|
|
12
4
|
private dependencies;
|
|
13
5
|
private verbose;
|
|
14
6
|
private encryptor;
|
|
15
|
-
|
|
16
|
-
private onTerminateFn?;
|
|
17
|
-
constructor({ verbose, encryptor, prefix, }?: {
|
|
7
|
+
constructor({ verbose, encryptor, }?: {
|
|
18
8
|
verbose?: boolean;
|
|
19
9
|
encryptor?: Encryptor;
|
|
20
|
-
prefix?: string;
|
|
21
10
|
});
|
|
22
11
|
register<F extends Func>(name: string, func: F, options?: {
|
|
23
12
|
version?: number;
|
|
@@ -26,7 +15,6 @@ export declare class Resonate {
|
|
|
26
15
|
version?: number;
|
|
27
16
|
}): void;
|
|
28
17
|
setDependency(name: string, obj: any): void;
|
|
29
|
-
onTerminate(fn: OnTerminateCallback): void;
|
|
30
18
|
handler(req: Request): Promise<Response>;
|
|
31
19
|
httpHandler(): Deno.HttpServer;
|
|
32
20
|
}
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { Handler, HttpNetwork, JsonEncoder, NoopEncryptor, NoopHeartbeat, NoopTracer, OptionsBuilder, Registry, ResonateInner, WallClock, } from "@resonatehq/sdk";
|
|
2
2
|
export class Resonate {
|
|
3
|
-
constructor({ verbose = false, encryptor = undefined,
|
|
3
|
+
constructor({ verbose = false, encryptor = undefined, } = {}) {
|
|
4
4
|
this.registry = new Registry();
|
|
5
5
|
this.dependencies = new Map();
|
|
6
6
|
this.verbose = verbose;
|
|
7
7
|
this.encryptor = encryptor ?? new NoopEncryptor();
|
|
8
|
-
this.idPrefix = prefix ? `${prefix}:` : "";
|
|
9
8
|
}
|
|
10
9
|
register(nameOrFunc, funcOrOptions, maybeOptions = {}) {
|
|
11
10
|
const { version = 1 } = (typeof funcOrOptions === "object" ? funcOrOptions : maybeOptions) ?? {};
|
|
@@ -16,9 +15,6 @@ export class Resonate {
|
|
|
16
15
|
setDependency(name, obj) {
|
|
17
16
|
this.dependencies.set(name, obj);
|
|
18
17
|
}
|
|
19
|
-
onTerminate(fn) {
|
|
20
|
-
this.onTerminateFn = fn;
|
|
21
|
-
}
|
|
22
18
|
async handler(req) {
|
|
23
19
|
try {
|
|
24
20
|
if (req.method !== "POST") {
|
|
@@ -66,17 +62,13 @@ export class Resonate {
|
|
|
66
62
|
dependencies: this.dependencies,
|
|
67
63
|
optsBuilder: new OptionsBuilder({
|
|
68
64
|
match: (_) => url,
|
|
69
|
-
idPrefix:
|
|
65
|
+
idPrefix: "",
|
|
70
66
|
}),
|
|
71
67
|
verbose: this.verbose,
|
|
72
68
|
tracer,
|
|
73
69
|
});
|
|
74
70
|
const task = { kind: "unclaimed", task: body.task };
|
|
75
|
-
const
|
|
76
|
-
this.onTerminateFn?.(data);
|
|
77
|
-
return Promise.resolve();
|
|
78
|
-
};
|
|
79
|
-
return new Promise((resolve) => {
|
|
71
|
+
const completion = new Promise((resolve) => {
|
|
80
72
|
resonateInner.process(tracer.startSpan(task.task.rootPromiseId, clock.now()), task, (error, status) => {
|
|
81
73
|
if (error || !status) {
|
|
82
74
|
resolve(new Response(JSON.stringify({
|
|
@@ -88,36 +80,27 @@ export class Resonate {
|
|
|
88
80
|
return;
|
|
89
81
|
}
|
|
90
82
|
if (status.kind === "completed") {
|
|
91
|
-
|
|
83
|
+
resolve(new Response(JSON.stringify({
|
|
92
84
|
status: "completed",
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
requestUrl: url,
|
|
99
|
-
}), {
|
|
100
|
-
status: 200,
|
|
101
|
-
}));
|
|
102
|
-
});
|
|
85
|
+
result: status.promise.value,
|
|
86
|
+
requestUrl: url,
|
|
87
|
+
}), {
|
|
88
|
+
status: 200,
|
|
89
|
+
}));
|
|
103
90
|
return;
|
|
104
91
|
}
|
|
105
92
|
else if (status.kind === "suspended") {
|
|
106
|
-
|
|
93
|
+
resolve(new Response(JSON.stringify({
|
|
107
94
|
status: "suspended",
|
|
108
|
-
|
|
109
|
-
})
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
requestUrl: url,
|
|
113
|
-
}), {
|
|
114
|
-
status: 200,
|
|
115
|
-
}));
|
|
116
|
-
});
|
|
95
|
+
requestUrl: url,
|
|
96
|
+
}), {
|
|
97
|
+
status: 200,
|
|
98
|
+
}));
|
|
117
99
|
return;
|
|
118
100
|
}
|
|
119
101
|
});
|
|
120
102
|
});
|
|
103
|
+
return completion;
|
|
121
104
|
}
|
|
122
105
|
catch (error) {
|
|
123
106
|
return new Response(JSON.stringify({
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import {
|
|
2
|
-
Context,
|
|
3
2
|
type Encryptor,
|
|
4
3
|
type Func,
|
|
5
4
|
Handler,
|
|
@@ -15,29 +14,18 @@ import {
|
|
|
15
14
|
WallClock,
|
|
16
15
|
} from "@resonatehq/sdk";
|
|
17
16
|
|
|
18
|
-
type OnTerminateCallback = (
|
|
19
|
-
result:
|
|
20
|
-
| { status: "completed"; data?: any }
|
|
21
|
-
| { status: "suspended"; result: string[] },
|
|
22
|
-
) => Promise<void>;
|
|
23
|
-
|
|
24
|
-
export { Context };
|
|
25
17
|
export class Resonate {
|
|
26
18
|
private registry = new Registry();
|
|
27
19
|
private dependencies = new Map<string, any>();
|
|
28
20
|
private verbose: boolean;
|
|
29
21
|
private encryptor: Encryptor;
|
|
30
|
-
private idPrefix: string;
|
|
31
|
-
private onTerminateFn?: OnTerminateCallback;
|
|
32
22
|
|
|
33
23
|
constructor({
|
|
34
24
|
verbose = false,
|
|
35
25
|
encryptor = undefined,
|
|
36
|
-
|
|
37
|
-
}: { verbose?: boolean; encryptor?: Encryptor; prefix?: string } = {}) {
|
|
26
|
+
}: { verbose?: boolean; encryptor?: Encryptor } = {}) {
|
|
38
27
|
this.verbose = verbose;
|
|
39
28
|
this.encryptor = encryptor ?? new NoopEncryptor();
|
|
40
|
-
this.idPrefix = prefix ? `${prefix}:` : "";
|
|
41
29
|
}
|
|
42
30
|
|
|
43
31
|
public register<F extends Func>(
|
|
@@ -76,9 +64,6 @@ export class Resonate {
|
|
|
76
64
|
public setDependency(name: string, obj: any): void {
|
|
77
65
|
this.dependencies.set(name, obj);
|
|
78
66
|
}
|
|
79
|
-
public onTerminate(fn: OnTerminateCallback): void {
|
|
80
|
-
this.onTerminateFn = fn;
|
|
81
|
-
}
|
|
82
67
|
|
|
83
68
|
public async handler(req: Request): Promise<Response> {
|
|
84
69
|
try {
|
|
@@ -144,7 +129,7 @@ export class Resonate {
|
|
|
144
129
|
dependencies: this.dependencies,
|
|
145
130
|
optsBuilder: new OptionsBuilder({
|
|
146
131
|
match: (_: string): string => url,
|
|
147
|
-
idPrefix:
|
|
132
|
+
idPrefix: "",
|
|
148
133
|
}),
|
|
149
134
|
verbose: this.verbose,
|
|
150
135
|
tracer,
|
|
@@ -152,16 +137,7 @@ export class Resonate {
|
|
|
152
137
|
|
|
153
138
|
const task: Task = { kind: "unclaimed", task: body.task };
|
|
154
139
|
|
|
155
|
-
const
|
|
156
|
-
data:
|
|
157
|
-
| { status: "completed"; data?: any }
|
|
158
|
-
| { status: "suspended"; result: string[] },
|
|
159
|
-
): Promise<void> => {
|
|
160
|
-
this.onTerminateFn?.(data);
|
|
161
|
-
return Promise.resolve();
|
|
162
|
-
};
|
|
163
|
-
|
|
164
|
-
return new Promise((resolve) => {
|
|
140
|
+
const completion: Promise<Response> = new Promise((resolve) => {
|
|
165
141
|
resonateInner.process(
|
|
166
142
|
tracer.startSpan(task.task.rootPromiseId, clock.now()),
|
|
167
143
|
task,
|
|
@@ -180,49 +156,39 @@ export class Resonate {
|
|
|
180
156
|
);
|
|
181
157
|
return;
|
|
182
158
|
}
|
|
159
|
+
|
|
183
160
|
if (status.kind === "completed") {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
161
|
+
resolve(
|
|
162
|
+
new Response(
|
|
163
|
+
JSON.stringify({
|
|
164
|
+
status: "completed",
|
|
165
|
+
result: status.promise.value,
|
|
166
|
+
requestUrl: url,
|
|
167
|
+
}),
|
|
168
|
+
{
|
|
169
|
+
status: 200,
|
|
170
|
+
},
|
|
188
171
|
),
|
|
189
|
-
|
|
190
|
-
resolve(
|
|
191
|
-
new Response(
|
|
192
|
-
JSON.stringify({
|
|
193
|
-
status: "completed",
|
|
194
|
-
result: status.promise.value,
|
|
195
|
-
requestUrl: url,
|
|
196
|
-
}),
|
|
197
|
-
{
|
|
198
|
-
status: 200,
|
|
199
|
-
},
|
|
200
|
-
),
|
|
201
|
-
);
|
|
202
|
-
});
|
|
172
|
+
);
|
|
203
173
|
return;
|
|
204
174
|
} else if (status.kind === "suspended") {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
status: 200,
|
|
217
|
-
},
|
|
218
|
-
),
|
|
219
|
-
);
|
|
220
|
-
});
|
|
175
|
+
resolve(
|
|
176
|
+
new Response(
|
|
177
|
+
JSON.stringify({
|
|
178
|
+
status: "suspended",
|
|
179
|
+
requestUrl: url,
|
|
180
|
+
}),
|
|
181
|
+
{
|
|
182
|
+
status: 200,
|
|
183
|
+
},
|
|
184
|
+
),
|
|
185
|
+
);
|
|
221
186
|
return;
|
|
222
187
|
}
|
|
223
188
|
},
|
|
224
189
|
);
|
|
225
190
|
});
|
|
191
|
+
return completion;
|
|
226
192
|
} catch (error) {
|
|
227
193
|
return new Response(
|
|
228
194
|
JSON.stringify({
|