digital-objects 1.0.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.
Files changed (87) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/CHANGELOG.md +25 -0
  3. package/LICENSE +21 -0
  4. package/README.md +476 -0
  5. package/dist/ai-database-adapter.d.ts +49 -0
  6. package/dist/ai-database-adapter.d.ts.map +1 -0
  7. package/dist/ai-database-adapter.js +89 -0
  8. package/dist/ai-database-adapter.js.map +1 -0
  9. package/dist/errors.d.ts +47 -0
  10. package/dist/errors.d.ts.map +1 -0
  11. package/dist/errors.js +72 -0
  12. package/dist/errors.js.map +1 -0
  13. package/dist/http-schemas.d.ts +165 -0
  14. package/dist/http-schemas.d.ts.map +1 -0
  15. package/dist/http-schemas.js +55 -0
  16. package/dist/http-schemas.js.map +1 -0
  17. package/dist/index.d.ts +29 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +32 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/linguistic.d.ts +54 -0
  22. package/dist/linguistic.d.ts.map +1 -0
  23. package/dist/linguistic.js +226 -0
  24. package/dist/linguistic.js.map +1 -0
  25. package/dist/memory-provider.d.ts +46 -0
  26. package/dist/memory-provider.d.ts.map +1 -0
  27. package/dist/memory-provider.js +279 -0
  28. package/dist/memory-provider.js.map +1 -0
  29. package/dist/ns-client.d.ts +88 -0
  30. package/dist/ns-client.d.ts.map +1 -0
  31. package/dist/ns-client.js +253 -0
  32. package/dist/ns-client.js.map +1 -0
  33. package/dist/ns-exports.d.ts +23 -0
  34. package/dist/ns-exports.d.ts.map +1 -0
  35. package/dist/ns-exports.js +21 -0
  36. package/dist/ns-exports.js.map +1 -0
  37. package/dist/ns.d.ts +60 -0
  38. package/dist/ns.d.ts.map +1 -0
  39. package/dist/ns.js +818 -0
  40. package/dist/ns.js.map +1 -0
  41. package/dist/r2-persistence.d.ts +112 -0
  42. package/dist/r2-persistence.d.ts.map +1 -0
  43. package/dist/r2-persistence.js +252 -0
  44. package/dist/r2-persistence.js.map +1 -0
  45. package/dist/schema-validation.d.ts +80 -0
  46. package/dist/schema-validation.d.ts.map +1 -0
  47. package/dist/schema-validation.js +233 -0
  48. package/dist/schema-validation.js.map +1 -0
  49. package/dist/types.d.ts +184 -0
  50. package/dist/types.d.ts.map +1 -0
  51. package/dist/types.js +26 -0
  52. package/dist/types.js.map +1 -0
  53. package/package.json +55 -0
  54. package/src/ai-database-adapter.test.ts +610 -0
  55. package/src/ai-database-adapter.ts +189 -0
  56. package/src/benchmark.test.ts +109 -0
  57. package/src/errors.ts +91 -0
  58. package/src/http-schemas.ts +67 -0
  59. package/src/index.ts +87 -0
  60. package/src/linguistic.test.ts +1107 -0
  61. package/src/linguistic.ts +253 -0
  62. package/src/memory-provider.ts +470 -0
  63. package/src/ns-client.test.ts +1360 -0
  64. package/src/ns-client.ts +342 -0
  65. package/src/ns-exports.ts +23 -0
  66. package/src/ns.test.ts +1381 -0
  67. package/src/ns.ts +1215 -0
  68. package/src/provider.test.ts +675 -0
  69. package/src/r2-persistence.test.ts +263 -0
  70. package/src/r2-persistence.ts +367 -0
  71. package/src/schema-validation.test.ts +167 -0
  72. package/src/schema-validation.ts +330 -0
  73. package/src/types.ts +252 -0
  74. package/test/action-status.test.ts +42 -0
  75. package/test/batch-limits.test.ts +165 -0
  76. package/test/docs.test.ts +48 -0
  77. package/test/errors.test.ts +148 -0
  78. package/test/http-validation.test.ts +401 -0
  79. package/test/ns-client-errors.test.ts +208 -0
  80. package/test/ns-namespace.test.ts +307 -0
  81. package/test/performance.test.ts +168 -0
  82. package/test/schema-validation-error.test.ts +213 -0
  83. package/test/schema-validation.test.ts +440 -0
  84. package/test/search-escaping.test.ts +359 -0
  85. package/test/security.test.ts +322 -0
  86. package/tsconfig.json +10 -0
  87. package/wrangler.jsonc +16 -0
