@linkshell/gateway 0.5.3 → 0.6.1
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/Dockerfile +8 -22
- package/README.md +102 -44
- package/dist/gateway/src/accounts.js.map +1 -0
- package/dist/gateway/src/index.d.ts +4 -1
- package/dist/gateway/src/index.js +4 -863
- package/dist/gateway/src/index.js.map +1 -1
- package/dist/gateway/src/main.js +57 -0
- package/dist/gateway/src/main.js.map +1 -0
- package/dist/gateway/src/rate-limit.d.ts +32 -0
- package/dist/gateway/src/rate-limit.js +106 -0
- package/dist/gateway/src/rate-limit.js.map +1 -0
- package/dist/gateway/src/relay.d.ts +84 -5
- package/dist/gateway/src/relay.js +402 -529
- package/dist/gateway/src/relay.js.map +1 -1
- package/dist/gateway/src/serve.d.ts +34 -0
- package/dist/gateway/src/serve.js +115 -0
- package/dist/gateway/src/serve.js.map +1 -0
- package/dist/{gateway-v2 → gateway}/src/store.d.ts +5 -0
- package/dist/{gateway-v2 → gateway}/src/store.js +7 -0
- package/dist/gateway/src/store.js.map +1 -0
- package/dist/gateway/src/subscription.d.ts +18 -0
- package/dist/gateway/src/subscription.js +46 -0
- package/dist/gateway/src/subscription.js.map +1 -0
- package/dist/gateway/tsconfig.tsbuildinfo +1 -1
- package/dist/wire/src/direct.d.ts +22 -0
- package/dist/wire/src/direct.js +37 -0
- package/dist/wire/src/direct.js.map +1 -0
- package/dist/wire/src/index.d.ts +1 -0
- package/dist/wire/src/index.js +1 -0
- package/dist/wire/src/index.js.map +1 -1
- package/dist/wire/src/model.d.ts +287 -6
- package/dist/wire/src/model.js +33 -0
- package/dist/wire/src/model.js.map +1 -1
- package/dist/wire/src/relay.d.ts +8 -8
- package/dist/wire/src/rpc.d.ts +1780 -44
- package/dist/wire/src/rpc.js +48 -3
- package/dist/wire/src/rpc.js.map +1 -1
- package/dist/wire/src/updates.d.ts +356 -0
- package/dist/wire/src/updates.js +11 -1
- package/dist/wire/src/updates.js.map +1 -1
- package/package.json +13 -13
- package/src/accounts.ts +32 -0
- package/src/index.ts +4 -997
- package/src/main.ts +65 -0
- package/src/rate-limit.ts +114 -0
- package/src/relay.ts +435 -620
- package/src/serve.ts +142 -0
- package/src/store.ts +135 -0
- package/src/subscription.ts +51 -0
- package/dist/gateway/src/auth-middleware.d.ts +0 -44
- package/dist/gateway/src/auth-middleware.js +0 -204
- package/dist/gateway/src/auth-middleware.js.map +0 -1
- package/dist/gateway/src/cors.d.ts +0 -2
- package/dist/gateway/src/cors.js +0 -7
- package/dist/gateway/src/cors.js.map +0 -1
- package/dist/gateway/src/embedded.d.ts +0 -21
- package/dist/gateway/src/embedded.js +0 -438
- package/dist/gateway/src/embedded.js.map +0 -1
- package/dist/gateway/src/host-auth.d.ts +0 -32
- package/dist/gateway/src/host-auth.js +0 -78
- package/dist/gateway/src/host-auth.js.map +0 -1
- package/dist/gateway/src/pairings.d.ts +0 -38
- package/dist/gateway/src/pairings.js +0 -119
- package/dist/gateway/src/pairings.js.map +0 -1
- package/dist/gateway/src/presence.d.ts +0 -28
- package/dist/gateway/src/presence.js +0 -92
- package/dist/gateway/src/presence.js.map +0 -1
- package/dist/gateway/src/sessions.d.ts +0 -113
- package/dist/gateway/src/sessions.js +0 -352
- package/dist/gateway/src/sessions.js.map +0 -1
- package/dist/gateway/src/state-store.d.ts +0 -21
- package/dist/gateway/src/state-store.js +0 -103
- package/dist/gateway/src/state-store.js.map +0 -1
- package/dist/gateway/src/static-web.d.ts +0 -15
- package/dist/gateway/src/static-web.js +0 -129
- package/dist/gateway/src/static-web.js.map +0 -1
- package/dist/gateway/src/tokens.d.ts +0 -19
- package/dist/gateway/src/tokens.js +0 -151
- package/dist/gateway/src/tokens.js.map +0 -1
- package/dist/gateway/src/tunnel.d.ts +0 -61
- package/dist/gateway/src/tunnel.js +0 -576
- package/dist/gateway/src/tunnel.js.map +0 -1
- package/dist/gateway-v2/src/accounts.js.map +0 -1
- package/dist/gateway-v2/src/index.d.ts +0 -3
- package/dist/gateway-v2/src/index.js +0 -4
- package/dist/gateway-v2/src/index.js.map +0 -1
- package/dist/gateway-v2/src/main.js +0 -17
- package/dist/gateway-v2/src/main.js.map +0 -1
- package/dist/gateway-v2/src/server.d.ts +0 -84
- package/dist/gateway-v2/src/server.js +0 -426
- package/dist/gateway-v2/src/server.js.map +0 -1
- package/dist/gateway-v2/src/store.js.map +0 -1
- package/dist/shared-protocol/src/index.d.ts +0 -17029
- package/dist/shared-protocol/src/index.js +0 -1064
- package/dist/shared-protocol/src/index.js.map +0 -1
- package/src/auth-middleware.ts +0 -266
- package/src/cors.ts +0 -8
- package/src/embedded.ts +0 -526
- package/src/host-auth.ts +0 -88
- package/src/pairings.ts +0 -133
- package/src/presence.ts +0 -118
- package/src/sessions.ts +0 -432
- package/src/state-store.ts +0 -140
- package/src/static-web.ts +0 -133
- package/src/tokens.ts +0 -159
- package/src/tunnel.ts +0 -644
- /package/dist/{gateway-v2 → gateway}/src/accounts.d.ts +0 -0
- /package/dist/{gateway-v2 → gateway}/src/accounts.js +0 -0
- /package/dist/{gateway-v2 → gateway}/src/main.d.ts +0 -0
package/Dockerfile
CHANGED
|
@@ -6,27 +6,18 @@ WORKDIR /app
|
|
|
6
6
|
COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./
|
|
7
7
|
# pnpm checks every patched dependency in the lockfile against its patch file.
|
|
8
8
|
COPY patches/ patches/
|
|
9
|
-
COPY packages/shared-protocol/package.json packages/shared-protocol/
|
|
10
9
|
COPY packages/wire/package.json packages/wire/
|
|
11
|
-
COPY packages/gateway-v2/package.json packages/gateway-v2/
|
|
12
10
|
COPY packages/gateway/package.json packages/gateway/
|
|
13
|
-
COPY apps/web-dashboard/package.json apps/web-dashboard/
|
|
14
11
|
|
|
15
|
-
RUN pnpm install --frozen-lockfile --filter @linkshell/gateway --filter @linkshell/
|
|
12
|
+
RUN pnpm install --frozen-lockfile --filter @linkshell/gateway --filter @linkshell/wire
|
|
16
13
|
|
|
17
|
-
COPY packages/shared-protocol/ packages/shared-protocol/
|
|
18
14
|
COPY packages/wire/ packages/wire/
|
|
19
|
-
COPY packages/gateway-v2/ packages/gateway-v2/
|
|
20
15
|
COPY packages/gateway/ packages/gateway/
|
|
21
|
-
COPY apps/web-dashboard/ apps/web-dashboard/
|
|
22
16
|
COPY tsconfig.base.json ./
|
|
23
17
|
|
|
24
|
-
#
|
|
25
|
-
RUN pnpm --filter @linkshell/
|
|
26
|
-
&& pnpm --filter @linkshell/
|
|
27
|
-
&& pnpm --filter @linkshell/gateway-v2 build \
|
|
28
|
-
&& pnpm --filter @linkshell/gateway build \
|
|
29
|
-
&& pnpm --filter @linkshell/web-dashboard build
|
|
18
|
+
# The wire protocol first: the gateway runs against its built dist.
|
|
19
|
+
RUN pnpm --filter @linkshell/wire build \
|
|
20
|
+
&& pnpm --filter @linkshell/gateway build
|
|
30
21
|
|
|
31
22
|
# Prune to production deps only (the app's patches don't apply to the gateway).
|
|
32
23
|
RUN pnpm --filter @linkshell/gateway deploy --legacy --prod --config.allow-unused-patches=true /app/pruned
|
|
@@ -36,7 +27,7 @@ RUN pnpm --filter @linkshell/gateway deploy --legacy --prod --config.allow-unuse
|
|
|
36
27
|
FROM node:22-alpine
|
|
37
28
|
|
|
38
29
|
LABEL org.opencontainers.image.source="https://github.com/LiuTianjie/LinkShell"
|
|
39
|
-
LABEL org.opencontainers.image.description="LinkShell Gateway —
|
|
30
|
+
LABEL org.opencontainers.image.description="LinkShell Gateway — relays end-to-end encrypted frames between computers and phones, and brokers pairing"
|
|
40
31
|
|
|
41
32
|
RUN addgroup -S linkshell && adduser -S linkshell -G linkshell
|
|
42
33
|
|
|
@@ -44,27 +35,22 @@ WORKDIR /app
|
|
|
44
35
|
|
|
45
36
|
# Copy pruned production node_modules + built dist
|
|
46
37
|
COPY --from=builder /app/pruned/node_modules node_modules/
|
|
47
|
-
COPY --from=builder /app/packages/shared-protocol/dist packages/shared-protocol/dist/
|
|
48
|
-
COPY --from=builder /app/packages/shared-protocol/package.json packages/shared-protocol/
|
|
49
38
|
COPY --from=builder /app/packages/gateway/dist packages/gateway/dist/
|
|
39
|
+
# Also where /healthz reads the version from.
|
|
50
40
|
COPY --from=builder /app/packages/gateway/package.json packages/gateway/
|
|
51
41
|
|
|
52
|
-
# Built web UI — served same-origin by the gateway from WEB_DIST.
|
|
53
|
-
COPY --from=builder /app/apps/web-dashboard/dist web/
|
|
54
|
-
|
|
55
42
|
# Workspace root package.json needed for module resolution
|
|
56
43
|
COPY --from=builder /app/package.json ./
|
|
57
44
|
|
|
58
|
-
#
|
|
45
|
+
# Pairings and keys are kept here: mount a persistent volume.
|
|
59
46
|
RUN mkdir -p /data && chown -R linkshell:linkshell /app /data
|
|
60
47
|
USER linkshell
|
|
61
48
|
|
|
62
49
|
ENV NODE_ENV=production
|
|
63
50
|
ENV PORT=8787
|
|
64
|
-
ENV WEB_DIST=/app/web
|
|
65
51
|
ENV RELAY_DATA_PATH=/data/relay.db
|
|
66
52
|
# Collect garbage well inside a 768 MB container instead of growing into its limit.
|
|
67
53
|
ENV NODE_OPTIONS=--max-old-space-size=512
|
|
68
54
|
EXPOSE 8787
|
|
69
55
|
|
|
70
|
-
CMD ["node", "packages/gateway/dist/gateway/src/
|
|
56
|
+
CMD ["node", "packages/gateway/dist/gateway/src/main.js"]
|
package/README.md
CHANGED
|
@@ -1,77 +1,135 @@
|
|
|
1
1
|
# @linkshell/gateway
|
|
2
2
|
|
|
3
|
-
LinkShell
|
|
3
|
+
LinkShell 网关:手机和电脑之间的中继。它用密钥认证两端,在允许互相访问的手机和电脑之间转发**端到端加密**的数据帧(网关读不了内容),并负责配对(二维码或 6 位配对码)。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
官方网关(`gateway.itool.tech`)和自建网关运行的是同一份代码。区别只在配置:自建网关没有账号,靠配对;官方网关另外校验账号和 Pro 订阅。
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
需要 Node.js 22.13 或更新版本(数据用 Node 自带的 SQLite 保存)。完整的自建步骤(HTTPS、反向代理、连接手机)见[部署指南](https://github.com/LiuTianjie/LinkShell/blob/main/docs/deploy.md)。
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## 运行
|
|
10
|
+
|
|
11
|
+
### 用 CLI
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm i -g linkshell-cli
|
|
15
|
+
linkshell gateway --port 8787 --daemon
|
|
16
|
+
linkshell gateway status
|
|
17
|
+
linkshell gateway stop
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
数据保存在 `~/.linkshell/relay.db`,日志在 `~/.linkshell/gateway.log`。
|
|
21
|
+
|
|
22
|
+
### 用 Docker
|
|
10
23
|
|
|
11
24
|
```bash
|
|
12
|
-
docker
|
|
25
|
+
docker run -d --name linkshell-gateway --restart unless-stopped \
|
|
26
|
+
-p 8787:8787 -v linkshell-gateway:/data \
|
|
27
|
+
nickname4th/linkshell-gateway:latest
|
|
13
28
|
```
|
|
14
29
|
|
|
15
|
-
|
|
30
|
+
数据在容器里的 `/data/relay.db`,所以要挂载卷。镜像目前只有 `linux/amd64`。
|
|
31
|
+
|
|
32
|
+
从源码构建镜像:在仓库根目录运行 `docker compose up -d`。
|
|
33
|
+
|
|
34
|
+
### 从源码
|
|
16
35
|
|
|
17
36
|
```bash
|
|
18
37
|
pnpm install
|
|
38
|
+
pnpm --filter @linkshell/wire build
|
|
19
39
|
pnpm --filter @linkshell/gateway build
|
|
20
|
-
PORT=8787 node packages/gateway/dist/gateway/src/
|
|
40
|
+
PORT=8787 RELAY_DATA_PATH=./data/relay.db node packages/gateway/dist/gateway/src/main.js
|
|
41
|
+
|
|
42
|
+
pnpm dev:gateway # 开发:tsx 直接运行 src/main.ts
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 作为库
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
import { startGateway } from "@linkshell/gateway";
|
|
49
|
+
|
|
50
|
+
const gateway = await startGateway({ port: 8787, databasePath: "./relay.db" });
|
|
51
|
+
// gateway.port;结束时 await gateway.close()
|
|
21
52
|
```
|
|
22
53
|
|
|
54
|
+
`linkshell gateway` 就是这样启动它的。
|
|
55
|
+
|
|
23
56
|
## 环境变量
|
|
24
57
|
|
|
25
58
|
| 变量 | 默认值 | 说明 |
|
|
26
59
|
|------|--------|------|
|
|
27
60
|
| `PORT` | `8787` | 监听端口 |
|
|
28
61
|
| `LOG_LEVEL` | `info` | 日志级别:debug / info / warn / error |
|
|
29
|
-
| `
|
|
30
|
-
| `
|
|
31
|
-
| `
|
|
32
|
-
| `
|
|
33
|
-
| `
|
|
34
|
-
| `
|
|
35
|
-
| `
|
|
62
|
+
| `RELAY_DATA_PATH` | `./data/relay.db` | 数据文件(SQLite)。Docker 镜像里是 `/data/relay.db` |
|
|
63
|
+
| `TRUSTED_PROXIES` | 空 | 反向代理的 IP(网关看到的来源地址),逗号分隔;IPv4 可以写成网段,如 `172.16.0.0/12`。只有连接来自这些地址时才采信 `X-Forwarded-For`;留空则一律按直接连接的地址计算限流 |
|
|
64
|
+
| `WS_CONNECT_RATE_LIMIT_MAX` | `20` | 每个 IP 在一个时间窗口内允许的连接次数(本机回环地址不限) |
|
|
65
|
+
| `WS_CONNECT_RATE_LIMIT_WINDOW_MS` | `60000` | 上面的时间窗口 |
|
|
66
|
+
| `SUPABASE_URL`、`SUPABASE_ANON_KEY` | - | 两个都设置后启用账号:校验账号令牌,同一账号下的手机和电脑不用配对就能互相访问 |
|
|
67
|
+
| `AUTH_REQUIRED` | `false` | 设为 `true`:电脑必须登录账号并且订阅有效才能接入(手机不受影响) |
|
|
68
|
+
| `SUPABASE_SERVICE_ROLE_KEY` | - | `AUTH_REQUIRED=true` 时用它查询订阅 |
|
|
69
|
+
|
|
70
|
+
自建网关一般只需要 `PORT` 和 `RELAY_DATA_PATH`。网关前面有反向代理时要留意连接限流按谁的地址算:
|
|
71
|
+
|
|
72
|
+
- 没有设置 `TRUSTED_PROXIES`:所有连接都算作来自代理的地址。代理在另一台机器或另一个容器里时,所有用户共用一份限额(每分钟 20 次连接);代理在本机(`127.0.0.1`)时则完全不限流。
|
|
73
|
+
- 设置为代理的地址(代理在本机时是 `127.0.0.1,::1`):按 `X-Forwarded-For` 里每个用户自己的地址分别限流。
|
|
74
|
+
- 代理在容器网络里、地址每次部署都会变:写成它所在的网段(如 `172.16.0.0/12`)。
|
|
75
|
+
- 前面有多层代理(CDN 再到 nginx):每一层都要列出来。用户的地址取的是 `X-Forwarded-For` 里**从右往左第一个不属于代理的地址**:最左边那一段是调用方自己写的,不能信。
|
|
76
|
+
- 不确定代理的地址是什么:先不设置,看网关日志。收到带 `X-Forwarded-For` 却不在名单里的连接时,日志会写出它的地址(每个地址只说一次)。
|
|
36
77
|
|
|
37
|
-
|
|
78
|
+
### 带账号和订阅校验的部署
|
|
38
79
|
|
|
39
|
-
|
|
80
|
+
官方网关是这样配置的(见仓库根目录的 `luma-gateway.yml`):
|
|
40
81
|
|
|
41
|
-
|
|
82
|
+
```bash
|
|
83
|
+
AUTH_REQUIRED=true
|
|
84
|
+
SUPABASE_URL=https://<project>.supabase.co
|
|
85
|
+
SUPABASE_ANON_KEY=...
|
|
86
|
+
SUPABASE_SERVICE_ROLE_KEY=...
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
- 账号令牌通过 `${SUPABASE_URL}/auth/v1/user` 校验。
|
|
90
|
+
- 订阅查的是 `profiles` 表:`plan` 为 `pro` 且 `plan_expires_at` 晚于当前时间才算有效。
|
|
91
|
+
- 只在电脑连接时检查一次;查询本身失败(网络、配置问题)时放行,不会因为一次查询失败把用户挡在外面。
|
|
92
|
+
|
|
93
|
+
## 接口
|
|
94
|
+
|
|
95
|
+
| | 路径 | 说明 |
|
|
42
96
|
|------|------|------|
|
|
97
|
+
| `WS` | `/v2/connect` | 电脑(host)和手机 App 的连接 |
|
|
43
98
|
| `GET` | `/healthz` | 健康检查 |
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
99
|
+
|
|
100
|
+
其他路径一律返回 404。
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
curl http://localhost:8787/healthz
|
|
104
|
+
# {"ok":true,"version":"0.6.0","relay":2,"memoryMb":61}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
`relay` 是当前在线的连接数(电脑加手机),`memoryMb` 是进程占用的内存。
|
|
108
|
+
|
|
109
|
+
## 数据文件
|
|
110
|
+
|
|
111
|
+
全部数据就是一个 SQLite 文件:每台电脑、每台手机的公钥、名称和所属账号,以及哪台手机和哪台电脑配对。没有任何会话内容。
|
|
112
|
+
|
|
113
|
+
**这个文件丢了,所有手机都要重新配对。** 迁移或升级时带上它(Docker 就是保留那个卷);备份时连同旁边的 `-wal`、`-shm` 文件一起,或者先停掉网关。
|
|
114
|
+
|
|
115
|
+
## 从 0.5.x 升级
|
|
116
|
+
|
|
117
|
+
0.6.0 去掉了 1.x 的那一半,只保留中继:
|
|
118
|
+
|
|
119
|
+
- 1.x 的接口没有了:`/ws`、`/pairings*`、`/sessions*`、`/tunnel/*`,以及根路径上的网页控制台。1.x 的 App 和 `linkshell start` 不能再连接这个网关。
|
|
120
|
+
- 这些环境变量不再读取,可以删掉:`PAIRING_TTL_MS`、`PAIRING_RATE_LIMIT_*`、`CLAIM_FAILURE_RATE_LIMIT_*`、`SUPABASE_GATEWAY_TOKEN_TABLE`、`SUPABASE_GATEWAY_PAIRING_TABLE`、`SUPABASE_STATE_TIMEOUT_MS`、`WEB_DIST`。
|
|
121
|
+
- 数据文件和格式没有变:沿用原来的 `relay.db`(Docker 沿用原来的卷),已配对的手机不用重新配对。2.x 的 CLI 和 App 不需要任何改动。
|
|
122
|
+
- 作为库使用时:`@linkshell/gateway/embedded` 的 `startEmbeddedGateway` 换成 `startGateway`;`@linkshell/gateway-v2` 已并入本包,不再单独发布。
|
|
66
123
|
|
|
67
124
|
## 代码入口
|
|
68
125
|
|
|
69
|
-
|
|
126
|
+
1. `src/relay.ts`:`Gateway`,认证、路由、配对、背压
|
|
127
|
+
2. `src/store.ts`:SQLite 里的两张表(`peers`、`links`)
|
|
128
|
+
3. `src/serve.ts`:`startGateway`,HTTP 服务、`/healthz`、连接限流
|
|
129
|
+
4. `src/main.ts`:可执行入口,读环境变量后调用 `startGateway`
|
|
130
|
+
5. `src/accounts.ts`、`src/subscription.ts`:账号令牌和订阅
|
|
70
131
|
|
|
71
|
-
|
|
72
|
-
2. src/pairings.ts
|
|
73
|
-
3. src/sessions.ts
|
|
74
|
-
4. src/relay.ts
|
|
132
|
+
`/v2/connect` 这个路径和 `store.ts` 里的表结构不能改:已安装的每一台电脑和手机都依赖它们。
|
|
75
133
|
|
|
76
134
|
## License
|
|
77
135
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../../src/accounts.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,sDAAsD;AAStD,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,OAAe;IAC3D,MAAM,KAAK,GAAG,IAAI,GAAG,EAA+C,CAAC;IACrE,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;YAAE,OAAO,GAAG,CAAC,OAAO,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,eAAe,EAAE;gBAClD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;gBAC9D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO,SAAS,CAAC;YACnC,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAoC,CAAC;YACxE,IAAI,CAAC,IAAI,CAAC,EAAE;gBAAE,OAAO,SAAS,CAAC;YAC/B,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YACvD,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;YAC1D,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI;gBAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK;oBAAE,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;wBAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzG,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1,4 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export { Gateway, type GatewayOptions } from "./relay.js";
|
|
2
|
+
export { GatewayStore } from "./store.js";
|
|
3
|
+
export { supabaseVerifier, type Account, type VerifyToken } from "./accounts.js";
|
|
4
|
+
export { startGateway, type RunningGateway, type StartGatewayOptions } from "./serve.js";
|