@resonatehq/supabase 0.1.8 → 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 CHANGED
@@ -1,23 +1,12 @@
1
- import { Context, type Encryptor, type Func } from "@resonatehq/sdk";
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
- private idPrefix;
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, prefix = 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,18 +62,13 @@ export class Resonate {
66
62
  dependencies: this.dependencies,
67
63
  optsBuilder: new OptionsBuilder({
68
64
  match: (_) => url,
69
- idPrefix: this.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 handleCallback = async (data) => {
76
- if (this.onTerminateFn) {
77
- await this.onTerminateFn(data);
78
- }
79
- };
80
- return new Promise((resolve) => {
71
+ const completion = new Promise((resolve) => {
81
72
  resonateInner.process(tracer.startSpan(task.task.rootPromiseId, clock.now()), task, (error, status) => {
82
73
  if (error || !status) {
83
74
  resolve(new Response(JSON.stringify({
@@ -89,34 +80,27 @@ export class Resonate {
89
80
  return;
90
81
  }
91
82
  if (status.kind === "completed") {
92
- handleCallback({
83
+ resolve(new Response(JSON.stringify({
93
84
  status: "completed",
94
- data: encoder.decode(this.encryptor.decrypt(status.promise.value)),
95
- }).finally(() => {
96
- resolve(new Response(JSON.stringify({
97
- status: "completed",
98
- result: status.promise.value,
99
- requestUrl: url,
100
- }), { status: 200 }));
101
- });
85
+ result: status.promise.value,
86
+ requestUrl: url,
87
+ }), {
88
+ status: 200,
89
+ }));
102
90
  return;
103
91
  }
104
92
  else if (status.kind === "suspended") {
105
- handleCallback({
93
+ resolve(new Response(JSON.stringify({
106
94
  status: "suspended",
107
- result: status.callbacks.map((callback) => callback.promiseId),
108
- }).finally(() => {
109
- resolve(new Response(JSON.stringify({
110
- status: "suspended",
111
- requestUrl: url,
112
- }), {
113
- status: 200,
114
- }));
115
- });
95
+ requestUrl: url,
96
+ }), {
97
+ status: 200,
98
+ }));
116
99
  return;
117
100
  }
118
101
  });
119
102
  });
103
+ return completion;
120
104
  }
121
105
  catch (error) {
122
106
  return new Response(JSON.stringify({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@resonatehq/supabase",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "Resonate FaaS handler for Supabase Edge Functions (TypeScript)",
5
5
  "repository": {
6
6
  "url": "https://github.com/resonatehq/resonate-faas-supabase-ts"
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
- prefix = undefined,
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: this.idPrefix,
132
+ idPrefix: "",
148
133
  }),
149
134
  verbose: this.verbose,
150
135
  tracer,
@@ -152,17 +137,7 @@ export class Resonate {
152
137
 
153
138
  const task: Task = { kind: "unclaimed", task: body.task };
154
139
 
155
- const handleCallback = async (
156
- data:
157
- | { status: "completed"; data?: any }
158
- | { status: "suspended"; result: string[] },
159
- ): Promise<void> => {
160
- if (this.onTerminateFn) {
161
- await this.onTerminateFn(data);
162
- }
163
- };
164
-
165
- return new Promise((resolve) => {
140
+ const completion: Promise<Response> = new Promise((resolve) => {
166
141
  resonateInner.process(
167
142
  tracer.startSpan(task.task.rootPromiseId, clock.now()),
168
143
  task,
@@ -181,47 +156,39 @@ export class Resonate {
181
156
  );
182
157
  return;
183
158
  }
159
+
184
160
  if (status.kind === "completed") {
185
- handleCallback({
186
- status: "completed",
187
- data: encoder.decode(
188
- this.encryptor.decrypt(status.promise.value),
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
+ },
189
171
  ),
190
- }).finally(() => {
191
- resolve(
192
- new Response(
193
- JSON.stringify({
194
- status: "completed",
195
- result: status.promise.value,
196
- requestUrl: url,
197
- }),
198
- { status: 200 },
199
- ),
200
- );
201
- });
172
+ );
202
173
  return;
203
174
  } else if (status.kind === "suspended") {
204
- handleCallback({
205
- status: "suspended",
206
- result: status.callbacks.map((callback) => callback.promiseId),
207
- }).finally(() => {
208
- resolve(
209
- new Response(
210
- JSON.stringify({
211
- status: "suspended",
212
- requestUrl: url,
213
- }),
214
- {
215
- status: 200,
216
- },
217
- ),
218
- );
219
- });
175
+ resolve(
176
+ new Response(
177
+ JSON.stringify({
178
+ status: "suspended",
179
+ requestUrl: url,
180
+ }),
181
+ {
182
+ status: 200,
183
+ },
184
+ ),
185
+ );
220
186
  return;
221
187
  }
222
188
  },
223
189
  );
224
190
  });
191
+ return completion;
225
192
  } catch (error) {
226
193
  return new Response(
227
194
  JSON.stringify({