@@ -0,0 +1,226 @@
1
+ /**
2
+ * Linguistic utilities for auto-deriving noun and verb forms
3
+ */
4
+ /**
5
+ * Derive noun forms from a PascalCase name
6
+ *
7
+ * @example
8
+ * deriveNoun('Post') => { singular: 'post', plural: 'posts', slug: 'post' }
9
+ * deriveNoun('BlogPost') => { singular: 'blog post', plural: 'blog posts', slug: 'blog-post' }
10
+ * deriveNoun('Person') => { singular: 'person', plural: 'persons', slug: 'person' }
11
+ */
12
+ export function deriveNoun(name) {
13
+ // Convert PascalCase to words
14
+ const words = name
15
+ .replace(/([A-Z])/g, ' $1')
16
+ .trim()
17
+ .toLowerCase();
18
+ const singular = words;
19
+ const slug = words.replace(/\s+/g, '-');
20
+ const plural = pluralize(singular);
21
+ return { singular, plural, slug };
22
+ }
23
+ /**
24
+ * Pluralize a word
25
+ *
26
+ * Handles common English pluralization rules:
27
+ * - Words ending in 's', 'x', 'z', 'ch', 'sh' -> add 'es'
28
+ * - Words ending in consonant + 'y' -> replace 'y' with 'ies'
29
+ * - Words ending in 'f' or 'fe' -> replace with 'ves'
30
+ * - Special cases (person->people, child->children, etc.)
31
+ * - Default: add 's'
32
+ */
33
+ export function pluralize(word) {
34
+ // Handle multi-word phrases (pluralize last word only)
35
+ const parts = word.split(' ');
36
+ if (parts.length > 1) {
37
+ const lastIdx = parts.length - 1;
38
+ parts[lastIdx] = pluralize(parts[lastIdx]);
39
+ return parts.join(' ');
40
+ }
41
+ const w = word.toLowerCase();
42
+ // Irregular plurals
43
+ const irregulars = {
44
+ person: 'people',
45
+ child: 'children',
46
+ man: 'men',
47
+ woman: 'women',
48
+ foot: 'feet',
49
+ tooth: 'teeth',
50
+ goose: 'geese',
51
+ mouse: 'mice',
52
+ ox: 'oxen',
53
+ index: 'indices',
54
+ vertex: 'vertices',
55
+ matrix: 'matrices',
56
+ };
57
+ if (irregulars[w])
58
+ return irregulars[w];
59
+ // Words ending in 's', 'x', 'z', 'ch', 'sh' -> add 'es'
60
+ if (/[sxz]$/.test(w) || /[sc]h$/.test(w)) {
61
+ return w + 'es';
62
+ }
63
+ // Words ending in consonant + 'y' -> replace 'y' with 'ies'
64
+ if (/[^aeiou]y$/.test(w)) {
65
+ return w.slice(0, -1) + 'ies';
66
+ }
67
+ // Words ending in 'f' -> replace with 'ves'
68
+ if (/f$/.test(w)) {
69
+ return w.slice(0, -1) + 'ves';
70
+ }
71
+ // Words ending in 'fe' -> replace with 'ves'
72
+ if (/fe$/.test(w)) {
73
+ return w.slice(0, -2) + 'ves';
74
+ }
75
+ // Default: add 's'
76
+ return w + 's';
77
+ }
78
+ /**
79
+ * Singularize a word (reverse of pluralize)
80
+ */
81
+ export function singularize(word) {
82
+ // Handle multi-word phrases
83
+ const parts = word.split(' ');
84
+ if (parts.length > 1) {
85
+ const lastIdx = parts.length - 1;
86
+ parts[lastIdx] = singularize(parts[lastIdx]);
87
+ return parts.join(' ');
88
+ }
89
+ const w = word.toLowerCase();
90
+ // Irregular singulars (reverse of irregulars)
91
+ const irregulars = {
92
+ people: 'person',
93
+ children: 'child',
94
+ men: 'man',
95
+ women: 'woman',
96
+ feet: 'foot',
97
+ teeth: 'tooth',
98
+ geese: 'goose',
99
+ mice: 'mouse',
100
+ oxen: 'ox',
101
+ indices: 'index',
102
+ vertices: 'vertex',
103
+ matrices: 'matrix',
104
+ };
105
+ if (irregulars[w])
106
+ return irregulars[w];
107
+ // Words ending in 'ies' -> replace with 'y'
108
+ if (/ies$/.test(w)) {
109
+ return w.slice(0, -3) + 'y';
110
+ }
111
+ // Words ending in 'ves' -> replace with 'f' or 'fe'
112
+ if (/ves$/.test(w)) {
113
+ // Default to 'f' (most common, e.g., 'leaves' -> 'leaf')
114
+ const fSingular = w.slice(0, -3) + 'f';
115
+ return fSingular;
116
+ }
117
+ // Words ending in 'es' (but not 'ies' or 'ves')
118
+ if (/[sxz]es$/.test(w) || /[sc]hes$/.test(w)) {
119
+ return w.slice(0, -2);
120
+ }
121
+ // Words ending in 's' (but not 'es')
122
+ if (/s$/.test(w) && !/ss$/.test(w)) {
123
+ return w.slice(0, -1);
124
+ }
125
+ return w;
126
+ }
127
+ /**
128
+ * Derive verb conjugations from base form
129
+ *
130
+ * @example
131
+ * deriveVerb('create') => {
132
+ * action: 'create',
133
+ * act: 'creates',
134
+ * activity: 'creating',
135
+ * event: 'created',
136
+ * reverseBy: 'createdBy',
137
+ * reverseAt: 'createdAt'
138
+ * }
139
+ */
140
+ export function deriveVerb(name) {
141
+ const base = name.toLowerCase();
142
+ // Known irregular verbs
143
+ const irregulars = {
144
+ write: { act: 'writes', activity: 'writing', event: 'written' },
145
+ read: { act: 'reads', activity: 'reading', event: 'read' },
146
+ run: { act: 'runs', activity: 'running', event: 'run' },
147
+ begin: { act: 'begins', activity: 'beginning', event: 'begun' },
148
+ do: { act: 'does', activity: 'doing', event: 'done' },
149
+ go: { act: 'goes', activity: 'going', event: 'gone' },
150
+ have: { act: 'has', activity: 'having', event: 'had' },
151
+ be: { act: 'is', activity: 'being', event: 'been' },
152
+ set: { act: 'sets', activity: 'setting', event: 'set' },
153
+ get: { act: 'gets', activity: 'getting', event: 'got' },
154
+ put: { act: 'puts', activity: 'putting', event: 'put' },
155
+ cut: { act: 'cuts', activity: 'cutting', event: 'cut' },
156
+ hit: { act: 'hits', activity: 'hitting', event: 'hit' },
157
+ };
158
+ if (irregulars[base]) {
159
+ const irr = irregulars[base];
160
+ return {
161
+ action: base,
162
+ act: irr.act,
163
+ activity: irr.activity,
164
+ event: irr.event,
165
+ reverseBy: `${irr.event}By`,
166
+ reverseAt: `${irr.event}At`,
167
+ reverseIn: `${irr.event}In`,
168
+ };
169
+ }
170
+ // Regular verb conjugations
171
+ let act;
172
+ let activity;
173
+ let event;
174
+ // Third person singular (act)
175
+ if (base.endsWith('s') ||
176
+ base.endsWith('x') ||
177
+ base.endsWith('z') ||
178
+ base.endsWith('ch') ||
179
+ base.endsWith('sh')) {
180
+ act = base + 'es';
181
+ }
182
+ else if (base.endsWith('y') && !/[aeiou]y$/.test(base)) {
183
+ act = base.slice(0, -1) + 'ies';
184
+ }
185
+ else {
186
+ act = base + 's';
187
+ }
188
+ // Present participle (activity) - gerund
189
+ if (base.endsWith('e') && !base.endsWith('ee')) {
190
+ activity = base.slice(0, -1) + 'ing';
191
+ }
192
+ else if (base.endsWith('ie')) {
193
+ activity = base.slice(0, -2) + 'ying';
194
+ }
195
+ else if (/[^aeiou][aeiou][bcdfghlmnprstvwz]$/.test(base) && base.length <= 6) {
196
+ // Double final consonant for short words (CVC pattern)
197
+ activity = base + base[base.length - 1] + 'ing';
198
+ }
199
+ else {
200
+ activity = base + 'ing';
201
+ }
202
+ // Past participle (event)
203
+ if (base.endsWith('e')) {
204
+ event = base + 'd';
205
+ }
206
+ else if (base.endsWith('y') && !/[aeiou]y$/.test(base)) {
207
+ event = base.slice(0, -1) + 'ied';
208
+ }
209
+ else if (/[^aeiou][aeiou][bcdfghlmnprstvwz]$/.test(base) && base.length <= 6) {
210
+ // Double final consonant for short words
211
+ event = base + base[base.length - 1] + 'ed';
212
+ }
213
+ else {
214
+ event = base + 'ed';
215
+ }
216
+ return {
217
+ action: base,
218
+ act,
219
+ activity,
220
+ event,
221
+ reverseBy: `${event}By`,
222
+ reverseAt: `${event}At`,
223
+ reverseIn: `${event}In`,
224
+ };
225
+ }
226
+ //# sourceMappingURL=linguistic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linguistic.js","sourceRoot":"","sources":["../src/linguistic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * In-memory implementation of DigitalObjectsProvider
3
+ *
4
+ * Used for testing and development. All data is stored in Maps.
5
+ */
6
+ import type { DigitalObjectsProvider, Noun, NounDefinition, Verb, VerbDefinition, Thing, Action, ListOptions, ActionOptions, ValidationOptions, Direction } from './types.js';
7
+ export declare class MemoryProvider implements DigitalObjectsProvider {
8
+ private nouns;
9
+ private verbs;
10
+ private things;
11
+ private actions;
12
+ defineNoun(def: NounDefinition): Promise<Noun>;
13
+ getNoun(name: string): Promise<Noun | null>;
14
+ listNouns(): Promise<Noun[]>;
15
+ defineVerb(def: VerbDefinition): Promise<Verb>;
16
+ getVerb(name: string): Promise<Verb | null>;
17
+ listVerbs(): Promise<Verb[]>;
18
+ create<T>(noun: string, data: T, id?: string, options?: ValidationOptions): Promise<Thing<T>>;
19
+ get<T>(id: string): Promise<Thing<T> | null>;
20
+ list<T>(noun: string, options?: ListOptions): Promise<Thing<T>[]>;
21
+ find<T>(noun: string, where: Partial<T>): Promise<Thing<T>[]>;
22
+ update<T>(id: string, data: Partial<T>, options?: ValidationOptions): Promise<Thing<T>>;
23
+ delete(id: string): Promise<boolean>;
24
+ search<T>(query: string, options?: ListOptions): Promise<Thing<T>[]>;
25
+ perform<T>(verb: string, subject?: string, object?: string, data?: T): Promise<Action<T>>;
26
+ getAction<T>(id: string): Promise<Action<T> | null>;
27
+ listActions<T>(options?: ActionOptions): Promise<Action<T>[]>;
28
+ deleteAction(id: string): Promise<boolean>;
29
+ related<T>(id: string, verb?: string, direction?: Direction, options?: ListOptions): Promise<Thing<T>[]>;
30
+ edges<T>(id: string, verb?: string, direction?: Direction, options?: ListOptions): Promise<Action<T>[]>;
31
+ createMany<T>(noun: string, items: T[]): Promise<Thing<T>[]>;
32
+ updateMany<T>(updates: Array<{
33
+ id: string;
34
+ data: Partial<T>;
35
+ }>): Promise<Thing<T>[]>;
36
+ deleteMany(ids: string[]): Promise<boolean[]>;
37
+ performMany<T>(actions: Array<{
38
+ verb: string;
39
+ subject?: string;
40
+ object?: string;
41
+ data?: T;
42
+ }>): Promise<Action<T>[]>;
43
+ close(): Promise<void>;
44
+ }
45
+ export declare function createMemoryProvider(): DigitalObjectsProvider;
46
+ //# sourceMappingURL=memory-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-provider.d.ts","sourceRoot":"","sources":["../src/memory-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,279 @@
1
+ /**
2
+ * In-memory implementation of DigitalObjectsProvider
3
+ *
4
+ * Used for testing and development. All data is stored in Maps.
5
+ */
6
+ import { DEFAULT_LIMIT, MAX_LIMIT, validateDirection } from './types.js';
7
+ import { deriveNoun, deriveVerb } from './linguistic.js';
8
+ import { validateData } from './schema-validation.js';
9
+ import { NotFoundError } from './errors.js';
10
+ /**
11
+ * Calculate effective limit with safety bounds
12
+ */
13
+ function effectiveLimit(requestedLimit) {
14
+ return Math.min(requestedLimit ?? DEFAULT_LIMIT, MAX_LIMIT);
15
+ }
16
+ function generateId() {
17
+ return crypto.randomUUID();
18
+ }
19
+ export class MemoryProvider {
20
+ nouns = new Map();
21
+ verbs = new Map();
22
+ things = new Map();
23
+ actions = new Map();
24
+ // ==================== Nouns ====================
25
+ async defineNoun(def) {
26
+ const derived = deriveNoun(def.name);
27
+ const noun = {
28
+ name: def.name,
29
+ singular: def.singular ?? derived.singular,
30
+ plural: def.plural ?? derived.plural,
31
+ slug: derived.slug,
32
+ description: def.description,
33
+ schema: def.schema,
34
+ createdAt: new Date(),
35
+ };
36
+ this.nouns.set(noun.name, noun);
37
+ return noun;
38
+ }
39
+ async getNoun(name) {
40
+ return this.nouns.get(name) ?? null;
41
+ }
42
+ async listNouns() {
43
+ return Array.from(this.nouns.values());
44
+ }
45
+ // ==================== Verbs ====================
46
+ async defineVerb(def) {
47
+ const derived = deriveVerb(def.name);
48
+ const verb = {
49
+ name: def.name,
50
+ action: def.action ?? derived.action,
51
+ act: def.act ?? derived.act,
52
+ activity: def.activity ?? derived.activity,
53
+ event: def.event ?? derived.event,
54
+ reverseBy: def.reverseBy ?? derived.reverseBy,
55
+ reverseAt: derived.reverseAt,
56
+ reverseIn: def.reverseIn ?? derived.reverseIn,
57
+ inverse: def.inverse,
58
+ description: def.description,
59
+ createdAt: new Date(),
60
+ };
61
+ this.verbs.set(verb.name, verb);
62
+ return verb;
63
+ }
64
+ async getVerb(name) {
65
+ return this.verbs.get(name) ?? null;
66
+ }
67
+ async listVerbs() {
68
+ return Array.from(this.verbs.values());
69
+ }
70
+ // ==================== Things ====================
71
+ async create(noun, data, id, options) {
72
+ // Validate data against noun schema if validation is enabled
73
+ if (options?.validate) {
74
+ const nounDef = this.nouns.get(noun);
75
+ validateData(data, nounDef?.schema, options);
76
+ }
77
+ const thing = {
78
+ id: id ?? generateId(),
79
+ noun,
80
+ data,
81
+ createdAt: new Date(),
82
+ updatedAt: new Date(),
83
+ };
84
+ this.things.set(thing.id, thing);
85
+ return thing;
86
+ }
87
+ async get(id) {
88
+ return this.things.get(id) ?? null;
89
+ }
90
+ async list(noun, options) {
91
+ let results = Array.from(this.things.values()).filter((t) => t.noun === noun);
92
+ if (options?.where) {
93
+ results = results.filter((t) => {
94
+ for (const [key, value] of Object.entries(options.where)) {
95
+ if (t.data[key] !== value) {
96
+ return false;
97
+ }
98
+ }
99
+ return true;
100
+ });
101
+ }
102
+ if (options?.orderBy) {
103
+ const key = options.orderBy;
104
+ const dir = options.order === 'desc' ? -1 : 1;
105
+ results.sort((a, b) => {
106
+ const aVal = a.data[key];
107
+ const bVal = b.data[key];
108
+ if (aVal == null && bVal == null)
109
+ return 0;
110
+ if (aVal == null)
111
+ return 1 * dir;
112
+ if (bVal == null)
113
+ return -1 * dir;
114
+ if (aVal < bVal)
115
+ return -1 * dir;
116
+ if (aVal > bVal)
117
+ return 1 * dir;
118
+ return 0;
119
+ });
120
+ }
121
+ if (options?.offset) {
122
+ results = results.slice(options.offset);
123
+ }
124
+ // Apply limit with safety bounds
125
+ const limit = effectiveLimit(options?.limit);
126
+ results = results.slice(0, limit);
127
+ return results;
128
+ }
129
+ async find(noun, where) {
130
+ return this.list(noun, { where: where });
131
+ }
132
+ async update(id, data, options) {
133
+ const existing = this.things.get(id);
134
+ if (!existing) {
135
+ throw new NotFoundError('Thing', id);
136
+ }
137
+ // Merge data for validation
138
+ const mergedData = { ...existing.data, ...data };
139
+ // Validate merged data against noun schema if validation is enabled
140
+ if (options?.validate) {
141
+ const nounDef = this.nouns.get(existing.noun);
142
+ validateData(mergedData, nounDef?.schema, options);
143
+ }
144
+ // Ensure updatedAt is always strictly newer than createdAt
145
+ const now = new Date();
146
+ const updatedAt = now.getTime() <= existing.createdAt.getTime()
147
+ ? new Date(existing.createdAt.getTime() + 1)
148
+ : now;
149
+ const updated = {
150
+ ...existing,
151
+ data: mergedData,
152
+ updatedAt,
153
+ };
154
+ this.things.set(id, updated);
155
+ return updated;
156
+ }
157
+ async delete(id) {
158
+ return this.things.delete(id);
159
+ }
160
+ async search(query, options) {
161
+ const q = query.toLowerCase();
162
+ let results = Array.from(this.things.values()).filter((t) => JSON.stringify(t.data).toLowerCase().includes(q));
163
+ // Apply limit with safety bounds
164
+ const limit = effectiveLimit(options?.limit);
165
+ results = results.slice(0, limit);
166
+ return results;
167
+ }
168
+ // ==================== Actions ====================
169
+ async perform(verb, subject, object, data) {
170
+ const action = {
171
+ id: generateId(),
172
+ verb,
173
+ subject,
174
+ object,
175
+ data,
176
+ status: 'completed',
177
+ createdAt: new Date(),
178
+ completedAt: new Date(),
179
+ };
180
+ this.actions.set(action.id, action);
181
+ return action;
182
+ }
183
+ async getAction(id) {
184
+ return this.actions.get(id) ?? null;
185
+ }
186
+ async listActions(options) {
187
+ let results = Array.from(this.actions.values());
188
+ if (options?.verb) {
189
+ results = results.filter((a) => a.verb === options.verb);
190
+ }
191
+ if (options?.subject) {
192
+ results = results.filter((a) => a.subject === options.subject);
193
+ }
194
+ if (options?.object) {
195
+ results = results.filter((a) => a.object === options.object);
196
+ }
197
+ if (options?.status) {
198
+ const statuses = Array.isArray(options.status) ? options.status : [options.status];
199
+ results = results.filter((a) => statuses.includes(a.status));
200
+ }
201
+ // Apply limit with safety bounds
202
+ const limit = effectiveLimit(options?.limit);
203
+ results = results.slice(0, limit);
204
+ return results;
205
+ }
206
+ async deleteAction(id) {
207
+ return this.actions.delete(id);
208
+ }
209
+ // ==================== Graph Traversal ====================
210
+ async related(id, verb, direction = 'out', options) {
211
+ const validDirection = validateDirection(direction);
212
+ const edgesList = await this.edges(id, verb, validDirection);
213
+ const relatedIds = new Set();
214
+ for (const edge of edgesList) {
215
+ if (direction === 'out' || direction === 'both') {
216
+ if (edge.subject === id && edge.object) {
217
+ relatedIds.add(edge.object);
218
+ }
219
+ }
220
+ if (direction === 'in' || direction === 'both') {
221
+ if (edge.object === id && edge.subject) {
222
+ relatedIds.add(edge.subject);
223
+ }
224
+ }
225
+ }
226
+ let results = [];
227
+ for (const relatedId of relatedIds) {
228
+ const thing = await this.get(relatedId);
229
+ if (thing)
230
+ results.push(thing);
231
+ }
232
+ // Apply limit with safety bounds
233
+ const limit = effectiveLimit(options?.limit);
234
+ results = results.slice(0, limit);
235
+ return results;
236
+ }
237
+ async edges(id, verb, direction = 'out', options) {
238
+ const validDirection = validateDirection(direction);
239
+ let results = Array.from(this.actions.values());
240
+ if (verb) {
241
+ results = results.filter((a) => a.verb === verb);
242
+ }
243
+ results = results.filter((a) => {
244
+ if (validDirection === 'out')
245
+ return a.subject === id;
246
+ if (validDirection === 'in')
247
+ return a.object === id;
248
+ return a.subject === id || a.object === id;
249
+ });
250
+ // Apply limit with safety bounds
251
+ const limit = effectiveLimit(options?.limit);
252
+ results = results.slice(0, limit);
253
+ return results;
254
+ }
255
+ // ==================== Batch Operations ====================
256
+ async createMany(noun, items) {
257
+ return Promise.all(items.map(item => this.create(noun, item)));
258
+ }
259
+ async updateMany(updates) {
260
+ return Promise.all(updates.map(u => this.update(u.id, u.data)));
261
+ }
262
+ async deleteMany(ids) {
263
+ return Promise.all(ids.map(id => this.delete(id)));
264
+ }
265
+ async performMany(actions) {
266
+ return Promise.all(actions.map(a => this.perform(a.verb, a.subject, a.object, a.data)));
267
+ }
268
+ // ==================== Lifecycle ====================
269
+ async close() {
270
+ this.nouns.clear();
271
+ this.verbs.clear();
272
+ this.things.clear();
273
+ this.actions.clear();
274
+ }
275
+ }
276
+ export function createMemoryProvider() {
277
+ return new MemoryProvider();
278
+ }
279
+ //# sourceMappingURL=memory-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-provider.js","sourceRoot":"","sources":["../src/memory-provider.ts"],"names":[],"mappings":"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"}