@portel/photon-core 2.19.2 → 2.21.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.
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js +37 -13
- package/dist/audit.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/memory.d.ts +77 -76
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +184 -189
- package/dist/memory.js.map +1 -1
- package/dist/validation.d.ts +8 -2
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +7 -6
- package/dist/validation.js.map +1 -1
- package/package.json +2 -2
- package/src/audit.ts +34 -14
- package/src/index.ts +5 -0
- package/src/memory.ts +240 -199
- package/src/validation.ts +14 -1
package/dist/memory.js
CHANGED
|
@@ -4,80 +4,28 @@
|
|
|
4
4
|
* Framework-level key-value storage for photons that eliminates
|
|
5
5
|
* boilerplate file I/O. Available as `this.memory` on Photon.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* | photon | Private to this photon (default) | .data/{namespace}/{photonName}/memory/ |
|
|
11
|
-
* | session | Per-user session (Beam sessions) | .data/_sessions/{sessionId}/{ns}/{photon}/ |
|
|
12
|
-
* | global | Shared across all photons | .data/_global/ |
|
|
7
|
+
* Architecture: MemoryProvider delegates to a pluggable MemoryBackend.
|
|
8
|
+
* The default backend is FileMemoryBackend (JSON files on disk).
|
|
9
|
+
* Enterprise deployments can swap in Redis, Postgres, or SQLite.
|
|
13
10
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* await this.memory.set('items', items);
|
|
21
|
-
* return items;
|
|
22
|
-
* }
|
|
23
|
-
* }
|
|
24
|
-
* ```
|
|
11
|
+
* Three scopes:
|
|
12
|
+
* | Scope | Meaning |
|
|
13
|
+
* |----------|----------------------------------|
|
|
14
|
+
* | photon | Private to this photon (default) |
|
|
15
|
+
* | session | Per-user session (Beam sessions) |
|
|
16
|
+
* | global | Shared across all photons |
|
|
25
17
|
*/
|
|
26
18
|
import * as fs from 'fs/promises';
|
|
27
19
|
import * as fsSync from 'fs';
|
|
28
20
|
import * as path from 'path';
|
|
29
21
|
import { getPhotonMemoryDir, getGlobalMemoryDir, getSessionMemoryDir, getLegacyMemoryDir, getLegacyGlobalMemoryDir, getLegacySessionMemoryDir, } from './data-paths.js';
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
*/
|
|
34
|
-
function resolveDir(photonId, namespace, scope, sessionId, baseDir) {
|
|
35
|
-
switch (scope) {
|
|
36
|
-
case 'photon': {
|
|
37
|
-
const newDir = getPhotonMemoryDir(namespace, photonId, baseDir);
|
|
38
|
-
// Fallback: check legacy path if new path has no data yet
|
|
39
|
-
if (!fsSync.existsSync(newDir)) {
|
|
40
|
-
const legacyDir = getLegacyMemoryDir(photonId, baseDir);
|
|
41
|
-
if (fsSync.existsSync(legacyDir))
|
|
42
|
-
return legacyDir;
|
|
43
|
-
}
|
|
44
|
-
return newDir;
|
|
45
|
-
}
|
|
46
|
-
case 'session': {
|
|
47
|
-
if (!sessionId) {
|
|
48
|
-
throw new Error('Session ID required for session-scoped memory. Set via memory.sessionId.');
|
|
49
|
-
}
|
|
50
|
-
const newDir = getSessionMemoryDir(sessionId, namespace, photonId, baseDir);
|
|
51
|
-
if (!fsSync.existsSync(newDir)) {
|
|
52
|
-
const legacyDir = getLegacySessionMemoryDir(sessionId, photonId, baseDir);
|
|
53
|
-
if (fsSync.existsSync(legacyDir))
|
|
54
|
-
return legacyDir;
|
|
55
|
-
}
|
|
56
|
-
return newDir;
|
|
57
|
-
}
|
|
58
|
-
case 'global': {
|
|
59
|
-
const newDir = getGlobalMemoryDir(baseDir);
|
|
60
|
-
if (!fsSync.existsSync(newDir)) {
|
|
61
|
-
const legacyDir = getLegacyGlobalMemoryDir(baseDir);
|
|
62
|
-
if (fsSync.existsSync(legacyDir))
|
|
63
|
-
return legacyDir;
|
|
64
|
-
}
|
|
65
|
-
return newDir;
|
|
66
|
-
}
|
|
67
|
-
default:
|
|
68
|
-
throw new Error(`Unknown memory scope: ${scope}`);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Get the file path for a key within a directory
|
|
73
|
-
*/
|
|
22
|
+
// ════════════════════════════════════════════════════════════════════════════════
|
|
23
|
+
// FILE BACKEND (default)
|
|
24
|
+
// ════════════════════════════════════════════════════════════════════════════════
|
|
74
25
|
function keyPath(dir, key) {
|
|
75
26
|
const safeKey = key.replace(/[^a-zA-Z0-9_.-]/g, '_');
|
|
76
27
|
return path.join(dir, `${safeKey}.json`);
|
|
77
28
|
}
|
|
78
|
-
/**
|
|
79
|
-
* Check if a path exists (async)
|
|
80
|
-
*/
|
|
81
29
|
async function pathExists(p) {
|
|
82
30
|
try {
|
|
83
31
|
await fs.access(p);
|
|
@@ -88,29 +36,13 @@ async function pathExists(p) {
|
|
|
88
36
|
}
|
|
89
37
|
}
|
|
90
38
|
/**
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
* Provides key-value storage with automatic JSON serialization.
|
|
94
|
-
* Each key is stored as a separate file for atomic operations.
|
|
39
|
+
* File-based memory backend. Each key is a JSON file on disk.
|
|
40
|
+
* Uses per-key promise chains and temp+rename for safe concurrent access.
|
|
95
41
|
*/
|
|
96
|
-
export class
|
|
97
|
-
_photonId;
|
|
98
|
-
_namespace;
|
|
99
|
-
_sessionId;
|
|
100
|
-
_baseDir;
|
|
42
|
+
export class FileMemoryBackend {
|
|
101
43
|
_locks = new Map();
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
this._namespace = namespace || 'local';
|
|
105
|
-
this._sessionId = sessionId;
|
|
106
|
-
this._baseDir = baseDir;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Serialize file operations per key to prevent concurrent write corruption.
|
|
110
|
-
* Reads also go through the lock to avoid reading a partially-written file.
|
|
111
|
-
*/
|
|
112
|
-
async withKeyLock(key, scope, fn) {
|
|
113
|
-
const lockKey = `${scope}:${key}`;
|
|
44
|
+
async withLock(namespace, key, fn) {
|
|
45
|
+
const lockKey = `${namespace}:${key}`;
|
|
114
46
|
const prev = this._locks.get(lockKey) ?? Promise.resolve();
|
|
115
47
|
let resolve;
|
|
116
48
|
const next = new Promise(r => { resolve = r; });
|
|
@@ -126,26 +58,9 @@ export class MemoryProvider {
|
|
|
126
58
|
}
|
|
127
59
|
}
|
|
128
60
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
get sessionId() {
|
|
133
|
-
return this._sessionId;
|
|
134
|
-
}
|
|
135
|
-
set sessionId(id) {
|
|
136
|
-
this._sessionId = id;
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Get a value from memory
|
|
140
|
-
*
|
|
141
|
-
* @param key The key to retrieve
|
|
142
|
-
* @param scope Storage scope (default: 'photon')
|
|
143
|
-
* @returns The stored value, or null if not found
|
|
144
|
-
*/
|
|
145
|
-
async get(key, scope = 'photon') {
|
|
146
|
-
return this.withKeyLock(key, scope, async () => {
|
|
147
|
-
const dir = resolveDir(this._photonId, this._namespace, scope, this._sessionId, this._baseDir);
|
|
148
|
-
const filePath = keyPath(dir, key);
|
|
61
|
+
async get(namespace, key) {
|
|
62
|
+
return this.withLock(namespace, key, async () => {
|
|
63
|
+
const filePath = keyPath(namespace, key);
|
|
149
64
|
try {
|
|
150
65
|
const content = await fs.readFile(filePath, 'utf-8');
|
|
151
66
|
return JSON.parse(content);
|
|
@@ -157,37 +72,20 @@ export class MemoryProvider {
|
|
|
157
72
|
}
|
|
158
73
|
});
|
|
159
74
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
* @param value The value (must be JSON-serializable)
|
|
165
|
-
* @param scope Storage scope (default: 'photon')
|
|
166
|
-
*/
|
|
167
|
-
async set(key, value, scope = 'photon') {
|
|
168
|
-
return this.withKeyLock(key, scope, async () => {
|
|
169
|
-
const dir = resolveDir(this._photonId, this._namespace, scope, this._sessionId, this._baseDir);
|
|
170
|
-
if (!await pathExists(dir)) {
|
|
171
|
-
await fs.mkdir(dir, { recursive: true });
|
|
75
|
+
async set(namespace, key, value) {
|
|
76
|
+
return this.withLock(namespace, key, async () => {
|
|
77
|
+
if (!await pathExists(namespace)) {
|
|
78
|
+
await fs.mkdir(namespace, { recursive: true });
|
|
172
79
|
}
|
|
173
|
-
const filePath = keyPath(
|
|
174
|
-
// Write to temp file then rename for atomic replacement
|
|
80
|
+
const filePath = keyPath(namespace, key);
|
|
175
81
|
const tmpPath = filePath + '.tmp';
|
|
176
82
|
await fs.writeFile(tmpPath, JSON.stringify(value, null, 2));
|
|
177
83
|
await fs.rename(tmpPath, filePath);
|
|
178
84
|
});
|
|
179
85
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
* @param key The key to delete
|
|
184
|
-
* @param scope Storage scope (default: 'photon')
|
|
185
|
-
* @returns true if the key existed and was deleted
|
|
186
|
-
*/
|
|
187
|
-
async delete(key, scope = 'photon') {
|
|
188
|
-
return this.withKeyLock(key, scope, async () => {
|
|
189
|
-
const dir = resolveDir(this._photonId, this._namespace, scope, this._sessionId, this._baseDir);
|
|
190
|
-
const filePath = keyPath(dir, key);
|
|
86
|
+
async delete(namespace, key) {
|
|
87
|
+
return this.withLock(namespace, key, async () => {
|
|
88
|
+
const filePath = keyPath(namespace, key);
|
|
191
89
|
try {
|
|
192
90
|
await fs.unlink(filePath);
|
|
193
91
|
return true;
|
|
@@ -199,28 +97,13 @@ export class MemoryProvider {
|
|
|
199
97
|
}
|
|
200
98
|
});
|
|
201
99
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
*
|
|
205
|
-
* @param key The key to check
|
|
206
|
-
* @param scope Storage scope (default: 'photon')
|
|
207
|
-
*/
|
|
208
|
-
async has(key, scope = 'photon') {
|
|
209
|
-
const dir = resolveDir(this._photonId, this._namespace, scope, this._sessionId, this._baseDir);
|
|
210
|
-
return pathExists(keyPath(dir, key));
|
|
100
|
+
async has(namespace, key) {
|
|
101
|
+
return pathExists(keyPath(namespace, key));
|
|
211
102
|
}
|
|
212
|
-
|
|
213
|
-
* List all keys in memory for a scope
|
|
214
|
-
*
|
|
215
|
-
* @param scope Storage scope (default: 'photon')
|
|
216
|
-
*/
|
|
217
|
-
async keys(scope = 'photon') {
|
|
218
|
-
const dir = resolveDir(this._photonId, this._namespace, scope, this._sessionId, this._baseDir);
|
|
103
|
+
async keys(namespace) {
|
|
219
104
|
try {
|
|
220
|
-
const files = await fs.readdir(
|
|
221
|
-
return files
|
|
222
|
-
.filter(f => f.endsWith('.json'))
|
|
223
|
-
.map(f => f.slice(0, -5));
|
|
105
|
+
const files = await fs.readdir(namespace);
|
|
106
|
+
return files.filter(f => f.endsWith('.json') && !f.endsWith('.tmp')).map(f => f.slice(0, -5));
|
|
224
107
|
}
|
|
225
108
|
catch (error) {
|
|
226
109
|
if (error.code === 'ENOENT')
|
|
@@ -228,17 +111,11 @@ export class MemoryProvider {
|
|
|
228
111
|
throw error;
|
|
229
112
|
}
|
|
230
113
|
}
|
|
231
|
-
|
|
232
|
-
* Clear all keys in a scope
|
|
233
|
-
*
|
|
234
|
-
* @param scope Storage scope (default: 'photon')
|
|
235
|
-
*/
|
|
236
|
-
async clear(scope = 'photon') {
|
|
237
|
-
const dir = resolveDir(this._photonId, this._namespace, scope, this._sessionId, this._baseDir);
|
|
114
|
+
async clear(namespace) {
|
|
238
115
|
try {
|
|
239
|
-
const files = await fs.readdir(
|
|
116
|
+
const files = await fs.readdir(namespace);
|
|
240
117
|
const jsonFiles = files.filter(f => f.endsWith('.json'));
|
|
241
|
-
await Promise.all(jsonFiles.map(file => fs.unlink(path.join(
|
|
118
|
+
await Promise.all(jsonFiles.map(file => fs.unlink(path.join(namespace, file))));
|
|
242
119
|
}
|
|
243
120
|
catch (error) {
|
|
244
121
|
if (error.code === 'ENOENT')
|
|
@@ -246,34 +123,9 @@ export class MemoryProvider {
|
|
|
246
123
|
throw error;
|
|
247
124
|
}
|
|
248
125
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
* @param scope Storage scope (default: 'photon')
|
|
253
|
-
*/
|
|
254
|
-
async getAll(scope = 'photon') {
|
|
255
|
-
const allKeys = await this.keys(scope);
|
|
256
|
-
const result = {};
|
|
257
|
-
for (const key of allKeys) {
|
|
258
|
-
const value = await this.get(key, scope);
|
|
259
|
-
if (value !== null) {
|
|
260
|
-
result[key] = value;
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
return result;
|
|
264
|
-
}
|
|
265
|
-
/**
|
|
266
|
-
* Atomic read-modify-write for a key.
|
|
267
|
-
* Serialized per key so concurrent updates don't corrupt data.
|
|
268
|
-
*
|
|
269
|
-
* @param key The key to update
|
|
270
|
-
* @param updater Function that receives current value and returns new value
|
|
271
|
-
* @param scope Storage scope (default: 'photon')
|
|
272
|
-
*/
|
|
273
|
-
async update(key, updater, scope = 'photon') {
|
|
274
|
-
return this.withKeyLock(key, scope, async () => {
|
|
275
|
-
const dir = resolveDir(this._photonId, this._namespace, scope, this._sessionId, this._baseDir);
|
|
276
|
-
const filePath = keyPath(dir, key);
|
|
126
|
+
async update(namespace, key, updater) {
|
|
127
|
+
return this.withLock(namespace, key, async () => {
|
|
128
|
+
const filePath = keyPath(namespace, key);
|
|
277
129
|
let current = null;
|
|
278
130
|
try {
|
|
279
131
|
const content = await fs.readFile(filePath, 'utf-8');
|
|
@@ -284,8 +136,8 @@ export class MemoryProvider {
|
|
|
284
136
|
throw error;
|
|
285
137
|
}
|
|
286
138
|
const updated = updater(current);
|
|
287
|
-
if (!await pathExists(
|
|
288
|
-
await fs.mkdir(
|
|
139
|
+
if (!await pathExists(namespace)) {
|
|
140
|
+
await fs.mkdir(namespace, { recursive: true });
|
|
289
141
|
}
|
|
290
142
|
const tmpPath = filePath + '.tmp';
|
|
291
143
|
await fs.writeFile(tmpPath, JSON.stringify(updated, null, 2));
|
|
@@ -293,5 +145,148 @@ export class MemoryProvider {
|
|
|
293
145
|
return updated;
|
|
294
146
|
});
|
|
295
147
|
}
|
|
148
|
+
async list(namespace, prefix) {
|
|
149
|
+
let allKeys;
|
|
150
|
+
try {
|
|
151
|
+
const files = await fs.readdir(namespace);
|
|
152
|
+
allKeys = files.filter(f => f.endsWith('.json') && !f.endsWith('.tmp')).map(f => f.slice(0, -5));
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
if (error.code === 'ENOENT')
|
|
156
|
+
return [];
|
|
157
|
+
throw error;
|
|
158
|
+
}
|
|
159
|
+
const filtered = prefix ? allKeys.filter(k => k.startsWith(prefix)) : allKeys;
|
|
160
|
+
const entries = await Promise.all(filtered.map(async (key) => {
|
|
161
|
+
const value = await this.get(namespace, key);
|
|
162
|
+
return { key, value };
|
|
163
|
+
}));
|
|
164
|
+
return entries.filter(e => e.value !== null);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// ════════════════════════════════════════════════════════════════════════════════
|
|
168
|
+
// SCOPE RESOLUTION
|
|
169
|
+
// ════════════════════════════════════════════════════════════════════════════════
|
|
170
|
+
function resolveDir(photonId, namespace, scope, sessionId, baseDir) {
|
|
171
|
+
switch (scope) {
|
|
172
|
+
case 'photon': {
|
|
173
|
+
const newDir = getPhotonMemoryDir(namespace, photonId, baseDir);
|
|
174
|
+
if (!fsSync.existsSync(newDir)) {
|
|
175
|
+
const legacyDir = getLegacyMemoryDir(photonId, baseDir);
|
|
176
|
+
if (fsSync.existsSync(legacyDir))
|
|
177
|
+
return legacyDir;
|
|
178
|
+
}
|
|
179
|
+
return newDir;
|
|
180
|
+
}
|
|
181
|
+
case 'session': {
|
|
182
|
+
if (!sessionId) {
|
|
183
|
+
throw new Error('Session ID required for session-scoped memory. Set via memory.sessionId.');
|
|
184
|
+
}
|
|
185
|
+
const newDir = getSessionMemoryDir(sessionId, namespace, photonId, baseDir);
|
|
186
|
+
if (!fsSync.existsSync(newDir)) {
|
|
187
|
+
const legacyDir = getLegacySessionMemoryDir(sessionId, photonId, baseDir);
|
|
188
|
+
if (fsSync.existsSync(legacyDir))
|
|
189
|
+
return legacyDir;
|
|
190
|
+
}
|
|
191
|
+
return newDir;
|
|
192
|
+
}
|
|
193
|
+
case 'global': {
|
|
194
|
+
const newDir = getGlobalMemoryDir(baseDir);
|
|
195
|
+
if (!fsSync.existsSync(newDir)) {
|
|
196
|
+
const legacyDir = getLegacyGlobalMemoryDir(baseDir);
|
|
197
|
+
if (fsSync.existsSync(legacyDir))
|
|
198
|
+
return legacyDir;
|
|
199
|
+
}
|
|
200
|
+
return newDir;
|
|
201
|
+
}
|
|
202
|
+
default:
|
|
203
|
+
throw new Error(`Unknown memory scope: ${scope}`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
// ════════════════════════════════════════════════════════════════════════════════
|
|
207
|
+
// MEMORY PROVIDER (public API — delegates to backend)
|
|
208
|
+
// ════════════════════════════════════════════════════════════════════════════════
|
|
209
|
+
/** Default shared backend instance (file-based) */
|
|
210
|
+
let defaultBackend = new FileMemoryBackend();
|
|
211
|
+
/**
|
|
212
|
+
* Set the global default memory backend.
|
|
213
|
+
* Call before any photons are loaded to switch storage layer.
|
|
214
|
+
*
|
|
215
|
+
* @example
|
|
216
|
+
* ```typescript
|
|
217
|
+
* import { setDefaultMemoryBackend } from '@portel/photon-core';
|
|
218
|
+
* import { RedisMemoryBackend } from '@portel/photon-redis';
|
|
219
|
+
* setDefaultMemoryBackend(new RedisMemoryBackend({ url: 'redis://...' }));
|
|
220
|
+
* ```
|
|
221
|
+
*/
|
|
222
|
+
export function setDefaultMemoryBackend(backend) {
|
|
223
|
+
defaultBackend = backend;
|
|
224
|
+
}
|
|
225
|
+
export function getDefaultMemoryBackend() {
|
|
226
|
+
return defaultBackend;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Scoped Memory Provider
|
|
230
|
+
*
|
|
231
|
+
* The public API surface for `this.memory` on photon instances.
|
|
232
|
+
* Delegates all operations to the configured MemoryBackend.
|
|
233
|
+
*/
|
|
234
|
+
export class MemoryProvider {
|
|
235
|
+
_photonId;
|
|
236
|
+
_namespace;
|
|
237
|
+
_sessionId;
|
|
238
|
+
_baseDir;
|
|
239
|
+
_backend;
|
|
240
|
+
constructor(photonId, sessionId, namespace, baseDir, backend) {
|
|
241
|
+
this._photonId = photonId;
|
|
242
|
+
this._namespace = namespace || 'local';
|
|
243
|
+
this._sessionId = sessionId;
|
|
244
|
+
this._baseDir = baseDir;
|
|
245
|
+
this._backend = backend ?? defaultBackend;
|
|
246
|
+
}
|
|
247
|
+
get sessionId() {
|
|
248
|
+
return this._sessionId;
|
|
249
|
+
}
|
|
250
|
+
set sessionId(id) {
|
|
251
|
+
this._sessionId = id;
|
|
252
|
+
}
|
|
253
|
+
/** Resolve the storage namespace (directory for file backend, prefix for Redis, etc.) */
|
|
254
|
+
ns(scope) {
|
|
255
|
+
return resolveDir(this._photonId, this._namespace, scope, this._sessionId, this._baseDir);
|
|
256
|
+
}
|
|
257
|
+
async get(key, scope = 'photon') {
|
|
258
|
+
return this._backend.get(this.ns(scope), key);
|
|
259
|
+
}
|
|
260
|
+
async set(key, value, scope = 'photon') {
|
|
261
|
+
return this._backend.set(this.ns(scope), key, value);
|
|
262
|
+
}
|
|
263
|
+
async delete(key, scope = 'photon') {
|
|
264
|
+
return this._backend.delete(this.ns(scope), key);
|
|
265
|
+
}
|
|
266
|
+
async has(key, scope = 'photon') {
|
|
267
|
+
return this._backend.has(this.ns(scope), key);
|
|
268
|
+
}
|
|
269
|
+
async keys(scope = 'photon') {
|
|
270
|
+
return this._backend.keys(this.ns(scope));
|
|
271
|
+
}
|
|
272
|
+
async clear(scope = 'photon') {
|
|
273
|
+
return this._backend.clear(this.ns(scope));
|
|
274
|
+
}
|
|
275
|
+
async getAll(scope = 'photon') {
|
|
276
|
+
const allKeys = await this.keys(scope);
|
|
277
|
+
const result = {};
|
|
278
|
+
for (const key of allKeys) {
|
|
279
|
+
const value = await this.get(key, scope);
|
|
280
|
+
if (value !== null)
|
|
281
|
+
result[key] = value;
|
|
282
|
+
}
|
|
283
|
+
return result;
|
|
284
|
+
}
|
|
285
|
+
async list(prefix, scope = 'photon') {
|
|
286
|
+
return this._backend.list(this.ns(scope), prefix);
|
|
287
|
+
}
|
|
288
|
+
async update(key, updater, scope = 'photon') {
|
|
289
|
+
return this._backend.update(this.ns(scope), key, updater);
|
|
290
|
+
}
|
|
296
291
|
}
|
|
297
292
|
//# sourceMappingURL=memory.js.map
|
package/dist/memory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
|
package/dist/validation.d.ts
CHANGED
|
@@ -7,14 +7,20 @@
|
|
|
7
7
|
* Also includes PhotonError and ValidationError base classes
|
|
8
8
|
* (originally from photon's shared/error-handler.ts).
|
|
9
9
|
*/
|
|
10
|
+
export interface PhotonErrorOptions {
|
|
11
|
+
/** Root cause per ECMAScript Error `cause` proposal. Preserved on the error
|
|
12
|
+
* so OTel `recordException` can capture the original stack trace. */
|
|
13
|
+
cause?: unknown;
|
|
14
|
+
}
|
|
10
15
|
export declare class PhotonError extends Error {
|
|
11
16
|
readonly code: string;
|
|
12
17
|
readonly details?: Record<string, unknown> | undefined;
|
|
13
18
|
readonly suggestion?: string | undefined;
|
|
14
|
-
|
|
19
|
+
readonly cause?: unknown;
|
|
20
|
+
constructor(message: string, code: string, details?: Record<string, unknown> | undefined, suggestion?: string | undefined, options?: PhotonErrorOptions);
|
|
15
21
|
}
|
|
16
22
|
export declare class ValidationError extends PhotonError {
|
|
17
|
-
constructor(message: string, details?: Record<string, unknown>, suggestion?: string);
|
|
23
|
+
constructor(message: string, details?: Record<string, unknown>, suggestion?: string, options?: PhotonErrorOptions);
|
|
18
24
|
}
|
|
19
25
|
export interface ValidationResult {
|
|
20
26
|
valid: boolean;
|
package/dist/validation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,qBAAa,WAAY,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|
package/dist/validation.js
CHANGED
|
@@ -7,25 +7,26 @@
|
|
|
7
7
|
* Also includes PhotonError and ValidationError base classes
|
|
8
8
|
* (originally from photon's shared/error-handler.ts).
|
|
9
9
|
*/
|
|
10
|
-
// ══════════════════════════════════════════════════════════════════════════════
|
|
11
|
-
// ERROR BASE CLASSES
|
|
12
|
-
// ══════════════════════════════════════════════════════════════════════════════
|
|
13
10
|
export class PhotonError extends Error {
|
|
14
11
|
code;
|
|
15
12
|
details;
|
|
16
13
|
suggestion;
|
|
17
|
-
|
|
14
|
+
cause;
|
|
15
|
+
constructor(message, code, details, suggestion, options) {
|
|
18
16
|
super(message);
|
|
19
17
|
this.code = code;
|
|
20
18
|
this.details = details;
|
|
21
19
|
this.suggestion = suggestion;
|
|
22
20
|
this.name = 'PhotonError';
|
|
21
|
+
if (options?.cause !== undefined) {
|
|
22
|
+
this.cause = options.cause;
|
|
23
|
+
}
|
|
23
24
|
Error.captureStackTrace?.(this, this.constructor);
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
27
|
export class ValidationError extends PhotonError {
|
|
27
|
-
constructor(message, details, suggestion) {
|
|
28
|
-
super(message, 'VALIDATION_ERROR', details, suggestion);
|
|
28
|
+
constructor(message, details, suggestion, options) {
|
|
29
|
+
super(message, 'VALIDATION_ERROR', details, suggestion, options);
|
|
29
30
|
this.name = 'ValidationError';
|
|
30
31
|
}
|
|
31
32
|
}
|
package/dist/validation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|