@nicia-ai/typegraph 0.16.1 → 0.16.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.
- package/dist/backend/postgres/index.cjs +28 -28
- package/dist/backend/postgres/index.js +3 -3
- package/dist/backend/sqlite/index.cjs +13 -13
- package/dist/backend/sqlite/index.js +3 -3
- package/dist/backend/sqlite/local.cjs +10 -10
- package/dist/backend/sqlite/local.cjs.map +1 -1
- package/dist/backend/sqlite/local.js +6 -6
- package/dist/backend/sqlite/local.js.map +1 -1
- package/dist/{chunk-CRMN2NOM.cjs → chunk-2UTJRP4F.cjs} +14 -14
- package/dist/{chunk-CRMN2NOM.cjs.map → chunk-2UTJRP4F.cjs.map} +1 -1
- package/dist/{chunk-NI2GV74U.cjs → chunk-5GZMPJOP.cjs} +6 -6
- package/dist/{chunk-NI2GV74U.cjs.map → chunk-5GZMPJOP.cjs.map} +1 -1
- package/dist/{chunk-56RQFK7U.cjs → chunk-5H74QKKF.cjs} +50 -26
- package/dist/chunk-5H74QKKF.cjs.map +1 -0
- package/dist/{chunk-HWWF3FOP.js → chunk-7ZVPFJLQ.js} +3 -3
- package/dist/{chunk-HWWF3FOP.js.map → chunk-7ZVPFJLQ.js.map} +1 -1
- package/dist/{chunk-IRFD3MEU.js → chunk-G5CYWKRF.js} +3 -3
- package/dist/{chunk-IRFD3MEU.js.map → chunk-G5CYWKRF.js.map} +1 -1
- package/dist/{chunk-XZBAGJJH.js → chunk-IRS2C6GN.js} +36 -12
- package/dist/chunk-IRS2C6GN.js.map +1 -0
- package/dist/{chunk-44SXEVF4.cjs → chunk-O5PST6TB.cjs} +17 -2
- package/dist/chunk-O5PST6TB.cjs.map +1 -0
- package/dist/{chunk-L4ON6RJF.js → chunk-W6M7XWKX.js} +4 -4
- package/dist/{chunk-L4ON6RJF.js.map → chunk-W6M7XWKX.js.map} +1 -1
- package/dist/{chunk-SJ2QMDXY.js → chunk-WFMTAEEN.js} +17 -3
- package/dist/chunk-WFMTAEEN.js.map +1 -0
- package/dist/{chunk-3HQLOKS5.cjs → chunk-X33WV2UF.cjs} +14 -14
- package/dist/{chunk-3HQLOKS5.cjs.map → chunk-X33WV2UF.cjs.map} +1 -1
- package/dist/{index-QTnQwakS.d.cts → index-DXkEXpNz.d.cts} +13 -1
- package/dist/{index-QTnQwakS.d.ts → index-DXkEXpNz.d.ts} +13 -1
- package/dist/index.cjs +220 -216
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +6 -6
- package/dist/interchange/index.cjs +7 -7
- package/dist/interchange/index.js +2 -2
- package/dist/schema/index.cjs +22 -22
- package/dist/schema/index.d.cts +1 -1
- package/dist/schema/index.d.ts +1 -1
- package/dist/schema/index.js +4 -4
- package/package.json +1 -1
- package/dist/chunk-44SXEVF4.cjs.map +0 -1
- package/dist/chunk-56RQFK7U.cjs.map +0 -1
- package/dist/chunk-SJ2QMDXY.js.map +0 -1
- package/dist/chunk-XZBAGJJH.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../../chunk-
|
|
3
|
+
var chunk2UTJRP4F_cjs = require('../../chunk-2UTJRP4F.cjs');
|
|
4
|
+
require('../../chunk-O5PST6TB.cjs');
|
|
5
5
|
require('../../chunk-LELLOHJK.cjs');
|
|
6
6
|
require('../../chunk-MME3H4ZF.cjs');
|
|
7
7
|
require('../../chunk-P5CNM325.cjs');
|
|
@@ -31,7 +31,7 @@ function createPgPreparedStatement(pgClient, sqlText) {
|
|
|
31
31
|
function createPostgresExecutionAdapter(db) {
|
|
32
32
|
const pgClient = resolvePgClient(db);
|
|
33
33
|
function compile(query) {
|
|
34
|
-
return
|
|
34
|
+
return chunk2UTJRP4F_cjs.compileQueryWithDialect(db, query, "PostgreSQL");
|
|
35
35
|
}
|
|
36
36
|
if (pgClient === void 0) {
|
|
37
37
|
return {
|
|
@@ -86,10 +86,10 @@ var POSTGRES_CHECK_UNIQUE_BATCH_CHUNK_SIZE = Math.max(
|
|
|
86
86
|
1,
|
|
87
87
|
POSTGRES_MAX_BIND_PARAMETERS - CHECK_UNIQUE_BATCH_FIXED_PARAM_COUNT
|
|
88
88
|
);
|
|
89
|
-
var toNodeRow =
|
|
90
|
-
var toEdgeRow =
|
|
91
|
-
var toUniqueRow =
|
|
92
|
-
var toSchemaVersionRow =
|
|
89
|
+
var toNodeRow = chunk2UTJRP4F_cjs.createNodeRowMapper(chunk2UTJRP4F_cjs.POSTGRES_ROW_MAPPER_CONFIG);
|
|
90
|
+
var toEdgeRow = chunk2UTJRP4F_cjs.createEdgeRowMapper(chunk2UTJRP4F_cjs.POSTGRES_ROW_MAPPER_CONFIG);
|
|
91
|
+
var toUniqueRow = chunk2UTJRP4F_cjs.createUniqueRowMapper(chunk2UTJRP4F_cjs.POSTGRES_ROW_MAPPER_CONFIG);
|
|
92
|
+
var toSchemaVersionRow = chunk2UTJRP4F_cjs.createSchemaVersionRowMapper(chunk2UTJRP4F_cjs.POSTGRES_ROW_MAPPER_CONFIG);
|
|
93
93
|
function toEmbeddingRow(row) {
|
|
94
94
|
let embedding;
|
|
95
95
|
if (typeof row.embedding === "string") {
|
|
@@ -107,12 +107,12 @@ function toEmbeddingRow(row) {
|
|
|
107
107
|
field_path: row.field_path,
|
|
108
108
|
embedding,
|
|
109
109
|
dimensions: row.dimensions,
|
|
110
|
-
created_at:
|
|
111
|
-
updated_at:
|
|
110
|
+
created_at: chunk2UTJRP4F_cjs.formatPostgresTimestamp(row.created_at) ?? "",
|
|
111
|
+
updated_at: chunk2UTJRP4F_cjs.formatPostgresTimestamp(row.updated_at) ?? ""
|
|
112
112
|
};
|
|
113
113
|
}
|
|
114
114
|
var POSTGRES_VECTOR_CAPABILITIES = {
|
|
115
|
-
...
|
|
115
|
+
...chunk2UTJRP4F_cjs.POSTGRES_CAPABILITIES,
|
|
116
116
|
vector: {
|
|
117
117
|
supported: true,
|
|
118
118
|
metrics: ["cosine", "l2", "inner_product"],
|
|
@@ -122,14 +122,14 @@ var POSTGRES_VECTOR_CAPABILITIES = {
|
|
|
122
122
|
}
|
|
123
123
|
};
|
|
124
124
|
function createPostgresBackend(db, options = {}) {
|
|
125
|
-
const tables2 = options.tables ??
|
|
125
|
+
const tables2 = options.tables ?? chunk2UTJRP4F_cjs.tables;
|
|
126
126
|
const executionAdapter = createPostgresExecutionAdapter(db);
|
|
127
127
|
const tableNames = {
|
|
128
128
|
nodes: drizzleOrm.getTableName(tables2.nodes),
|
|
129
129
|
edges: drizzleOrm.getTableName(tables2.edges),
|
|
130
130
|
embeddings: drizzleOrm.getTableName(tables2.embeddings)
|
|
131
131
|
};
|
|
132
|
-
const operationStrategy =
|
|
132
|
+
const operationStrategy = chunk2UTJRP4F_cjs.createPostgresOperationStrategy(tables2);
|
|
133
133
|
const operations = createPostgresOperationBackend({
|
|
134
134
|
db,
|
|
135
135
|
executionAdapter,
|
|
@@ -139,7 +139,7 @@ function createPostgresBackend(db, options = {}) {
|
|
|
139
139
|
const backend = {
|
|
140
140
|
...operations,
|
|
141
141
|
async bootstrapTables() {
|
|
142
|
-
const statements =
|
|
142
|
+
const statements = chunk2UTJRP4F_cjs.generatePostgresDDL(tables2);
|
|
143
143
|
for (const statement of statements) {
|
|
144
144
|
await db.execute(drizzleOrm.sql.raw(statement));
|
|
145
145
|
}
|
|
@@ -180,7 +180,7 @@ function createPostgresOperationBackend(options) {
|
|
|
180
180
|
async function execRun(query) {
|
|
181
181
|
await db.execute(query);
|
|
182
182
|
}
|
|
183
|
-
const commonBackend =
|
|
183
|
+
const commonBackend = chunk2UTJRP4F_cjs.createCommonOperationBackend({
|
|
184
184
|
batchConfig: {
|
|
185
185
|
checkUniqueBatchChunkSize: POSTGRES_CHECK_UNIQUE_BATCH_CHUNK_SIZE,
|
|
186
186
|
edgeInsertBatchSize: POSTGRES_EDGE_INSERT_BATCH_SIZE,
|
|
@@ -193,7 +193,7 @@ function createPostgresOperationBackend(options) {
|
|
|
193
193
|
execGet,
|
|
194
194
|
execRun
|
|
195
195
|
},
|
|
196
|
-
nowIso:
|
|
196
|
+
nowIso: chunk2UTJRP4F_cjs.nowIso,
|
|
197
197
|
operationStrategy,
|
|
198
198
|
rowMappers: {
|
|
199
199
|
toEdgeRow,
|
|
@@ -216,7 +216,7 @@ function createPostgresOperationBackend(options) {
|
|
|
216
216
|
tableNames,
|
|
217
217
|
// === Embedding Operations ===
|
|
218
218
|
async upsertEmbedding(params) {
|
|
219
|
-
const timestamp =
|
|
219
|
+
const timestamp = chunk2UTJRP4F_cjs.nowIso();
|
|
220
220
|
const query = operationStrategy.buildUpsertEmbedding(params, timestamp);
|
|
221
221
|
await execRun(query);
|
|
222
222
|
},
|
|
@@ -255,7 +255,7 @@ function createPostgresOperationBackend(options) {
|
|
|
255
255
|
...params.indexParams?.efConstruction === void 0 ? {} : { hnswEfConstruction: params.indexParams.efConstruction },
|
|
256
256
|
...params.indexParams?.lists === void 0 ? {} : { ivfflatLists: params.indexParams.lists }
|
|
257
257
|
};
|
|
258
|
-
const result = await
|
|
258
|
+
const result = await chunk2UTJRP4F_cjs.createPostgresVectorIndex(db, indexOptions);
|
|
259
259
|
if (!result.success) {
|
|
260
260
|
throw new Error(
|
|
261
261
|
result.message ?? "Failed to create PostgreSQL vector index"
|
|
@@ -265,13 +265,13 @@ function createPostgresOperationBackend(options) {
|
|
|
265
265
|
async dropVectorIndex(params) {
|
|
266
266
|
const metrics = POSTGRES_VECTOR_CAPABILITIES.vector?.metrics ?? ["cosine"];
|
|
267
267
|
for (const metric of metrics) {
|
|
268
|
-
const indexName =
|
|
268
|
+
const indexName = chunk2UTJRP4F_cjs.generateVectorIndexName(
|
|
269
269
|
params.graphId,
|
|
270
270
|
params.nodeKind,
|
|
271
271
|
params.fieldPath,
|
|
272
272
|
metric
|
|
273
273
|
);
|
|
274
|
-
const result = await
|
|
274
|
+
const result = await chunk2UTJRP4F_cjs.dropPostgresVectorIndex(db, indexName);
|
|
275
275
|
if (!result.success) {
|
|
276
276
|
throw new Error(
|
|
277
277
|
result.message ?? "Failed to drop PostgreSQL vector index"
|
|
@@ -301,39 +301,39 @@ function createTransactionBackend(options) {
|
|
|
301
301
|
|
|
302
302
|
Object.defineProperty(exports, "createPostgresTables", {
|
|
303
303
|
enumerable: true,
|
|
304
|
-
get: function () { return
|
|
304
|
+
get: function () { return chunk2UTJRP4F_cjs.createPostgresTables; }
|
|
305
305
|
});
|
|
306
306
|
Object.defineProperty(exports, "edges", {
|
|
307
307
|
enumerable: true,
|
|
308
|
-
get: function () { return
|
|
308
|
+
get: function () { return chunk2UTJRP4F_cjs.edges; }
|
|
309
309
|
});
|
|
310
310
|
Object.defineProperty(exports, "embeddings", {
|
|
311
311
|
enumerable: true,
|
|
312
|
-
get: function () { return
|
|
312
|
+
get: function () { return chunk2UTJRP4F_cjs.embeddings; }
|
|
313
313
|
});
|
|
314
314
|
Object.defineProperty(exports, "generatePostgresDDL", {
|
|
315
315
|
enumerable: true,
|
|
316
|
-
get: function () { return
|
|
316
|
+
get: function () { return chunk2UTJRP4F_cjs.generatePostgresDDL; }
|
|
317
317
|
});
|
|
318
318
|
Object.defineProperty(exports, "generatePostgresMigrationSQL", {
|
|
319
319
|
enumerable: true,
|
|
320
|
-
get: function () { return
|
|
320
|
+
get: function () { return chunk2UTJRP4F_cjs.generatePostgresMigrationSQL; }
|
|
321
321
|
});
|
|
322
322
|
Object.defineProperty(exports, "nodes", {
|
|
323
323
|
enumerable: true,
|
|
324
|
-
get: function () { return
|
|
324
|
+
get: function () { return chunk2UTJRP4F_cjs.nodes; }
|
|
325
325
|
});
|
|
326
326
|
Object.defineProperty(exports, "schemaVersions", {
|
|
327
327
|
enumerable: true,
|
|
328
|
-
get: function () { return
|
|
328
|
+
get: function () { return chunk2UTJRP4F_cjs.schemaVersions; }
|
|
329
329
|
});
|
|
330
330
|
Object.defineProperty(exports, "tables", {
|
|
331
331
|
enumerable: true,
|
|
332
|
-
get: function () { return
|
|
332
|
+
get: function () { return chunk2UTJRP4F_cjs.tables; }
|
|
333
333
|
});
|
|
334
334
|
Object.defineProperty(exports, "uniques", {
|
|
335
335
|
enumerable: true,
|
|
336
|
-
get: function () { return
|
|
336
|
+
get: function () { return chunk2UTJRP4F_cjs.uniques; }
|
|
337
337
|
});
|
|
338
338
|
exports.createPostgresBackend = createPostgresBackend;
|
|
339
339
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { createNodeRowMapper, POSTGRES_ROW_MAPPER_CONFIG, createEdgeRowMapper, createUniqueRowMapper, createSchemaVersionRowMapper, POSTGRES_CAPABILITIES, tables, createPostgresOperationStrategy, createCommonOperationBackend, nowIso, generatePostgresDDL, generateVectorIndexName, dropPostgresVectorIndex, createPostgresVectorIndex, compileQueryWithDialect, formatPostgresTimestamp } from '../../chunk-
|
|
2
|
-
export { createPostgresTables, edges, embeddings, generatePostgresDDL, generatePostgresMigrationSQL, nodes, schemaVersions, tables, uniques } from '../../chunk-
|
|
3
|
-
import '../../chunk-
|
|
1
|
+
import { createNodeRowMapper, POSTGRES_ROW_MAPPER_CONFIG, createEdgeRowMapper, createUniqueRowMapper, createSchemaVersionRowMapper, POSTGRES_CAPABILITIES, tables, createPostgresOperationStrategy, createCommonOperationBackend, nowIso, generatePostgresDDL, generateVectorIndexName, dropPostgresVectorIndex, createPostgresVectorIndex, compileQueryWithDialect, formatPostgresTimestamp } from '../../chunk-7ZVPFJLQ.js';
|
|
2
|
+
export { createPostgresTables, edges, embeddings, generatePostgresDDL, generatePostgresMigrationSQL, nodes, schemaVersions, tables, uniques } from '../../chunk-7ZVPFJLQ.js';
|
|
3
|
+
import '../../chunk-WFMTAEEN.js';
|
|
4
4
|
import '../../chunk-6GWJH6AR.js';
|
|
5
5
|
import '../../chunk-GNIYZKBI.js';
|
|
6
6
|
import '../../chunk-K7SQ3SWP.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
require('../../chunk-
|
|
3
|
+
var chunk5H74QKKF_cjs = require('../../chunk-5H74QKKF.cjs');
|
|
4
|
+
var chunk2UTJRP4F_cjs = require('../../chunk-2UTJRP4F.cjs');
|
|
5
|
+
require('../../chunk-O5PST6TB.cjs');
|
|
6
6
|
require('../../chunk-LELLOHJK.cjs');
|
|
7
7
|
require('../../chunk-MME3H4ZF.cjs');
|
|
8
8
|
require('../../chunk-P5CNM325.cjs');
|
|
@@ -11,43 +11,43 @@ require('../../chunk-P5CNM325.cjs');
|
|
|
11
11
|
|
|
12
12
|
Object.defineProperty(exports, "createSqliteBackend", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunk5H74QKKF_cjs.createSqliteBackend; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "createSqliteTables", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunk2UTJRP4F_cjs.createSqliteTables; }
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(exports, "edges", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
22
|
+
get: function () { return chunk2UTJRP4F_cjs.edges2; }
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "embeddings", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
26
|
+
get: function () { return chunk2UTJRP4F_cjs.embeddings2; }
|
|
27
27
|
});
|
|
28
28
|
Object.defineProperty(exports, "generateSqliteDDL", {
|
|
29
29
|
enumerable: true,
|
|
30
|
-
get: function () { return
|
|
30
|
+
get: function () { return chunk2UTJRP4F_cjs.generateSqliteDDL; }
|
|
31
31
|
});
|
|
32
32
|
Object.defineProperty(exports, "generateSqliteMigrationSQL", {
|
|
33
33
|
enumerable: true,
|
|
34
|
-
get: function () { return
|
|
34
|
+
get: function () { return chunk2UTJRP4F_cjs.generateSqliteMigrationSQL; }
|
|
35
35
|
});
|
|
36
36
|
Object.defineProperty(exports, "nodes", {
|
|
37
37
|
enumerable: true,
|
|
38
|
-
get: function () { return
|
|
38
|
+
get: function () { return chunk2UTJRP4F_cjs.nodes2; }
|
|
39
39
|
});
|
|
40
40
|
Object.defineProperty(exports, "schemaVersions", {
|
|
41
41
|
enumerable: true,
|
|
42
|
-
get: function () { return
|
|
42
|
+
get: function () { return chunk2UTJRP4F_cjs.schemaVersions2; }
|
|
43
43
|
});
|
|
44
44
|
Object.defineProperty(exports, "tables", {
|
|
45
45
|
enumerable: true,
|
|
46
|
-
get: function () { return
|
|
46
|
+
get: function () { return chunk2UTJRP4F_cjs.tables2; }
|
|
47
47
|
});
|
|
48
48
|
Object.defineProperty(exports, "uniques", {
|
|
49
49
|
enumerable: true,
|
|
50
|
-
get: function () { return
|
|
50
|
+
get: function () { return chunk2UTJRP4F_cjs.uniques2; }
|
|
51
51
|
});
|
|
52
52
|
//# sourceMappingURL=index.cjs.map
|
|
53
53
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { createSqliteBackend } from '../../chunk-
|
|
2
|
-
export { createSqliteTables, edges2 as edges, embeddings2 as embeddings, generateSqliteDDL, generateSqliteMigrationSQL, nodes2 as nodes, schemaVersions2 as schemaVersions, tables2 as tables, uniques2 as uniques } from '../../chunk-
|
|
3
|
-
import '../../chunk-
|
|
1
|
+
export { createSqliteBackend } from '../../chunk-IRS2C6GN.js';
|
|
2
|
+
export { createSqliteTables, edges2 as edges, embeddings2 as embeddings, generateSqliteDDL, generateSqliteMigrationSQL, nodes2 as nodes, schemaVersions2 as schemaVersions, tables2 as tables, uniques2 as uniques } from '../../chunk-7ZVPFJLQ.js';
|
|
3
|
+
import '../../chunk-WFMTAEEN.js';
|
|
4
4
|
import '../../chunk-6GWJH6AR.js';
|
|
5
5
|
import '../../chunk-GNIYZKBI.js';
|
|
6
6
|
import '../../chunk-K7SQ3SWP.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunk5H74QKKF_cjs = require('../../chunk-5H74QKKF.cjs');
|
|
4
|
+
var chunk2UTJRP4F_cjs = require('../../chunk-2UTJRP4F.cjs');
|
|
5
|
+
var chunkO5PST6TB_cjs = require('../../chunk-O5PST6TB.cjs');
|
|
6
6
|
require('../../chunk-LELLOHJK.cjs');
|
|
7
7
|
require('../../chunk-MME3H4ZF.cjs');
|
|
8
8
|
require('../../chunk-P5CNM325.cjs');
|
|
@@ -34,7 +34,7 @@ function createDatabase(path) {
|
|
|
34
34
|
const message = getUnknownErrorMessage(error);
|
|
35
35
|
const mismatch = parseNodeModuleVersionMismatchMessage(message);
|
|
36
36
|
if (!mismatch) throw error;
|
|
37
|
-
throw new
|
|
37
|
+
throw new chunkO5PST6TB_cjs.ConfigurationError(
|
|
38
38
|
[
|
|
39
39
|
"Failed to load better-sqlite3 native addon.",
|
|
40
40
|
`It was compiled for NODE_MODULE_VERSION ${mismatch.compiled}, but this Node.js runtime requires ${mismatch.required}.`,
|
|
@@ -53,25 +53,25 @@ function createDatabase(path) {
|
|
|
53
53
|
}
|
|
54
54
|
function createLocalSqliteBackend(options = {}) {
|
|
55
55
|
const path = options.path ?? ":memory:";
|
|
56
|
-
const tables2 = options.tables ??
|
|
56
|
+
const tables2 = options.tables ?? chunk2UTJRP4F_cjs.tables2;
|
|
57
57
|
const sqlite = createDatabase(path);
|
|
58
58
|
const db = betterSqlite3.drizzle(sqlite);
|
|
59
|
-
const ddlStatements =
|
|
59
|
+
const ddlStatements = chunk2UTJRP4F_cjs.generateSqliteDDL(tables2);
|
|
60
60
|
for (const statement of ddlStatements) {
|
|
61
61
|
sqlite.exec(statement);
|
|
62
62
|
}
|
|
63
|
-
const backend =
|
|
63
|
+
const backend = chunk5H74QKKF_cjs.createSqliteBackend(db, {
|
|
64
64
|
executionProfile: {
|
|
65
65
|
isSync: true
|
|
66
66
|
},
|
|
67
67
|
tables: tables2
|
|
68
68
|
});
|
|
69
69
|
let isClosed = false;
|
|
70
|
-
function close() {
|
|
71
|
-
if (isClosed) return
|
|
70
|
+
async function close() {
|
|
71
|
+
if (isClosed) return;
|
|
72
72
|
isClosed = true;
|
|
73
|
+
await backend.close();
|
|
73
74
|
sqlite.close();
|
|
74
|
-
return Promise.resolve();
|
|
75
75
|
}
|
|
76
76
|
const managedBackend = { ...backend, close };
|
|
77
77
|
return { backend: managedBackend, db };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/backend/sqlite/local.ts"],"names":["Database","ConfigurationError","tables","drizzle","generateSqliteDDL","createSqliteBackend"],"mappings":";;;;;;;;;;;;;;;AA+CA,SAAS,uBAAuB,KAAA,EAAwB;AACtD,EAAA,IAAI,KAAA,YAAiB,KAAA,EAAO,OAAO,KAAA,CAAM,OAAA;AACzC,EAAA,OAAO,OAAO,KAAK,CAAA;AACrB;AAEA,SAAS,sCACP,OAAA,EACuC;AACvC,EAAA,MAAM,MAAA,GACJ,kFAAA;AACF,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA;AACjC,EAAA,IAAI,CAAC,KAAA,EAAO,MAAA,EAAQ,OAAO,MAAA;AAE3B,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,QAAQ,CAAA;AAC7C,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,QAAQ,CAAA;AAE7C,EAAA,IAAI,CAAC,OAAO,QAAA,CAAS,QAAQ,KAAK,CAAC,MAAA,CAAO,SAAS,QAAQ,CAAA;AACzD,IAAA,OAAO,MAAA;AAET,EAAA,OAAO,EAAE,UAAU,QAAA,EAAS;AAC9B;AAEA,SAAS,eAAe,IAAA,EAAiC;AACvD,EAAA,IAAI;AACF,IAAA,OAAO,IAAIA,0BAAS,IAAI,CAAA;AAAA,EAC1B,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,OAAA,GAAU,uBAAuB,KAAK,CAAA;AAC5C,IAAA,MAAM,QAAA,GAAW,sCAAsC,OAAO,CAAA;AAC9D,IAAA,IAAI,CAAC,UAAU,MAAM,KAAA;AAErB,IAAA,MAAM,IAAIC,oCAAA;AAAA,MACR;AAAA,QACE,6CAAA;AAAA,QACA,CAAA,wCAAA,EAA2C,QAAA,CAAS,QAAQ,CAAA,oCAAA,EAAuC,SAAS,QAAQ,CAAA,CAAA,CAAA;AAAA,QACpH,4FAAA;AAAA,QACA;AAAA,OACF,CAAE,KAAK,GAAG,CAAA;AAAA,MACV;AAAA,QACE,aAAa,OAAA,CAAQ,OAAA;AAAA,QACrB,iBAAA,EAAmB,QAAQ,QAAA,CAAS,OAAA;AAAA,QACpC,2BAA2B,QAAA,CAAS,QAAA;AAAA,QACpC,2BAA2B,QAAA,CAAS;AAAA,OACtC;AAAA,MACA,EAAE,OAAO,KAAA;AAAM,KACjB;AAAA,EACF;AACF;AAmEO,SAAS,wBAAA,CACd,OAAA,GAAqC,EAAC,EACZ;AAC1B,EAAA,MAAM,IAAA,GAAO,QAAQ,IAAA,IAAQ,UAAA;AAC7B,EAAA,MAAMC,OAAAA,GAAS,QAAQ,MAAA,IAAUA,yBAAA;AAEjC,EAAA,MAAM,MAAA,GAAS,eAAe,IAAI,CAAA;AAClC,EAAA,MAAM,EAAA,GAAKC,sBAAQ,MAAM,CAAA;AAGzB,EAAA,MAAM,aAAA,GAAgBC,oCAAkBF,OAAM,CAAA;AAC9C,EAAA,KAAA,MAAW,aAAa,aAAA,EAAe;AACrC,IAAA,MAAA,CAAO,KAAK,SAAS,CAAA;AAAA,EACvB;AAEA,EAAA,MAAM,OAAA,GAAUG,sCAAoB,EAAA,EAAI;AAAA,IACtC,gBAAA,EAAkB;AAAA,MAChB,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,MAAA,EAAAH;AAAA,GACD,CAAA;AACD,EAAA,IAAI,QAAA,GAAW,KAAA;AAEf,EAAA,
|
|
1
|
+
{"version":3,"sources":["../../../src/backend/sqlite/local.ts"],"names":["Database","ConfigurationError","tables","drizzle","generateSqliteDDL","createSqliteBackend"],"mappings":";;;;;;;;;;;;;;;AA+CA,SAAS,uBAAuB,KAAA,EAAwB;AACtD,EAAA,IAAI,KAAA,YAAiB,KAAA,EAAO,OAAO,KAAA,CAAM,OAAA;AACzC,EAAA,OAAO,OAAO,KAAK,CAAA;AACrB;AAEA,SAAS,sCACP,OAAA,EACuC;AACvC,EAAA,MAAM,MAAA,GACJ,kFAAA;AACF,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA;AACjC,EAAA,IAAI,CAAC,KAAA,EAAO,MAAA,EAAQ,OAAO,MAAA;AAE3B,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,QAAQ,CAAA;AAC7C,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,QAAQ,CAAA;AAE7C,EAAA,IAAI,CAAC,OAAO,QAAA,CAAS,QAAQ,KAAK,CAAC,MAAA,CAAO,SAAS,QAAQ,CAAA;AACzD,IAAA,OAAO,MAAA;AAET,EAAA,OAAO,EAAE,UAAU,QAAA,EAAS;AAC9B;AAEA,SAAS,eAAe,IAAA,EAAiC;AACvD,EAAA,IAAI;AACF,IAAA,OAAO,IAAIA,0BAAS,IAAI,CAAA;AAAA,EAC1B,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,OAAA,GAAU,uBAAuB,KAAK,CAAA;AAC5C,IAAA,MAAM,QAAA,GAAW,sCAAsC,OAAO,CAAA;AAC9D,IAAA,IAAI,CAAC,UAAU,MAAM,KAAA;AAErB,IAAA,MAAM,IAAIC,oCAAA;AAAA,MACR;AAAA,QACE,6CAAA;AAAA,QACA,CAAA,wCAAA,EAA2C,QAAA,CAAS,QAAQ,CAAA,oCAAA,EAAuC,SAAS,QAAQ,CAAA,CAAA,CAAA;AAAA,QACpH,4FAAA;AAAA,QACA;AAAA,OACF,CAAE,KAAK,GAAG,CAAA;AAAA,MACV;AAAA,QACE,aAAa,OAAA,CAAQ,OAAA;AAAA,QACrB,iBAAA,EAAmB,QAAQ,QAAA,CAAS,OAAA;AAAA,QACpC,2BAA2B,QAAA,CAAS,QAAA;AAAA,QACpC,2BAA2B,QAAA,CAAS;AAAA,OACtC;AAAA,MACA,EAAE,OAAO,KAAA;AAAM,KACjB;AAAA,EACF;AACF;AAmEO,SAAS,wBAAA,CACd,OAAA,GAAqC,EAAC,EACZ;AAC1B,EAAA,MAAM,IAAA,GAAO,QAAQ,IAAA,IAAQ,UAAA;AAC7B,EAAA,MAAMC,OAAAA,GAAS,QAAQ,MAAA,IAAUA,yBAAA;AAEjC,EAAA,MAAM,MAAA,GAAS,eAAe,IAAI,CAAA;AAClC,EAAA,MAAM,EAAA,GAAKC,sBAAQ,MAAM,CAAA;AAGzB,EAAA,MAAM,aAAA,GAAgBC,oCAAkBF,OAAM,CAAA;AAC9C,EAAA,KAAA,MAAW,aAAa,aAAA,EAAe;AACrC,IAAA,MAAA,CAAO,KAAK,SAAS,CAAA;AAAA,EACvB;AAEA,EAAA,MAAM,OAAA,GAAUG,sCAAoB,EAAA,EAAI;AAAA,IACtC,gBAAA,EAAkB;AAAA,MAChB,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,MAAA,EAAAH;AAAA,GACD,CAAA;AACD,EAAA,IAAI,QAAA,GAAW,KAAA;AAEf,EAAA,eAAe,KAAA,GAAuB;AACpC,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,QAAA,GAAW,IAAA;AACX,IAAA,MAAM,QAAQ,KAAA,EAAM;AACpB,IAAA,MAAA,CAAO,KAAA,EAAM;AAAA,EACf;AAEA,EAAA,MAAM,cAAA,GAA+B,EAAE,GAAG,OAAA,EAAS,KAAA,EAAM;AAEzD,EAAA,OAAO,EAAE,OAAA,EAAS,cAAA,EAAgB,EAAA,EAAG;AACvC","file":"local.cjs","sourcesContent":["/**\n * Local SQLite backend using better-sqlite3.\n *\n * This module depends on the `better-sqlite3` native addon and should only\n * be imported in Node.js environments. For bundler-friendly SQLite DDL\n * generation and Drizzle backend creation, import from `@nicia-ai/typegraph/sqlite`.\n *\n * @example In-memory database (default)\n * ```typescript\n * import { createLocalSqliteBackend } from \"@nicia-ai/typegraph/sqlite/local\";\n *\n * const { backend, db } = createLocalSqliteBackend();\n * const store = createStore(graph, backend);\n * ```\n *\n * @example File-based database for persistent local development\n * ```typescript\n * import { createLocalSqliteBackend } from \"@nicia-ai/typegraph/sqlite/local\";\n *\n * const { backend, db } = createLocalSqliteBackend({ path: \"./dev.db\" });\n * const store = createStore(graph, backend);\n * ```\n */\nimport Database from \"better-sqlite3\";\nimport {\n type BetterSQLite3Database,\n drizzle,\n} from \"drizzle-orm/better-sqlite3\";\n\nimport { ConfigurationError } from \"../../errors\";\nimport { generateSqliteDDL } from \"../drizzle/ddl\";\nimport {\n createSqliteBackend,\n type SqliteTables,\n tables as defaultTables,\n} from \"../drizzle/sqlite\";\nimport type { GraphBackend } from \"../types\";\n\n// ============================================================\n// Native Addon Helpers\n// ============================================================\n\ntype NodeModuleVersionMismatch = Readonly<{\n compiled: number;\n required: number;\n}>;\n\nfunction getUnknownErrorMessage(error: unknown): string {\n if (error instanceof Error) return error.message;\n return String(error);\n}\n\nfunction parseNodeModuleVersionMismatchMessage(\n message: string,\n): NodeModuleVersionMismatch | undefined {\n const regexp =\n /NODE_MODULE_VERSION (?<compiled>\\d+)[\\s\\S]*?NODE_MODULE_VERSION (?<required>\\d+)/;\n const match = regexp.exec(message);\n if (!match?.groups) return undefined;\n\n const compiled = Number(match.groups.compiled);\n const required = Number(match.groups.required);\n\n if (!Number.isFinite(compiled) || !Number.isFinite(required))\n return undefined;\n\n return { compiled, required };\n}\n\nfunction createDatabase(path: string): Database.Database {\n try {\n return new Database(path);\n } catch (error) {\n const message = getUnknownErrorMessage(error);\n const mismatch = parseNodeModuleVersionMismatchMessage(message);\n if (!mismatch) throw error;\n\n throw new ConfigurationError(\n [\n \"Failed to load better-sqlite3 native addon.\",\n `It was compiled for NODE_MODULE_VERSION ${mismatch.compiled}, but this Node.js runtime requires ${mismatch.required}.`,\n \"This usually happens after switching Node versions without rebuilding native dependencies.\",\n \"Rebuild with: pnpm rebuild better-sqlite3 (or npm rebuild better-sqlite3).\",\n ].join(\" \"),\n {\n nodeVersion: process.version,\n nodeModuleVersion: process.versions.modules,\n compiledNodeModuleVersion: mismatch.compiled,\n requiredNodeModuleVersion: mismatch.required,\n },\n { cause: error },\n );\n }\n}\n\n// ============================================================\n// Types\n// ============================================================\n\n/**\n * Options for creating a local SQLite backend.\n */\nexport type LocalSqliteBackendOptions = Readonly<{\n /**\n * Path to the SQLite database file.\n * Defaults to \":memory:\" for an in-memory database.\n */\n path?: string;\n\n /**\n * Custom table definitions.\n * Defaults to standard TypeGraph table names.\n */\n tables?: SqliteTables;\n}>;\n\n/**\n * Result of creating a local SQLite backend.\n */\nexport type LocalSqliteBackendResult = Readonly<{\n /**\n * The GraphBackend instance for use with createStore.\n */\n backend: GraphBackend;\n\n /**\n * The underlying Drizzle database instance.\n * Useful for direct SQL access or cleanup.\n */\n db: BetterSQLite3Database;\n}>;\n\n// ============================================================\n// Factory Function\n// ============================================================\n\n/**\n * Creates a SQLite backend with minimal configuration.\n *\n * This is a convenience function for local development and testing.\n * It handles database creation, schema migration, and backend setup.\n *\n * For production deployments or custom configurations, use createSqliteBackend\n * directly with your own Drizzle database instance.\n *\n * @param options - Configuration options\n * @returns Backend and database instances\n *\n * @example In-memory database (default)\n * ```typescript\n * const { backend } = createLocalSqliteBackend();\n * const store = createStore(graph, backend);\n * ```\n *\n * @example File-based database\n * ```typescript\n * const { backend, db } = createLocalSqliteBackend({ path: \"./data.db\" });\n * const store = createStore(graph, backend);\n * ```\n */\nexport function createLocalSqliteBackend(\n options: LocalSqliteBackendOptions = {},\n): LocalSqliteBackendResult {\n const path = options.path ?? \":memory:\";\n const tables = options.tables ?? defaultTables;\n\n const sqlite = createDatabase(path);\n const db = drizzle(sqlite);\n\n // Generate and execute DDL from schema\n const ddlStatements = generateSqliteDDL(tables);\n for (const statement of ddlStatements) {\n sqlite.exec(statement);\n }\n\n const backend = createSqliteBackend(db, {\n executionProfile: {\n isSync: true,\n },\n tables,\n });\n let isClosed = false;\n\n async function close(): Promise<void> {\n if (isClosed) return;\n isClosed = true;\n await backend.close();\n sqlite.close();\n }\n\n const managedBackend: GraphBackend = { ...backend, close };\n\n return { backend: managedBackend, db };\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { createSqliteBackend } from '../../chunk-
|
|
2
|
-
import { tables2, generateSqliteDDL } from '../../chunk-
|
|
3
|
-
import { ConfigurationError } from '../../chunk-
|
|
1
|
+
import { createSqliteBackend } from '../../chunk-IRS2C6GN.js';
|
|
2
|
+
import { tables2, generateSqliteDDL } from '../../chunk-7ZVPFJLQ.js';
|
|
3
|
+
import { ConfigurationError } from '../../chunk-WFMTAEEN.js';
|
|
4
4
|
import '../../chunk-6GWJH6AR.js';
|
|
5
5
|
import '../../chunk-GNIYZKBI.js';
|
|
6
6
|
import '../../chunk-K7SQ3SWP.js';
|
|
@@ -61,11 +61,11 @@ function createLocalSqliteBackend(options = {}) {
|
|
|
61
61
|
tables: tables2$1
|
|
62
62
|
});
|
|
63
63
|
let isClosed = false;
|
|
64
|
-
function close() {
|
|
65
|
-
if (isClosed) return
|
|
64
|
+
async function close() {
|
|
65
|
+
if (isClosed) return;
|
|
66
66
|
isClosed = true;
|
|
67
|
+
await backend.close();
|
|
67
68
|
sqlite.close();
|
|
68
|
-
return Promise.resolve();
|
|
69
69
|
}
|
|
70
70
|
const managedBackend = { ...backend, close };
|
|
71
71
|
return { backend: managedBackend, db };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/backend/sqlite/local.ts"],"names":["tables"],"mappings":";;;;;;;;;AA+CA,SAAS,uBAAuB,KAAA,EAAwB;AACtD,EAAA,IAAI,KAAA,YAAiB,KAAA,EAAO,OAAO,KAAA,CAAM,OAAA;AACzC,EAAA,OAAO,OAAO,KAAK,CAAA;AACrB;AAEA,SAAS,sCACP,OAAA,EACuC;AACvC,EAAA,MAAM,MAAA,GACJ,kFAAA;AACF,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA;AACjC,EAAA,IAAI,CAAC,KAAA,EAAO,MAAA,EAAQ,OAAO,MAAA;AAE3B,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,QAAQ,CAAA;AAC7C,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,QAAQ,CAAA;AAE7C,EAAA,IAAI,CAAC,OAAO,QAAA,CAAS,QAAQ,KAAK,CAAC,MAAA,CAAO,SAAS,QAAQ,CAAA;AACzD,IAAA,OAAO,MAAA;AAET,EAAA,OAAO,EAAE,UAAU,QAAA,EAAS;AAC9B;AAEA,SAAS,eAAe,IAAA,EAAiC;AACvD,EAAA,IAAI;AACF,IAAA,OAAO,IAAI,SAAS,IAAI,CAAA;AAAA,EAC1B,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,OAAA,GAAU,uBAAuB,KAAK,CAAA;AAC5C,IAAA,MAAM,QAAA,GAAW,sCAAsC,OAAO,CAAA;AAC9D,IAAA,IAAI,CAAC,UAAU,MAAM,KAAA;AAErB,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR;AAAA,QACE,6CAAA;AAAA,QACA,CAAA,wCAAA,EAA2C,QAAA,CAAS,QAAQ,CAAA,oCAAA,EAAuC,SAAS,QAAQ,CAAA,CAAA,CAAA;AAAA,QACpH,4FAAA;AAAA,QACA;AAAA,OACF,CAAE,KAAK,GAAG,CAAA;AAAA,MACV;AAAA,QACE,aAAa,OAAA,CAAQ,OAAA;AAAA,QACrB,iBAAA,EAAmB,QAAQ,QAAA,CAAS,OAAA;AAAA,QACpC,2BAA2B,QAAA,CAAS,QAAA;AAAA,QACpC,2BAA2B,QAAA,CAAS;AAAA,OACtC;AAAA,MACA,EAAE,OAAO,KAAA;AAAM,KACjB;AAAA,EACF;AACF;AAmEO,SAAS,wBAAA,CACd,OAAA,GAAqC,EAAC,EACZ;AAC1B,EAAA,MAAM,IAAA,GAAO,QAAQ,IAAA,IAAQ,UAAA;AAC7B,EAAA,MAAMA,SAAAA,GAAS,QAAQ,MAAA,IAAUA,OAAA;AAEjC,EAAA,MAAM,MAAA,GAAS,eAAe,IAAI,CAAA;AAClC,EAAA,MAAM,EAAA,GAAK,QAAQ,MAAM,CAAA;AAGzB,EAAA,MAAM,aAAA,GAAgB,kBAAkBA,SAAM,CAAA;AAC9C,EAAA,KAAA,MAAW,aAAa,aAAA,EAAe;AACrC,IAAA,MAAA,CAAO,KAAK,SAAS,CAAA;AAAA,EACvB;AAEA,EAAA,MAAM,OAAA,GAAU,oBAAoB,EAAA,EAAI;AAAA,IACtC,gBAAA,EAAkB;AAAA,MAChB,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,MAAA,EAAAA;AAAA,GACD,CAAA;AACD,EAAA,IAAI,QAAA,GAAW,KAAA;AAEf,EAAA,
|
|
1
|
+
{"version":3,"sources":["../../../src/backend/sqlite/local.ts"],"names":["tables"],"mappings":";;;;;;;;;AA+CA,SAAS,uBAAuB,KAAA,EAAwB;AACtD,EAAA,IAAI,KAAA,YAAiB,KAAA,EAAO,OAAO,KAAA,CAAM,OAAA;AACzC,EAAA,OAAO,OAAO,KAAK,CAAA;AACrB;AAEA,SAAS,sCACP,OAAA,EACuC;AACvC,EAAA,MAAM,MAAA,GACJ,kFAAA;AACF,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA;AACjC,EAAA,IAAI,CAAC,KAAA,EAAO,MAAA,EAAQ,OAAO,MAAA;AAE3B,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,QAAQ,CAAA;AAC7C,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,QAAQ,CAAA;AAE7C,EAAA,IAAI,CAAC,OAAO,QAAA,CAAS,QAAQ,KAAK,CAAC,MAAA,CAAO,SAAS,QAAQ,CAAA;AACzD,IAAA,OAAO,MAAA;AAET,EAAA,OAAO,EAAE,UAAU,QAAA,EAAS;AAC9B;AAEA,SAAS,eAAe,IAAA,EAAiC;AACvD,EAAA,IAAI;AACF,IAAA,OAAO,IAAI,SAAS,IAAI,CAAA;AAAA,EAC1B,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,OAAA,GAAU,uBAAuB,KAAK,CAAA;AAC5C,IAAA,MAAM,QAAA,GAAW,sCAAsC,OAAO,CAAA;AAC9D,IAAA,IAAI,CAAC,UAAU,MAAM,KAAA;AAErB,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR;AAAA,QACE,6CAAA;AAAA,QACA,CAAA,wCAAA,EAA2C,QAAA,CAAS,QAAQ,CAAA,oCAAA,EAAuC,SAAS,QAAQ,CAAA,CAAA,CAAA;AAAA,QACpH,4FAAA;AAAA,QACA;AAAA,OACF,CAAE,KAAK,GAAG,CAAA;AAAA,MACV;AAAA,QACE,aAAa,OAAA,CAAQ,OAAA;AAAA,QACrB,iBAAA,EAAmB,QAAQ,QAAA,CAAS,OAAA;AAAA,QACpC,2BAA2B,QAAA,CAAS,QAAA;AAAA,QACpC,2BAA2B,QAAA,CAAS;AAAA,OACtC;AAAA,MACA,EAAE,OAAO,KAAA;AAAM,KACjB;AAAA,EACF;AACF;AAmEO,SAAS,wBAAA,CACd,OAAA,GAAqC,EAAC,EACZ;AAC1B,EAAA,MAAM,IAAA,GAAO,QAAQ,IAAA,IAAQ,UAAA;AAC7B,EAAA,MAAMA,SAAAA,GAAS,QAAQ,MAAA,IAAUA,OAAA;AAEjC,EAAA,MAAM,MAAA,GAAS,eAAe,IAAI,CAAA;AAClC,EAAA,MAAM,EAAA,GAAK,QAAQ,MAAM,CAAA;AAGzB,EAAA,MAAM,aAAA,GAAgB,kBAAkBA,SAAM,CAAA;AAC9C,EAAA,KAAA,MAAW,aAAa,aAAA,EAAe;AACrC,IAAA,MAAA,CAAO,KAAK,SAAS,CAAA;AAAA,EACvB;AAEA,EAAA,MAAM,OAAA,GAAU,oBAAoB,EAAA,EAAI;AAAA,IACtC,gBAAA,EAAkB;AAAA,MAChB,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,MAAA,EAAAA;AAAA,GACD,CAAA;AACD,EAAA,IAAI,QAAA,GAAW,KAAA;AAEf,EAAA,eAAe,KAAA,GAAuB;AACpC,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,QAAA,GAAW,IAAA;AACX,IAAA,MAAM,QAAQ,KAAA,EAAM;AACpB,IAAA,MAAA,CAAO,KAAA,EAAM;AAAA,EACf;AAEA,EAAA,MAAM,cAAA,GAA+B,EAAE,GAAG,OAAA,EAAS,KAAA,EAAM;AAEzD,EAAA,OAAO,EAAE,OAAA,EAAS,cAAA,EAAgB,EAAA,EAAG;AACvC","file":"local.js","sourcesContent":["/**\n * Local SQLite backend using better-sqlite3.\n *\n * This module depends on the `better-sqlite3` native addon and should only\n * be imported in Node.js environments. For bundler-friendly SQLite DDL\n * generation and Drizzle backend creation, import from `@nicia-ai/typegraph/sqlite`.\n *\n * @example In-memory database (default)\n * ```typescript\n * import { createLocalSqliteBackend } from \"@nicia-ai/typegraph/sqlite/local\";\n *\n * const { backend, db } = createLocalSqliteBackend();\n * const store = createStore(graph, backend);\n * ```\n *\n * @example File-based database for persistent local development\n * ```typescript\n * import { createLocalSqliteBackend } from \"@nicia-ai/typegraph/sqlite/local\";\n *\n * const { backend, db } = createLocalSqliteBackend({ path: \"./dev.db\" });\n * const store = createStore(graph, backend);\n * ```\n */\nimport Database from \"better-sqlite3\";\nimport {\n type BetterSQLite3Database,\n drizzle,\n} from \"drizzle-orm/better-sqlite3\";\n\nimport { ConfigurationError } from \"../../errors\";\nimport { generateSqliteDDL } from \"../drizzle/ddl\";\nimport {\n createSqliteBackend,\n type SqliteTables,\n tables as defaultTables,\n} from \"../drizzle/sqlite\";\nimport type { GraphBackend } from \"../types\";\n\n// ============================================================\n// Native Addon Helpers\n// ============================================================\n\ntype NodeModuleVersionMismatch = Readonly<{\n compiled: number;\n required: number;\n}>;\n\nfunction getUnknownErrorMessage(error: unknown): string {\n if (error instanceof Error) return error.message;\n return String(error);\n}\n\nfunction parseNodeModuleVersionMismatchMessage(\n message: string,\n): NodeModuleVersionMismatch | undefined {\n const regexp =\n /NODE_MODULE_VERSION (?<compiled>\\d+)[\\s\\S]*?NODE_MODULE_VERSION (?<required>\\d+)/;\n const match = regexp.exec(message);\n if (!match?.groups) return undefined;\n\n const compiled = Number(match.groups.compiled);\n const required = Number(match.groups.required);\n\n if (!Number.isFinite(compiled) || !Number.isFinite(required))\n return undefined;\n\n return { compiled, required };\n}\n\nfunction createDatabase(path: string): Database.Database {\n try {\n return new Database(path);\n } catch (error) {\n const message = getUnknownErrorMessage(error);\n const mismatch = parseNodeModuleVersionMismatchMessage(message);\n if (!mismatch) throw error;\n\n throw new ConfigurationError(\n [\n \"Failed to load better-sqlite3 native addon.\",\n `It was compiled for NODE_MODULE_VERSION ${mismatch.compiled}, but this Node.js runtime requires ${mismatch.required}.`,\n \"This usually happens after switching Node versions without rebuilding native dependencies.\",\n \"Rebuild with: pnpm rebuild better-sqlite3 (or npm rebuild better-sqlite3).\",\n ].join(\" \"),\n {\n nodeVersion: process.version,\n nodeModuleVersion: process.versions.modules,\n compiledNodeModuleVersion: mismatch.compiled,\n requiredNodeModuleVersion: mismatch.required,\n },\n { cause: error },\n );\n }\n}\n\n// ============================================================\n// Types\n// ============================================================\n\n/**\n * Options for creating a local SQLite backend.\n */\nexport type LocalSqliteBackendOptions = Readonly<{\n /**\n * Path to the SQLite database file.\n * Defaults to \":memory:\" for an in-memory database.\n */\n path?: string;\n\n /**\n * Custom table definitions.\n * Defaults to standard TypeGraph table names.\n */\n tables?: SqliteTables;\n}>;\n\n/**\n * Result of creating a local SQLite backend.\n */\nexport type LocalSqliteBackendResult = Readonly<{\n /**\n * The GraphBackend instance for use with createStore.\n */\n backend: GraphBackend;\n\n /**\n * The underlying Drizzle database instance.\n * Useful for direct SQL access or cleanup.\n */\n db: BetterSQLite3Database;\n}>;\n\n// ============================================================\n// Factory Function\n// ============================================================\n\n/**\n * Creates a SQLite backend with minimal configuration.\n *\n * This is a convenience function for local development and testing.\n * It handles database creation, schema migration, and backend setup.\n *\n * For production deployments or custom configurations, use createSqliteBackend\n * directly with your own Drizzle database instance.\n *\n * @param options - Configuration options\n * @returns Backend and database instances\n *\n * @example In-memory database (default)\n * ```typescript\n * const { backend } = createLocalSqliteBackend();\n * const store = createStore(graph, backend);\n * ```\n *\n * @example File-based database\n * ```typescript\n * const { backend, db } = createLocalSqliteBackend({ path: \"./data.db\" });\n * const store = createStore(graph, backend);\n * ```\n */\nexport function createLocalSqliteBackend(\n options: LocalSqliteBackendOptions = {},\n): LocalSqliteBackendResult {\n const path = options.path ?? \":memory:\";\n const tables = options.tables ?? defaultTables;\n\n const sqlite = createDatabase(path);\n const db = drizzle(sqlite);\n\n // Generate and execute DDL from schema\n const ddlStatements = generateSqliteDDL(tables);\n for (const statement of ddlStatements) {\n sqlite.exec(statement);\n }\n\n const backend = createSqliteBackend(db, {\n executionProfile: {\n isSync: true,\n },\n tables,\n });\n let isClosed = false;\n\n async function close(): Promise<void> {\n if (isClosed) return;\n isClosed = true;\n await backend.close();\n sqlite.close();\n }\n\n const managedBackend: GraphBackend = { ...backend, close };\n\n return { backend: managedBackend, db };\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkO5PST6TB_cjs = require('./chunk-O5PST6TB.cjs');
|
|
4
4
|
var chunkLELLOHJK_cjs = require('./chunk-LELLOHJK.cjs');
|
|
5
5
|
var chunkMME3H4ZF_cjs = require('./chunk-MME3H4ZF.cjs');
|
|
6
6
|
var pgCore = require('drizzle-orm/pg-core');
|
|
@@ -620,7 +620,7 @@ var POSTGRES_CAPABILITIES = {
|
|
|
620
620
|
// src/backend/drizzle/row-mappers.ts
|
|
621
621
|
function requireTimestamp(value, field) {
|
|
622
622
|
if (value === void 0) {
|
|
623
|
-
throw new
|
|
623
|
+
throw new chunkO5PST6TB_cjs.DatabaseOperationError(
|
|
624
624
|
`Expected non-null ${field} timestamp`,
|
|
625
625
|
{ operation: "select", entity: "row" }
|
|
626
626
|
);
|
|
@@ -629,7 +629,7 @@ function requireTimestamp(value, field) {
|
|
|
629
629
|
}
|
|
630
630
|
function asString(value, field) {
|
|
631
631
|
if (typeof value !== "string") {
|
|
632
|
-
throw new
|
|
632
|
+
throw new chunkO5PST6TB_cjs.DatabaseOperationError(
|
|
633
633
|
`Expected ${field} to be string, got ${typeof value}`,
|
|
634
634
|
{ operation: "select", entity: "row" }
|
|
635
635
|
);
|
|
@@ -638,7 +638,7 @@ function asString(value, field) {
|
|
|
638
638
|
}
|
|
639
639
|
function asNumber(value, field) {
|
|
640
640
|
if (typeof value !== "number") {
|
|
641
|
-
throw new
|
|
641
|
+
throw new chunkO5PST6TB_cjs.DatabaseOperationError(
|
|
642
642
|
`Expected ${field} to be number, got ${typeof value}`,
|
|
643
643
|
{ operation: "select", entity: "row" }
|
|
644
644
|
);
|
|
@@ -669,7 +669,7 @@ var SQLITE_ROW_MAPPER_CONFIG = {
|
|
|
669
669
|
formatTimestamp: (value) => {
|
|
670
670
|
if (value === null || value === void 0) return;
|
|
671
671
|
if (typeof value !== "string") {
|
|
672
|
-
throw new
|
|
672
|
+
throw new chunkO5PST6TB_cjs.DatabaseOperationError(
|
|
673
673
|
`Expected timestamp to be string, got ${typeof value}`,
|
|
674
674
|
{ operation: "select", entity: "row" }
|
|
675
675
|
);
|
|
@@ -678,7 +678,7 @@ var SQLITE_ROW_MAPPER_CONFIG = {
|
|
|
678
678
|
},
|
|
679
679
|
normalizeJson: (value) => {
|
|
680
680
|
if (typeof value !== "string") {
|
|
681
|
-
throw new
|
|
681
|
+
throw new chunkO5PST6TB_cjs.DatabaseOperationError(
|
|
682
682
|
`Expected JSON column to be string, got ${typeof value}`,
|
|
683
683
|
{ operation: "select", entity: "row" }
|
|
684
684
|
);
|
|
@@ -766,7 +766,7 @@ function createCommonOperationBackend(options) {
|
|
|
766
766
|
const timestamp2 = nowIso2();
|
|
767
767
|
const query = operationStrategy.buildInsertNode(params, timestamp2);
|
|
768
768
|
const row = await execution.execGet(query);
|
|
769
|
-
if (!row) throw new
|
|
769
|
+
if (!row) throw new chunkO5PST6TB_cjs.DatabaseOperationError("Insert node failed: no row returned", { operation: "insert", entity: "node" });
|
|
770
770
|
return rowMappers.toNodeRow(row);
|
|
771
771
|
},
|
|
772
772
|
async insertNodeNoReturn(params) {
|
|
@@ -816,7 +816,7 @@ function createCommonOperationBackend(options) {
|
|
|
816
816
|
const timestamp2 = nowIso2();
|
|
817
817
|
const query = operationStrategy.buildUpdateNode(params, timestamp2);
|
|
818
818
|
const row = await execution.execGet(query);
|
|
819
|
-
if (!row) throw new
|
|
819
|
+
if (!row) throw new chunkO5PST6TB_cjs.DatabaseOperationError("Update node failed: no row returned", { operation: "update", entity: "node" });
|
|
820
820
|
return rowMappers.toNodeRow(row);
|
|
821
821
|
},
|
|
822
822
|
async deleteNode(params) {
|
|
@@ -851,7 +851,7 @@ function createCommonOperationBackend(options) {
|
|
|
851
851
|
const timestamp2 = nowIso2();
|
|
852
852
|
const query = operationStrategy.buildInsertEdge(params, timestamp2);
|
|
853
853
|
const row = await execution.execGet(query);
|
|
854
|
-
if (!row) throw new
|
|
854
|
+
if (!row) throw new chunkO5PST6TB_cjs.DatabaseOperationError("Insert edge failed: no row returned", { operation: "insert", entity: "edge" });
|
|
855
855
|
return rowMappers.toEdgeRow(row);
|
|
856
856
|
},
|
|
857
857
|
async insertEdgeNoReturn(params) {
|
|
@@ -901,7 +901,7 @@ function createCommonOperationBackend(options) {
|
|
|
901
901
|
const timestamp2 = nowIso2();
|
|
902
902
|
const query = operationStrategy.buildUpdateEdge(params, timestamp2);
|
|
903
903
|
const row = await execution.execGet(query);
|
|
904
|
-
if (!row) throw new
|
|
904
|
+
if (!row) throw new chunkO5PST6TB_cjs.DatabaseOperationError("Update edge failed: no row returned", { operation: "update", entity: "edge" });
|
|
905
905
|
return rowMappers.toEdgeRow(row);
|
|
906
906
|
},
|
|
907
907
|
async deleteEdge(params) {
|
|
@@ -952,7 +952,7 @@ function createCommonOperationBackend(options) {
|
|
|
952
952
|
const query = operationStrategy.buildInsertUnique(params);
|
|
953
953
|
const result = await execution.execGet(query);
|
|
954
954
|
if (result && result.node_id !== params.nodeId) {
|
|
955
|
-
throw new
|
|
955
|
+
throw new chunkO5PST6TB_cjs.UniquenessError({
|
|
956
956
|
constraintName: params.constraintName,
|
|
957
957
|
kind: params.nodeKind,
|
|
958
958
|
existingId: result.node_id,
|
|
@@ -990,7 +990,7 @@ function createCommonOperationBackend(options) {
|
|
|
990
990
|
const timestamp2 = nowIso2();
|
|
991
991
|
const query = operationStrategy.buildInsertSchema(params, timestamp2);
|
|
992
992
|
const row = await execution.execGet(query);
|
|
993
|
-
if (!row) throw new
|
|
993
|
+
if (!row) throw new chunkO5PST6TB_cjs.DatabaseOperationError("Insert schema failed: no row returned", { operation: "insert", entity: "schema" });
|
|
994
994
|
return rowMappers.toSchemaVersionRow(row);
|
|
995
995
|
},
|
|
996
996
|
async getSchemaVersion(graphId, version) {
|
|
@@ -2160,5 +2160,5 @@ exports.tables = tables;
|
|
|
2160
2160
|
exports.tables2 = tables2;
|
|
2161
2161
|
exports.uniques = uniques;
|
|
2162
2162
|
exports.uniques2 = uniques2;
|
|
2163
|
-
//# sourceMappingURL=chunk-
|
|
2164
|
-
//# sourceMappingURL=chunk-
|
|
2163
|
+
//# sourceMappingURL=chunk-2UTJRP4F.cjs.map
|
|
2164
|
+
//# sourceMappingURL=chunk-2UTJRP4F.cjs.map
|