@aigne/afs-sqlite 1.11.0-beta → 1.11.0-beta.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.
Files changed (95) hide show
  1. package/LICENSE.md +17 -84
  2. package/README.md +0 -3
  3. package/dist/actions/built-in.cjs +142 -0
  4. package/dist/actions/built-in.d.cts +10 -0
  5. package/dist/actions/built-in.d.cts.map +1 -0
  6. package/dist/actions/built-in.d.mts +10 -0
  7. package/dist/actions/built-in.d.mts.map +1 -0
  8. package/dist/actions/built-in.mjs +143 -0
  9. package/dist/actions/built-in.mjs.map +1 -0
  10. package/dist/actions/registry.cjs +91 -0
  11. package/dist/actions/registry.d.cts +54 -0
  12. package/dist/actions/registry.d.cts.map +1 -0
  13. package/dist/actions/registry.d.mts +54 -0
  14. package/dist/actions/registry.d.mts.map +1 -0
  15. package/dist/actions/registry.mjs +91 -0
  16. package/dist/actions/registry.mjs.map +1 -0
  17. package/dist/actions/types.d.cts +56 -0
  18. package/dist/actions/types.d.cts.map +1 -0
  19. package/dist/actions/types.d.mts +56 -0
  20. package/dist/actions/types.d.mts.map +1 -0
  21. package/dist/config.cjs +27 -0
  22. package/dist/config.d.cts +81 -0
  23. package/dist/config.d.cts.map +1 -0
  24. package/dist/config.d.mts +81 -0
  25. package/dist/config.d.mts.map +1 -0
  26. package/dist/config.mjs +28 -0
  27. package/dist/config.mjs.map +1 -0
  28. package/dist/index.cjs +38 -1324
  29. package/dist/index.d.cts +14 -758
  30. package/dist/index.d.mts +14 -758
  31. package/dist/index.mjs +12 -1299
  32. package/dist/node/builder.cjs +179 -0
  33. package/dist/node/builder.d.cts +48 -0
  34. package/dist/node/builder.d.cts.map +1 -0
  35. package/dist/node/builder.d.mts +48 -0
  36. package/dist/node/builder.d.mts.map +1 -0
  37. package/dist/node/builder.mjs +172 -0
  38. package/dist/node/builder.mjs.map +1 -0
  39. package/dist/operations/crud.cjs +176 -0
  40. package/dist/operations/crud.d.cts +69 -0
  41. package/dist/operations/crud.d.cts.map +1 -0
  42. package/dist/operations/crud.d.mts +69 -0
  43. package/dist/operations/crud.d.mts.map +1 -0
  44. package/dist/operations/crud.mjs +177 -0
  45. package/dist/operations/crud.mjs.map +1 -0
  46. package/dist/operations/query-builder.cjs +77 -0
  47. package/dist/operations/query-builder.d.cts +34 -0
  48. package/dist/operations/query-builder.d.cts.map +1 -0
  49. package/dist/operations/query-builder.d.mts +34 -0
  50. package/dist/operations/query-builder.d.mts.map +1 -0
  51. package/dist/operations/query-builder.mjs +72 -0
  52. package/dist/operations/query-builder.mjs.map +1 -0
  53. package/dist/operations/search.cjs +141 -0
  54. package/dist/operations/search.d.cts +79 -0
  55. package/dist/operations/search.d.cts.map +1 -0
  56. package/dist/operations/search.d.mts +79 -0
  57. package/dist/operations/search.d.mts.map +1 -0
  58. package/dist/operations/search.mjs +141 -0
  59. package/dist/operations/search.mjs.map +1 -0
  60. package/dist/router/path-router.cjs +79 -0
  61. package/dist/router/path-router.d.cts +42 -0
  62. package/dist/router/path-router.d.cts.map +1 -0
  63. package/dist/router/path-router.d.mts +42 -0
  64. package/dist/router/path-router.d.mts.map +1 -0
  65. package/dist/router/path-router.mjs +76 -0
  66. package/dist/router/path-router.mjs.map +1 -0
  67. package/dist/router/types.d.cts +34 -0
  68. package/dist/router/types.d.cts.map +1 -0
  69. package/dist/router/types.d.mts +34 -0
  70. package/dist/router/types.d.mts.map +1 -0
  71. package/dist/schema/introspector.cjs +160 -0
  72. package/dist/schema/introspector.d.cts +49 -0
  73. package/dist/schema/introspector.d.cts.map +1 -0
  74. package/dist/schema/introspector.d.mts +49 -0
  75. package/dist/schema/introspector.d.mts.map +1 -0
  76. package/dist/schema/introspector.mjs +161 -0
  77. package/dist/schema/introspector.mjs.map +1 -0
  78. package/dist/schema/types.cjs +15 -0
  79. package/dist/schema/types.d.cts +104 -0
  80. package/dist/schema/types.d.cts.map +1 -0
  81. package/dist/schema/types.d.mts +104 -0
  82. package/dist/schema/types.d.mts.map +1 -0
  83. package/dist/schema/types.mjs +15 -0
  84. package/dist/schema/types.mjs.map +1 -0
  85. package/dist/sqlite-afs.cjs +264 -0
  86. package/dist/sqlite-afs.d.cts +152 -0
  87. package/dist/sqlite-afs.d.cts.map +1 -0
  88. package/dist/sqlite-afs.d.mts +152 -0
  89. package/dist/sqlite-afs.d.mts.map +1 -0
  90. package/dist/sqlite-afs.mjs +265 -0
  91. package/dist/sqlite-afs.mjs.map +1 -0
  92. package/package.json +3 -3
  93. package/dist/index.d.cts.map +0 -1
  94. package/dist/index.d.mts.map +0 -1
  95. package/dist/index.mjs.map +0 -1
