@framers/sql-storage-adapter 0.7.1 → 0.7.3

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 (192) hide show
  1. package/README.md +43 -0
  2. package/dist/adapters/electron/preload.cjs +289 -0
  3. package/dist/adapters/electron/renderer.d.ts +9 -0
  4. package/dist/adapters/electron/renderer.d.ts.map +1 -0
  5. package/dist/adapters/electron/renderer.js +8 -0
  6. package/dist/adapters/electron/renderer.js.map +1 -0
  7. package/dist/cjs/adapters/__tests__/indexedDbAdapter.spec.d.ts +2 -0
  8. package/dist/cjs/adapters/__tests__/indexedDbAdapter.spec.js +133 -0
  9. package/dist/cjs/adapters/baseStorageAdapter.d.ts +368 -0
  10. package/dist/cjs/adapters/baseStorageAdapter.js +744 -0
  11. package/dist/cjs/adapters/betterSqliteAdapter.d.ts +124 -0
  12. package/dist/cjs/adapters/betterSqliteAdapter.js +334 -0
  13. package/dist/cjs/adapters/capacitorSqliteAdapter.d.ts +83 -0
  14. package/dist/cjs/adapters/capacitorSqliteAdapter.js +250 -0
  15. package/dist/cjs/adapters/electron/electronMainAdapter.d.ts +251 -0
  16. package/dist/cjs/adapters/electron/electronMainAdapter.js +392 -0
  17. package/dist/cjs/adapters/electron/electronRendererAdapter.d.ts +177 -0
  18. package/dist/cjs/adapters/electron/electronRendererAdapter.js +283 -0
  19. package/dist/cjs/adapters/electron/index.d.ts +74 -0
  20. package/dist/cjs/adapters/electron/index.js +86 -0
  21. package/dist/cjs/adapters/electron/ipc/channels.d.ts +196 -0
  22. package/dist/cjs/adapters/electron/ipc/channels.js +127 -0
  23. package/dist/cjs/adapters/electron/ipc/index.d.ts +11 -0
  24. package/dist/cjs/adapters/electron/ipc/index.js +38 -0
  25. package/dist/cjs/adapters/electron/ipc/protocol.d.ts +78 -0
  26. package/dist/cjs/adapters/electron/ipc/protocol.js +341 -0
  27. package/dist/cjs/adapters/electron/ipc/types.d.ts +248 -0
  28. package/dist/cjs/adapters/electron/ipc/types.js +15 -0
  29. package/dist/cjs/adapters/electron/migration/autoMigrator.d.ts +184 -0
  30. package/dist/cjs/adapters/electron/migration/autoMigrator.js +441 -0
  31. package/dist/cjs/adapters/electron/migration/index.d.ts +9 -0
  32. package/dist/cjs/adapters/electron/migration/index.js +29 -0
  33. package/dist/cjs/adapters/electron/preload.d.ts +126 -0
  34. package/dist/cjs/adapters/electron/preload.js +233 -0
  35. package/dist/cjs/adapters/electron/recovery/corruptionDetector.d.ts +214 -0
  36. package/dist/cjs/adapters/electron/recovery/corruptionDetector.js +359 -0
  37. package/dist/cjs/adapters/electron/recovery/index.d.ts +11 -0
  38. package/dist/cjs/adapters/electron/recovery/index.js +34 -0
  39. package/dist/cjs/adapters/electron/recovery/walCheckpoint.d.ts +186 -0
  40. package/dist/cjs/adapters/electron/recovery/walCheckpoint.js +263 -0
  41. package/dist/cjs/adapters/electron/renderer.d.ts +9 -0
  42. package/dist/cjs/adapters/electron/renderer.js +33 -0
  43. package/dist/cjs/adapters/electron/window/index.d.ts +9 -0
  44. package/dist/cjs/adapters/electron/window/index.js +29 -0
  45. package/dist/cjs/adapters/electron/window/windowManager.d.ts +190 -0
  46. package/dist/cjs/adapters/electron/window/windowManager.js +321 -0
  47. package/dist/cjs/adapters/indexedDbAdapter.d.ts +490 -0
  48. package/dist/cjs/adapters/indexedDbAdapter.js +993 -0
  49. package/dist/cjs/adapters/postgresAdapter.d.ts +424 -0
  50. package/dist/cjs/adapters/postgresAdapter.js +889 -0
  51. package/dist/cjs/adapters/sqlJsAdapter.d.ts +64 -0
  52. package/dist/cjs/adapters/sqlJsAdapter.js +268 -0
  53. package/dist/cjs/adapters/supabase.d.ts +58 -0
  54. package/dist/cjs/adapters/supabase.js +401 -0
  55. package/dist/cjs/codecs/BrowserBlobCodec.d.ts +14 -0
  56. package/dist/cjs/codecs/BrowserBlobCodec.js +57 -0
  57. package/dist/cjs/codecs/NodeBlobCodec.d.ts +14 -0
  58. package/dist/cjs/codecs/NodeBlobCodec.js +59 -0
  59. package/dist/cjs/core/contracts/blobCodec.d.ts +15 -0
  60. package/dist/cjs/core/contracts/blobCodec.js +15 -0
  61. package/dist/cjs/core/contracts/context.d.ts +221 -0
  62. package/dist/cjs/core/contracts/context.js +15 -0
  63. package/dist/cjs/core/contracts/dialect.d.ts +154 -0
  64. package/dist/cjs/core/contracts/dialect.js +15 -0
  65. package/dist/cjs/core/contracts/events.d.ts +225 -0
  66. package/dist/cjs/core/contracts/events.js +15 -0
  67. package/dist/cjs/core/contracts/exporter.d.ts +13 -0
  68. package/dist/cjs/core/contracts/exporter.js +15 -0
  69. package/dist/cjs/core/contracts/extensions.d.ts +73 -0
  70. package/dist/cjs/core/contracts/extensions.js +15 -0
  71. package/dist/cjs/core/contracts/features.d.ts +25 -0
  72. package/dist/cjs/core/contracts/features.js +61 -0
  73. package/dist/cjs/core/contracts/fts.d.ts +66 -0
  74. package/dist/cjs/core/contracts/fts.js +15 -0
  75. package/dist/cjs/core/contracts/hooks.d.ts +481 -0
  76. package/dist/cjs/core/contracts/hooks.js +140 -0
  77. package/dist/cjs/core/contracts/index.d.ts +260 -0
  78. package/dist/cjs/core/contracts/index.js +41 -0
  79. package/dist/cjs/core/contracts/limitations.d.ts +46 -0
  80. package/dist/cjs/core/contracts/limitations.js +218 -0
  81. package/dist/cjs/core/contracts/performance.d.ts +308 -0
  82. package/dist/cjs/core/contracts/performance.js +144 -0
  83. package/dist/cjs/core/database.d.ts +220 -0
  84. package/dist/cjs/core/database.js +136 -0
  85. package/dist/cjs/core/portable.d.ts +23 -0
  86. package/dist/cjs/core/portable.js +66 -0
  87. package/dist/cjs/core/resolver.d.ts +77 -0
  88. package/dist/cjs/core/resolver.js +235 -0
  89. package/dist/cjs/dialects/PostgresDialect.d.ts +35 -0
  90. package/dist/cjs/dialects/PostgresDialect.js +143 -0
  91. package/dist/cjs/dialects/SqliteDialect.d.ts +35 -0
  92. package/dist/cjs/dialects/SqliteDialect.js +142 -0
  93. package/dist/cjs/dialects/shared.d.ts +17 -0
  94. package/dist/cjs/dialects/shared.js +90 -0
  95. package/dist/cjs/exporters/PostgresExporter.d.ts +14 -0
  96. package/dist/cjs/exporters/PostgresExporter.js +61 -0
  97. package/dist/cjs/exporters/SqliteFileExporter.d.ts +16 -0
  98. package/dist/cjs/exporters/SqliteFileExporter.js +43 -0
  99. package/dist/cjs/features/backup/cloudBackup.d.ts +219 -0
  100. package/dist/cjs/features/backup/cloudBackup.js +209 -0
  101. package/dist/cjs/features/kv/idb.d.ts +79 -0
  102. package/dist/cjs/features/kv/idb.js +32 -0
  103. package/dist/cjs/features/kv/index.d.ts +14 -0
  104. package/dist/cjs/features/kv/index.js +40 -0
  105. package/dist/cjs/features/kv/indexedDbKeyValueStore.d.ts +77 -0
  106. package/dist/cjs/features/kv/indexedDbKeyValueStore.js +116 -0
  107. package/dist/cjs/features/kv/keyValueStore.d.ts +48 -0
  108. package/dist/cjs/features/kv/keyValueStore.js +67 -0
  109. package/dist/cjs/features/kv/sqlKeyValueStore.d.ts +34 -0
  110. package/dist/cjs/features/kv/sqlKeyValueStore.js +81 -0
  111. package/dist/cjs/features/kv/valueCodec.d.ts +35 -0
  112. package/dist/cjs/features/kv/valueCodec.js +426 -0
  113. package/dist/cjs/features/migrations/dataExport.d.ts +77 -0
  114. package/dist/cjs/features/migrations/dataExport.js +194 -0
  115. package/dist/cjs/features/migrations/dataImport.d.ts +54 -0
  116. package/dist/cjs/features/migrations/dataImport.js +300 -0
  117. package/dist/cjs/features/migrations/migration.d.ts +89 -0
  118. package/dist/cjs/features/migrations/migration.js +187 -0
  119. package/dist/cjs/features/migrations/schemaMigrations.d.ts +93 -0
  120. package/dist/cjs/features/migrations/schemaMigrations.js +220 -0
  121. package/dist/cjs/features/sync/conflicts/conflictResolver.d.ts +222 -0
  122. package/dist/cjs/features/sync/conflicts/conflictResolver.js +366 -0
  123. package/dist/cjs/features/sync/conflicts/index.d.ts +9 -0
  124. package/dist/cjs/features/sync/conflicts/index.js +21 -0
  125. package/dist/cjs/features/sync/crossPlatformSync.d.ts +281 -0
  126. package/dist/cjs/features/sync/crossPlatformSync.js +551 -0
  127. package/dist/cjs/features/sync/devices/deviceManager.d.ts +243 -0
  128. package/dist/cjs/features/sync/devices/deviceManager.js +450 -0
  129. package/dist/cjs/features/sync/devices/index.d.ts +10 -0
  130. package/dist/cjs/features/sync/devices/index.js +21 -0
  131. package/dist/cjs/features/sync/index.d.ts +37 -0
  132. package/dist/cjs/features/sync/index.js +111 -0
  133. package/dist/cjs/features/sync/protocol/index.d.ts +11 -0
  134. package/dist/cjs/features/sync/protocol/index.js +23 -0
  135. package/dist/cjs/features/sync/protocol/messages.d.ts +348 -0
  136. package/dist/cjs/features/sync/protocol/messages.js +215 -0
  137. package/dist/cjs/features/sync/protocol/vectorClock.d.ts +164 -0
  138. package/dist/cjs/features/sync/protocol/vectorClock.js +256 -0
  139. package/dist/cjs/features/sync/syncManager.d.ts +348 -0
  140. package/dist/cjs/features/sync/syncManager.js +455 -0
  141. package/dist/cjs/features/sync/tables/index.d.ts +10 -0
  142. package/dist/cjs/features/sync/tables/index.js +21 -0
  143. package/dist/cjs/features/sync/tables/syncLogManager.d.ts +216 -0
  144. package/dist/cjs/features/sync/tables/syncLogManager.js +423 -0
  145. package/dist/cjs/features/sync/transport/httpTransport.d.ts +123 -0
  146. package/dist/cjs/features/sync/transport/httpTransport.js +346 -0
  147. package/dist/cjs/features/sync/transport/index.d.ts +12 -0
  148. package/dist/cjs/features/sync/transport/index.js +25 -0
  149. package/dist/cjs/features/sync/transport/transport.d.ts +259 -0
  150. package/dist/cjs/features/sync/transport/transport.js +163 -0
  151. package/dist/cjs/features/sync/transport/websocketTransport.d.ts +126 -0
  152. package/dist/cjs/features/sync/transport/websocketTransport.js +342 -0
  153. package/dist/cjs/fts/PostgresFts.d.ts +29 -0
  154. package/dist/cjs/fts/PostgresFts.js +77 -0
  155. package/dist/cjs/fts/SqliteFts5.d.ts +22 -0
  156. package/dist/cjs/fts/SqliteFts5.js +58 -0
  157. package/dist/cjs/index.d.ts +30 -0
  158. package/dist/cjs/index.js +101 -0
  159. package/dist/cjs/package.json +3 -0
  160. package/dist/cjs/shared/connectionGate.d.ts +94 -0
  161. package/dist/cjs/shared/connectionGate.js +77 -0
  162. package/dist/cjs/shared/errors.d.ts +23 -0
  163. package/dist/cjs/shared/errors.js +45 -0
  164. package/dist/cjs/shared/logger.d.ts +26 -0
  165. package/dist/cjs/shared/logger.js +40 -0
  166. package/dist/cjs/shared/parameterUtils.d.ts +16 -0
  167. package/dist/cjs/shared/parameterUtils.js +59 -0
  168. package/dist/cjs/shared/postgresTarget.d.ts +11 -0
  169. package/dist/cjs/shared/postgresTarget.js +30 -0
  170. package/dist/cjs/shared/segment.d.ts +43 -0
  171. package/dist/cjs/shared/segment.js +63 -0
  172. package/dist/cjs/shared/serializedTransaction.d.ts +14 -0
  173. package/dist/cjs/shared/serializedTransaction.js +74 -0
  174. package/dist/cjs/shared/splitSqlStatements.d.ts +27 -0
  175. package/dist/cjs/shared/splitSqlStatements.js +163 -0
  176. package/dist/cjs/shared/sqlPlaceholders.d.ts +48 -0
  177. package/dist/cjs/shared/sqlPlaceholders.js +263 -0
  178. package/dist/cjs/types/index.d.ts +29 -0
  179. package/dist/cjs/types/index.js +33 -0
  180. package/dist/core/portable.d.ts +23 -0
  181. package/dist/core/portable.d.ts.map +1 -0
  182. package/dist/core/portable.js +23 -0
  183. package/dist/core/portable.js.map +1 -0
  184. package/dist/features/migrations/schemaMigrations.d.ts +93 -0
  185. package/dist/features/migrations/schemaMigrations.d.ts.map +1 -0
  186. package/dist/features/migrations/schemaMigrations.js +216 -0
  187. package/dist/features/migrations/schemaMigrations.js.map +1 -0
  188. package/dist/index.d.ts +1 -0
  189. package/dist/index.d.ts.map +1 -1
  190. package/dist/index.js +1 -0
  191. package/dist/index.js.map +1 -1
  192. package/package.json +139 -24
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Extended types for advanced adapter features.
3
+ * These types are used by adapters that provide additional functionality
4
+ * beyond the core StorageAdapter interface.
5
+ */
6
+ import type { BatchOperation as CoreBatchOperation } from './index.js';
7
+ /**
8
+ * Performance metrics for monitoring adapter usage.
9
+ */
10
+ export interface PerformanceMetrics {
11
+ totalQueries: number;
12
+ totalDuration: number;
13
+ averageDuration: number;
14
+ cacheHits?: number;
15
+ cacheMisses?: number;
16
+ slowQueries?: Array<{
17
+ query: string;
18
+ duration: number;
19
+ timestamp: Date;
20
+ }>;
21
+ }
22
+ /**
23
+ * Options for streaming large result sets.
24
+ */
25
+ export interface StreamOptions {
26
+ batchSize?: number;
27
+ highWaterMark?: number;
28
+ }
29
+ /**
30
+ * Database migration definition.
31
+ */
32
+ export interface Migration {
33
+ id: string;
34
+ version: number;
35
+ up: string;
36
+ down?: string;
37
+ description?: string;
38
+ appliedAt?: Date;
39
+ }
40
+ /**
41
+ * Extended batch operation with additional metadata.
42
+ * Used by adapters that support richer batch operation semantics.
43
+ */
44
+ export interface ExtendedBatchOperation extends CoreBatchOperation {
45
+ type?: 'insert' | 'update' | 'delete';
46
+ table?: string;
47
+ values?: Record<string, unknown> | Array<Record<string, unknown>>;
48
+ where?: Record<string, unknown>;
49
+ }
50
+ /**
51
+ * Extended storage adapter interface for advanced features.
52
+ */
53
+ export interface StorageAdapterExtensions {
54
+ /**
55
+ * Apply database migrations.
56
+ */
57
+ migrate?(migrations: Migration[]): Promise<void>;
58
+ /**
59
+ * Get migration status.
60
+ */
61
+ getMigrationStatus?(): Promise<Migration[]>;
62
+ /**
63
+ * Get performance metrics.
64
+ */
65
+ getMetrics?(): PerformanceMetrics;
66
+ /**
67
+ * Stream large result sets.
68
+ */
69
+ stream?<T>(statement: string, parameters?: unknown, options?: StreamOptions): AsyncIterableIterator<T>;
70
+ }
71
+ export type { BatchOperation } from './index.js';
72
+ export type { BatchResult } from './index.js';
73
+ //# sourceMappingURL=extensions.d.ts.map
@@ -0,0 +1,15 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
14
+ var extensions_exports = {};
15
+ module.exports = __toCommonJS(extensions_exports);
@@ -0,0 +1,25 @@
1
+ import type { SqlDialect } from './dialect.js';
2
+ import type { IFullTextSearch } from './fts.js';
3
+ import type { IBlobCodec } from './blobCodec.js';
4
+ import type { IDatabaseExporter } from './exporter.js';
5
+ import type { StorageAdapter } from './index.js';
6
+ /**
7
+ * Bundle of platform-aware database features.
8
+ *
9
+ * Created by `createStorageFeatures(adapter)` — consumers use this
10
+ * instead of writing raw platform-specific SQL.
11
+ */
12
+ export interface StorageFeatures {
13
+ readonly dialect: SqlDialect;
14
+ readonly fts: IFullTextSearch;
15
+ readonly blobCodec: IBlobCodec;
16
+ readonly exporter: IDatabaseExporter;
17
+ }
18
+ /**
19
+ * Create a platform-aware feature bundle for the given storage adapter.
20
+ *
21
+ * Inspects `adapter.kind` and the runtime environment to select the right
22
+ * dialect, FTS, BLOB codec, and exporter implementations.
23
+ */
24
+ export declare function createStorageFeatures(adapter: StorageAdapter): StorageFeatures;
25
+ //# sourceMappingURL=features.d.ts.map
@@ -0,0 +1,61 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var features_exports = {};
19
+ __export(features_exports, {
20
+ createStorageFeatures: () => createStorageFeatures
21
+ });
22
+ module.exports = __toCommonJS(features_exports);
23
+ var import_SqliteDialect = require("../../dialects/SqliteDialect.js");
24
+ var import_PostgresDialect = require("../../dialects/PostgresDialect.js");
25
+ var import_SqliteFts5 = require("../../fts/SqliteFts5.js");
26
+ var import_PostgresFts = require("../../fts/PostgresFts.js");
27
+ var import_NodeBlobCodec = require("../../codecs/NodeBlobCodec.js");
28
+ var import_BrowserBlobCodec = require("../../codecs/BrowserBlobCodec.js");
29
+ var import_SqliteFileExporter = require("../../exporters/SqliteFileExporter.js");
30
+ var import_PostgresExporter = require("../../exporters/PostgresExporter.js");
31
+ function extractPostgresConnectionString(adapter) {
32
+ const options = adapter.options;
33
+ if (!options)
34
+ return void 0;
35
+ if (options.connectionString)
36
+ return options.connectionString;
37
+ if (!options.database)
38
+ return void 0;
39
+ const host = options.host ?? "localhost";
40
+ const port = options.port ?? 5432;
41
+ const user = options.user ? encodeURIComponent(options.user) : "";
42
+ const password = options.password ? `:${encodeURIComponent(options.password)}` : "";
43
+ const auth = user ? `${user}${password}@` : "";
44
+ const sslQuery = options.ssl ? "?sslmode=require" : "";
45
+ return `postgresql://${auth}${host}:${port}/${options.database}${sslQuery}`;
46
+ }
47
+ function createStorageFeatures(adapter) {
48
+ const isPostgres = adapter.kind === "postgres";
49
+ const isBrowser = typeof window !== "undefined" && typeof window.document !== "undefined";
50
+ const postgresConnectionString = isPostgres ? extractPostgresConnectionString(adapter) : void 0;
51
+ return {
52
+ dialect: isPostgres ? new import_PostgresDialect.PostgresDialect() : new import_SqliteDialect.SqliteDialect(),
53
+ fts: isPostgres ? new import_PostgresFts.PostgresFts() : new import_SqliteFts5.SqliteFts5(),
54
+ blobCodec: isBrowser ? new import_BrowserBlobCodec.BrowserBlobCodec() : new import_NodeBlobCodec.NodeBlobCodec(),
55
+ exporter: isPostgres ? new import_PostgresExporter.PostgresExporter(postgresConnectionString) : new import_SqliteFileExporter.SqliteFileExporter(adapter)
56
+ };
57
+ }
58
+ // Annotate the CommonJS export names for ESM import in node:
59
+ 0 && (module.exports = {
60
+ createStorageFeatures
61
+ });
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Full-text search abstraction.
3
+ *
4
+ * SQLite implementations use FTS5 virtual tables.
5
+ * Postgres implementations use tsvector columns with GIN indexes.
6
+ * Methods return SQL strings — no database calls.
7
+ */
8
+ export interface IFullTextSearch {
9
+ /**
10
+ * Generate DDL to create the full-text search index.
11
+ *
12
+ * @param config.table - Name for the FTS index/virtual table.
13
+ * @param config.columns - Columns to index.
14
+ * @param config.contentTable - Source table (for external-content FTS5).
15
+ * @param config.tokenizer - Tokenizer config (e.g. 'porter ascii').
16
+ */
17
+ createIndex(config: {
18
+ table: string;
19
+ columns: string[];
20
+ contentTable?: string;
21
+ tokenizer?: string;
22
+ }): string;
23
+ /**
24
+ * Generate a WHERE clause fragment for full-text matching.
25
+ * SQLite: `memory_traces_fts MATCH ?`
26
+ * Postgres: `memory_traces._tsv @@ plainto_tsquery('english', $1)`
27
+ */
28
+ matchClause(indexName: string, queryPlaceholder: string): string;
29
+ /**
30
+ * Generate an ORDER BY rank expression.
31
+ * SQLite: `memory_traces_fts.rank`
32
+ * Postgres: `ts_rank(memory_traces._tsv, plainto_tsquery('english', $1))`
33
+ */
34
+ rankExpression(indexName: string, queryPlaceholder?: string): string;
35
+ /**
36
+ * Generate the rebuild/reindex command.
37
+ * SQLite: `INSERT INTO fts_table(fts_table) VALUES('rebuild')`
38
+ * Postgres: `UPDATE content_table SET _tsv = to_tsvector('english', col1 || ' ' || col2)`
39
+ */
40
+ rebuildCommand(indexName: string): string;
41
+ /**
42
+ * Generate an INSERT to sync external-content FTS after a row insert.
43
+ * SQLite: `INSERT INTO fts_table (rowid, col1, col2) VALUES (expr, ?, ?)`
44
+ * Postgres: `UPDATE content_table SET _tsv = to_tsvector(...) WHERE ...`
45
+ */
46
+ syncInsert(indexName: string, rowIdExpr: string, columns: string[]): string;
47
+ /**
48
+ * Sanitize natural-language input into a safe search query.
49
+ * SQLite: wraps words in quotes, strips FTS5 operators.
50
+ * Postgres: pass-through (plainto_tsquery handles it).
51
+ */
52
+ sanitizeQuery(input: string): string;
53
+ /**
54
+ * Generate a SELECT joining the FTS index to the content table.
55
+ * This handles the structural difference between FTS5 (separate virtual table
56
+ * joined via rowid) and Postgres (tsvector column on the content table itself).
57
+ *
58
+ * @param contentTable - The base table (e.g. 'memory_traces').
59
+ * @param contentAlias - Alias for the content table (e.g. 't').
60
+ * @param ftsAlias - Alias for the FTS table/column (e.g. 'fts').
61
+ * @param indexName - FTS index/virtual table name.
62
+ * @returns FROM/JOIN clause fragment.
63
+ */
64
+ joinClause(contentTable: string, contentAlias: string, ftsAlias: string, indexName: string): string;
65
+ }
66
+ //# sourceMappingURL=fts.d.ts.map
@@ -0,0 +1,15 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
14
+ var fts_exports = {};
15
+ module.exports = __toCommonJS(fts_exports);