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.
- package/.turbo/turbo-build.log +4 -0
- package/CHANGELOG.md +25 -0
- package/LICENSE +21 -0
- package/README.md +476 -0
- package/dist/ai-database-adapter.d.ts +49 -0
- package/dist/ai-database-adapter.d.ts.map +1 -0
- package/dist/ai-database-adapter.js +89 -0
- package/dist/ai-database-adapter.js.map +1 -0
- package/dist/errors.d.ts +47 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +72 -0
- package/dist/errors.js.map +1 -0
- package/dist/http-schemas.d.ts +165 -0
- package/dist/http-schemas.d.ts.map +1 -0
- package/dist/http-schemas.js +55 -0
- package/dist/http-schemas.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/linguistic.d.ts +54 -0
- package/dist/linguistic.d.ts.map +1 -0
- package/dist/linguistic.js +226 -0
- package/dist/linguistic.js.map +1 -0
- package/dist/memory-provider.d.ts +46 -0
- package/dist/memory-provider.d.ts.map +1 -0
- package/dist/memory-provider.js +279 -0
- package/dist/memory-provider.js.map +1 -0
- package/dist/ns-client.d.ts +88 -0
- package/dist/ns-client.d.ts.map +1 -0
- package/dist/ns-client.js +253 -0
- package/dist/ns-client.js.map +1 -0
- package/dist/ns-exports.d.ts +23 -0
- package/dist/ns-exports.d.ts.map +1 -0
- package/dist/ns-exports.js +21 -0
- package/dist/ns-exports.js.map +1 -0
- package/dist/ns.d.ts +60 -0
- package/dist/ns.d.ts.map +1 -0
- package/dist/ns.js +818 -0
- package/dist/ns.js.map +1 -0
- package/dist/r2-persistence.d.ts +112 -0
- package/dist/r2-persistence.d.ts.map +1 -0
- package/dist/r2-persistence.js +252 -0
- package/dist/r2-persistence.js.map +1 -0
- package/dist/schema-validation.d.ts +80 -0
- package/dist/schema-validation.d.ts.map +1 -0
- package/dist/schema-validation.js +233 -0
- package/dist/schema-validation.js.map +1 -0
- package/dist/types.d.ts +184 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +26 -0
- package/dist/types.js.map +1 -0
- package/package.json +55 -0
- package/src/ai-database-adapter.test.ts +610 -0
- package/src/ai-database-adapter.ts +189 -0
- package/src/benchmark.test.ts +109 -0
- package/src/errors.ts +91 -0
- package/src/http-schemas.ts +67 -0
- package/src/index.ts +87 -0
- package/src/linguistic.test.ts +1107 -0
- package/src/linguistic.ts +253 -0
- package/src/memory-provider.ts +470 -0
- package/src/ns-client.test.ts +1360 -0
- package/src/ns-client.ts +342 -0
- package/src/ns-exports.ts +23 -0
- package/src/ns.test.ts +1381 -0
- package/src/ns.ts +1215 -0
- package/src/provider.test.ts +675 -0
- package/src/r2-persistence.test.ts +263 -0
- package/src/r2-persistence.ts +367 -0
- package/src/schema-validation.test.ts +167 -0
- package/src/schema-validation.ts +330 -0
- package/src/types.ts +252 -0
- package/test/action-status.test.ts +42 -0
- package/test/batch-limits.test.ts +165 -0
- package/test/docs.test.ts +48 -0
- package/test/errors.test.ts +148 -0
- package/test/http-validation.test.ts +401 -0
- package/test/ns-client-errors.test.ts +208 -0
- package/test/ns-namespace.test.ts +307 -0
- package/test/performance.test.ts +168 -0
- package/test/schema-validation-error.test.ts +213 -0
- package/test/schema-validation.test.ts +440 -0
- package/test/search-escaping.test.ts +359 -0
- package/test/security.test.ts +322 -0
- package/tsconfig.json +10 -0
- package/wrangler.jsonc +16 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NS Client - HTTP client wrapper for NS Durable Object
|
|
3
|
+
*
|
|
4
|
+
* Allows using NS like a regular DigitalObjectsProvider via HTTP.
|
|
5
|
+
*/
|
|
6
|
+
import type { DigitalObjectsProvider, Noun, NounDefinition, Verb, VerbDefinition, Thing, Action, ListOptions, ActionOptions } from './types.js';
|
|
7
|
+
export interface NSClientOptions {
|
|
8
|
+
/** Base URL of the NS worker */
|
|
9
|
+
baseUrl: string;
|
|
10
|
+
/** Namespace ID */
|
|
11
|
+
namespace?: string;
|
|
12
|
+
/** Custom fetch function (useful for Workers Service Bindings) */
|
|
13
|
+
fetch?: typeof fetch;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* NSClient - Class-based HTTP client for NS Durable Object
|
|
17
|
+
*
|
|
18
|
+
* Provides a DigitalObjectsProvider interface over HTTP, allowing
|
|
19
|
+
* Workers to communicate with NS Durable Objects via fetch.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* // From a Cloudflare Worker
|
|
24
|
+
* const client = new NSClient({
|
|
25
|
+
* baseUrl: 'https://ns.example.com',
|
|
26
|
+
* namespace: 'my-tenant',
|
|
27
|
+
* })
|
|
28
|
+
*
|
|
29
|
+
* const post = await client.create('Post', { title: 'Hello' })
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* // With Service Binding
|
|
35
|
+
* const client = new NSClient({
|
|
36
|
+
* baseUrl: 'http://ns', // Service binding name
|
|
37
|
+
* namespace: 'my-tenant',
|
|
38
|
+
* fetch: env.NS.fetch.bind(env.NS), // Service binding fetch
|
|
39
|
+
* })
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare class NSClient implements DigitalObjectsProvider {
|
|
43
|
+
private readonly baseUrl;
|
|
44
|
+
private readonly namespace;
|
|
45
|
+
private readonly fetchFn;
|
|
46
|
+
constructor(options: NSClientOptions);
|
|
47
|
+
private url;
|
|
48
|
+
private request;
|
|
49
|
+
defineNoun(def: NounDefinition): Promise<Noun>;
|
|
50
|
+
getNoun(name: string): Promise<Noun | null>;
|
|
51
|
+
listNouns(): Promise<Noun[]>;
|
|
52
|
+
defineVerb(def: VerbDefinition): Promise<Verb>;
|
|
53
|
+
getVerb(name: string): Promise<Verb | null>;
|
|
54
|
+
listVerbs(): Promise<Verb[]>;
|
|
55
|
+
create<T>(noun: string, data: T, id?: string): Promise<Thing<T>>;
|
|
56
|
+
get<T>(id: string): Promise<Thing<T> | null>;
|
|
57
|
+
list<T>(noun: string, options?: ListOptions): Promise<Thing<T>[]>;
|
|
58
|
+
find<T>(noun: string, where: Partial<T>): Promise<Thing<T>[]>;
|
|
59
|
+
update<T>(id: string, data: Partial<T>): Promise<Thing<T>>;
|
|
60
|
+
delete(id: string): Promise<boolean>;
|
|
61
|
+
search<T>(query: string, options?: ListOptions): Promise<Thing<T>[]>;
|
|
62
|
+
perform<T>(verb: string, subject?: string, object?: string, data?: T): Promise<Action<T>>;
|
|
63
|
+
getAction<T>(id: string): Promise<Action<T> | null>;
|
|
64
|
+
listActions<T>(options?: ActionOptions): Promise<Action<T>[]>;
|
|
65
|
+
deleteAction(id: string): Promise<boolean>;
|
|
66
|
+
related<T>(id: string, verb?: string, direction?: 'out' | 'in' | 'both'): Promise<Thing<T>[]>;
|
|
67
|
+
edges<T>(id: string, verb?: string, direction?: 'out' | 'in' | 'both'): Promise<Action<T>[]>;
|
|
68
|
+
createMany<T>(noun: string, items: T[]): Promise<Thing<T>[]>;
|
|
69
|
+
updateMany<T>(updates: Array<{
|
|
70
|
+
id: string;
|
|
71
|
+
data: Partial<T>;
|
|
72
|
+
}>): Promise<Thing<T>[]>;
|
|
73
|
+
deleteMany(ids: string[]): Promise<boolean[]>;
|
|
74
|
+
performMany<T>(actions: Array<{
|
|
75
|
+
verb: string;
|
|
76
|
+
subject?: string;
|
|
77
|
+
object?: string;
|
|
78
|
+
data?: T;
|
|
79
|
+
}>): Promise<Action<T>[]>;
|
|
80
|
+
close(): Promise<void>;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Create an NS client that talks to the Durable Object via HTTP
|
|
84
|
+
*
|
|
85
|
+
* @deprecated Use `new NSClient(options)` instead for better TypeScript support
|
|
86
|
+
*/
|
|
87
|
+
export declare function createNSClient(options: NSClientOptions): DigitalObjectsProvider;
|
|
88
|
+
//# sourceMappingURL=ns-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ns-client.d.ts","sourceRoot":"","sources":["../src/ns-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NS Client - HTTP client wrapper for NS Durable Object
|
|
3
|
+
*
|
|
4
|
+
* Allows using NS like a regular DigitalObjectsProvider via HTTP.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* NSClient - Class-based HTTP client for NS Durable Object
|
|
8
|
+
*
|
|
9
|
+
* Provides a DigitalObjectsProvider interface over HTTP, allowing
|
|
10
|
+
* Workers to communicate with NS Durable Objects via fetch.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* // From a Cloudflare Worker
|
|
15
|
+
* const client = new NSClient({
|
|
16
|
+
* baseUrl: 'https://ns.example.com',
|
|
17
|
+
* namespace: 'my-tenant',
|
|
18
|
+
* })
|
|
19
|
+
*
|
|
20
|
+
* const post = await client.create('Post', { title: 'Hello' })
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* // With Service Binding
|
|
26
|
+
* const client = new NSClient({
|
|
27
|
+
* baseUrl: 'http://ns', // Service binding name
|
|
28
|
+
* namespace: 'my-tenant',
|
|
29
|
+
* fetch: env.NS.fetch.bind(env.NS), // Service binding fetch
|
|
30
|
+
* })
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export class NSClient {
|
|
34
|
+
baseUrl;
|
|
35
|
+
namespace;
|
|
36
|
+
fetchFn;
|
|
37
|
+
constructor(options) {
|
|
38
|
+
this.baseUrl = options.baseUrl.replace(/\/$/, '');
|
|
39
|
+
this.namespace = options.namespace ?? 'default';
|
|
40
|
+
this.fetchFn = options.fetch ?? fetch;
|
|
41
|
+
}
|
|
42
|
+
url(path, extraParams) {
|
|
43
|
+
const params = new URLSearchParams();
|
|
44
|
+
params.set('ns', this.namespace);
|
|
45
|
+
if (extraParams) {
|
|
46
|
+
extraParams.forEach((value, key) => params.set(key, value));
|
|
47
|
+
}
|
|
48
|
+
return `${this.baseUrl}${path}?${params}`;
|
|
49
|
+
}
|
|
50
|
+
async request(path, init, extraParams) {
|
|
51
|
+
const res = await this.fetchFn(this.url(path, extraParams), {
|
|
52
|
+
...init,
|
|
53
|
+
headers: {
|
|
54
|
+
'Content-Type': 'application/json',
|
|
55
|
+
...init?.headers,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
if (!res.ok) {
|
|
59
|
+
const text = await res.text();
|
|
60
|
+
throw new Error(`NS request failed: ${res.status} ${text}`);
|
|
61
|
+
}
|
|
62
|
+
return res.json();
|
|
63
|
+
}
|
|
64
|
+
// ==================== Nouns ====================
|
|
65
|
+
async defineNoun(def) {
|
|
66
|
+
return this.request('/nouns', {
|
|
67
|
+
method: 'POST',
|
|
68
|
+
body: JSON.stringify(def),
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
async getNoun(name) {
|
|
72
|
+
try {
|
|
73
|
+
return await this.request(`/nouns/${encodeURIComponent(name)}`);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async listNouns() {
|
|
80
|
+
return this.request('/nouns');
|
|
81
|
+
}
|
|
82
|
+
// ==================== Verbs ====================
|
|
83
|
+
async defineVerb(def) {
|
|
84
|
+
return this.request('/verbs', {
|
|
85
|
+
method: 'POST',
|
|
86
|
+
body: JSON.stringify(def),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
async getVerb(name) {
|
|
90
|
+
try {
|
|
91
|
+
return await this.request(`/verbs/${encodeURIComponent(name)}`);
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
async listVerbs() {
|
|
98
|
+
return this.request('/verbs');
|
|
99
|
+
}
|
|
100
|
+
// ==================== Things ====================
|
|
101
|
+
async create(noun, data, id) {
|
|
102
|
+
return this.request('/things', {
|
|
103
|
+
method: 'POST',
|
|
104
|
+
body: JSON.stringify({ noun, data, id }),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
async get(id) {
|
|
108
|
+
try {
|
|
109
|
+
return await this.request(`/things/${encodeURIComponent(id)}`);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async list(noun, options) {
|
|
116
|
+
const params = new URLSearchParams({ noun });
|
|
117
|
+
if (options?.limit)
|
|
118
|
+
params.set('limit', String(options.limit));
|
|
119
|
+
if (options?.offset)
|
|
120
|
+
params.set('offset', String(options.offset));
|
|
121
|
+
if (options?.orderBy)
|
|
122
|
+
params.set('orderBy', options.orderBy);
|
|
123
|
+
if (options?.order)
|
|
124
|
+
params.set('order', options.order);
|
|
125
|
+
const results = await this.request('/things', undefined, params);
|
|
126
|
+
// Apply where filter client-side (NS server doesn't support where in URL)
|
|
127
|
+
if (options?.where) {
|
|
128
|
+
return results.filter((thing) => {
|
|
129
|
+
for (const [key, value] of Object.entries(options.where)) {
|
|
130
|
+
if (thing.data[key] !== value) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return true;
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
return results;
|
|
138
|
+
}
|
|
139
|
+
async find(noun, where) {
|
|
140
|
+
return this.list(noun, { where: where });
|
|
141
|
+
}
|
|
142
|
+
async update(id, data) {
|
|
143
|
+
return this.request(`/things/${encodeURIComponent(id)}`, {
|
|
144
|
+
method: 'PATCH',
|
|
145
|
+
body: JSON.stringify(data),
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
async delete(id) {
|
|
149
|
+
const result = await this.request(`/things/${encodeURIComponent(id)}`, {
|
|
150
|
+
method: 'DELETE',
|
|
151
|
+
});
|
|
152
|
+
return result.deleted;
|
|
153
|
+
}
|
|
154
|
+
async search(query, options) {
|
|
155
|
+
const params = new URLSearchParams({ q: query });
|
|
156
|
+
if (options?.limit)
|
|
157
|
+
params.set('limit', String(options.limit));
|
|
158
|
+
return this.request('/search', undefined, params);
|
|
159
|
+
}
|
|
160
|
+
// ==================== Actions ====================
|
|
161
|
+
async perform(verb, subject, object, data) {
|
|
162
|
+
return this.request('/actions', {
|
|
163
|
+
method: 'POST',
|
|
164
|
+
body: JSON.stringify({ verb, subject, object, data }),
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
async getAction(id) {
|
|
168
|
+
try {
|
|
169
|
+
return await this.request(`/actions/${encodeURIComponent(id)}`);
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
async listActions(options) {
|
|
176
|
+
const params = new URLSearchParams();
|
|
177
|
+
if (options?.verb)
|
|
178
|
+
params.set('verb', options.verb);
|
|
179
|
+
if (options?.subject)
|
|
180
|
+
params.set('subject', options.subject);
|
|
181
|
+
if (options?.object)
|
|
182
|
+
params.set('object', options.object);
|
|
183
|
+
if (options?.limit)
|
|
184
|
+
params.set('limit', String(options.limit));
|
|
185
|
+
if (options?.status) {
|
|
186
|
+
const status = Array.isArray(options.status) ? options.status[0] : options.status;
|
|
187
|
+
if (status)
|
|
188
|
+
params.set('status', status);
|
|
189
|
+
}
|
|
190
|
+
return this.request('/actions', undefined, params);
|
|
191
|
+
}
|
|
192
|
+
async deleteAction(id) {
|
|
193
|
+
const result = await this.request(`/actions/${encodeURIComponent(id)}`, {
|
|
194
|
+
method: 'DELETE',
|
|
195
|
+
});
|
|
196
|
+
return result.deleted;
|
|
197
|
+
}
|
|
198
|
+
// ==================== Graph Traversal ====================
|
|
199
|
+
async related(id, verb, direction) {
|
|
200
|
+
const params = new URLSearchParams();
|
|
201
|
+
if (verb)
|
|
202
|
+
params.set('verb', verb);
|
|
203
|
+
if (direction)
|
|
204
|
+
params.set('direction', direction);
|
|
205
|
+
return this.request(`/related/${encodeURIComponent(id)}`, undefined, params);
|
|
206
|
+
}
|
|
207
|
+
async edges(id, verb, direction) {
|
|
208
|
+
const params = new URLSearchParams();
|
|
209
|
+
if (verb)
|
|
210
|
+
params.set('verb', verb);
|
|
211
|
+
if (direction)
|
|
212
|
+
params.set('direction', direction);
|
|
213
|
+
return this.request(`/edges/${encodeURIComponent(id)}`, undefined, params);
|
|
214
|
+
}
|
|
215
|
+
// ==================== Batch Operations ====================
|
|
216
|
+
async createMany(noun, items) {
|
|
217
|
+
return this.request('/batch/things', {
|
|
218
|
+
method: 'POST',
|
|
219
|
+
body: JSON.stringify({ noun, items }),
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
async updateMany(updates) {
|
|
223
|
+
return this.request('/batch/things', {
|
|
224
|
+
method: 'PATCH',
|
|
225
|
+
body: JSON.stringify({ updates }),
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
async deleteMany(ids) {
|
|
229
|
+
return this.request('/batch/things', {
|
|
230
|
+
method: 'DELETE',
|
|
231
|
+
body: JSON.stringify({ ids }),
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
async performMany(actions) {
|
|
235
|
+
return this.request('/batch/actions', {
|
|
236
|
+
method: 'POST',
|
|
237
|
+
body: JSON.stringify({ actions }),
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
// ==================== Lifecycle ====================
|
|
241
|
+
async close() {
|
|
242
|
+
// No-op for HTTP client
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Create an NS client that talks to the Durable Object via HTTP
|
|
247
|
+
*
|
|
248
|
+
* @deprecated Use `new NSClient(options)` instead for better TypeScript support
|
|
249
|
+
*/
|
|
250
|
+
export function createNSClient(options) {
|
|
251
|
+
return new NSClient(options);
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=ns-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ns-client.js","sourceRoot":"","sources":["../src/ns-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NS - Namespace Durable Object
|
|
3
|
+
*
|
|
4
|
+
* Import from 'digital-objects/ns' when deploying to Cloudflare Workers.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* // wrangler.jsonc
|
|
9
|
+
* {
|
|
10
|
+
* "durable_objects": {
|
|
11
|
+
* "bindings": [{ "name": "NS", "class_name": "NS" }]
|
|
12
|
+
* }
|
|
13
|
+
* }
|
|
14
|
+
*
|
|
15
|
+
* // worker.ts
|
|
16
|
+
* export { NS } from 'digital-objects/ns'
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export { NS } from './ns.js';
|
|
20
|
+
export type { Env } from './ns.js';
|
|
21
|
+
export { createNSClient } from './ns-client.js';
|
|
22
|
+
export type { NSClientOptions } from './ns-client.js';
|
|
23
|
+
//# sourceMappingURL=ns-exports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ns-exports.d.ts","sourceRoot":"","sources":["../src/ns-exports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAC5B,YAAY,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NS - Namespace Durable Object
|
|
3
|
+
*
|
|
4
|
+
* Import from 'digital-objects/ns' when deploying to Cloudflare Workers.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* // wrangler.jsonc
|
|
9
|
+
* {
|
|
10
|
+
* "durable_objects": {
|
|
11
|
+
* "bindings": [{ "name": "NS", "class_name": "NS" }]
|
|
12
|
+
* }
|
|
13
|
+
* }
|
|
14
|
+
*
|
|
15
|
+
* // worker.ts
|
|
16
|
+
* export { NS } from 'digital-objects/ns'
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export { NS } from './ns.js';
|
|
20
|
+
export { createNSClient } from './ns-client.js';
|
|
21
|
+
//# sourceMappingURL=ns-exports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ns-exports.js","sourceRoot":"","sources":["../src/ns-exports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/ns.d.ts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NS - Namespace Durable Object
|
|
3
|
+
*
|
|
4
|
+
* SQLite-based implementation of DigitalObjectsProvider for Cloudflare Workers.
|
|
5
|
+
* Each NS instance represents a namespace (tenant) with isolated data.
|
|
6
|
+
*/
|
|
7
|
+
import type { DigitalObjectsProvider, Noun, NounDefinition, Verb, VerbDefinition, Thing, Action, ListOptions, ActionOptions, ValidationOptions, Direction } from './types.js';
|
|
8
|
+
export interface Env {
|
|
9
|
+
NS: DurableObjectNamespace;
|
|
10
|
+
STORAGE?: R2Bucket;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* NS - Namespace Durable Object
|
|
14
|
+
*/
|
|
15
|
+
export declare class NS implements DigitalObjectsProvider {
|
|
16
|
+
private sql;
|
|
17
|
+
private initialized;
|
|
18
|
+
private nounCache;
|
|
19
|
+
private verbCache;
|
|
20
|
+
constructor(ctx: DurableObjectState, _env: Env);
|
|
21
|
+
private ensureInitialized;
|
|
22
|
+
fetch(request: Request): Promise<Response>;
|
|
23
|
+
defineNoun(def: NounDefinition): Promise<Noun>;
|
|
24
|
+
getNoun(name: string): Promise<Noun | null>;
|
|
25
|
+
listNouns(): Promise<Noun[]>;
|
|
26
|
+
defineVerb(def: VerbDefinition): Promise<Verb>;
|
|
27
|
+
getVerb(name: string): Promise<Verb | null>;
|
|
28
|
+
listVerbs(): Promise<Verb[]>;
|
|
29
|
+
create<T>(noun: string, data: T, id?: string, options?: ValidationOptions): Promise<Thing<T>>;
|
|
30
|
+
get<T>(id: string): Promise<Thing<T> | null>;
|
|
31
|
+
list<T>(noun: string, options?: ListOptions): Promise<Thing<T>[]>;
|
|
32
|
+
find<T>(noun: string, where: Partial<T>): Promise<Thing<T>[]>;
|
|
33
|
+
update<T>(id: string, data: Partial<T>, options?: ValidationOptions): Promise<Thing<T>>;
|
|
34
|
+
delete(id: string): Promise<boolean>;
|
|
35
|
+
search<T>(query: string, options?: ListOptions): Promise<Thing<T>[]>;
|
|
36
|
+
perform<T>(verb: string, subject?: string, object?: string, data?: T): Promise<Action<T>>;
|
|
37
|
+
getAction<T>(id: string): Promise<Action<T> | null>;
|
|
38
|
+
listActions<T>(options?: ActionOptions): Promise<Action<T>[]>;
|
|
39
|
+
deleteAction(id: string): Promise<boolean>;
|
|
40
|
+
related<T>(id: string, verb?: string, direction?: Direction, options?: ListOptions): Promise<Thing<T>[]>;
|
|
41
|
+
edges<T>(id: string, verb?: string, direction?: Direction, options?: ListOptions): Promise<Action<T>[]>;
|
|
42
|
+
createMany<T>(noun: string, items: T[]): Promise<Thing<T>[]>;
|
|
43
|
+
updateMany<T>(updates: Array<{
|
|
44
|
+
id: string;
|
|
45
|
+
data: Partial<T>;
|
|
46
|
+
}>): Promise<Thing<T>[]>;
|
|
47
|
+
deleteMany(ids: string[]): Promise<boolean[]>;
|
|
48
|
+
performMany<T>(actions: Array<{
|
|
49
|
+
verb: string;
|
|
50
|
+
subject?: string;
|
|
51
|
+
object?: string;
|
|
52
|
+
data?: T;
|
|
53
|
+
}>): Promise<Action<T>[]>;
|
|
54
|
+
close(): Promise<void>;
|
|
55
|
+
}
|
|
56
|
+
declare const _default: {
|
|
57
|
+
fetch(request: Request, env: Env): Promise<Response>;
|
|
58
|
+
};
|
|
59
|
+
export default _default;
|
|
60
|
+
//# sourceMappingURL=ns.d.ts.map
|
package/dist/ns.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ns.d.ts","sourceRoot":"","sources":["../src/ns.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,sBAAsB,EACtB,IAAI,EACJ,cAAc,EACd,IAAI,EACJ,cAAc,EACd,KAAK,EACL,MAAM,EAEN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,SAAS,EACV,MAAM,YAAY,CAAA;AA6DnB,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,sBAAsB,CAAA;IAC1B,OAAO,CAAC,EAAE,QAAQ,CAAA;CACnB;AAED;;GAEG;AACH,qBAAa,EAAG,YAAW,sBAAsB;IAC/C,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,WAAW,CAAQ;IAG3B,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,SAAS,CAA0B;gBAE/B,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG;YAIhC,iBAAiB;IA0DzB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgM1C,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC9C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IA2B3C,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAoB5B,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C9C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IA+B3C,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAwB5B,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IA+B7F,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAgB5C,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAqDjE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAI7D,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IA8BvF,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOpC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IA2BpE,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IA+BzF,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAmBnD,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAgD7D,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1C,OAAO,CAAC,CAAC,EACb,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,GAAE,SAAiB,EAC5B,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IA+BhB,KAAK,CAAC,CAAC,EACX,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,GAAE,SAAiB,EAC5B,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IA8CjB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAqC5D,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAmCpF,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAqB7C,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IA2CnH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;;mBAGsB,OAAO,OAAO,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;;AAD5D,wBAUC"}
|