@@ -0,0 +1,152 @@
1
+ import { TableSchema } from "./schema/types.mjs";
2
+ import { ActionContext } from "./actions/types.mjs";
3
+ import { SQLiteAFSOptions } from "./config.mjs";
4
+ import { AFSAccessMode, AFSDeleteOptions, AFSDeleteResult, AFSExecOptions, AFSExecResult, AFSListOptions, AFSListResult, AFSModule, AFSModuleLoadParams, AFSReadOptions, AFSReadResult, AFSRoot, AFSSearchOptions, AFSSearchResult, AFSWriteEntryPayload, AFSWriteOptions, AFSWriteResult } from "@aigne/afs";
5
+ import * as zod0 from "zod";
6
+ import { LibSQLDatabase } from "drizzle-orm/libsql";
7
+
8
+ //#region src/sqlite-afs.d.ts
9
+ /**
10
+ * SQLite AFS Module
11
+ *
12
+ * Exposes SQLite databases as AFS nodes with full CRUD support,
13
+ * schema introspection, FTS5 search, and virtual paths (@attr, @meta, @actions).
14
+ */
15
+ declare class SQLiteAFS implements AFSModule {
16
+ private options;
17
+ readonly name: string;
18
+ readonly description: string;
19
+ readonly accessMode: AFSAccessMode;
20
+ private db;
21
+ private schemas;
22
+ private router;
23
+ private crud;
24
+ private ftsSearch;
25
+ private actions;
26
+ private ftsConfig;
27
+ private initialized;
28
+ constructor(options: SQLiteAFSOptions);
29
+ /**
30
+ * Returns the Zod schema for configuration validation
31
+ */
32
+ static schema(): zod0.ZodObject<{
33
+ url: zod0.ZodString;
34
+ name: zod0.ZodOptional<zod0.ZodString>;
35
+ description: zod0.ZodOptional<zod0.ZodString>;
36
+ accessMode: zod0.ZodOptional<zod0.ZodEnum<["readonly", "readwrite"]>>;
37
+ tables: zod0.ZodOptional<zod0.ZodArray<zod0.ZodString, "many">>;
38
+ excludeTables: zod0.ZodOptional<zod0.ZodArray<zod0.ZodString, "many">>;
39
+ fts: zod0.ZodOptional<zod0.ZodObject<{
40
+ enabled: zod0.ZodDefault<zod0.ZodBoolean>;
41
+ tables: zod0.ZodOptional<zod0.ZodRecord<zod0.ZodString, zod0.ZodArray<zod0.ZodString, "many">>>;
42
+ }, "strip", zod0.ZodTypeAny, {
43
+ enabled: boolean;
44
+ tables?: Record<string, string[]> | undefined;
45
+ }, {
46
+ tables?: Record<string, string[]> | undefined;
47
+ enabled?: boolean | undefined;
48
+ }>>;
49
+ wal: zod0.ZodDefault<zod0.ZodOptional<zod0.ZodBoolean>>;
50
+ }, "strip", zod0.ZodTypeAny, {
51
+ url: string;
52
+ wal: boolean;
53
+ name?: string | undefined;
54
+ description?: string | undefined;
55
+ accessMode?: "readonly" | "readwrite" | undefined;
56
+ tables?: string[] | undefined;
57
+ excludeTables?: string[] | undefined;
58
+ fts?: {
59
+ enabled: boolean;
60
+ tables?: Record<string, string[]> | undefined;
61
+ } | undefined;
62
+ }, {
63
+ url: string;
64
+ name?: string | undefined;
65
+ description?: string | undefined;
66
+ accessMode?: "readonly" | "readwrite" | undefined;
67
+ tables?: string[] | undefined;
68
+ excludeTables?: string[] | undefined;
69
+ fts?: {
70
+ tables?: Record<string, string[]> | undefined;
71
+ enabled?: boolean | undefined;
72
+ } | undefined;
73
+ wal?: boolean | undefined;
74
+ }>;
75
+ /**
76
+ * Loads a module instance from configuration
77
+ */
78
+ static load({
79
+ parsed
80
+ }: AFSModuleLoadParams): Promise<SQLiteAFS>;
81
+ /**
82
+ * Called when the module is mounted to AFS
83
+ */
84
+ onMount(_afs: AFSRoot): Promise<void>;
85
+ /**
86
+ * Initializes the database connection and introspects schema
87
+ */
88
+ private initialize;
89
+ /**
90
+ * Ensures the module is initialized
91
+ */
92
+ private ensureInitialized;
93
+ /**
94
+ * Lists entries at a path
95
+ */
96
+ list(path: string, options?: AFSListOptions): Promise<AFSListResult>;
97
+ /**
98
+ * Reads an entry at a path
99
+ */
100
+ read(path: string, _options?: AFSReadOptions): Promise<AFSReadResult>;
101
+ /**
102
+ * Writes an entry at a path
103
+ */
104
+ write(path: string, content: AFSWriteEntryPayload, _options?: AFSWriteOptions): Promise<AFSWriteResult>;
105
+ /**
106
+ * Deletes an entry at a path
107
+ */
108
+ delete(path: string, _options?: AFSDeleteOptions): Promise<AFSDeleteResult>;
109
+ /**
110
+ * Searches for entries matching a query
111
+ */
112
+ search(path: string, query: string, options?: AFSSearchOptions): Promise<AFSSearchResult>;
113
+ /**
114
+ * Executes a module operation
115
+ */
116
+ exec(path: string, args: Record<string, unknown>, _options: AFSExecOptions): Promise<AFSExecResult>;
117
+ /**
118
+ * Lists available actions for a row
119
+ */
120
+ private listActions;
121
+ /**
122
+ * Executes an action
123
+ */
124
+ private executeAction;
125
+ /**
126
+ * Refreshes the schema cache
127
+ */
128
+ refreshSchema(): Promise<void>;
129
+ /**
130
+ * Exports table data in specified format
131
+ */
132
+ exportTable(table: string, format: string): Promise<unknown>;
133
+ /**
134
+ * Registers a custom action
135
+ */
136
+ registerAction(name: string, handler: (ctx: ActionContext, params: Record<string, unknown>) => Promise<unknown>, options?: {
137
+ description?: string;
138
+ tableLevel?: boolean;
139
+ rowLevel?: boolean;
140
+ }): void;
141
+ /**
142
+ * Gets table schemas (for external access)
143
+ */
144
+ getSchemas(): Map<string, TableSchema>;
145
+ /**
146
+ * Gets the database instance (for advanced operations)
147
+ */
148
+ getDatabase(): LibSQLDatabase;
149
+ }
150
+ //#endregion
151
+ export { SQLiteAFS };
152
+ //# sourceMappingURL=sqlite-afs.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-afs.d.mts","names":[],"sources":["../src/sqlite-afs.ts"],"mappings":";;;;;;;;;AAwCA;;;;;cAAa,SAAA,YAAqB,SAAA;EAAA,QAAA,OAAA;EAAA,SAAA,IAAA;EAAA,SAAA,WAAA;EAAA,SAAA,UAAA,EAGX,aAAA;EAAA,QAAA,EAAA;EAAA,QAAA,OAAA;EAAA,QAAA,MAAA;EAAA,QAAA,IAAA;EAAA,QAAA,SAAA;EAAA,QAAA,OAAA;EAAA,QAAA,SAAA;EAAA,QAAA,WAAA;EAAA,YAAA,OAAA,EAWQ,gBAAA;EAAA;;;EAAA,OAAA,OAAA,QAYhB,SAAA;IAAA,GAAA,EAZgC,IAAA,CAAA,SAAA;IAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmBf,mBAAA,GAAsB,OAAA,CAAQ,SAAA;EAAA;;;EAAA,QAAA,IAAA,EAQxC,OAAA,GAAU,OAAA;EAAA;;;EAAA,QAAA,UAAA;EAAA;;;EAAA,QAAA,iBAAA;EAAA;;;EAAA,KAAA,IAAA,UAAA,OAAA,GA8CK,cAAA,GAAiB,OAAA,CAAQ,aAAA;EAAA;;;EAAA,KAAA,IAAA,UAAA,QAAA,GAgCxB,cAAA,GAAiB,OAAA,CAAQ,aAAA;EAAA;;;EAAA,MAAA,IAAA,UAAA,OAAA,EAmClD,oBAAA,EAAA,QAAA,GACE,eAAA,GACV,OAAA,CAAQ,cAAA;EAAA;;;EAAA,OAAA,IAAA,UAAA,QAAA,GA4C2B,gBAAA,GAAmB,OAAA,CAAQ,eAAA;EAAA;;;EAAA,OAAA,IAAA,UAAA,KAAA,UAAA,OAAA,GAsBb,gBAAA,GAAmB,OAAA,CAAQ,eAAA;EAAA;;;EAAA,KAAA,IAAA,UAAA,IAAA,EAkBvE,MAAA,mBAAA,QAAA,EACI,cAAA,GACT,OAAA,CAAQ,aAAA;EAAA;;;EAAA,QAAA,WAAA;EAAA;;;EAAA,QAAA,aAAA;EAAA;;;EAAA,cAAA,GA8EY,OAAA;EAAA;;;EAAA,YAAA,KAAA,UAAA,MAAA,WAc2B,OAAA;EAAA;;;EAAA,eAAA,IAAA,UAAA,OAAA,GAAA,GAAA,EAkCjC,aAAA,EAAA,MAAA,EAAuB,MAAA,sBAA4B,OAAA,WAAA,OAAA;IAAA,WAAA;IAAA,UAAA;IAAA,QAAA;EAAA;EAAA;;;EAAA,WAAA,GAoBtD,GAAA,SAAY,WAAA;EAAA;;;EAAA,YAAA,GAOX,cAAA;AAAA"}
@@ -0,0 +1,265 @@
1
+ import { registerBuiltInActions } from "./actions/built-in.mjs";
2
+ import { ActionsRegistry } from "./actions/registry.mjs";
3
+ import { sqliteAFSConfigSchema } from "./config.mjs";
4
+ import { buildActionsListEntry } from "./node/builder.mjs";
5
+ import { CRUDOperations } from "./operations/crud.mjs";
6
+ import { FTSSearch, createFTSConfig } from "./operations/search.mjs";
7
+ import { createPathRouter, matchPath } from "./router/path-router.mjs";
8
+ import { SchemaIntrospector } from "./schema/introspector.mjs";
9
+ import { initDatabase } from "@aigne/sqlite";
10
+
11
+ //#region src/sqlite-afs.ts
12
+ /**
13
+ * SQLite AFS Module
14
+ *
15
+ * Exposes SQLite databases as AFS nodes with full CRUD support,
16
+ * schema introspection, FTS5 search, and virtual paths (@attr, @meta, @actions).
17
+ */
18
+ var SQLiteAFS = class SQLiteAFS {
19
+ name;
20
+ description;
21
+ accessMode;
22
+ db;
23
+ schemas = /* @__PURE__ */ new Map();
24
+ router;
25
+ crud;
26
+ ftsSearch;
27
+ actions;
28
+ ftsConfig;
29
+ initialized = false;
30
+ constructor(options) {
31
+ this.options = options;
32
+ this.name = options.name ?? "sqlite-afs";
33
+ this.description = options.description ?? `SQLite database: ${options.url}`;
34
+ this.accessMode = options.accessMode ?? "readwrite";
35
+ this.ftsConfig = createFTSConfig(options.fts);
36
+ this.actions = new ActionsRegistry();
37
+ registerBuiltInActions(this.actions);
38
+ }
39
+ /**
40
+ * Returns the Zod schema for configuration validation
41
+ */
42
+ static schema() {
43
+ return sqliteAFSConfigSchema;
44
+ }
45
+ /**
46
+ * Loads a module instance from configuration
47
+ */
48
+ static async load({ parsed }) {
49
+ return new SQLiteAFS(sqliteAFSConfigSchema.parse(parsed));
50
+ }
51
+ /**
52
+ * Called when the module is mounted to AFS
53
+ */
54
+ async onMount(_afs) {
55
+ await this.initialize();
56
+ }
57
+ /**
58
+ * Initializes the database connection and introspects schema
59
+ */
60
+ async initialize() {
61
+ if (this.initialized) return;
62
+ this.db = await initDatabase({
63
+ url: this.options.url,
64
+ wal: this.options.wal ?? true
65
+ });
66
+ const db = this.db;
67
+ this.schemas = await new SchemaIntrospector().introspect(db, {
68
+ tables: this.options.tables,
69
+ excludeTables: this.options.excludeTables
70
+ });
71
+ this.router = createPathRouter();
72
+ this.crud = new CRUDOperations(db, this.schemas, "");
73
+ this.ftsSearch = new FTSSearch(db, this.schemas, this.ftsConfig, "");
74
+ this.initialized = true;
75
+ }
76
+ /**
77
+ * Ensures the module is initialized
78
+ */
79
+ async ensureInitialized() {
80
+ if (!this.initialized) await this.initialize();
81
+ }
82
+ /**
83
+ * Lists entries at a path
84
+ */
85
+ async list(path, options) {
86
+ await this.ensureInitialized();
87
+ const match = matchPath(this.router, path);
88
+ if (!match) return { data: [] };
89
+ switch (match.action) {
90
+ case "listTables": return this.crud.listTables();
91
+ case "listTable":
92
+ if (!match.params.table) return { data: [] };
93
+ return this.crud.listTable(match.params.table, options);
94
+ case "listAttributes":
95
+ if (!match.params.table || !match.params.pk) return { data: [] };
96
+ return this.crud.listAttributes(match.params.table, match.params.pk);
97
+ case "listActions":
98
+ if (!match.params.table || !match.params.pk) return { data: [] };
99
+ return this.listActions(match.params.table, match.params.pk);
100
+ default: return { data: [] };
101
+ }
102
+ }
103
+ /**
104
+ * Reads an entry at a path
105
+ */
106
+ async read(path, _options) {
107
+ await this.ensureInitialized();
108
+ const match = matchPath(this.router, path);
109
+ if (!match) return {};
110
+ switch (match.action) {
111
+ case "readRow":
112
+ if (!match.params.table || !match.params.pk) return {};
113
+ return this.crud.readRow(match.params.table, match.params.pk);
114
+ case "getSchema":
115
+ if (!match.params.table) return {};
116
+ return this.crud.getSchema(match.params.table);
117
+ case "getAttribute":
118
+ if (!match.params.table || !match.params.pk || !match.params.column) return {};
119
+ return this.crud.getAttribute(match.params.table, match.params.pk, match.params.column);
120
+ case "getMeta":
121
+ if (!match.params.table || !match.params.pk) return {};
122
+ return this.crud.getMeta(match.params.table, match.params.pk);
123
+ default: return {};
124
+ }
125
+ }
126
+ /**
127
+ * Writes an entry at a path
128
+ */
129
+ async write(path, content, _options) {
130
+ await this.ensureInitialized();
131
+ if (this.accessMode === "readonly") throw new Error("Module is in readonly mode");
132
+ const match = matchPath(this.router, path);
133
+ if (!match) throw new Error(`Invalid path: ${path}`);
134
+ switch (match.action) {
135
+ case "createRow":
136
+ if (!match.params.table) throw new Error("Table name required for create");
137
+ return this.crud.createRow(match.params.table, content.content ?? content);
138
+ case "readRow":
139
+ if (!match.params.table || !match.params.pk) throw new Error("Table and primary key required for update");
140
+ return this.crud.updateRow(match.params.table, match.params.pk, content.content ?? content);
141
+ case "executeAction":
142
+ if (!match.params.table || !match.params.action) throw new Error("Table and action name required");
143
+ return this.executeAction(match.params.table, match.params.pk, match.params.action, content.content ?? content);
144
+ default: throw new Error(`Write not supported for path: ${path}`);
145
+ }
146
+ }
147
+ /**
148
+ * Deletes an entry at a path
149
+ */
150
+ async delete(path, _options) {
151
+ await this.ensureInitialized();
152
+ if (this.accessMode === "readonly") throw new Error("Module is in readonly mode");
153
+ const match = matchPath(this.router, path);
154
+ if (!match || match.action !== "readRow") throw new Error(`Delete not supported for path: ${path}`);
155
+ if (!match.params.table || !match.params.pk) throw new Error("Table and primary key required for delete");
156
+ return this.crud.deleteRow(match.params.table, match.params.pk);
157
+ }
158
+ /**
159
+ * Searches for entries matching a query
160
+ */
161
+ async search(path, query, options) {
162
+ await this.ensureInitialized();
163
+ const match = matchPath(this.router, path);
164
+ if (match?.params.table) return this.ftsSearch.searchTable(match.params.table, query, options);
165
+ return this.ftsSearch.search(query, options);
166
+ }
167
+ /**
168
+ * Executes a module operation
169
+ */
170
+ async exec(path, args, _options) {
171
+ await this.ensureInitialized();
172
+ const match = matchPath(this.router, path);
173
+ if (match?.action === "executeAction" && match.params.table && match.params.action) return { data: (await this.executeAction(match.params.table, match.params.pk, match.params.action, args)).data };
174
+ throw new Error(`Exec not supported for path: ${path}`);
175
+ }
176
+ /**
177
+ * Lists available actions for a row
178
+ */
179
+ listActions(table, pk) {
180
+ return { data: buildActionsListEntry(table, pk, this.actions.listNames({ rowLevel: true }), { basePath: "" }) };
181
+ }
182
+ /**
183
+ * Executes an action
184
+ */
185
+ async executeAction(table, pk, actionName, params) {
186
+ if (!this.schemas.get(table)) throw new Error(`Table '${table}' not found`);
187
+ let row;
188
+ if (pk) row = (await this.crud.readRow(table, pk)).data?.content;
189
+ const ctx = {
190
+ db: this.db,
191
+ schemas: this.schemas,
192
+ table,
193
+ pk,
194
+ row,
195
+ module: {
196
+ refreshSchema: () => this.refreshSchema(),
197
+ exportTable: (t, f) => this.exportTable(t, f)
198
+ }
199
+ };
200
+ const result = await this.actions.execute(actionName, ctx, params);
201
+ if (!result.success) throw new Error(result.message ?? "Action failed");
202
+ return { data: {
203
+ id: `${table}:${pk ?? ""}:@actions:${actionName}`,
204
+ path: pk ? `/${table}/${pk}/@actions/${actionName}` : `/${table}/@actions/${actionName}`,
205
+ content: result.data
206
+ } };
207
+ }
208
+ /**
209
+ * Refreshes the schema cache
210
+ */
211
+ async refreshSchema() {
212
+ const db = this.db;
213
+ this.schemas = await new SchemaIntrospector().introspect(db, {
214
+ tables: this.options.tables,
215
+ excludeTables: this.options.excludeTables
216
+ });
217
+ this.crud.setSchemas(this.schemas);
218
+ this.ftsSearch.setSchemas(this.schemas);
219
+ }
220
+ /**
221
+ * Exports table data in specified format
222
+ */
223
+ async exportTable(table, format) {
224
+ const listResult = await this.crud.listTable(table, { limit: 1e4 });
225
+ if (format === "csv") {
226
+ const schema = this.schemas.get(table);
227
+ if (!schema) throw new Error(`Table '${table}' not found`);
228
+ return `${schema.columns.map((c) => c.name).join(",")}\n${listResult.data.map((entry) => {
229
+ const content = entry.content;
230
+ return schema.columns.map((c) => {
231
+ const val = content[c.name];
232
+ if (val === null || val === void 0) return "";
233
+ if (typeof val === "string" && (val.includes(",") || val.includes("\""))) return `"${val.replace(/"/g, "\"\"")}"`;
234
+ return String(val);
235
+ }).join(",");
236
+ }).join("\n")}`;
237
+ }
238
+ return listResult.data.map((entry) => entry.content);
239
+ }
240
+ /**
241
+ * Registers a custom action
242
+ */
243
+ registerAction(name, handler, options) {
244
+ this.actions.registerSimple(name, async (ctx, params) => ({
245
+ success: true,
246
+ data: await handler(ctx, params)
247
+ }), options);
248
+ }
249
+ /**
250
+ * Gets table schemas (for external access)
251
+ */
252
+ getSchemas() {
253
+ return this.schemas;
254
+ }
255
+ /**
256
+ * Gets the database instance (for advanced operations)
257
+ */
258
+ getDatabase() {
259
+ return this.db;
260
+ }
261
+ };
262
+
263
+ //#endregion
264
+ export { SQLiteAFS };
265
+ //# sourceMappingURL=sqlite-afs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-afs.mjs","names":[],"sources":["../src/sqlite-afs.ts"],"sourcesContent":["import type {\n AFSAccessMode,\n AFSDeleteOptions,\n AFSDeleteResult,\n AFSExecOptions,\n AFSExecResult,\n AFSListOptions,\n AFSListResult,\n AFSModule,\n AFSModuleClass,\n AFSModuleLoadParams,\n AFSReadOptions,\n AFSReadResult,\n AFSRoot,\n AFSSearchOptions,\n AFSSearchResult,\n AFSWriteEntryPayload,\n AFSWriteOptions,\n AFSWriteResult,\n} from \"@aigne/afs\";\nimport { initDatabase } from \"@aigne/sqlite\";\nimport type { LibSQLDatabase } from \"drizzle-orm/libsql\";\nimport type { RadixRouter } from \"radix3\";\nimport { registerBuiltInActions } from \"./actions/built-in.js\";\nimport { ActionsRegistry } from \"./actions/registry.js\";\nimport type { ActionContext } from \"./actions/types.js\";\nimport { type SQLiteAFSOptions, sqliteAFSConfigSchema } from \"./config.js\";\nimport { buildActionsListEntry } from \"./node/builder.js\";\nimport { CRUDOperations } from \"./operations/crud.js\";\nimport { createFTSConfig, type FTSConfig, FTSSearch } from \"./operations/search.js\";\nimport { createPathRouter, matchPath, type RouteData } from \"./router/path-router.js\";\nimport { SchemaIntrospector } from \"./schema/introspector.js\";\nimport type { TableSchema } from \"./schema/types.js\";\n\n/**\n * SQLite AFS Module\n *\n * Exposes SQLite databases as AFS nodes with full CRUD support,\n * schema introspection, FTS5 search, and virtual paths (@attr, @meta, @actions).\n */\nexport class SQLiteAFS implements AFSModule {\n readonly name: string;\n readonly description: string;\n readonly accessMode: AFSAccessMode;\n\n private db!: Awaited<ReturnType<typeof initDatabase>>;\n private schemas = new Map<string, TableSchema>();\n private router!: RadixRouter<RouteData>;\n private crud!: CRUDOperations;\n private ftsSearch!: FTSSearch;\n private actions: ActionsRegistry;\n private ftsConfig: FTSConfig;\n private initialized = false;\n\n constructor(private options: SQLiteAFSOptions) {\n this.name = options.name ?? \"sqlite-afs\";\n this.description = options.description ?? `SQLite database: ${options.url}`;\n this.accessMode = options.accessMode ?? \"readwrite\";\n this.ftsConfig = createFTSConfig(options.fts);\n this.actions = new ActionsRegistry();\n registerBuiltInActions(this.actions);\n }\n\n /**\n * Returns the Zod schema for configuration validation\n */\n static schema() {\n return sqliteAFSConfigSchema;\n }\n\n /**\n * Loads a module instance from configuration\n */\n static async load({ parsed }: AFSModuleLoadParams): Promise<SQLiteAFS> {\n const validated = sqliteAFSConfigSchema.parse(parsed);\n return new SQLiteAFS(validated);\n }\n\n /**\n * Called when the module is mounted to AFS\n */\n async onMount(_afs: AFSRoot): Promise<void> {\n await this.initialize();\n }\n\n /**\n * Initializes the database connection and introspects schema\n */\n private async initialize(): Promise<void> {\n if (this.initialized) return;\n\n // Initialize database connection\n this.db = await initDatabase({\n url: this.options.url,\n wal: this.options.wal ?? true,\n });\n\n // Cast db to LibSQLDatabase for operations\n const db = this.db as unknown as LibSQLDatabase;\n\n // Introspect database schema\n const introspector = new SchemaIntrospector();\n this.schemas = await introspector.introspect(db, {\n tables: this.options.tables,\n excludeTables: this.options.excludeTables,\n });\n\n // Initialize components\n this.router = createPathRouter();\n this.crud = new CRUDOperations(db, this.schemas, \"\");\n this.ftsSearch = new FTSSearch(db, this.schemas, this.ftsConfig, \"\");\n\n this.initialized = true;\n }\n\n /**\n * Ensures the module is initialized\n */\n private async ensureInitialized(): Promise<void> {\n if (!this.initialized) {\n await this.initialize();\n }\n }\n\n /**\n * Lists entries at a path\n */\n async list(path: string, options?: AFSListOptions): Promise<AFSListResult> {\n await this.ensureInitialized();\n\n const match = matchPath(this.router, path);\n if (!match) {\n return { data: [] };\n }\n\n switch (match.action) {\n case \"listTables\":\n return this.crud.listTables();\n\n case \"listTable\":\n if (!match.params.table) return { data: [] };\n return this.crud.listTable(match.params.table, options);\n\n case \"listAttributes\":\n if (!match.params.table || !match.params.pk) return { data: [] };\n return this.crud.listAttributes(match.params.table, match.params.pk);\n\n case \"listActions\":\n if (!match.params.table || !match.params.pk) return { data: [] };\n return this.listActions(match.params.table, match.params.pk);\n\n default:\n return { data: [] };\n }\n }\n\n /**\n * Reads an entry at a path\n */\n async read(path: string, _options?: AFSReadOptions): Promise<AFSReadResult> {\n await this.ensureInitialized();\n\n const match = matchPath(this.router, path);\n if (!match) {\n return {};\n }\n\n switch (match.action) {\n case \"readRow\":\n if (!match.params.table || !match.params.pk) return {};\n return this.crud.readRow(match.params.table, match.params.pk);\n\n case \"getSchema\":\n if (!match.params.table) return {};\n return this.crud.getSchema(match.params.table);\n\n case \"getAttribute\":\n if (!match.params.table || !match.params.pk || !match.params.column) return {};\n return this.crud.getAttribute(match.params.table, match.params.pk, match.params.column);\n\n case \"getMeta\":\n if (!match.params.table || !match.params.pk) return {};\n return this.crud.getMeta(match.params.table, match.params.pk);\n\n default:\n return {};\n }\n }\n\n /**\n * Writes an entry at a path\n */\n async write(\n path: string,\n content: AFSWriteEntryPayload,\n _options?: AFSWriteOptions,\n ): Promise<AFSWriteResult> {\n await this.ensureInitialized();\n\n if (this.accessMode === \"readonly\") {\n throw new Error(\"Module is in readonly mode\");\n }\n\n const match = matchPath(this.router, path);\n if (!match) {\n throw new Error(`Invalid path: ${path}`);\n }\n\n switch (match.action) {\n case \"createRow\":\n if (!match.params.table) {\n throw new Error(\"Table name required for create\");\n }\n return this.crud.createRow(match.params.table, content.content ?? content);\n\n case \"readRow\":\n if (!match.params.table || !match.params.pk) {\n throw new Error(\"Table and primary key required for update\");\n }\n return this.crud.updateRow(match.params.table, match.params.pk, content.content ?? content);\n\n case \"executeAction\":\n if (!match.params.table || !match.params.action) {\n throw new Error(\"Table and action name required\");\n }\n return this.executeAction(\n match.params.table,\n match.params.pk,\n match.params.action,\n content.content ?? content,\n );\n\n default:\n throw new Error(`Write not supported for path: ${path}`);\n }\n }\n\n /**\n * Deletes an entry at a path\n */\n async delete(path: string, _options?: AFSDeleteOptions): Promise<AFSDeleteResult> {\n await this.ensureInitialized();\n\n if (this.accessMode === \"readonly\") {\n throw new Error(\"Module is in readonly mode\");\n }\n\n const match = matchPath(this.router, path);\n if (!match || match.action !== \"readRow\") {\n throw new Error(`Delete not supported for path: ${path}`);\n }\n\n if (!match.params.table || !match.params.pk) {\n throw new Error(\"Table and primary key required for delete\");\n }\n\n return this.crud.deleteRow(match.params.table, match.params.pk);\n }\n\n /**\n * Searches for entries matching a query\n */\n async search(path: string, query: string, options?: AFSSearchOptions): Promise<AFSSearchResult> {\n await this.ensureInitialized();\n\n // If path specifies a table, search only that table\n const match = matchPath(this.router, path);\n if (match?.params.table) {\n return this.ftsSearch.searchTable(match.params.table, query, options);\n }\n\n // Otherwise search all FTS-enabled tables\n return this.ftsSearch.search(query, options);\n }\n\n /**\n * Executes a module operation\n */\n async exec(\n path: string,\n args: Record<string, unknown>,\n _options: AFSExecOptions,\n ): Promise<AFSExecResult> {\n await this.ensureInitialized();\n\n const match = matchPath(this.router, path);\n if (match?.action === \"executeAction\" && match.params.table && match.params.action) {\n const result = await this.executeAction(\n match.params.table,\n match.params.pk,\n match.params.action,\n args,\n );\n return { data: result.data as unknown as Record<string, unknown> };\n }\n\n throw new Error(`Exec not supported for path: ${path}`);\n }\n\n /**\n * Lists available actions for a row\n */\n private listActions(table: string, pk: string): AFSListResult {\n const actionNames = this.actions.listNames({ rowLevel: true });\n return {\n data: buildActionsListEntry(table, pk, actionNames, { basePath: \"\" }),\n };\n }\n\n /**\n * Executes an action\n */\n private async executeAction(\n table: string,\n pk: string | undefined,\n actionName: string,\n params: Record<string, unknown>,\n ): Promise<AFSWriteResult> {\n const schema = this.schemas.get(table);\n if (!schema) {\n throw new Error(`Table '${table}' not found`);\n }\n\n // Get row data if pk is provided\n let row: Record<string, unknown> | undefined;\n if (pk) {\n const readResult = await this.crud.readRow(table, pk);\n row = readResult.data?.content as Record<string, unknown> | undefined;\n }\n\n const ctx: ActionContext = {\n db: this.db as unknown as LibSQLDatabase,\n schemas: this.schemas,\n table,\n pk,\n row,\n module: {\n refreshSchema: () => this.refreshSchema(),\n exportTable: (t, f) => this.exportTable(t, f),\n },\n };\n\n const result = await this.actions.execute(actionName, ctx, params);\n\n if (!result.success) {\n throw new Error(result.message ?? \"Action failed\");\n }\n\n return {\n data: {\n id: `${table}:${pk ?? \"\"}:@actions:${actionName}`,\n path: pk ? `/${table}/${pk}/@actions/${actionName}` : `/${table}/@actions/${actionName}`,\n content: result.data,\n },\n };\n }\n\n /**\n * Refreshes the schema cache\n */\n async refreshSchema(): Promise<void> {\n const db = this.db as unknown as LibSQLDatabase;\n const introspector = new SchemaIntrospector();\n this.schemas = await introspector.introspect(db, {\n tables: this.options.tables,\n excludeTables: this.options.excludeTables,\n });\n this.crud.setSchemas(this.schemas);\n this.ftsSearch.setSchemas(this.schemas);\n }\n\n /**\n * Exports table data in specified format\n */\n async exportTable(table: string, format: string): Promise<unknown> {\n const listResult = await this.crud.listTable(table, { limit: 10000 });\n\n if (format === \"csv\") {\n const schema = this.schemas.get(table);\n if (!schema) throw new Error(`Table '${table}' not found`);\n\n const headers = schema.columns.map((c) => c.name).join(\",\");\n const rows = listResult.data.map((entry) => {\n const content = entry.content as Record<string, unknown>;\n return schema.columns\n .map((c) => {\n const val = content[c.name];\n if (val === null || val === undefined) return \"\";\n if (typeof val === \"string\" && (val.includes(\",\") || val.includes('\"'))) {\n return `\"${val.replace(/\"/g, '\"\"')}\"`;\n }\n return String(val);\n })\n .join(\",\");\n });\n\n return `${headers}\\n${rows.join(\"\\n\")}`;\n }\n\n // Default: JSON\n return listResult.data.map((entry) => entry.content);\n }\n\n /**\n * Registers a custom action\n */\n registerAction(\n name: string,\n handler: (ctx: ActionContext, params: Record<string, unknown>) => Promise<unknown>,\n options?: {\n description?: string;\n tableLevel?: boolean;\n rowLevel?: boolean;\n },\n ): void {\n this.actions.registerSimple(\n name,\n async (ctx, params) => ({\n success: true,\n data: await handler(ctx, params),\n }),\n options,\n );\n }\n\n /**\n * Gets table schemas (for external access)\n */\n getSchemas(): Map<string, TableSchema> {\n return this.schemas;\n }\n\n /**\n * Gets the database instance (for advanced operations)\n */\n getDatabase(): LibSQLDatabase {\n return this.db as unknown as LibSQLDatabase;\n }\n}\n\n// Type check to ensure SQLiteAFS implements AFSModuleClass\nconst _typeCheck: AFSModuleClass<SQLiteAFS, SQLiteAFSOptions> = SQLiteAFS;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@aigne/afs-sqlite",
3
- "version": "1.11.0-beta",
3
+ "version": "1.11.0-beta.1",
4
4
  "description": "AIGNE AFS module for SQLite database storage with schema introspection",
5
- "license": "Elastic-2.0",
5
+ "license": "UNLICENSED",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
@@ -37,7 +37,7 @@
37
37
  "drizzle-orm": "^0.44.5",
38
38
  "radix3": "^1.1.2",
39
39
  "zod": "^3.25.67",
40
- "@aigne/afs": "^1.11.0-beta"
40
+ "@aigne/afs": "^1.11.0-beta.1"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/bun": "^1.3.6",
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/schema/types.ts","../src/actions/types.ts","../src/actions/registry.ts","../src/actions/built-in.ts","../src/config.ts","../src/node/builder.ts","../src/operations/crud.ts","../src/operations/query-builder.ts","../src/operations/search.ts","../src/router/types.ts","../src/router/path-router.ts","../src/schema/introspector.ts","../src/sqlite-afs.ts"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/schema/types.ts","../src/actions/types.ts","../src/actions/registry.ts","../src/actions/built-in.ts","../src/config.ts","../src/node/builder.ts","../src/operations/crud.ts","../src/operations/query-builder.ts","../src/operations/search.ts","../src/router/types.ts","../src/router/path-router.ts","../src/schema/introspector.ts","../src/sqlite-afs.ts"],"mappings":"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"}