Skip to content

Commit fae8b65

Browse files
NathanFlurryjog1t
authored andcommitted
feat: supabase & deno
1 parent 771284c commit fae8b65

File tree

13 files changed

+227
-1
lines changed

13 files changed

+227
-1
lines changed

packages/platforms/deno/package.json

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{
2+
"name": "@actor-core/deno",
3+
"version": "0.3.0",
4+
"files": [
5+
"src",
6+
"dist",
7+
"package.json"
8+
],
9+
"type": "module",
10+
"exports": {
11+
".": {
12+
"import": {
13+
"types": "./dist/mod.d.ts",
14+
"default": "./dist/mod.js"
15+
},
16+
"require": {
17+
"types": "./dist/mod.d.cts",
18+
"default": "./dist/mod.cjs"
19+
}
20+
}
21+
},
22+
"sideEffects": false,
23+
"scripts": {
24+
"build": "tsup src/mod.ts",
25+
"dev": "yarn build --watch",
26+
"check-types": "tsc --noEmit"
27+
},
28+
"peerDependencies": {
29+
"actor-core": "workspace:*"
30+
},
31+
"devDependencies": {
32+
"@actor-core/redis": "workspace:*",
33+
"hono": "^4.7.0",
34+
"tsup": "^8.3.6",
35+
"typescript": "^5.5.2"
36+
},
37+
"dependencies": {
38+
"@types/deno": "^2.0.0",
39+
"dedent": "^1.5.3"
40+
}
41+
}

packages/platforms/deno/src/config.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { RedisConfig } from "@actor-core/redis";
2+
3+
export interface Config extends RedisConfig {
4+
server?: {
5+
hostname?: string;
6+
port?: number;
7+
};
8+
}

packages/platforms/deno/src/mod.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { createRouter } from "@actor-core/redis";
2+
import { upgradeWebSocket } from "hono/deno";
3+
import type { Config } from "./config";
4+
5+
export function serve(config: Config) {
6+
const app = createRouter(config, {
7+
getUpgradeWebSocket: app => {
8+
return upgradeWebSocket;
9+
},
10+
});
11+
12+
Deno.serve({
13+
hostname: config.server?.hostname ?? "localhost",
14+
port: config.server?.port ?? 8787,
15+
}, app.fetch);
16+
}

packages/platforms/deno/tsconfig.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"extends": "../../../tsconfig.base.json",
3+
"compilerOptions": {
4+
"types": ["deno"],
5+
"paths": {
6+
"@/*": ["./src/*"]
7+
}
8+
},
9+
"include": ["src/**/*"]
10+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import defaultConfig from "../../../tsup.base.ts";
2+
import { defineConfig } from "tsup";
3+
4+
export default defineConfig({
5+
noExternal: ["@actor-core/redis"],
6+
...defaultConfig
7+
});

packages/platforms/redis/src/mod.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
export { createRouter } from "./router/mod";
22
export { RedisConfig } from "./config";
33
export type { PlatformConfig } from "./platform_config";
4-
export { createRouter } from "./router/mod";
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{
2+
"name": "@actor-core/supabase",
3+
"version": "0.3.0",
4+
"files": [
5+
"src",
6+
"dist",
7+
"package.json"
8+
],
9+
"type": "module",
10+
"exports": {
11+
".": {
12+
"import": {
13+
"types": "./dist/mod.d.ts",
14+
"default": "./dist/mod.js"
15+
},
16+
"require": {
17+
"types": "./dist/mod.d.cts",
18+
"default": "./dist/mod.cjs"
19+
}
20+
}
21+
},
22+
"sideEffects": false,
23+
"scripts": {
24+
"build": "tsup src/mod.ts",
25+
"dev": "yarn build --watch",
26+
"check-types": "tsc --noEmit"
27+
},
28+
"peerDependencies": {
29+
"@actor-core/deno": "workspace:*",
30+
"actor-core": "workspace:*"
31+
},
32+
"devDependencies": {
33+
"hono": "^4.7.0",
34+
"tsup": "^8.3.6",
35+
"typescript": "^5.5.2"
36+
}
37+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from "@actor-core/deno";
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"extends": "../../../tsconfig.base.json",
3+
"compilerOptions": {
4+
"paths": {
5+
"@/*": ["./src/*"]
6+
}
7+
},
8+
"include": ["src/**/*"]
9+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import defaultConfig from "../../../tsup.base.ts";
2+
import { defineConfig } from "tsup";
3+
4+
export default defineConfig({
5+
noExternal: ["@actor-core/redis"],
6+
...defaultConfig
7+
});
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"$schema": "https://turbo.build/schema.json",
3+
"extends": ["//"],
4+
"tasks": {
5+
"build": {
6+
"inputs": ["src/**", "./tsup.config.ts"],
7+
"dependsOn": ["@actor-core/redis#build"]
8+
}
9+
}
10+
}

