@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 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,17 +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 = (data) => {
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
- handleCallback({
83
+ resolve(new Response(JSON.stringify({
92
84
  status: "completed",
93
- data: encoder.decode(this.encryptor.decrypt(status.promise.value)),
94
- }).finally(() => {
95
- resolve(new Response(JSON.stringify({
96
- status: "completed",
97
- result: status.promise.value,
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
- handleCallback({
93
+ resolve(new Response(JSON.stringify({
107
94
  status: "suspended",
108
- result: status.callbacks.map((callback) => callback.promiseId),
109
- }).finally(() => {
110
- resolve(new Response(JSON.stringify({
111
- status: "suspended",
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@resonatehq/supabase",
3
- "version": "0.1.7",
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,16 +137,7 @@ export class Resonate {
152
137
 
153
138
  const task: Task = { kind: "unclaimed", task: body.task };
154
139
 
155
- const handleCallback = (
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
- handleCallback({
185
- status: "completed",
186
- data: encoder.decode(
187
- 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
+ },
188
171
  ),
189
- }).finally(() => {
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
- handleCallback({
206
- status: "suspended",
207
- result: status.callbacks.map((callback) => callback.promiseId),
208
- }).finally(() => {
209
- resolve(
210
- new Response(
211
- JSON.stringify({
212
- status: "suspended",
213
- requestUrl: url,
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({