resourcexjs 0.0.2 → 0.1.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/index.d.ts +18 -6
- package/dist/index.js +206 -41
- package/dist/index.js.map +4 -4
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -31,6 +31,18 @@ declare class ResourceX {
|
|
|
31
31
|
*/
|
|
32
32
|
resolve(url: string): Promise<Resource>;
|
|
33
33
|
/**
|
|
34
|
+
* Deposit data to an ARP URL
|
|
35
|
+
*/
|
|
36
|
+
deposit(url: string, data: unknown): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Check if resource exists at ARP URL
|
|
39
|
+
*/
|
|
40
|
+
exists(url: string): Promise<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
* Delete resource at ARP URL
|
|
43
|
+
*/
|
|
44
|
+
delete(url: string): Promise<void>;
|
|
45
|
+
/**
|
|
34
46
|
* Register a custom transport handler
|
|
35
47
|
*/
|
|
36
48
|
registerTransport(handler: TransportHandler): void;
|
|
@@ -39,13 +51,13 @@ declare class ResourceX {
|
|
|
39
51
|
*/
|
|
40
52
|
registerSemantic(handler: SemanticHandler): void;
|
|
41
53
|
/**
|
|
42
|
-
* Get a transport handler by
|
|
54
|
+
* Get a transport handler by name
|
|
43
55
|
*/
|
|
44
|
-
getTransport(
|
|
56
|
+
getTransport(name: string): TransportHandler;
|
|
45
57
|
/**
|
|
46
|
-
* Get a semantic handler by
|
|
58
|
+
* Get a semantic handler by name
|
|
47
59
|
*/
|
|
48
|
-
getSemantic(
|
|
60
|
+
getSemantic(name: string): SemanticHandler;
|
|
49
61
|
}
|
|
50
62
|
/**
|
|
51
63
|
* Create a new ResourceX instance
|
|
@@ -69,6 +81,6 @@ declare class ResourceX {
|
|
|
69
81
|
* ```
|
|
70
82
|
*/
|
|
71
83
|
declare function createResourceX(config?: ResourceXConfig): ResourceX;
|
|
72
|
-
import { Resource as Resource2, ResourceMeta, ParsedARP as ParsedARP2,
|
|
84
|
+
import { Resource as Resource2, ResourceMeta, ParsedARP as ParsedARP2, SemanticContext, TransportHandler as TransportHandler2, TransportCapabilities, ResourceStat, SemanticHandler as SemanticHandler2, TextResource } from "@resourcexjs/core";
|
|
73
85
|
import { ResourceXError, ParseError, TransportError, SemanticError } from "@resourcexjs/core";
|
|
74
|
-
export { createResourceX, TransportHandler2 as TransportHandler, TransportError, TextResource, SemanticHandler2 as SemanticHandler, SemanticError, ResourceXError, ResourceXConfig, ResourceX, ResourceMeta, Resource2 as Resource, ParsedARP2 as ParsedARP, ParseError
|
|
86
|
+
export { createResourceX, TransportHandler2 as TransportHandler, TransportError, TransportCapabilities, TextResource, SemanticHandler2 as SemanticHandler, SemanticError, SemanticContext, ResourceXError, ResourceXConfig, ResourceX, ResourceStat, ResourceMeta, Resource2 as Resource, ParsedARP2 as ParsedARP, ParseError };
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// ../core/dist/index.js
|
|
2
|
-
import { readFile } from "node:fs/promises";
|
|
3
|
-
import { resolve } from "node:path";
|
|
2
|
+
import { readFile, writeFile, readdir, mkdir, rm, access, stat as fsStat } from "node:fs/promises";
|
|
3
|
+
import { resolve, dirname } from "node:path";
|
|
4
4
|
|
|
5
5
|
class ResourceXError extends Error {
|
|
6
6
|
constructor(message, options) {
|
|
@@ -65,18 +65,25 @@ function parseARP(url) {
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
class HttpTransportHandler {
|
|
68
|
-
|
|
68
|
+
name;
|
|
69
69
|
protocol;
|
|
70
|
+
capabilities = {
|
|
71
|
+
canRead: true,
|
|
72
|
+
canWrite: false,
|
|
73
|
+
canList: false,
|
|
74
|
+
canDelete: false,
|
|
75
|
+
canStat: false
|
|
76
|
+
};
|
|
70
77
|
constructor(protocol = "https") {
|
|
71
78
|
this.protocol = protocol;
|
|
72
|
-
this.
|
|
79
|
+
this.name = protocol;
|
|
73
80
|
}
|
|
74
|
-
async
|
|
81
|
+
async read(location) {
|
|
75
82
|
const url = `${this.protocol}://${location}`;
|
|
76
83
|
try {
|
|
77
84
|
const response = await fetch(url);
|
|
78
85
|
if (!response.ok) {
|
|
79
|
-
throw new TransportError(`HTTP ${response.status}: ${response.statusText} - ${url}`, this.
|
|
86
|
+
throw new TransportError(`HTTP ${response.status}: ${response.statusText} - ${url}`, this.name);
|
|
80
87
|
}
|
|
81
88
|
const arrayBuffer = await response.arrayBuffer();
|
|
82
89
|
return Buffer.from(arrayBuffer);
|
|
@@ -84,7 +91,9 @@ class HttpTransportHandler {
|
|
|
84
91
|
if (error instanceof TransportError) {
|
|
85
92
|
throw error;
|
|
86
93
|
}
|
|
87
|
-
throw new TransportError(`Network error: ${url}`, this.
|
|
94
|
+
throw new TransportError(`Network error: ${url}`, this.name, {
|
|
95
|
+
cause: error
|
|
96
|
+
});
|
|
88
97
|
}
|
|
89
98
|
}
|
|
90
99
|
}
|
|
@@ -92,14 +101,94 @@ var httpsHandler = new HttpTransportHandler("https");
|
|
|
92
101
|
var httpHandler = new HttpTransportHandler("http");
|
|
93
102
|
|
|
94
103
|
class FileTransportHandler {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
104
|
+
name = "file";
|
|
105
|
+
capabilities = {
|
|
106
|
+
canRead: true,
|
|
107
|
+
canWrite: true,
|
|
108
|
+
canList: true,
|
|
109
|
+
canDelete: true,
|
|
110
|
+
canStat: true
|
|
111
|
+
};
|
|
112
|
+
resolvePath(location) {
|
|
113
|
+
return resolve(process.cwd(), location);
|
|
114
|
+
}
|
|
115
|
+
async read(location) {
|
|
116
|
+
const filePath = this.resolvePath(location);
|
|
98
117
|
try {
|
|
99
118
|
return await readFile(filePath);
|
|
100
119
|
} catch (error) {
|
|
101
120
|
const err = error;
|
|
102
|
-
throw new TransportError(`File read error: ${err.code} - ${filePath}`, this.
|
|
121
|
+
throw new TransportError(`File read error: ${err.code} - ${filePath}`, this.name, {
|
|
122
|
+
cause: err
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async write(location, content) {
|
|
127
|
+
const filePath = this.resolvePath(location);
|
|
128
|
+
try {
|
|
129
|
+
await mkdir(dirname(filePath), { recursive: true });
|
|
130
|
+
await writeFile(filePath, content);
|
|
131
|
+
} catch (error) {
|
|
132
|
+
const err = error;
|
|
133
|
+
throw new TransportError(`File write error: ${err.code} - ${filePath}`, this.name, {
|
|
134
|
+
cause: err
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
async list(location) {
|
|
139
|
+
const dirPath = this.resolvePath(location);
|
|
140
|
+
try {
|
|
141
|
+
return await readdir(dirPath);
|
|
142
|
+
} catch (error) {
|
|
143
|
+
const err = error;
|
|
144
|
+
throw new TransportError(`Directory list error: ${err.code} - ${dirPath}`, this.name, {
|
|
145
|
+
cause: err
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
async mkdir(location) {
|
|
150
|
+
const dirPath = this.resolvePath(location);
|
|
151
|
+
try {
|
|
152
|
+
await mkdir(dirPath, { recursive: true });
|
|
153
|
+
} catch (error) {
|
|
154
|
+
const err = error;
|
|
155
|
+
throw new TransportError(`Directory create error: ${err.code} - ${dirPath}`, this.name, {
|
|
156
|
+
cause: err
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
async exists(location) {
|
|
161
|
+
const filePath = this.resolvePath(location);
|
|
162
|
+
try {
|
|
163
|
+
await access(filePath);
|
|
164
|
+
return true;
|
|
165
|
+
} catch {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
async stat(location) {
|
|
170
|
+
const filePath = this.resolvePath(location);
|
|
171
|
+
try {
|
|
172
|
+
const stats = await fsStat(filePath);
|
|
173
|
+
return {
|
|
174
|
+
size: stats.size,
|
|
175
|
+
modifiedAt: stats.mtime,
|
|
176
|
+
isDirectory: stats.isDirectory()
|
|
177
|
+
};
|
|
178
|
+
} catch (error) {
|
|
179
|
+
const err = error;
|
|
180
|
+
throw new TransportError(`File stat error: ${err.code} - ${filePath}`, this.name, {
|
|
181
|
+
cause: err
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
async delete(location) {
|
|
186
|
+
const filePath = this.resolvePath(location);
|
|
187
|
+
try {
|
|
188
|
+
await rm(filePath, { recursive: true });
|
|
189
|
+
} catch (error) {
|
|
190
|
+
const err = error;
|
|
191
|
+
throw new TransportError(`File delete error: ${err.code} - ${filePath}`, this.name, {
|
|
103
192
|
cause: err
|
|
104
193
|
});
|
|
105
194
|
}
|
|
@@ -111,30 +200,31 @@ var handlers = new Map([
|
|
|
111
200
|
["http", httpHandler],
|
|
112
201
|
["file", fileHandler]
|
|
113
202
|
]);
|
|
114
|
-
function getTransportHandler(
|
|
115
|
-
const handler = handlers.get(
|
|
203
|
+
function getTransportHandler(name) {
|
|
204
|
+
const handler = handlers.get(name);
|
|
116
205
|
if (!handler) {
|
|
117
|
-
throw new TransportError(`Unsupported transport type: ${
|
|
206
|
+
throw new TransportError(`Unsupported transport type: ${name}`, name);
|
|
118
207
|
}
|
|
119
208
|
return handler;
|
|
120
209
|
}
|
|
121
210
|
function registerTransportHandler(handler) {
|
|
122
|
-
handlers.set(handler.
|
|
211
|
+
handlers.set(handler.name, handler);
|
|
123
212
|
}
|
|
124
213
|
|
|
125
214
|
class TextSemanticHandler {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
const
|
|
215
|
+
name = "text";
|
|
216
|
+
async resolve(transport, location, context) {
|
|
217
|
+
const buffer = await transport.read(location);
|
|
218
|
+
const text = buffer.toString("utf-8");
|
|
129
219
|
const meta = {
|
|
130
220
|
url: context.url,
|
|
131
221
|
semantic: context.semantic,
|
|
132
222
|
transport: context.transport,
|
|
133
223
|
location: context.location,
|
|
134
|
-
size:
|
|
224
|
+
size: buffer.length,
|
|
135
225
|
encoding: "utf-8",
|
|
136
226
|
mimeType: "text/plain",
|
|
137
|
-
|
|
227
|
+
resolvedAt: context.timestamp.toISOString()
|
|
138
228
|
};
|
|
139
229
|
return {
|
|
140
230
|
type: "text",
|
|
@@ -142,33 +232,99 @@ class TextSemanticHandler {
|
|
|
142
232
|
meta
|
|
143
233
|
};
|
|
144
234
|
}
|
|
235
|
+
async deposit(transport, location, data, _context) {
|
|
236
|
+
if (!transport.write) {
|
|
237
|
+
throw new SemanticError(`Transport "${transport.name}" does not support write operation`, this.name);
|
|
238
|
+
}
|
|
239
|
+
const buffer = Buffer.from(data, "utf-8");
|
|
240
|
+
await transport.write(location, buffer);
|
|
241
|
+
}
|
|
242
|
+
async exists(transport, location, _context) {
|
|
243
|
+
if (transport.exists) {
|
|
244
|
+
return transport.exists(location);
|
|
245
|
+
}
|
|
246
|
+
try {
|
|
247
|
+
await transport.read(location);
|
|
248
|
+
return true;
|
|
249
|
+
} catch {
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
async delete(transport, location, _context) {
|
|
254
|
+
if (!transport.delete) {
|
|
255
|
+
throw new SemanticError(`Transport "${transport.name}" does not support delete operation`, this.name);
|
|
256
|
+
}
|
|
257
|
+
await transport.delete(location);
|
|
258
|
+
}
|
|
145
259
|
}
|
|
146
260
|
var textHandler = new TextSemanticHandler;
|
|
147
261
|
var handlers2 = new Map([["text", textHandler]]);
|
|
148
|
-
function getSemanticHandler(
|
|
149
|
-
const handler = handlers2.get(
|
|
262
|
+
function getSemanticHandler(name) {
|
|
263
|
+
const handler = handlers2.get(name);
|
|
150
264
|
if (!handler) {
|
|
151
|
-
throw new SemanticError(`Unsupported semantic type: ${
|
|
265
|
+
throw new SemanticError(`Unsupported semantic type: ${name}`, name);
|
|
152
266
|
}
|
|
153
267
|
return handler;
|
|
154
268
|
}
|
|
155
269
|
function registerSemanticHandler(handler) {
|
|
156
|
-
handlers2.set(handler.
|
|
270
|
+
handlers2.set(handler.name, handler);
|
|
157
271
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
const parsed = parseARP(url);
|
|
161
|
-
const transportHandler = getTransportHandler(parsed.transport);
|
|
162
|
-
const semanticHandler = getSemanticHandler(parsed.semantic);
|
|
163
|
-
const content = await transportHandler.fetch(parsed.location);
|
|
164
|
-
const context = {
|
|
272
|
+
function createContext(url, semantic, transport, location) {
|
|
273
|
+
return {
|
|
165
274
|
url,
|
|
166
|
-
semantic
|
|
167
|
-
transport
|
|
168
|
-
location
|
|
169
|
-
|
|
275
|
+
semantic,
|
|
276
|
+
transport,
|
|
277
|
+
location,
|
|
278
|
+
timestamp: new Date
|
|
170
279
|
};
|
|
171
|
-
|
|
280
|
+
}
|
|
281
|
+
async function resolve2(url) {
|
|
282
|
+
const parsed = parseARP(url);
|
|
283
|
+
const transport = getTransportHandler(parsed.transport);
|
|
284
|
+
const semantic = getSemanticHandler(parsed.semantic);
|
|
285
|
+
const context = createContext(url, parsed.semantic, parsed.transport, parsed.location);
|
|
286
|
+
return semantic.resolve(transport, parsed.location, context);
|
|
287
|
+
}
|
|
288
|
+
async function deposit(url, data) {
|
|
289
|
+
const parsed = parseARP(url);
|
|
290
|
+
const transport = getTransportHandler(parsed.transport);
|
|
291
|
+
const semantic = getSemanticHandler(parsed.semantic);
|
|
292
|
+
if (!semantic.deposit) {
|
|
293
|
+
throw new SemanticError(`Semantic "${semantic.name}" does not support deposit operation`, parsed.semantic);
|
|
294
|
+
}
|
|
295
|
+
const context = createContext(url, parsed.semantic, parsed.transport, parsed.location);
|
|
296
|
+
await semantic.deposit(transport, parsed.location, data, context);
|
|
297
|
+
}
|
|
298
|
+
async function resourceExists(url) {
|
|
299
|
+
const parsed = parseARP(url);
|
|
300
|
+
const transport = getTransportHandler(parsed.transport);
|
|
301
|
+
const semantic = getSemanticHandler(parsed.semantic);
|
|
302
|
+
const context = createContext(url, parsed.semantic, parsed.transport, parsed.location);
|
|
303
|
+
if (semantic.exists) {
|
|
304
|
+
return semantic.exists(transport, parsed.location, context);
|
|
305
|
+
}
|
|
306
|
+
if (transport.exists) {
|
|
307
|
+
return transport.exists(parsed.location);
|
|
308
|
+
}
|
|
309
|
+
try {
|
|
310
|
+
await transport.read(parsed.location);
|
|
311
|
+
return true;
|
|
312
|
+
} catch {
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
async function resourceDelete(url) {
|
|
317
|
+
const parsed = parseARP(url);
|
|
318
|
+
const transport = getTransportHandler(parsed.transport);
|
|
319
|
+
const semantic = getSemanticHandler(parsed.semantic);
|
|
320
|
+
const context = createContext(url, parsed.semantic, parsed.transport, parsed.location);
|
|
321
|
+
if (semantic.delete) {
|
|
322
|
+
return semantic.delete(transport, parsed.location, context);
|
|
323
|
+
}
|
|
324
|
+
if (!transport.delete) {
|
|
325
|
+
throw new SemanticError(`Neither semantic "${semantic.name}" nor transport "${transport.name}" supports delete operation`, parsed.semantic);
|
|
326
|
+
}
|
|
327
|
+
await transport.delete(parsed.location);
|
|
172
328
|
}
|
|
173
329
|
|
|
174
330
|
// src/ResourceX.ts
|
|
@@ -193,17 +349,26 @@ class ResourceX {
|
|
|
193
349
|
async resolve(url) {
|
|
194
350
|
return resolve2(url);
|
|
195
351
|
}
|
|
352
|
+
async deposit(url, data) {
|
|
353
|
+
return deposit(url, data);
|
|
354
|
+
}
|
|
355
|
+
async exists(url) {
|
|
356
|
+
return resourceExists(url);
|
|
357
|
+
}
|
|
358
|
+
async delete(url) {
|
|
359
|
+
return resourceDelete(url);
|
|
360
|
+
}
|
|
196
361
|
registerTransport(handler) {
|
|
197
362
|
registerTransportHandler(handler);
|
|
198
363
|
}
|
|
199
364
|
registerSemantic(handler) {
|
|
200
365
|
registerSemanticHandler(handler);
|
|
201
366
|
}
|
|
202
|
-
getTransport(
|
|
203
|
-
return getTransportHandler(
|
|
367
|
+
getTransport(name) {
|
|
368
|
+
return getTransportHandler(name);
|
|
204
369
|
}
|
|
205
|
-
getSemantic(
|
|
206
|
-
return getSemanticHandler(
|
|
370
|
+
getSemantic(name) {
|
|
371
|
+
return getSemanticHandler(name);
|
|
207
372
|
}
|
|
208
373
|
}
|
|
209
374
|
|
|
@@ -220,4 +385,4 @@ export {
|
|
|
220
385
|
ParseError
|
|
221
386
|
};
|
|
222
387
|
|
|
223
|
-
//# debugId=
|
|
388
|
+
//# debugId=2E0E08369E47B85264756E2164756E21
|
package/dist/index.js.map
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../core/dist/index.js", "../src/ResourceX.ts", "../src/createResourceX.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"// src/errors.ts\nclass ResourceXError extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"ResourceXError\";\n }\n}\n\nclass ParseError extends ResourceXError {\n url;\n constructor(message, url) {\n super(message);\n this.url = url;\n this.name = \"ParseError\";\n }\n}\n\nclass TransportError extends ResourceXError {\n transport;\n constructor(message, transport, options) {\n super(message, options);\n this.transport = transport;\n this.name = \"TransportError\";\n }\n}\n\nclass SemanticError extends ResourceXError {\n semantic;\n constructor(message, semantic, options) {\n super(message, options);\n this.semantic = semantic;\n this.name = \"SemanticError\";\n }\n}\n// src/parser.ts\nfunction parseARP(url) {\n if (!url.startsWith(\"arp:\")) {\n throw new ParseError(`Invalid ARP URL: must start with \"arp:\"`, url);\n }\n const content = url.substring(4);\n const separatorIndex = content.indexOf(\"://\");\n if (separatorIndex === -1) {\n throw new ParseError(`Invalid ARP URL: missing \"://\"`, url);\n }\n const typePart = content.substring(0, separatorIndex);\n const location = content.substring(separatorIndex + 3);\n const colonIndex = typePart.indexOf(\":\");\n if (colonIndex === -1) {\n throw new ParseError(`Invalid ARP URL: must have exactly 2 types (semantic:transport)`, url);\n }\n const semantic = typePart.substring(0, colonIndex);\n const transport = typePart.substring(colonIndex + 1);\n if (!semantic) {\n throw new ParseError(`Invalid ARP URL: semantic type cannot be empty`, url);\n }\n if (!transport) {\n throw new ParseError(`Invalid ARP URL: transport type cannot be empty`, url);\n }\n if (!location) {\n throw new ParseError(`Invalid ARP URL: location cannot be empty`, url);\n }\n return { semantic, transport, location };\n}\n// src/transport/http.ts\nclass HttpTransportHandler {\n type;\n protocol;\n constructor(protocol = \"https\") {\n this.protocol = protocol;\n this.type = protocol;\n }\n async fetch(location) {\n const url = `${this.protocol}://${location}`;\n try {\n const response = await fetch(url);\n if (!response.ok) {\n throw new TransportError(`HTTP ${response.status}: ${response.statusText} - ${url}`, this.type);\n }\n const arrayBuffer = await response.arrayBuffer();\n return Buffer.from(arrayBuffer);\n } catch (error) {\n if (error instanceof TransportError) {\n throw error;\n }\n throw new TransportError(`Network error: ${url}`, this.type, { cause: error });\n }\n }\n}\nvar httpsHandler = new HttpTransportHandler(\"https\");\nvar httpHandler = new HttpTransportHandler(\"http\");\n// src/transport/file.ts\nimport { readFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nclass FileTransportHandler {\n type = \"file\";\n async fetch(location) {\n const filePath = resolve(process.cwd(), location);\n try {\n return await readFile(filePath);\n } catch (error) {\n const err = error;\n throw new TransportError(`File read error: ${err.code} - ${filePath}`, this.type, {\n cause: err\n });\n }\n }\n}\nvar fileHandler = new FileTransportHandler;\n// src/transport/index.ts\nvar handlers = new Map([\n [\"https\", httpsHandler],\n [\"http\", httpHandler],\n [\"file\", fileHandler]\n]);\nfunction getTransportHandler(type) {\n const handler = handlers.get(type);\n if (!handler) {\n throw new TransportError(`Unsupported transport type: ${type}`, type);\n }\n return handler;\n}\nfunction registerTransportHandler(handler) {\n handlers.set(handler.type, handler);\n}\n// src/semantic/text.ts\nclass TextSemanticHandler {\n type = \"text\";\n parse(content, context) {\n const text = content.toString(\"utf-8\");\n const meta = {\n url: context.url,\n semantic: context.semantic,\n transport: context.transport,\n location: context.location,\n size: content.length,\n encoding: \"utf-8\",\n mimeType: \"text/plain\",\n fetchedAt: context.fetchedAt.toISOString()\n };\n return {\n type: \"text\",\n content: text,\n meta\n };\n }\n}\nvar textHandler = new TextSemanticHandler;\n// src/semantic/index.ts\nvar handlers2 = new Map([[\"text\", textHandler]]);\nfunction getSemanticHandler(type) {\n const handler = handlers2.get(type);\n if (!handler) {\n throw new SemanticError(`Unsupported semantic type: ${type}`, type);\n }\n return handler;\n}\nfunction registerSemanticHandler(handler) {\n handlers2.set(handler.type, handler);\n}\n// src/resolve.ts\nasync function resolve2(url) {\n const fetchedAt = new Date;\n const parsed = parseARP(url);\n const transportHandler = getTransportHandler(parsed.transport);\n const semanticHandler = getSemanticHandler(parsed.semantic);\n const content = await transportHandler.fetch(parsed.location);\n const context = {\n url,\n semantic: parsed.semantic,\n transport: parsed.transport,\n location: parsed.location,\n fetchedAt\n };\n return semanticHandler.parse(content, context);\n}\n\n// src/index.ts\nvar VERSION = \"0.0.1\";\nexport {\n textHandler,\n resolve2 as resolve,\n registerTransportHandler,\n registerSemanticHandler,\n parseARP,\n httpsHandler,\n httpHandler,\n getTransportHandler,\n getSemanticHandler,\n fileHandler,\n VERSION,\n TransportError,\n SemanticError,\n ResourceXError,\n ParseError\n};\n\n//# debugId=7FDB8A773330183C64756E2164756E21\n",
|
|
6
|
-
"/**\n * ResourceX - Main API class\n */\n\nimport {\n parseARP,\n resolve as coreResolve,\n getTransportHandler,\n getSemanticHandler,\n registerTransportHandler,\n registerSemanticHandler,\n type ParsedARP,\n type Resource,\n type TransportHandler,\n type SemanticHandler,\n} from \"@resourcexjs/core\";\n\n/**\n * ResourceX configuration\n */\nexport interface ResourceXConfig {\n /**\n * Request timeout in milliseconds\n */\n timeout?: number;\n\n /**\n * Custom transport handlers to register\n */\n transports?: TransportHandler[];\n\n /**\n * Custom semantic handlers to register\n */\n semantics?: SemanticHandler[];\n}\n\n/**\n * ResourceX instance\n */\nexport class ResourceX {\n readonly timeout?: number;\n\n constructor(config: ResourceXConfig = {}) {\n this.timeout = config.timeout;\n\n // Register custom handlers from config\n if (config.transports) {\n for (const handler of config.transports) {\n registerTransportHandler(handler);\n }\n }\n\n if (config.semantics) {\n for (const handler of config.semantics) {\n registerSemanticHandler(handler);\n }\n }\n }\n\n /**\n * Parse an ARP URL without fetching\n */\n parse(url: string): ParsedARP {\n return parseARP(url);\n }\n\n /**\n * Resolve an ARP URL to a resource\n */\n async resolve(url: string): Promise<Resource> {\n // TODO: implement timeout using this.timeout\n return coreResolve(url);\n }\n\n /**\n * Register a custom transport handler\n */\n registerTransport(handler: TransportHandler): void {\n registerTransportHandler(handler);\n }\n\n /**\n * Register a custom semantic handler\n */\n registerSemantic(handler: SemanticHandler): void {\n registerSemanticHandler(handler);\n }\n\n /**\n * Get a transport handler by
|
|
5
|
+
"// src/errors.ts\nclass ResourceXError extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"ResourceXError\";\n }\n}\n\nclass ParseError extends ResourceXError {\n url;\n constructor(message, url) {\n super(message);\n this.url = url;\n this.name = \"ParseError\";\n }\n}\n\nclass TransportError extends ResourceXError {\n transport;\n constructor(message, transport, options) {\n super(message, options);\n this.transport = transport;\n this.name = \"TransportError\";\n }\n}\n\nclass SemanticError extends ResourceXError {\n semantic;\n constructor(message, semantic, options) {\n super(message, options);\n this.semantic = semantic;\n this.name = \"SemanticError\";\n }\n}\n// src/parser.ts\nfunction parseARP(url) {\n if (!url.startsWith(\"arp:\")) {\n throw new ParseError(`Invalid ARP URL: must start with \"arp:\"`, url);\n }\n const content = url.substring(4);\n const separatorIndex = content.indexOf(\"://\");\n if (separatorIndex === -1) {\n throw new ParseError(`Invalid ARP URL: missing \"://\"`, url);\n }\n const typePart = content.substring(0, separatorIndex);\n const location = content.substring(separatorIndex + 3);\n const colonIndex = typePart.indexOf(\":\");\n if (colonIndex === -1) {\n throw new ParseError(`Invalid ARP URL: must have exactly 2 types (semantic:transport)`, url);\n }\n const semantic = typePart.substring(0, colonIndex);\n const transport = typePart.substring(colonIndex + 1);\n if (!semantic) {\n throw new ParseError(`Invalid ARP URL: semantic type cannot be empty`, url);\n }\n if (!transport) {\n throw new ParseError(`Invalid ARP URL: transport type cannot be empty`, url);\n }\n if (!location) {\n throw new ParseError(`Invalid ARP URL: location cannot be empty`, url);\n }\n return { semantic, transport, location };\n}\n// src/transport/http.ts\nclass HttpTransportHandler {\n name;\n protocol;\n capabilities = {\n canRead: true,\n canWrite: false,\n canList: false,\n canDelete: false,\n canStat: false\n };\n constructor(protocol = \"https\") {\n this.protocol = protocol;\n this.name = protocol;\n }\n async read(location) {\n const url = `${this.protocol}://${location}`;\n try {\n const response = await fetch(url);\n if (!response.ok) {\n throw new TransportError(`HTTP ${response.status}: ${response.statusText} - ${url}`, this.name);\n }\n const arrayBuffer = await response.arrayBuffer();\n return Buffer.from(arrayBuffer);\n } catch (error) {\n if (error instanceof TransportError) {\n throw error;\n }\n throw new TransportError(`Network error: ${url}`, this.name, {\n cause: error\n });\n }\n }\n}\nvar httpsHandler = new HttpTransportHandler(\"https\");\nvar httpHandler = new HttpTransportHandler(\"http\");\n// src/transport/file.ts\nimport { readFile, writeFile, readdir, mkdir, rm, access, stat as fsStat } from \"node:fs/promises\";\nimport { resolve, dirname } from \"node:path\";\nclass FileTransportHandler {\n name = \"file\";\n capabilities = {\n canRead: true,\n canWrite: true,\n canList: true,\n canDelete: true,\n canStat: true\n };\n resolvePath(location) {\n return resolve(process.cwd(), location);\n }\n async read(location) {\n const filePath = this.resolvePath(location);\n try {\n return await readFile(filePath);\n } catch (error) {\n const err = error;\n throw new TransportError(`File read error: ${err.code} - ${filePath}`, this.name, {\n cause: err\n });\n }\n }\n async write(location, content) {\n const filePath = this.resolvePath(location);\n try {\n await mkdir(dirname(filePath), { recursive: true });\n await writeFile(filePath, content);\n } catch (error) {\n const err = error;\n throw new TransportError(`File write error: ${err.code} - ${filePath}`, this.name, {\n cause: err\n });\n }\n }\n async list(location) {\n const dirPath = this.resolvePath(location);\n try {\n return await readdir(dirPath);\n } catch (error) {\n const err = error;\n throw new TransportError(`Directory list error: ${err.code} - ${dirPath}`, this.name, {\n cause: err\n });\n }\n }\n async mkdir(location) {\n const dirPath = this.resolvePath(location);\n try {\n await mkdir(dirPath, { recursive: true });\n } catch (error) {\n const err = error;\n throw new TransportError(`Directory create error: ${err.code} - ${dirPath}`, this.name, {\n cause: err\n });\n }\n }\n async exists(location) {\n const filePath = this.resolvePath(location);\n try {\n await access(filePath);\n return true;\n } catch {\n return false;\n }\n }\n async stat(location) {\n const filePath = this.resolvePath(location);\n try {\n const stats = await fsStat(filePath);\n return {\n size: stats.size,\n modifiedAt: stats.mtime,\n isDirectory: stats.isDirectory()\n };\n } catch (error) {\n const err = error;\n throw new TransportError(`File stat error: ${err.code} - ${filePath}`, this.name, {\n cause: err\n });\n }\n }\n async delete(location) {\n const filePath = this.resolvePath(location);\n try {\n await rm(filePath, { recursive: true });\n } catch (error) {\n const err = error;\n throw new TransportError(`File delete error: ${err.code} - ${filePath}`, this.name, {\n cause: err\n });\n }\n }\n}\nvar fileHandler = new FileTransportHandler;\n// src/transport/index.ts\nvar handlers = new Map([\n [\"https\", httpsHandler],\n [\"http\", httpHandler],\n [\"file\", fileHandler]\n]);\nfunction getTransportHandler(name) {\n const handler = handlers.get(name);\n if (!handler) {\n throw new TransportError(`Unsupported transport type: ${name}`, name);\n }\n return handler;\n}\nfunction registerTransportHandler(handler) {\n handlers.set(handler.name, handler);\n}\n// src/semantic/text.ts\nclass TextSemanticHandler {\n name = \"text\";\n async resolve(transport, location, context) {\n const buffer = await transport.read(location);\n const text = buffer.toString(\"utf-8\");\n const meta = {\n url: context.url,\n semantic: context.semantic,\n transport: context.transport,\n location: context.location,\n size: buffer.length,\n encoding: \"utf-8\",\n mimeType: \"text/plain\",\n resolvedAt: context.timestamp.toISOString()\n };\n return {\n type: \"text\",\n content: text,\n meta\n };\n }\n async deposit(transport, location, data, _context) {\n if (!transport.write) {\n throw new SemanticError(`Transport \"${transport.name}\" does not support write operation`, this.name);\n }\n const buffer = Buffer.from(data, \"utf-8\");\n await transport.write(location, buffer);\n }\n async exists(transport, location, _context) {\n if (transport.exists) {\n return transport.exists(location);\n }\n try {\n await transport.read(location);\n return true;\n } catch {\n return false;\n }\n }\n async delete(transport, location, _context) {\n if (!transport.delete) {\n throw new SemanticError(`Transport \"${transport.name}\" does not support delete operation`, this.name);\n }\n await transport.delete(location);\n }\n}\nvar textHandler = new TextSemanticHandler;\n// src/semantic/index.ts\nvar handlers2 = new Map([[\"text\", textHandler]]);\nfunction getSemanticHandler(name) {\n const handler = handlers2.get(name);\n if (!handler) {\n throw new SemanticError(`Unsupported semantic type: ${name}`, name);\n }\n return handler;\n}\nfunction registerSemanticHandler(handler) {\n handlers2.set(handler.name, handler);\n}\n// src/resolve.ts\nfunction createContext(url, semantic, transport, location) {\n return {\n url,\n semantic,\n transport,\n location,\n timestamp: new Date\n };\n}\nasync function resolve2(url) {\n const parsed = parseARP(url);\n const transport = getTransportHandler(parsed.transport);\n const semantic = getSemanticHandler(parsed.semantic);\n const context = createContext(url, parsed.semantic, parsed.transport, parsed.location);\n return semantic.resolve(transport, parsed.location, context);\n}\nasync function deposit(url, data) {\n const parsed = parseARP(url);\n const transport = getTransportHandler(parsed.transport);\n const semantic = getSemanticHandler(parsed.semantic);\n if (!semantic.deposit) {\n throw new SemanticError(`Semantic \"${semantic.name}\" does not support deposit operation`, parsed.semantic);\n }\n const context = createContext(url, parsed.semantic, parsed.transport, parsed.location);\n await semantic.deposit(transport, parsed.location, data, context);\n}\nasync function resourceExists(url) {\n const parsed = parseARP(url);\n const transport = getTransportHandler(parsed.transport);\n const semantic = getSemanticHandler(parsed.semantic);\n const context = createContext(url, parsed.semantic, parsed.transport, parsed.location);\n if (semantic.exists) {\n return semantic.exists(transport, parsed.location, context);\n }\n if (transport.exists) {\n return transport.exists(parsed.location);\n }\n try {\n await transport.read(parsed.location);\n return true;\n } catch {\n return false;\n }\n}\nasync function resourceDelete(url) {\n const parsed = parseARP(url);\n const transport = getTransportHandler(parsed.transport);\n const semantic = getSemanticHandler(parsed.semantic);\n const context = createContext(url, parsed.semantic, parsed.transport, parsed.location);\n if (semantic.delete) {\n return semantic.delete(transport, parsed.location, context);\n }\n if (!transport.delete) {\n throw new SemanticError(`Neither semantic \"${semantic.name}\" nor transport \"${transport.name}\" supports delete operation`, parsed.semantic);\n }\n await transport.delete(parsed.location);\n}\n\n// src/index.ts\nvar VERSION = \"0.1.0\";\nexport {\n textHandler,\n resourceExists,\n resourceDelete,\n resolve2 as resolve,\n registerTransportHandler,\n registerSemanticHandler,\n parseARP,\n httpsHandler,\n httpHandler,\n getTransportHandler,\n getSemanticHandler,\n fileHandler,\n deposit,\n VERSION,\n TransportError,\n SemanticError,\n ResourceXError,\n ParseError\n};\n\n//# debugId=2B4D80A207905AF464756E2164756E21\n",
|
|
6
|
+
"/**\n * ResourceX - Main API class\n */\n\nimport {\n parseARP,\n resolve as coreResolve,\n deposit as coreDeposit,\n resourceExists as coreExists,\n resourceDelete as coreDelete,\n getTransportHandler,\n getSemanticHandler,\n registerTransportHandler,\n registerSemanticHandler,\n type ParsedARP,\n type Resource,\n type TransportHandler,\n type SemanticHandler,\n} from \"@resourcexjs/core\";\n\n/**\n * ResourceX configuration\n */\nexport interface ResourceXConfig {\n /**\n * Request timeout in milliseconds\n */\n timeout?: number;\n\n /**\n * Custom transport handlers to register\n */\n transports?: TransportHandler[];\n\n /**\n * Custom semantic handlers to register\n */\n semantics?: SemanticHandler[];\n}\n\n/**\n * ResourceX instance\n */\nexport class ResourceX {\n readonly timeout?: number;\n\n constructor(config: ResourceXConfig = {}) {\n this.timeout = config.timeout;\n\n // Register custom handlers from config\n if (config.transports) {\n for (const handler of config.transports) {\n registerTransportHandler(handler);\n }\n }\n\n if (config.semantics) {\n for (const handler of config.semantics) {\n registerSemanticHandler(handler);\n }\n }\n }\n\n /**\n * Parse an ARP URL without fetching\n */\n parse(url: string): ParsedARP {\n return parseARP(url);\n }\n\n /**\n * Resolve an ARP URL to a resource\n */\n async resolve(url: string): Promise<Resource> {\n // TODO: implement timeout using this.timeout\n return coreResolve(url);\n }\n\n /**\n * Deposit data to an ARP URL\n */\n async deposit(url: string, data: unknown): Promise<void> {\n return coreDeposit(url, data);\n }\n\n /**\n * Check if resource exists at ARP URL\n */\n async exists(url: string): Promise<boolean> {\n return coreExists(url);\n }\n\n /**\n * Delete resource at ARP URL\n */\n async delete(url: string): Promise<void> {\n return coreDelete(url);\n }\n\n /**\n * Register a custom transport handler\n */\n registerTransport(handler: TransportHandler): void {\n registerTransportHandler(handler);\n }\n\n /**\n * Register a custom semantic handler\n */\n registerSemantic(handler: SemanticHandler): void {\n registerSemanticHandler(handler);\n }\n\n /**\n * Get a transport handler by name\n */\n getTransport(name: string): TransportHandler {\n return getTransportHandler(name);\n }\n\n /**\n * Get a semantic handler by name\n */\n getSemantic(name: string): SemanticHandler {\n return getSemanticHandler(name);\n }\n}\n",
|
|
7
7
|
"/**\n * Factory function for creating ResourceX instances\n */\n\nimport { ResourceX, type ResourceXConfig } from \"./ResourceX.js\";\n\n/**\n * Create a new ResourceX instance\n *\n * @example\n * ```typescript\n * import { createResourceX } from \"resourcexjs\";\n *\n * const rx = createResourceX();\n * const resource = await rx.resolve(\"arp:text:https://example.com/file.txt\");\n * ```\n *\n * @example\n * ```typescript\n * // With custom config\n * const rx = createResourceX({\n * timeout: 5000,\n * transports: [myCustomTransport],\n * semantics: [myCustomSemantic],\n * });\n * ```\n */\nexport function createResourceX(config?: ResourceXConfig): ResourceX {\n return new ResourceX(config);\n}\n"
|
|
8
8
|
],
|
|
9
|
-
"mappings": ";
|
|
10
|
-
"debugId": "
|
|
9
|
+
"mappings": "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",
|
|
10
|
+
"debugId": "2E0E08369E47B85264756E2164756E21",
|
|
11
11
|
"names": []
|
|
12
12
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "resourcexjs",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "ResourceX - Agent Resource Protocol for AI Agents",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"resourcex",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"clean": "rm -rf dist"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@resourcexjs/core": "^0.0
|
|
41
|
+
"@resourcexjs/core": "^0.1.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {},
|
|
44
44
|
"publishConfig": {
|