@visiblebase/core 0.2.0 → 0.2.2

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.
Files changed (52) hide show
  1. package/bin/core/base/base.d.ts +8 -40
  2. package/bin/core/base/base.d.ts.map +1 -1
  3. package/bin/core/base/base.js +154 -96
  4. package/bin/core/base/base.js.map +1 -1
  5. package/bin/core/runtime.d.ts +10 -0
  6. package/bin/core/runtime.d.ts.map +1 -1
  7. package/bin/index.d.ts +5 -14
  8. package/bin/index.d.ts.map +1 -1
  9. package/bin/index.js +5 -14
  10. package/bin/index.js.map +1 -1
  11. package/bin/service/action.d.ts +44 -0
  12. package/bin/service/action.d.ts.map +1 -0
  13. package/bin/service/action.js +48 -0
  14. package/bin/service/action.js.map +1 -0
  15. package/bin/service/ai/ai-service.d.ts +21 -57
  16. package/bin/service/ai/ai-service.d.ts.map +1 -1
  17. package/bin/service/ai/ai-service.js +107 -105
  18. package/bin/service/ai/ai-service.js.map +1 -1
  19. package/bin/service/ai/provider.d.ts +24 -58
  20. package/bin/service/ai/provider.d.ts.map +1 -1
  21. package/bin/service/ai/provider.js +20 -41
  22. package/bin/service/ai/provider.js.map +1 -1
  23. package/bin/service/ai/types.d.ts +39 -35
  24. package/bin/service/ai/types.d.ts.map +1 -1
  25. package/bin/service/ai/types.js +1 -1
  26. package/bin/service/env/env-service.d.ts +0 -4
  27. package/bin/service/env/env-service.d.ts.map +1 -1
  28. package/bin/service/env/env-service.js +12 -22
  29. package/bin/service/env/env-service.js.map +1 -1
  30. package/bin/service/hook.d.ts +8 -5
  31. package/bin/service/hook.d.ts.map +1 -1
  32. package/bin/service/hook.js +11 -14
  33. package/bin/service/hook.js.map +1 -1
  34. package/bin/service/plugin.d.ts +12 -94
  35. package/bin/service/plugin.d.ts.map +1 -1
  36. package/bin/service/plugin.js +22 -59
  37. package/bin/service/plugin.js.map +1 -1
  38. package/bin/service/products/products-service.d.ts +0 -5
  39. package/bin/service/products/products-service.d.ts.map +1 -1
  40. package/bin/service/products/products-service.js +14 -20
  41. package/bin/service/products/products-service.js.map +1 -1
  42. package/bin/service/service.d.ts +59 -64
  43. package/bin/service/service.d.ts.map +1 -1
  44. package/bin/service/service.js +34 -80
  45. package/bin/service/service.js.map +1 -1
  46. package/bin/service/types.d.ts +2 -8
  47. package/bin/service/types.d.ts.map +1 -1
  48. package/bin/store/db.d.ts +5 -4
  49. package/bin/store/db.d.ts.map +1 -1
  50. package/bin/store/db.js +3 -2
  51. package/bin/store/db.js.map +1 -1
  52. package/package.json +8 -9
@@ -1,11 +1,9 @@
1
1
  /**
2
2
  * Base Runtime 主模块。
3
3
  *
4
- * Base 是运行时容器,只负责:Service 路由、鉴权、HTTP
4
+ * Base 是运行时容器,负责:Service 生命周期、鉴权、HTTP 桥接。
5
5
  * 不知道任何具体 Service 的实现,所有 Service 通过 _onInit() 自初始化。
6
6
  *
7
- * 数据库连接、环境变量存储等运行时特定逻辑由 Runtime 适配器注入。
8
- *
9
7
  * 使用方式:
10
8
  * ```ts
11
9
  * import { Base } from "@visiblebase/core";
@@ -13,7 +11,6 @@
13
11
  *
14
12
  * const base = new Base({ runtime: node({ database: "sqlite:./data.sqlite" }) });
15
13
  * base.use(new AIService());
16
- * // 路由始终是标准 Hono app
17
14
  * serve({ fetch: base.router().fetch, port: 3000 });
18
15
  * ```
19
16
  */
