@slorenzot/memento-core 0.4.0 → 0.5.0

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.
@@ -1,9 +1,12 @@
1
1
  export interface MementoConfig {
2
- storagePath: string;
2
+ storageMethod?: 'database' | 'storage';
3
+ dbPath?: string;
4
+ storagePath?: string;
3
5
  projectId?: string;
4
6
  }
5
7
  export declare function findProjectConfig(startDir?: string): MementoConfig | null;
6
8
  export declare function loadConfig(): MementoConfig;
7
9
  export declare function resolveStoragePath(config: MementoConfig): string;
10
+ export declare function resolveDbPath(config: MementoConfig): string;
8
11
  export declare function getProjectId(config: MementoConfig): string;
9
12
  //# sourceMappingURL=ConfigManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigManager.d.ts","sourceRoot":"","sources":["../src/ConfigManager.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsBD,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,MAAsB,GAAG,aAAa,GAAG,IAAI,CA0BxF;AAED,wBAAgB,UAAU,IAAI,aAAa,CAsB1C;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAUhE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAS1D"}
1
+ {"version":3,"file":"ConfigManager.d.ts","sourceRoot":"","sources":["../src/ConfigManager.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwBD,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,MAAsB,GAAG,aAAa,GAAG,IAAI,CA0BxF;AAED,wBAAgB,UAAU,IAAI,aAAa,CA8B1C;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAYhE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAY3D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAS1D"}
@@ -3,11 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.findProjectConfig = findProjectConfig;
4
4
  exports.loadConfig = loadConfig;
5
5
  exports.resolveStoragePath = resolveStoragePath;
6
+ exports.resolveDbPath = resolveDbPath;
6
7
  exports.getProjectId = getProjectId;
7
8
  const fs_1 = require("fs");
8
9
  const path_1 = require("path");
9
10
  const os_1 = require("os");
10
11
  const DEFAULT_CONFIG = {
12
+ storageMethod: 'database',
13
+ dbPath: '.memento/db/memento.db',
11
14
  storagePath: 'database/storage',
12
15
  };
13
16
  const GLOBAL_CONFIG_PATH = (0, path_1.join)((0, os_1.homedir)(), '.memento', 'config');
@@ -55,6 +58,12 @@ function loadConfig() {
55
58
  if (globalConfig) {
56
59
  config = { ...config, ...globalConfig };
57
60
  }
61
+ if (process.env.MEMENTO_STORAGE_METHOD) {
62
+ config.storageMethod = process.env.MEMENTO_STORAGE_METHOD;
63
+ }
64
+ if (process.env.MEMENTO_DB_PATH) {
65
+ config.dbPath = process.env.MEMENTO_DB_PATH;
66
+ }
58
67
  if (process.env.MEMENTO_STORAGE_PATH) {
59
68
  config.storagePath = process.env.MEMENTO_STORAGE_PATH;
60
69
  }
@@ -64,13 +73,24 @@ function loadConfig() {
64
73
  return config;
65
74
  }
66
75
  function resolveStoragePath(config) {
67
- if (config.storagePath.startsWith('/')) {
68
- return config.storagePath;
76
+ const storagePath = config.storagePath || DEFAULT_CONFIG.storagePath;
77
+ if (storagePath.startsWith('/')) {
78
+ return storagePath;
79
+ }
80
+ if (storagePath.startsWith('~/')) {
81
+ return (0, path_1.join)((0, os_1.homedir)(), storagePath.slice(2));
82
+ }
83
+ return (0, path_1.join)(process.cwd(), storagePath);
84
+ }
85
+ function resolveDbPath(config) {
86
+ const dbPath = config.dbPath || DEFAULT_CONFIG.dbPath;
87
+ if (dbPath.startsWith('/')) {
88
+ return dbPath;
69
89
  }
70
- if (config.storagePath.startsWith('~/')) {
71
- return (0, path_1.join)((0, os_1.homedir)(), config.storagePath.slice(2));
90
+ if (dbPath.startsWith('~/')) {
91
+ return (0, path_1.join)((0, os_1.homedir)(), dbPath.slice(2));
72
92
  }
73
- return (0, path_1.join)(process.cwd(), config.storagePath);
93
+ return (0, path_1.join)(process.cwd(), dbPath);
74
94
  }
75
95
  function getProjectId(config) {
76
96
  if (config.projectId) {
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigManager.js","sourceRoot":"","sources":["../src/ConfigManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConfigManager.js","sourceRoot":"","sources":["../src/ConfigManager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slorenzot/memento-core",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Core memory engine for Memento with bun:sqlite, FTS5 search, and flexible config",
5
5
  "keywords": ["memento", "memory", "sqlite", "fts5", "bun", "config", "mementorc"],
6
6
  "license": "CC-BY-NC-ND-4.0",
@@ -18,6 +18,8 @@ beforeAll(() => {
18
18
  join(configDir, '.mementorc'),
19
19
  JSON.stringify(
20
20
  {
21
+ storageMethod: 'database',
22
+ dbPath: '.memento/db/memento.db',
21
23
  storagePath: 'database/storage',
22
24
  projectId: 'test-project',
23
25
  },
@@ -53,13 +55,21 @@ describe('ConfigManager', () => {
53
55
  it('should use default config when no .mementorc found', () => {
54
56
  const { loadConfig } = require('../src/ConfigManager');
55
57
  const { join } = require('path');
58
+ const { mkdirSync } = require('fs');
59
+
60
+ const noConfigDir = join(testDir, 'no-config-isolated');
61
+ mkdirSync(noConfigDir, { recursive: true });
56
62
 
57
63
  const originalCwd = process.cwd;
58
- process.cwd = () => join(testDir, 'no-config');
64
+ // Use /tmp which should not have .mementorc
65
+ process.cwd = () => '/tmp';
59
66
 
60
67
  try {
61
68
  const config = loadConfig();
69
+ expect(config.storageMethod).toBe('database');
70
+ expect(config.dbPath).toBe('.memento/db/memento.db');
62
71
  expect(config.storagePath).toBe('database/storage');
72
+ // projectId will be undefined when no .mementorc and no package.json
63
73
  expect(config.projectId).toBeUndefined();
64
74
  } finally {
65
75
  process.cwd = originalCwd;
@@ -70,11 +80,15 @@ describe('ConfigManager', () => {
70
80
  const { loadConfig } = require('../src/ConfigManager');
71
81
 
72
82
  const originalEnv = { ...process.env };
83
+ process.env.MEMENTO_STORAGE_METHOD = 'storage';
84
+ process.env.MEMENTO_DB_PATH = '/custom/db/memento.db';
73
85
  process.env.MEMENTO_STORAGE_PATH = '/custom/storage';
74
86
  process.env.MEMENTO_PROJECT_ID = 'env-project';
75
87
 
76
88
  try {
77
89
  const config = loadConfig();
90
+ expect(config.storageMethod).toBe('storage');
91
+ expect(config.dbPath).toBe('/custom/db/memento.db');
78
92
  expect(config.storagePath).toBe('/custom/storage');
79
93
  expect(config.projectId).toBe('env-project');
80
94
  } finally {
@@ -123,6 +137,61 @@ describe('ConfigManager', () => {
123
137
  });
124
138
  });
125
139
 
140
+ describe('resolveDbPath()', () => {
141
+ it('should resolve absolute paths', () => {
142
+ const { resolveDbPath } = require('../src/ConfigManager');
143
+ const config = { dbPath: '/absolute/path/memento.db', projectId: 'test' };
144
+ const resolved = resolveDbPath(config);
145
+ expect(resolved).toBe('/absolute/path/memento.db');
146
+ });
147
+
148
+ it('should resolve ~ to home directory', () => {
149
+ const { resolveDbPath } = require('../src/ConfigManager');
150
+ const { homedir } = require('os');
151
+ const config = { dbPath: '~/.memento/db/memento.db', projectId: 'test' };
152
+
153
+ const originalCwd = process.cwd;
154
+ process.cwd = () => '/some/working/dir';
155
+
156
+ try {
157
+ const resolved = resolveDbPath(config);
158
+ expect(resolved).toBe(join(homedir(), '.memento/db/memento.db'));
159
+ } finally {
160
+ process.cwd = originalCwd;
161
+ }
162
+ });
163
+
164
+ it('should resolve relative paths from working directory', () => {
165
+ const { resolveDbPath } = require('../src/ConfigManager');
166
+ const config = { dbPath: '.memento/db/memento.db', projectId: 'test' };
167
+
168
+ const originalCwd = process.cwd;
169
+ process.cwd = () => '/project/root';
170
+
171
+ try {
172
+ const resolved = resolveDbPath(config);
173
+ expect(resolved).toBe('/project/root/.memento/db/memento.db');
174
+ } finally {
175
+ process.cwd = originalCwd;
176
+ }
177
+ });
178
+
179
+ it('should use default dbPath when not specified', () => {
180
+ const { resolveDbPath } = require('../src/ConfigManager');
181
+ const config = { projectId: 'test' };
182
+
183
+ const originalCwd = process.cwd;
184
+ process.cwd = () => '/project/root';
185
+
186
+ try {
187
+ const resolved = resolveDbPath(config);
188
+ expect(resolved).toBe('/project/root/.memento/db/memento.db');
189
+ } finally {
190
+ process.cwd = originalCwd;
191
+ }
192
+ });
193
+ });
194
+
126
195
  describe('getProjectId()', () => {
127
196
  it('should use projectId from config if available', () => {
128
197
  const { getProjectId } = require('../src/ConfigManager');
@@ -4,11 +4,15 @@ import { homedir } from 'os';
4
4
  import { fileURLToPath } from 'url';
5
5
 
6
6
  export interface MementoConfig {
7
- storagePath: string;
7
+ storageMethod?: 'database' | 'storage';
8
+ dbPath?: string;
9
+ storagePath?: string;
8
10
  projectId?: string;
9
11
  }
10
12
 
11
13
  const DEFAULT_CONFIG: MementoConfig = {
14
+ storageMethod: 'database',
15
+ dbPath: '.memento/db/memento.db',
12
16
  storagePath: 'database/storage',
13
17
  };
14
18
 
@@ -69,6 +73,14 @@ export function loadConfig(): MementoConfig {
69
73
  config = { ...config, ...globalConfig };
70
74
  }
71
75
 
76
+ if (process.env.MEMENTO_STORAGE_METHOD) {
77
+ config.storageMethod = process.env.MEMENTO_STORAGE_METHOD as 'database' | 'storage';
78
+ }
79
+
80
+ if (process.env.MEMENTO_DB_PATH) {
81
+ config.dbPath = process.env.MEMENTO_DB_PATH;
82
+ }
83
+
72
84
  if (process.env.MEMENTO_STORAGE_PATH) {
73
85
  config.storagePath = process.env.MEMENTO_STORAGE_PATH;
74
86
  }
@@ -81,15 +93,31 @@ export function loadConfig(): MementoConfig {
81
93
  }
82
94
 
83
95
  export function resolveStoragePath(config: MementoConfig): string {
84
- if (config.storagePath.startsWith('/')) {
85
- return config.storagePath;
96
+ const storagePath = config.storagePath || DEFAULT_CONFIG.storagePath!;
97
+
98
+ if (storagePath.startsWith('/')) {
99
+ return storagePath;
100
+ }
101
+
102
+ if (storagePath.startsWith('~/')) {
103
+ return join(homedir(), storagePath.slice(2));
104
+ }
105
+
106
+ return join(process.cwd(), storagePath);
107
+ }
108
+
109
+ export function resolveDbPath(config: MementoConfig): string {
110
+ const dbPath = config.dbPath || DEFAULT_CONFIG.dbPath!;
111
+
112
+ if (dbPath.startsWith('/')) {
113
+ return dbPath;
86
114
  }
87
115
 
88
- if (config.storagePath.startsWith('~/')) {
89
- return join(homedir(), config.storagePath.slice(2));
116
+ if (dbPath.startsWith('~/')) {
117
+ return join(homedir(), dbPath.slice(2));
90
118
  }
91
119
 
92
- return join(process.cwd(), config.storagePath);
120
+ return join(process.cwd(), dbPath);
93
121
  }
94
122
 
95
123
  export function getProjectId(config: MementoConfig): string {