scripts/template_platforms.ts

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,29 @@ interface PlatformOutput {
2828
type PlatformConfigFn = (build: PlatformInput) => PlatformOutput;
2929

3030
const PLATFORMS: Record<string, PlatformConfigFn> = {
31+
supabase: (input) => {
32+
input.packageJson.name += "-supabase";
33+
input.packageJson.devDependencies = {
34+
"@actor-core/supabase": "workspace:*",
35+
...input.packageJson.devDependencies,
36+
};
37+
38+
const { actorImports, actorList } = buildActorImports(input);
39+
40+
return {
41+
files: {
42+
"package.json": stringifyJson(input.packageJson),
43+
"src/index.ts": dedent`
44+
import { createHandler } from "@actor-core/supabase"
45+
${actorImports}
46+
47+
export default createHandler({
48+
actors: { ${actorList} }
49+
});
50+
`,
51+
},
52+
};
53+
},
3154
vercel: (input) => {
3255
input.packageJson.name += "-vercel";
3356
input.packageJson.devDependencies = {
@@ -173,6 +196,36 @@ const PLATFORMS: Record<string, PlatformConfigFn> = {
173196
},
174197
};
175198
},
199+
deno: (input) => {
200+
input.packageJson.name += "-deno";
201+
input.packageJson.devDependencies = {
202+
"@actor-core/deno": "workspace:*",
203+
...input.packageJson.devDependencies,
204+
};
205+
input.packageJson.scripts = {
206+
start: "deno run --allow-net src/index.ts",
207+
dev: "deno run --allow-net --watch src/index.ts",
208+
...input.packageJson.scripts,
209+
};
210+
211+
const { actorImports, actorList } = buildActorImports(input);
212+
213+
const files = {
214+
"package.json": stringifyJson(input.packageJson),
215+
"src/index.ts": dedent`
216+
import { serve } from "@actor-core/deno"
217+
${actorImports}
218+
219+
serve({
220+
actors: { ${actorList} }
221+
});
222+
`,
223+
};
224+
225+
return {
226+
files,
227+
};
228+
},
176229
bun: (input) => {
177230
input.packageJson.name += "-bun";
178231
input.packageJson.devDependencies = {

yarn.lock

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,21 @@ __metadata:
3737
languageName: unknown
3838
linkType: soft
3939

40+
"@actor-core/deno@workspace:packages/platforms/deno":
41+
version: 0.0.0-use.local
42+
resolution: "@actor-core/deno@workspace:packages/platforms/deno"
43+
dependencies:
44+
"@actor-core/redis": "workspace:*"
45+
"@types/deno": "npm:^2.0.0"
46+
dedent: "npm:^1.5.3"
47+
hono: "npm:^4.7.0"
48+
tsup: "npm:^8.3.6"
49+
typescript: "npm:^5.5.2"
50+
peerDependencies:
51+
actor-core: "workspace:*"
52+
languageName: unknown
53+
linkType: soft
54+
4055
"@actor-core/nodejs@workspace:*, @actor-core/nodejs@workspace:packages/platforms/nodejs":
4156
version: 0.0.0-use.local
4257
resolution: "@actor-core/nodejs@workspace:packages/platforms/nodejs"
@@ -87,6 +102,19 @@ __metadata:
87102
languageName: unknown
88103
linkType: soft
89104

105+
"@actor-core/supabase@workspace:packages/platforms/supabase":
106+
version: 0.0.0-use.local
107+
resolution: "@actor-core/supabase@workspace:packages/platforms/supabase"
108+
dependencies:
109+
hono: "npm:^4.7.0"
110+
tsup: "npm:^8.3.6"
111+
typescript: "npm:^5.5.2"
112+
peerDependencies:
113+
"@actor-core/deno": "workspace:*"
114+
actor-core: "workspace:*"
115+
languageName: unknown
116+
linkType: soft
117+
90118
"@actor-core/vercel@workspace:packages/platforms/vercel":
91119
version: 0.0.0-use.local
92120
resolution: "@actor-core/vercel@workspace:packages/platforms/vercel"

0 commit comments

Comments
 (0)