resourcexjs 0.1.0 → 0.2.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/README.md +99 -12
- package/dist/index.d.ts +16 -7
- package/dist/index.js +129 -7
- package/dist/index.js.map +4 -4
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -23,6 +23,20 @@ const resource = await rx.resolve("arp:text:https://example.com/file.txt");
|
|
|
23
23
|
console.log(resource.type); // "text"
|
|
24
24
|
console.log(resource.content); // file content as string
|
|
25
25
|
console.log(resource.meta); // { url, semantic, transport, ... }
|
|
26
|
+
|
|
27
|
+
// Deposit a local text resource
|
|
28
|
+
await rx.deposit("arp:text:file://./data/config.txt", "hello world");
|
|
29
|
+
|
|
30
|
+
// Binary resources
|
|
31
|
+
await rx.deposit("arp:binary:file://./data/image.png", imageBuffer);
|
|
32
|
+
const binary = await rx.resolve("arp:binary:file://./data/image.png");
|
|
33
|
+
console.log(binary.content); // Buffer
|
|
34
|
+
|
|
35
|
+
// Check if resource exists
|
|
36
|
+
const exists = await rx.exists("arp:text:file://./data/config.txt");
|
|
37
|
+
|
|
38
|
+
// Delete a resource
|
|
39
|
+
await rx.delete("arp:text:file://./data/config.txt");
|
|
26
40
|
```
|
|
27
41
|
|
|
28
42
|
## ARP URL Format
|
|
@@ -31,15 +45,49 @@ console.log(resource.meta); // { url, semantic, transport, ... }
|
|
|
31
45
|
arp:{semantic}:{transport}://{location}
|
|
32
46
|
```
|
|
33
47
|
|
|
34
|
-
- **semantic**: What the resource is (e.g., `text`)
|
|
35
|
-
- **transport**: How to
|
|
48
|
+
- **semantic**: What the resource is (e.g., `text`, `binary`)
|
|
49
|
+
- **transport**: How to access it (e.g., `https`, `http`, `file`)
|
|
36
50
|
- **location**: Where to find it
|
|
37
51
|
|
|
38
52
|
Examples:
|
|
39
53
|
|
|
40
54
|
- `arp:text:https://example.com/readme.txt`
|
|
41
|
-
- `arp:
|
|
42
|
-
- `arp:text:file
|
|
55
|
+
- `arp:binary:file:///path/to/image.png`
|
|
56
|
+
- `arp:text:file://./local/file.txt`
|
|
57
|
+
|
|
58
|
+
## Resource Definition
|
|
59
|
+
|
|
60
|
+
Define custom resources as shortcuts for commonly used ARP URLs:
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
import { createResourceX } from "resourcexjs";
|
|
64
|
+
import { join } from "path";
|
|
65
|
+
import { homedir } from "os";
|
|
66
|
+
|
|
67
|
+
const rx = createResourceX({
|
|
68
|
+
resources: [
|
|
69
|
+
{
|
|
70
|
+
name: "logs",
|
|
71
|
+
semantic: "text",
|
|
72
|
+
transport: "file",
|
|
73
|
+
basePath: join(homedir(), ".myapp", "logs"),
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: "cache",
|
|
77
|
+
semantic: "binary",
|
|
78
|
+
transport: "file",
|
|
79
|
+
basePath: join(homedir(), ".myapp", "cache"),
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
// Use resource URL
|
|
85
|
+
await rx.deposit("logs://app.log", "log entry");
|
|
86
|
+
await rx.deposit("cache://data.bin", buffer);
|
|
87
|
+
|
|
88
|
+
// Equivalent to full ARP URL
|
|
89
|
+
await rx.deposit("arp:text:file://~/.myapp/logs/app.log", "log entry");
|
|
90
|
+
```
|
|
43
91
|
|
|
44
92
|
## API
|
|
45
93
|
|
|
@@ -52,25 +100,58 @@ const rx = createResourceX({
|
|
|
52
100
|
timeout: 5000, // request timeout in ms
|
|
53
101
|
transports: [], // custom transport handlers
|
|
54
102
|
semantics: [], // custom semantic handlers
|
|
103
|
+
resources: [], // resource definitions
|
|
55
104
|
});
|
|
56
105
|
```
|
|
57
106
|
|
|
58
107
|
### `rx.resolve(url)`
|
|
59
108
|
|
|
60
|
-
Resolve an ARP URL and return the resource.
|
|
109
|
+
Resolve an ARP or Resource URL and return the resource.
|
|
61
110
|
|
|
62
111
|
```typescript
|
|
63
112
|
const resource = await rx.resolve("arp:text:https://example.com/file.txt");
|
|
64
113
|
// Returns: { type, content, meta }
|
|
114
|
+
|
|
115
|
+
const resource = await rx.resolve("myresource://file.txt");
|
|
116
|
+
// Also works with resource URLs
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### `rx.deposit(url, data)`
|
|
120
|
+
|
|
121
|
+
Deposit data to an ARP or Resource URL.
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
await rx.deposit("arp:text:file://./data/config.txt", "content");
|
|
125
|
+
await rx.deposit("arp:binary:file://./data/image.png", buffer);
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### `rx.exists(url)`
|
|
129
|
+
|
|
130
|
+
Check if a resource exists.
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
const exists = await rx.exists("arp:text:file://./data/config.txt");
|
|
134
|
+
// Returns: boolean
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### `rx.delete(url)`
|
|
138
|
+
|
|
139
|
+
Delete a resource.
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
await rx.delete("arp:text:file://./data/config.txt");
|
|
65
143
|
```
|
|
66
144
|
|
|
67
145
|
### `rx.parse(url)`
|
|
68
146
|
|
|
69
|
-
Parse
|
|
147
|
+
Parse a URL without fetching.
|
|
70
148
|
|
|
71
149
|
```typescript
|
|
72
150
|
const parsed = rx.parse("arp:text:https://example.com/file.txt");
|
|
73
151
|
// Returns: { semantic: "text", transport: "https", location: "example.com/file.txt" }
|
|
152
|
+
|
|
153
|
+
const parsed = rx.parse("myresource://file.txt");
|
|
154
|
+
// Also works with resource URLs (expanded to full location)
|
|
74
155
|
```
|
|
75
156
|
|
|
76
157
|
### `rx.registerTransport(handler)`
|
|
@@ -81,21 +162,27 @@ Register a custom transport handler.
|
|
|
81
162
|
|
|
82
163
|
Register a custom semantic handler.
|
|
83
164
|
|
|
165
|
+
## Built-in Semantic Types
|
|
166
|
+
|
|
167
|
+
| Type | Content | Description |
|
|
168
|
+
| -------- | -------- | ------------------------------ |
|
|
169
|
+
| `text` | `string` | Plain text with UTF-8 encoding |
|
|
170
|
+
| `binary` | `Buffer` | Raw binary, no transformation |
|
|
171
|
+
|
|
84
172
|
## Resource Object
|
|
85
173
|
|
|
86
174
|
```typescript
|
|
87
175
|
interface Resource {
|
|
88
|
-
type: string; // semantic type (e.g., "text")
|
|
89
|
-
content: unknown; // parsed content
|
|
176
|
+
type: string; // semantic type (e.g., "text", "binary")
|
|
177
|
+
content: unknown; // parsed content (string for text, Buffer for binary)
|
|
90
178
|
meta: {
|
|
91
|
-
url: string; // original
|
|
179
|
+
url: string; // original URL
|
|
92
180
|
semantic: string; // semantic type
|
|
93
181
|
transport: string; // transport protocol
|
|
94
182
|
location: string; // resource location
|
|
95
183
|
size: number; // content size in bytes
|
|
96
|
-
encoding?: string; // content encoding
|
|
97
|
-
|
|
98
|
-
fetchedAt: string; // ISO timestamp
|
|
184
|
+
encoding?: string; // content encoding (for text)
|
|
185
|
+
resolvedAt: string; // ISO timestamp
|
|
99
186
|
};
|
|
100
187
|
}
|
|
101
188
|
```
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ParsedARP, Resource, TransportHandler, SemanticHandler } from "@resourcexjs/core";
|
|
1
|
+
import { ParsedARP, Resource, TransportHandler, SemanticHandler, ResourceDefinition } from "@resourcexjs/core";
|
|
2
2
|
/**
|
|
3
3
|
* ResourceX configuration
|
|
4
4
|
*/
|
|
@@ -15,31 +15,40 @@ interface ResourceXConfig {
|
|
|
15
15
|
* Custom semantic handlers to register
|
|
16
16
|
*/
|
|
17
17
|
semantics?: SemanticHandler[];
|
|
18
|
+
/**
|
|
19
|
+
* Resource definitions
|
|
20
|
+
*/
|
|
21
|
+
resources?: ResourceDefinition[];
|
|
18
22
|
}
|
|
19
23
|
/**
|
|
20
24
|
* ResourceX instance
|
|
21
25
|
*/
|
|
22
26
|
declare class ResourceX {
|
|
23
27
|
readonly timeout?: number;
|
|
28
|
+
private readonly resourceRegistry;
|
|
24
29
|
constructor(config?: ResourceXConfig);
|
|
25
30
|
/**
|
|
31
|
+
* Parse URL (supports both ARP and Resource URLs)
|
|
32
|
+
*/
|
|
33
|
+
private parseURL;
|
|
34
|
+
/**
|
|
26
35
|
* Parse an ARP URL without fetching
|
|
27
36
|
*/
|
|
28
37
|
parse(url: string): ParsedARP;
|
|
29
38
|
/**
|
|
30
|
-
* Resolve
|
|
39
|
+
* Resolve a URL to a resource
|
|
31
40
|
*/
|
|
32
41
|
resolve(url: string): Promise<Resource>;
|
|
33
42
|
/**
|
|
34
|
-
* Deposit data to
|
|
43
|
+
* Deposit data to a URL
|
|
35
44
|
*/
|
|
36
45
|
deposit(url: string, data: unknown): Promise<void>;
|
|
37
46
|
/**
|
|
38
|
-
* Check if resource exists at
|
|
47
|
+
* Check if resource exists at URL
|
|
39
48
|
*/
|
|
40
49
|
exists(url: string): Promise<boolean>;
|
|
41
50
|
/**
|
|
42
|
-
* Delete resource at
|
|
51
|
+
* Delete resource at URL
|
|
43
52
|
*/
|
|
44
53
|
delete(url: string): Promise<void>;
|
|
45
54
|
/**
|
|
@@ -81,6 +90,6 @@ declare class ResourceX {
|
|
|
81
90
|
* ```
|
|
82
91
|
*/
|
|
83
92
|
declare function createResourceX(config?: ResourceXConfig): ResourceX;
|
|
84
|
-
import { Resource as Resource2, ResourceMeta, ParsedARP as ParsedARP2, SemanticContext, TransportHandler as TransportHandler2, TransportCapabilities, ResourceStat, SemanticHandler as SemanticHandler2, TextResource } from "@resourcexjs/core";
|
|
93
|
+
import { Resource as Resource2, ResourceMeta, ParsedARP as ParsedARP2, SemanticContext, TransportHandler as TransportHandler2, TransportCapabilities, ResourceStat, SemanticHandler as SemanticHandler2, TextResource, ResourceDefinition as ResourceDefinition2 } from "@resourcexjs/core";
|
|
85
94
|
import { ResourceXError, ParseError, TransportError, SemanticError } from "@resourcexjs/core";
|
|
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 };
|
|
95
|
+
export { createResourceX, TransportHandler2 as TransportHandler, TransportError, TransportCapabilities, TextResource, SemanticHandler2 as SemanticHandler, SemanticError, SemanticContext, ResourceXError, ResourceXConfig, ResourceX, ResourceStat, ResourceMeta, ResourceDefinition2 as ResourceDefinition, Resource2 as Resource, ParsedARP2 as ParsedARP, ParseError };
|
package/dist/index.js
CHANGED
|
@@ -258,7 +258,70 @@ class TextSemanticHandler {
|
|
|
258
258
|
}
|
|
259
259
|
}
|
|
260
260
|
var textHandler = new TextSemanticHandler;
|
|
261
|
-
|
|
261
|
+
function toBuffer(data) {
|
|
262
|
+
if (Buffer.isBuffer(data)) {
|
|
263
|
+
return data;
|
|
264
|
+
}
|
|
265
|
+
if (data instanceof Uint8Array) {
|
|
266
|
+
return Buffer.from(data);
|
|
267
|
+
}
|
|
268
|
+
if (data instanceof ArrayBuffer) {
|
|
269
|
+
return Buffer.from(data);
|
|
270
|
+
}
|
|
271
|
+
if (Array.isArray(data)) {
|
|
272
|
+
return Buffer.from(data);
|
|
273
|
+
}
|
|
274
|
+
throw new SemanticError(`Unsupported binary input type`, "binary");
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
class BinarySemanticHandler {
|
|
278
|
+
name = "binary";
|
|
279
|
+
async resolve(transport, location, context) {
|
|
280
|
+
const buffer = await transport.read(location);
|
|
281
|
+
const meta = {
|
|
282
|
+
url: context.url,
|
|
283
|
+
semantic: context.semantic,
|
|
284
|
+
transport: context.transport,
|
|
285
|
+
location: context.location,
|
|
286
|
+
size: buffer.length,
|
|
287
|
+
resolvedAt: context.timestamp.toISOString()
|
|
288
|
+
};
|
|
289
|
+
return {
|
|
290
|
+
type: "binary",
|
|
291
|
+
content: buffer,
|
|
292
|
+
meta
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
async deposit(transport, location, data, _context) {
|
|
296
|
+
if (!transport.write) {
|
|
297
|
+
throw new SemanticError(`Transport "${transport.name}" does not support write operation`, this.name);
|
|
298
|
+
}
|
|
299
|
+
const buffer = toBuffer(data);
|
|
300
|
+
await transport.write(location, buffer);
|
|
301
|
+
}
|
|
302
|
+
async exists(transport, location, _context) {
|
|
303
|
+
if (transport.exists) {
|
|
304
|
+
return transport.exists(location);
|
|
305
|
+
}
|
|
306
|
+
try {
|
|
307
|
+
await transport.read(location);
|
|
308
|
+
return true;
|
|
309
|
+
} catch {
|
|
310
|
+
return false;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
async delete(transport, location, _context) {
|
|
314
|
+
if (!transport.delete) {
|
|
315
|
+
throw new SemanticError(`Transport "${transport.name}" does not support delete operation`, this.name);
|
|
316
|
+
}
|
|
317
|
+
await transport.delete(location);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
var binaryHandler = new BinarySemanticHandler;
|
|
321
|
+
var handlers2 = new Map([
|
|
322
|
+
["text", textHandler],
|
|
323
|
+
["binary", binaryHandler]
|
|
324
|
+
]);
|
|
262
325
|
function getSemanticHandler(name) {
|
|
263
326
|
const handler = handlers2.get(name);
|
|
264
327
|
if (!handler) {
|
|
@@ -326,12 +389,38 @@ async function resourceDelete(url) {
|
|
|
326
389
|
}
|
|
327
390
|
await transport.delete(parsed.location);
|
|
328
391
|
}
|
|
392
|
+
function createResourceRegistry() {
|
|
393
|
+
const registry = new Map;
|
|
394
|
+
return {
|
|
395
|
+
register(definition) {
|
|
396
|
+
if (!/^[a-z][a-z0-9-]*$/.test(definition.name)) {
|
|
397
|
+
throw new ParseError(`Invalid resource name: "${definition.name}". Must start with lowercase letter and contain only lowercase letters, numbers, and hyphens.`, definition.name);
|
|
398
|
+
}
|
|
399
|
+
getSemanticHandler(definition.semantic);
|
|
400
|
+
getTransportHandler(definition.transport);
|
|
401
|
+
registry.set(definition.name, definition);
|
|
402
|
+
},
|
|
403
|
+
get(name) {
|
|
404
|
+
return registry.get(name);
|
|
405
|
+
},
|
|
406
|
+
has(name) {
|
|
407
|
+
return registry.has(name);
|
|
408
|
+
},
|
|
409
|
+
clear() {
|
|
410
|
+
registry.clear();
|
|
411
|
+
}
|
|
412
|
+
};
|
|
413
|
+
}
|
|
329
414
|
|
|
330
415
|
// src/ResourceX.ts
|
|
416
|
+
import { join } from "node:path";
|
|
417
|
+
|
|
331
418
|
class ResourceX {
|
|
332
419
|
timeout;
|
|
420
|
+
resourceRegistry;
|
|
333
421
|
constructor(config = {}) {
|
|
334
422
|
this.timeout = config.timeout;
|
|
423
|
+
this.resourceRegistry = createResourceRegistry();
|
|
335
424
|
if (config.transports) {
|
|
336
425
|
for (const handler of config.transports) {
|
|
337
426
|
registerTransportHandler(handler);
|
|
@@ -342,21 +431,54 @@ class ResourceX {
|
|
|
342
431
|
registerSemanticHandler(handler);
|
|
343
432
|
}
|
|
344
433
|
}
|
|
434
|
+
if (config.resources) {
|
|
435
|
+
for (const resource of config.resources) {
|
|
436
|
+
this.resourceRegistry.register(resource);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
parseURL(url) {
|
|
441
|
+
if (url.startsWith("arp:")) {
|
|
442
|
+
return { arpUrl: url, parsed: parseARP(url) };
|
|
443
|
+
}
|
|
444
|
+
const match = url.match(/^([a-z][a-z0-9-]*):\/\/(.*)$/);
|
|
445
|
+
if (!match) {
|
|
446
|
+
throw new ParseError(`Invalid URL format: ${url}`, url);
|
|
447
|
+
}
|
|
448
|
+
const [, name, location] = match;
|
|
449
|
+
const definition = this.resourceRegistry.get(name);
|
|
450
|
+
if (!definition) {
|
|
451
|
+
throw new ParseError(`Unknown resource: "${name}"`, url);
|
|
452
|
+
}
|
|
453
|
+
const fullLocation = definition.basePath ? join(definition.basePath, location) : location;
|
|
454
|
+
const arpUrl = `arp:${definition.semantic}:${definition.transport}://${fullLocation}`;
|
|
455
|
+
return {
|
|
456
|
+
arpUrl,
|
|
457
|
+
parsed: {
|
|
458
|
+
semantic: definition.semantic,
|
|
459
|
+
transport: definition.transport,
|
|
460
|
+
location: fullLocation
|
|
461
|
+
}
|
|
462
|
+
};
|
|
345
463
|
}
|
|
346
464
|
parse(url) {
|
|
347
|
-
return
|
|
465
|
+
return this.parseURL(url).parsed;
|
|
348
466
|
}
|
|
349
467
|
async resolve(url) {
|
|
350
|
-
|
|
468
|
+
const { arpUrl } = this.parseURL(url);
|
|
469
|
+
return resolve2(arpUrl);
|
|
351
470
|
}
|
|
352
471
|
async deposit(url, data) {
|
|
353
|
-
|
|
472
|
+
const { arpUrl } = this.parseURL(url);
|
|
473
|
+
return deposit(arpUrl, data);
|
|
354
474
|
}
|
|
355
475
|
async exists(url) {
|
|
356
|
-
|
|
476
|
+
const { arpUrl } = this.parseURL(url);
|
|
477
|
+
return resourceExists(arpUrl);
|
|
357
478
|
}
|
|
358
479
|
async delete(url) {
|
|
359
|
-
|
|
480
|
+
const { arpUrl } = this.parseURL(url);
|
|
481
|
+
return resourceDelete(arpUrl);
|
|
360
482
|
}
|
|
361
483
|
registerTransport(handler) {
|
|
362
484
|
registerTransportHandler(handler);
|
|
@@ -385,4 +507,4 @@ export {
|
|
|
385
507
|
ParseError
|
|
386
508
|
};
|
|
387
509
|
|
|
388
|
-
//# debugId=
|
|
510
|
+
//# debugId=B9D21F1A64C8C12664756E2164756E21
|
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 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
|
|
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/binary.ts\nfunction toBuffer(data) {\n if (Buffer.isBuffer(data)) {\n return data;\n }\n if (data instanceof Uint8Array) {\n return Buffer.from(data);\n }\n if (data instanceof ArrayBuffer) {\n return Buffer.from(data);\n }\n if (Array.isArray(data)) {\n return Buffer.from(data);\n }\n throw new SemanticError(`Unsupported binary input type`, \"binary\");\n}\n\nclass BinarySemanticHandler {\n name = \"binary\";\n async resolve(transport, location, context) {\n const buffer = await transport.read(location);\n const meta = {\n url: context.url,\n semantic: context.semantic,\n transport: context.transport,\n location: context.location,\n size: buffer.length,\n resolvedAt: context.timestamp.toISOString()\n };\n return {\n type: \"binary\",\n content: buffer,\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 = toBuffer(data);\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 binaryHandler = new BinarySemanticHandler;\n// src/semantic/index.ts\nvar handlers2 = new Map([\n [\"text\", textHandler],\n [\"binary\", binaryHandler]\n]);\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// src/resource/registry.ts\nfunction createResourceRegistry() {\n const registry = new Map;\n return {\n register(definition) {\n if (!/^[a-z][a-z0-9-]*$/.test(definition.name)) {\n throw new ParseError(`Invalid resource name: \"${definition.name}\". Must start with lowercase letter and contain only lowercase letters, numbers, and hyphens.`, definition.name);\n }\n getSemanticHandler(definition.semantic);\n getTransportHandler(definition.transport);\n registry.set(definition.name, definition);\n },\n get(name) {\n return registry.get(name);\n },\n has(name) {\n return registry.has(name);\n },\n clear() {\n registry.clear();\n }\n };\n}\n// src/index.ts\nvar VERSION = \"0.2.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 createResourceRegistry,\n binaryHandler,\n VERSION,\n TransportError,\n SemanticError,\n ResourceXError,\n ParseError\n};\n\n//# debugId=2B754A97DA9C772F64756E2164756E21\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 createResourceRegistry,\n ParseError,\n type ParsedARP,\n type Resource,\n type TransportHandler,\n type SemanticHandler,\n type ResourceDefinition,\n type ResourceRegistry,\n} from \"@resourcexjs/core\";\nimport { join } from \"node:path\";\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 * Resource definitions\n */\n resources?: ResourceDefinition[];\n}\n\n/**\n * ResourceX instance\n */\nexport class ResourceX {\n readonly timeout?: number;\n private readonly resourceRegistry: ResourceRegistry;\n\n constructor(config: ResourceXConfig = {}) {\n this.timeout = config.timeout;\n this.resourceRegistry = createResourceRegistry();\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 // Register resources from config\n if (config.resources) {\n for (const resource of config.resources) {\n this.resourceRegistry.register(resource);\n }\n }\n }\n\n /**\n * Parse URL (supports both ARP and Resource URLs)\n */\n private parseURL(url: string): { arpUrl: string; parsed: ParsedARP } {\n // Standard ARP URL\n if (url.startsWith(\"arp:\")) {\n return { arpUrl: url, parsed: parseARP(url) };\n }\n\n // Resource URL: name://location\n const match = url.match(/^([a-z][a-z0-9-]*):\\/\\/(.*)$/);\n if (!match) {\n throw new ParseError(`Invalid URL format: ${url}`, url);\n }\n\n const [, name, location] = match;\n const definition = this.resourceRegistry.get(name);\n\n if (!definition) {\n throw new ParseError(`Unknown resource: \"${name}\"`, url);\n }\n\n // Expand to full location\n const fullLocation = definition.basePath ? join(definition.basePath, location) : location;\n\n // Build ARP URL\n const arpUrl = `arp:${definition.semantic}:${definition.transport}://${fullLocation}`;\n\n return {\n arpUrl,\n parsed: {\n semantic: definition.semantic,\n transport: definition.transport,\n location: fullLocation,\n },\n };\n }\n\n /**\n * Parse an ARP URL without fetching\n */\n parse(url: string): ParsedARP {\n return this.parseURL(url).parsed;\n }\n\n /**\n * Resolve a URL to a resource\n */\n async resolve(url: string): Promise<Resource> {\n const { arpUrl } = this.parseURL(url);\n // TODO: implement timeout using this.timeout\n return coreResolve(arpUrl);\n }\n\n /**\n * Deposit data to a URL\n */\n async deposit(url: string, data: unknown): Promise<void> {\n const { arpUrl } = this.parseURL(url);\n return coreDeposit(arpUrl, data);\n }\n\n /**\n * Check if resource exists at URL\n */\n async exists(url: string): Promise<boolean> {\n const { arpUrl } = this.parseURL(url);\n return coreExists(arpUrl);\n }\n\n /**\n * Delete resource at URL\n */\n async delete(url: string): Promise<void> {\n const { arpUrl } = this.parseURL(url);\n return coreDelete(arpUrl);\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": "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",
|
|
10
|
-
"debugId": "
|
|
9
|
+
"mappings": "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",
|
|
10
|
+
"debugId": "B9D21F1A64C8C12664756E2164756E21",
|
|
11
11
|
"names": []
|
|
12
12
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "resourcexjs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.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.
|
|
41
|
+
"@resourcexjs/core": "^0.2.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {},
|
|
44
44
|
"publishConfig": {
|