@@ -33,12 +30,6 @@ declare module "hono" {
33
30
  };
34
31
  }
35
32
  }
36
- /**
37
- * VisibleBase 运行时容器。
38
- *
39
- * 接收 Service 注册、构建 Hono 路由、管理初始化生命周期。
40
- * 数据库和 env 通过 Runtime 适配器注入,不依赖任何特定运行时。
41
- */
42
33
  export declare class Base {
43
34
  private readonly runtime;
44
35
  private readonly services;
@@ -49,43 +40,13 @@ export declare class Base {
49
40
  private hono?;
50
41
  private authenticator?;
51
42
  constructor(options: BaseOptions);
52
- /**
53
- * 注册一个 Service。
54
- *
55
- * Service 在 Base 初始化时自动获得数据库、鉴权器、env 等基础设施。
56
- */
57
43
  use(svc: Service | BasePlugin): this;
58
- /** 获取指定 ID 的 Service */
59
44
  getService(id: string): Service | undefined;
60
- /** 获取所有已注册的 Service */
61
45
  getServices(): Service[];
62
46
  getAuthenticator(): Promise<Authenticator>;
63
- /**
64
- * 获取指定名称的数据库表 API。
65
- *
66
- * @param name - 表名(格式为 "service_id.table_name" 或内置表名)
67
- */
68
47
  table<TRow extends Record<string, unknown> = Record<string, unknown>>(name: string): Promise<BaseTableApi<TRow>>;
69
- /**
70
- * 获取 Hono 路由实例(需先完成初始化)。
71
- *
72
- * 路由可以直接挂载到任何支持 fetch 的 HTTP 服务器:
73
- * ```ts
74
- * // Node.js
75
- * serve({ fetch: base.router().fetch, port: 3000 });
76
- *
77
- * // Cloudflare Workers
78
- * export default { fetch: base.router().fetch };
79
- * ```
80
- */
81
48
  router(): Hono;
82
- /**
83
- * 直接处理一个 Request(用于 Serverless 场景)。
84
- */
85
49
  handleRequest(request: Request): Promise<Response>;
86
- /**
87
- * 健康检查。
88
- */
89
50
  health(): Promise<BaseHealthStatus>;
90
51
  private initialize;
91
52
  private collectServiceSchemas;
@@ -93,6 +54,13 @@ export declare class Base {
93
54
  private ensureReady;
94
55
  private requireReadySync;
95
56
  private requireReady;
57
+ /**
58
+ * 收集插件注册的全局 hook。
59
+ *
60
+ * Service.hook 只作用于当前 Service;Plugin.globalHook 用于 usage、
61
+ * billing 等需要观察所有用户侧调用的横切能力。
62
+ */
63
+ private globalPluginHooks;
96
64
  }
97
65
  export { Base as VisibleBase };
98
66
  //# sourceMappingURL=base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/core/base/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAqC,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAAE,OAAO,EAA2C,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAOpD,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAU,kBAAkB;QAC1B,IAAI,CAAC,EAAE,WAAW,CAAC;QACnB,OAAO,CAAC,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAClD;CACF;AAMD;;;;;GAKG;AACH,qBAAa,IAAI;IACf,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IAEvD,OAAO,CAAC,QAAQ,CAAC,CAAuC;IACxD,OAAO,CAAC,MAAM,CAAC,CAAoD;IACnE,OAAO,CAAC,QAAQ,CAAC,CAA4B;IAC7C,OAAO,CAAC,WAAW,CAAC,CAAgB;IACpC,OAAO,CAAC,IAAI,CAAC,CAAO;IACpB,OAAO,CAAC,aAAa,CAAC,CAAgB;gBAE1B,OAAO,EAAE,WAAW;IAWhC;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI;IAMpC,wBAAwB;IACxB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI3C,uBAAuB;IACvB,WAAW,IAAI,OAAO,EAAE;IAQlB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC;IAShD;;;;OAIG;IACG,KAAK,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxE,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAW9B;;;;;;;;;;;OAWG;IACH,MAAM,IAAI,IAAI;IAKd;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKxD;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC;YAgB3B,UAAU;IAsDxB,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,SAAS;YA8DH,WAAW;IAKzB,OAAO,CAAC,gBAAgB;YAIV,YAAY;CAK3B;AAED,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/core/base/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAqC,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAAE,OAAO,EAAgB,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAU,kBAAkB;QAC1B,IAAI,CAAC,EAAE,WAAW,CAAC;QACnB,OAAO,CAAC,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAClD;CACF;AAED,qBAAa,IAAI;IACf,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IAEvD,OAAO,CAAC,QAAQ,CAAC,CAAuC;IACxD,OAAO,CAAC,MAAM,CAAC,CAAoD;IACnE,OAAO,CAAC,QAAQ,CAAC,CAA4B;IAC7C,OAAO,CAAC,WAAW,CAAC,CAAgB;IACpC,OAAO,CAAC,IAAI,CAAC,CAAO;IACpB,OAAO,CAAC,aAAa,CAAC,CAAgB;gBAE1B,OAAO,EAAE,WAAW;IAWhC,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI;IAMpC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI3C,WAAW,IAAI,OAAO,EAAE;IAQlB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC;IAS1C,KAAK,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxE,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAW9B,MAAM,IAAI,IAAI;IAKR,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKlD,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC;YAgB3B,UAAU;IA8CxB,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,SAAS;YAqIH,WAAW;IAKzB,OAAO,CAAC,gBAAgB;YAIV,YAAY;IAM1B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;CAK1B;AAED,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,CAAC"}
@@ -1,11 +1,9 @@
1
1
  /**
2
2
  * Base Runtime 主模块。
3
3
  *
4
- * Base 是运行时容器,只负责:Service 路由、鉴权、HTTP
4
+ * Base 是运行时容器,负责:Service 生命周期、鉴权、HTTP 桥接。
5
5
  * 不知道任何具体 Service 的实现,所有 Service 通过 _onInit() 自初始化。
6
6
  *
7
- * 数据库连接、环境变量存储等运行时特定逻辑由 Runtime 适配器注入。
8
- *
9
7
  * 使用方式:
10
8
  * ```ts
11
9
  * import { Base } from "@visiblebase/core";
@@ -13,26 +11,15 @@
13
11
  *
14
12
  * const base = new Base({ runtime: node({ database: "sqlite:./data.sqlite" }) });
15
13
  * base.use(new AIService());
16
- * // 路由始终是标准 Hono app
17
14
  * serve({ fetch: base.router().fetch, port: 3000 });
18
15
  * ```
19
16
  */
20
17
  import { Hono } from "hono";
21
18
  import { executeDDL } from "../../store/db.js";
22
19
  import { TableApi, buildCreateUserTableSQL } from "../../store/table-api.js";
23
- import { serviceRouteFullPath } from "../../service/service.js";
24
- import { asPlugin } from "../../service/plugin.js";
20
+ import { asPlugin, Plugin } from "../../service/plugin.js";
25
21
  import { Authenticator } from "../auth/authenticator.js";
26
22
  import { randomSecret, bearerToken } from "../../utils/helpers.js";
27
- // ===========================================================================
28
- // Base
29
- // ===========================================================================
30
- /**
31
- * VisibleBase 运行时容器。
32
- *
33
- * 接收 Service 注册、构建 Hono 路由、管理初始化生命周期。
34
- * 数据库和 env 通过 Runtime 适配器注入,不依赖任何特定运行时。
35
- */
36
23
  export class Base {
37
24
  runtime;
38
25
  services = new Map();
@@ -51,21 +38,14 @@ export class Base {
51
38
  // ===========================================================================
52
39
  // Service 注册
53
40
  // ===========================================================================
54
- /**
55
- * 注册一个 Service。
56
- *
57
- * Service 在 Base 初始化时自动获得数据库、鉴权器、env 等基础设施。
58
- */
59
41
  use(svc) {
60
42
  const service = "install" in svc && !("get" in svc) ? asPlugin(svc) : svc;
61
43
  this.services.set(service.id, service);
62
44
  return this;
63
45
  }
64
- /** 获取指定 ID 的 Service */
65
46
  getService(id) {
66
47
  return this.services.get(id);
67
48
  }
68
- /** 获取所有已注册的 Service */
69
49
  getServices() {
70
50
  return [...this.services.values()];
71
51
  }
@@ -79,11 +59,6 @@ export class Base {
79
59
  // ===========================================================================
80
60
  // 表操作
81
61
  // ===========================================================================
82
- /**
83
- * 获取指定名称的数据库表 API。
84
- *
85
- * @param name - 表名(格式为 "service_id.table_name" 或内置表名)
86
- */
87
62
  async table(name) {
88
63
  await this.ensureReady();
89
64
  const api = this.tableMap.get(name);
@@ -94,32 +69,14 @@ export class Base {
94
69
  // ===========================================================================
95
70
  // HTTP
96
71
  // ===========================================================================
97
- /**
98
- * 获取 Hono 路由实例(需先完成初始化)。
99
- *
100
- * 路由可以直接挂载到任何支持 fetch 的 HTTP 服务器:
101
- * ```ts
102
- * // Node.js
103
- * serve({ fetch: base.router().fetch, port: 3000 });
104
- *
105
- * // Cloudflare Workers
106
- * export default { fetch: base.router().fetch };
107
- * ```
108
- */
109
72
  router() {
110
73
  this.requireReadySync();
111
74
  return this.hono;
112
75
  }
113
- /**
114
- * 直接处理一个 Request(用于 Serverless 场景)。
115
- */
116
76
  async handleRequest(request) {
117
77
  await this.ensureReady();
118
78
  return this.hono.fetch(request);
119
79
  }
120
- /**
121
- * 健康检查。
122
- */
123
80
  async health() {
124
81
  await this.ensureReady();
125
82
  const services = this.getServices();
@@ -132,57 +89,51 @@ export class Base {
132
89
  };
133
90
  }
134
91
  // ===========================================================================
135
- // 初始化(完全通用,不知道任何具体 Service)
92
+ // 初始化
136
93
  // ===========================================================================
137
94
  async initialize() {
138
95
  const { database, client, env, builtinTables } = this.runtime;
139
96
  this.database = database;
140
97
  this.client = { $client: client };
141
- // 1. 收集所有 Service 的 tables + 内置表
142
98
  const userSchema = this.collectServiceSchemas();
143
- // 2. 创建 TableApi(内置表 + 用户表)
144
99
  this.tableMap = new Map();
145
- // 内置表
146
100
  this.tableMap.set("products", new TableApi(database, builtinTables.products));
147
101
  this.tableMap.set("env", new TableApi(database, builtinTables.env));
148
- // 用户表(scoped: "service_id.table_name")
149
102
  for (const [name, table] of Object.entries(userSchema)) {
150
103
  this.tableMap.set(name, new TableApi(database, table));
151
104
  }
152
- // 3. 执行 DDL
153
105
  for (const t of this.tableMap.values()) {
154
106
  const ddl = buildCreateUserTableSQL(t.schema);
155
107
  if (ddl)
156
108
  await executeDDL(this.client, ddl);
157
109
  }
158
- // 4. Bootstrap 默认密钥(如果 EnvProvider 支持持久化)
159
- await bootstrapDefaultKeys(env);
160
- // 5. 关联 EnvStore 到 EnvProvider(数据库中的值优先级更高)
161
110
  if (env.attachStore) {
162
111
  const envStoreModule = await import("../../service/env/env-store.js");
163
112
  const envTable = this.tableMap.get("env");
164
113
  const store = new envStoreModule.EnvStore(envTable);
165
114
  await env.attachStore(store);
166
115
  }
167
- // 6. 创建鉴权器
116
+ // bootstrap 必须在 attachStore 之后,确保 key 持久化到 D1
117
+ await bootstrapDefaultKeys(env, this.runtime.raw);
168
118
  this.authenticator = new Authenticator(env, () => this.requireReady());
169
- // 7. 设置 Service 基础设施 + 调用 _onInit
170
119
  for (const svc of this.services.values()) {
171
120
  svc._db = database;
172
121
  svc._client = this.client;
173
122
  svc._authenticator = this.authenticator;
174
123
  svc._env = env;
124
+ svc._raw = this.runtime.raw;
125
+ svc._baseURL = this.runtime.baseURL;
175
126
  await svc._onInit();
176
127
  }
177
- // 8. 构建 Hono 路由
178
128
  this.hono = this.buildHono();
179
129
  }
180
130
  collectServiceSchemas() {
181
131
  const collected = {};
182
132
  for (const svc of this.services.values()) {
183
- if (!svc.tables)
133
+ const tables = svc.tables ?? svc.schema;
134
+ if (!tables)
184
135
  continue;
185
- for (const [name, table] of Object.entries(svc.tables)) {
136
+ for (const [name, table] of Object.entries(tables)) {
186
137
  const scopedName = `${svc.id}.${name}`;
187
138
  if (collected[scopedName]) {
188
139
  throw new Error(`Duplicate schema table "${scopedName}" from services: ${svc.id}`);
@@ -192,50 +143,115 @@ export class Base {
192
143
  }
193
144
  return collected;
194
145
  }
146
+ // ===========================================================================
147
+ // Hono 路由构建 — HTTP 桥接内化
148
+ // ===========================================================================
195
149
  buildHono() {
196
150
  const app = new Hono();
197
- app.get("/health", (c) => {
198
- const services = this.getServices();
199
- return c.json({
200
- ok: true,
201
- name: "visiblebase",
202
- checked_at: new Date().toISOString(),
203
- services: services.map((s) => s.id),
204
- service_list: services.map((s) => ({ id: s.id, name: s.name })),
205
- });
206
- });
151
+ // 健康检查
152
+ app.get("/health", (c) => c.json({
153
+ ok: true, name: "visiblebase",
154
+ checked_at: new Date().toISOString(),
155
+ services: this.getServices().map((s) => s.id),
156
+ service_list: this.getServices().map((s) => ({ id: s.id, name: s.name })),
157
+ }));
158
+ // Admin 鉴权中间件(硬拦)
207
159
  app.use("/api/admin/*", async (c, next) => {
208
160
  await this.authenticator.authenticate(c.req.raw, "admin");
209
161
  await next();
210
162
  });
163
+ // User 鉴权中间件(提取,不拦)
211
164
  app.use("/v1/*", async (c, next) => {
212
165
  const token = bearerToken(c.req.raw);
213
166
  if (token) {
214
- const result = await this.authenticator.authenticate(c.req.raw, "user");
215
- c.set("user", result.user);
216
- c.set("product", result.product);
167
+ try {
168
+ const result = await this.authenticator.authenticate(c.req.raw, "user");
169
+ c.set("user", result.user);
170
+ c.set("product", result.product);
171
+ }
172
+ catch {
173
+ // token 无效(可能是 admin key 或其他),不设 user/product,放行
174
+ }
217
175
  }
218
176
  await next();
219
177
  });
220
- app.get("/v1/services", (c) => c.json({ items: this.getServices().map((s) => s.id) }));
178
+ // Service 列表
179
+ app.get("/v1/services", (c) => c.json({
180
+ items: this.getServices().map((s) => ({
181
+ id: s.id,
182
+ name: s.name,
183
+ env: s.env ?? [],
184
+ }))
185
+ }));
186
+ // 为每个 Service 的每个 Action 注册路由
221
187
  for (const svc of this.services.values()) {
222
- for (const route of svc._listRoutes()) {
223
- const fullPath = serviceRouteFullPath(svc.id, route);
224
- app.on(route.method, fullPath, async (c) => {
188
+ for (const def of svc._listActionDefs()) {
189
+ const action = def.action;
190
+ let path;
191
+ if (def.auth === "admin") {
192
+ path = `/api/admin/services/${encodeURIComponent(svc.id)}/${action.id}`;
193
+ }
194
+ else {
195
+ path = `/v1/s/${encodeURIComponent(svc.id)}/${action.id}`;
196
+ }
197
+ const register = def.method === "GET" ? app.get.bind(app) : app.post.bind(app);
198
+ register(path, async (c) => {
199
+ // 鉴权强制
200
+ if (def.auth === "user" && !c.get("user")) {
201
+ return c.json({ error: { message: "Authentication required", type: "authentication_error" } }, 401);
202
+ }
203
+ let rawBody;
204
+ const input = def.method === "GET"
205
+ ? searchParamsToObject(new URL(c.req.raw.url).searchParams)
206
+ : parseRequestInput(rawBody = await c.req.text().catch(() => ""));
207
+ const db = {};
208
+ if (svc.tables) {
209
+ for (const name of Object.keys(svc.tables)) {
210
+ db[name] = this.tableMap.get(`${svc.id}.${name}`);
211
+ }
212
+ }
225
213
  const ctx = {
214
+ input,
226
215
  request: c.req.raw,
227
- url: new URL(c.req.url),
228
- service_id: svc.id,
229
- route,
216
+ raw_body: rawBody,
217
+ db,
230
218
  user: c.get("user"),
231
219
  product: c.get("product"),
232
- json: () => c.req.json(),
233
- text: () => c.req.text(),
234
- jsonResponse: (body, status) => c.json(body, status),
235
- table: async (name) => this.tableMap.get(`${svc.id}.${name}`),
236
220
  env: (key) => this.runtime.env.get(key),
221
+ service: { id: svc.id, name: svc.name },
222
+ action: { id: action.id },
223
+ started_at: new Date(),
237
224
  };
238
- return route.handler(ctx);
225
+ try {
226
+ for (const hook of this.globalPluginHooks()) {
227
+ await hook.runBefore(ctx);
228
+ }
229
+ await action.hook.runBefore(ctx);
230
+ await svc.hook.runBefore(ctx);
231
+ const output = await action.run(ctx);
232
+ ctx.output = output;
233
+ ctx.ended_at = new Date();
234
+ await svc.hook.runAfter(ctx);
235
+ await action.hook.runAfter(ctx);
236
+ for (const hook of this.globalPluginHooks()) {
237
+ await hook.runAfter(ctx);
238
+ }
239
+ if (output instanceof Response)
240
+ return output;
241
+ return c.json(output, 200);
242
+ }
243
+ catch (error) {
244
+ ctx.ended_at = new Date();
245
+ ctx.error = error instanceof Error ? error : new Error(String(error));
246
+ await svc.hook.runOnError(ctx);
247
+ await action.hook.runOnError(ctx);
248
+ for (const hook of this.globalPluginHooks()) {
249
+ await hook.runOnError(ctx);
250
+ }
251
+ const message = error instanceof Error ? error.message : String(error);
252
+ const status = error.statusCode ?? 500;
253
+ return c.json({ error: { message, type: "server_error" } }, status);
254
+ }
239
255
  });
240
256
  }
241
257
  }
@@ -258,24 +274,66 @@ export class Base {
258
274
  const products = this.services.get("products");
259
275
  return { product: products?.store ?? { get: () => Promise.resolve(undefined) } };
260
276
  }
277
+ /**
278
+ * 收集插件注册的全局 hook。
279
+ *
280
+ * Service.hook 只作用于当前 Service;Plugin.globalHook 用于 usage、
281
+ * billing 等需要观察所有用户侧调用的横切能力。
282
+ */
283
+ globalPluginHooks() {
284
+ return [...this.services.values()]
285
+ .filter((svc) => svc instanceof Plugin)
286
+ .map((svc) => svc.globalHook);
287
+ }
261
288
  }
262
289
  export { Base as VisibleBase };
263
- // ===========================================================================
264
- // 默认密钥 Bootstrap
265
- // ===========================================================================
266
290
  /**
267
- * 自动生成 Base 必需的默认密钥(ADMIN_SECRET_KEY、TOKEN_SIGNING_KEY)。
291
+ * 解析请求输入。
268
292
  *
269
- * 仅在 .env / Secrets 中没有对应值时才生成,降低首次启动配置成本。
293
+ * Base Action input 仍以 JSON object 为主;同时保留 raw body 给
294
+ * webhook 验签等需要原文的插件使用。
270
295
  */
271
- async function bootstrapDefaultKeys(env) {
272
- const ADMIN_SECRET_KEY = "VISIBLEBASE_ADMIN_SECRET_KEY";
273
- const TOKEN_SIGNING_KEY = "VISIBLEBASE_TOKEN_SIGNING_KEY";
274
- if (!env.get(ADMIN_SECRET_KEY)) {
275
- await env.upsert({ key: ADMIN_SECRET_KEY, value: `admin_${randomSecret()}` });
296
+ function parseRequestInput(rawBody) {
297
+ if (!rawBody)
298
+ return {};
299
+ try {
300
+ const parsed = JSON.parse(rawBody);
301
+ return parsed && typeof parsed === "object" && !Array.isArray(parsed)
302
+ ? parsed
303
+ : {};
276
304
  }
277
- if (!env.get(TOKEN_SIGNING_KEY)) {
278
- await env.upsert({ key: TOKEN_SIGNING_KEY, value: `sign_${randomSecret()}` });
305
+ catch {
306
+ return {};
279
307
  }
280
308
  }
309
+ /**
310
+ * 将 URLSearchParams 转成普通对象。
311
+ *
312
+ * 不使用 searchParams.entries(),避免部分 TypeScript lib 配置缺少
313
+ * DOM.Iterable 时在 CI 中报类型错误。
314
+ */
315
+ function searchParamsToObject(searchParams) {
316
+ const result = {};
317
+ searchParams.forEach((value, key) => {
318
+ result[key] = value;
319
+ });
320
+ return result;
321
+ }
322
+ /**
323
+ * 确保系统必需的 env key 存在(admin key、token signing key)。
324
+ * 直接写 D1 + 同步内存缓存。
325
+ */
326
+ async function bootstrapDefaultKeys(env, db) {
327
+ const now = new Date().toISOString();
328
+ const adminKey = env.get("VISIBLEBASE_ADMIN_SECRET_KEY") || `admin_${randomSecret()}`;
329
+ await db.prepare("INSERT OR REPLACE INTO visiblebase_env (key, value, created_at, updated_at) VALUES (?, ?, ?, ?)")
330
+ .bind("VISIBLEBASE_ADMIN_SECRET_KEY", adminKey, now, now).run();
331
+ if (!env.get("VISIBLEBASE_ADMIN_SECRET_KEY"))
332
+ await env.upsert({ key: "VISIBLEBASE_ADMIN_SECRET_KEY", value: adminKey });
333
+ const tokenKey = env.get("VISIBLEBASE_TOKEN_SIGNING_KEY") || `sign_${randomSecret()}`;
334
+ await db.prepare("INSERT OR REPLACE INTO visiblebase_env (key, value, created_at, updated_at) VALUES (?, ?, ?, ?)")
335
+ .bind("VISIBLEBASE_TOKEN_SIGNING_KEY", tokenKey, now, now).run();
336
+ if (!env.get("VISIBLEBASE_TOKEN_SIGNING_KEY"))
337
+ await env.upsert({ key: "VISIBLEBASE_TOKEN_SIGNING_KEY", value: tokenKey });
338
+ }
281
339
  //# sourceMappingURL=base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/core/base/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/core/base/base.ts"],"names":[],"mappings":"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"}
@@ -108,5 +108,15 @@ export interface Runtime {
108
108
  * 适配器根据数据库类型提供正确的 Drizzle 表定义。
109
109
  */
110
110
  builtinTables: BuiltinTables;
111
+ /**
112
+ * 原始数据库实例(better-sqlite3 Database / D1Database 等)。
113
+ * 供 better-auth 等第三方库直接使用。
114
+ */
115
+ raw?: unknown;
116
+ /**
117
+ * 服务公网 URL(http://localhost:43127 或 https://xxx.workers.dev)。
118
+ * 用于 OAuth callback、邮件链接等。
119
+ */
120
+ baseURL?: string;
111
121
  }
112
122
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/core/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,+BAA+B;AAC/B,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,UAAU,CAAC;AAMnD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAErC;;OAEG;IACH,IAAI,IAAI,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEzC;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEjD;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE1C;;;;;;;OAOG;IACH,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAMD;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU;IACV,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY;IACZ,GAAG,EAAE,QAAQ,CAAC;CACf;AAMD;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB;;;;OAIG;IACH,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;OAEG;IACH,MAAM,EAAE,QAAQ,CAAC;IAEjB;;;;OAIG;IACH,GAAG,EAAE,WAAW,CAAC;IAEjB;;;;OAIG;IACH,aAAa,EAAE,aAAa,CAAC;CAC9B"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/core/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,+BAA+B;AAC/B,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,UAAU,CAAC;AAMnD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAErC;;OAEG;IACH,IAAI,IAAI,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEzC;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEjD;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE1C;;;;;;;OAOG;IACH,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAMD;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU;IACV,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY;IACZ,GAAG,EAAE,QAAQ,CAAC;CACf;AAMD;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB;;;;OAIG;IACH,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;OAEG;IACH,MAAM,EAAE,QAAQ,CAAC;IAEjB;;;;OAIG;IACH,GAAG,EAAE,WAAW,CAAC;IAEjB;;;;OAIG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IAEd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
package/bin/index.d.ts CHANGED
@@ -1,27 +1,18 @@
1
1
  /**
2
2
  * @visiblebase/core 公共入口。
3
- *
4
- * 按使用场景组织导出,方便开发者按需查找。
5
- *
6
- * 使用方式:
7
- * ```ts
8
- * import { Base, Service, AIService, type Context } from "@visiblebase/core";
9
- * import { node } from "@visiblebase/node";
10
- *
11
- * const base = new Base({ runtime: node({ database: "sqlite:./data.sqlite" }) });
12
- * ```
13
3
  */
14
4
  export { Base, VisibleBase } from "./core/base/base.js";
15
5
  export type { BaseOptions, BaseHealthStatus } from "./core/types.js";
16
6
  export type { Runtime, EnvProvider, BuiltinTables, TableDef } from "./core/runtime.js";
17
7
  export { Service } from "./service/service.js";
18
8
  export { Plugin } from "./service/plugin.js";
19
- export type { Context, Handler, RouteAuth, EnvRequirement, } from "./service/service.js";
20
- export type { BasePlugin, BasePluginContext, PluginRouteContext, ServiceContext, } from "./service/plugin.js";
9
+ export { Action } from "./service/action.js";
10
+ export type { Context, RouteAuth, EnvRequirement, } from "./service/service.js";
11
+ export type { ActionFn, HookFn, } from "./service/action.js";
12
+ export type { BasePlugin, BasePluginContext, PluginRouteContext, } from "./service/plugin.js";
21
13
  export { AIService } from "./service/ai/ai-service.js";
22
14
  export { Provider } from "./service/ai/provider.js";
23
- export type { ModelConfig, ModelHandlers, PublicModel, } from "./service/ai/types.js";
24
- export type { HookFn, ServiceHandler, } from "./service/types.js";
15
+ export type { ModelConfig, ModelActions, PublicModel, } from "./service/ai/types.js";
25
16
  export { TokenSigner } from "./core/auth/token-signer.js";
26
17
  export type { RuntimeUser, CreateUserTokenInput, UserTokenPayload, UserTokenIssueResult, } from "./core/auth/types.js";
27
18
  export { EnvService } from "./service/env/env-service.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAExD,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAErE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAMvF,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,YAAY,EACV,OAAO,EACP,OAAO,EACP,SAAS,EACT,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAM/B,YAAY,EACV,MAAM,EACN,cAAc,GACf,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAM9F,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAM5D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAM3D,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,eAAe,EACf,WAAW,EACX,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAMvF,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,YAAY,EACV,OAAO,EACP,SAAS,EACT,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EACV,QAAQ,EACR,MAAM,GACP,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,YAAY,EACV,WAAW,EACX,YAAY,EACZ,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAM9F,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAM5D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAM3D,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,eAAe,EACf,WAAW,EACX,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}