resourcexjs 0.2.0 → 0.4.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 +12 -13
- package/dist/index.d.ts +11 -19
- package/dist/index.js +131 -31
- package/dist/index.js.map +4 -4
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -19,26 +19,33 @@ const rx = createResourceX();
|
|
|
19
19
|
|
|
20
20
|
// Resolve a remote text resource
|
|
21
21
|
const resource = await rx.resolve("arp:text:https://example.com/file.txt");
|
|
22
|
+
// Or use shorthand (@ is default)
|
|
23
|
+
const resource = await rx.resolve("@text:https://example.com/file.txt");
|
|
22
24
|
|
|
23
25
|
console.log(resource.type); // "text"
|
|
24
26
|
console.log(resource.content); // file content as string
|
|
25
27
|
console.log(resource.meta); // { url, semantic, transport, ... }
|
|
26
28
|
|
|
27
29
|
// Deposit a local text resource
|
|
28
|
-
await rx.deposit("
|
|
30
|
+
await rx.deposit("@text:file://./data/config.txt", "hello world");
|
|
29
31
|
|
|
30
32
|
// Binary resources
|
|
31
|
-
await rx.deposit("
|
|
32
|
-
const binary = await rx.resolve("
|
|
33
|
+
await rx.deposit("@binary:file://./data/image.png", imageBuffer);
|
|
34
|
+
const binary = await rx.resolve("@binary:file://./data/image.png");
|
|
33
35
|
console.log(binary.content); // Buffer
|
|
34
36
|
|
|
35
37
|
// Check if resource exists
|
|
36
|
-
const exists = await rx.exists("
|
|
38
|
+
const exists = await rx.exists("@text:file://./data/config.txt");
|
|
37
39
|
|
|
38
40
|
// Delete a resource
|
|
39
|
-
await rx.delete("
|
|
41
|
+
await rx.delete("@text:file://./data/config.txt");
|
|
40
42
|
```
|
|
41
43
|
|
|
44
|
+
### URL Prefix
|
|
45
|
+
|
|
46
|
+
- `arp:` - Standard prefix (always supported)
|
|
47
|
+
- `@` - Shorthand alias (default, configurable via `alias` config)
|
|
48
|
+
|
|
42
49
|
## ARP URL Format
|
|
43
50
|
|
|
44
51
|
```
|
|
@@ -154,14 +161,6 @@ const parsed = rx.parse("myresource://file.txt");
|
|
|
154
161
|
// Also works with resource URLs (expanded to full location)
|
|
155
162
|
```
|
|
156
163
|
|
|
157
|
-
### `rx.registerTransport(handler)`
|
|
158
|
-
|
|
159
|
-
Register a custom transport handler.
|
|
160
|
-
|
|
161
|
-
### `rx.registerSemantic(handler)`
|
|
162
|
-
|
|
163
|
-
Register a custom semantic handler.
|
|
164
|
-
|
|
165
164
|
## Built-in Semantic Types
|
|
166
165
|
|
|
167
166
|
| Type | Content | Description |
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,12 @@ interface ResourceXConfig {
|
|
|
8
8
|
*/
|
|
9
9
|
timeout?: number;
|
|
10
10
|
/**
|
|
11
|
+
* URL prefix alias (default: "arp")
|
|
12
|
+
* All URLs must start with this prefix
|
|
13
|
+
* @example "arp", "@", "r"
|
|
14
|
+
*/
|
|
15
|
+
alias?: string;
|
|
16
|
+
/**
|
|
11
17
|
* Custom transport handlers to register
|
|
12
18
|
*/
|
|
13
19
|
transports?: TransportHandler[];
|
|
@@ -25,10 +31,11 @@ interface ResourceXConfig {
|
|
|
25
31
|
*/
|
|
26
32
|
declare class ResourceX {
|
|
27
33
|
readonly timeout?: number;
|
|
34
|
+
private readonly alias;
|
|
28
35
|
private readonly resourceRegistry;
|
|
29
36
|
constructor(config?: ResourceXConfig);
|
|
30
37
|
/**
|
|
31
|
-
* Parse URL (supports both ARP and Resource URLs)
|
|
38
|
+
* Parse URL (supports both ARP and Resource URLs with custom prefix)
|
|
32
39
|
*/
|
|
33
40
|
private parseURL;
|
|
34
41
|
/**
|
|
@@ -51,22 +58,6 @@ declare class ResourceX {
|
|
|
51
58
|
* Delete resource at URL
|
|
52
59
|
*/
|
|
53
60
|
delete(url: string): Promise<void>;
|
|
54
|
-
/**
|
|
55
|
-
* Register a custom transport handler
|
|
56
|
-
*/
|
|
57
|
-
registerTransport(handler: TransportHandler): void;
|
|
58
|
-
/**
|
|
59
|
-
* Register a custom semantic handler
|
|
60
|
-
*/
|
|
61
|
-
registerSemantic(handler: SemanticHandler): void;
|
|
62
|
-
/**
|
|
63
|
-
* Get a transport handler by name
|
|
64
|
-
*/
|
|
65
|
-
getTransport(name: string): TransportHandler;
|
|
66
|
-
/**
|
|
67
|
-
* Get a semantic handler by name
|
|
68
|
-
*/
|
|
69
|
-
getSemantic(name: string): SemanticHandler;
|
|
70
61
|
}
|
|
71
62
|
/**
|
|
72
63
|
* Create a new ResourceX instance
|
|
@@ -90,6 +81,7 @@ declare class ResourceX {
|
|
|
90
81
|
* ```
|
|
91
82
|
*/
|
|
92
83
|
declare function createResourceX(config?: ResourceXConfig): ResourceX;
|
|
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";
|
|
84
|
+
import { Resource as Resource2, ResourceMeta, ParsedARP as ParsedARP2, SemanticContext, TransportHandler as TransportHandler2, TransportCapabilities, ResourceStat, SemanticHandler as SemanticHandler2, TextResource, ResourceDefinition as ResourceDefinition2, DeepracticeConfig } from "@resourcexjs/core";
|
|
85
|
+
import { deepracticeHandler } from "@resourcexjs/core";
|
|
94
86
|
import { ResourceXError, ParseError, TransportError, SemanticError } from "@resourcexjs/core";
|
|
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 };
|
|
87
|
+
export { deepracticeHandler, 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, DeepracticeConfig };
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
// ../core/dist/index.js
|
|
2
2
|
import { readFile, writeFile, readdir, mkdir, rm, access, stat as fsStat } from "node:fs/promises";
|
|
3
3
|
import { resolve, dirname } from "node:path";
|
|
4
|
+
import { homedir } from "node:os";
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
import { readFile as readFile2, writeFile as writeFile2, readdir as readdir2, access as access2, unlink, mkdir as mkdir2, stat, rm as rm2 } from "node:fs/promises";
|
|
4
7
|
|
|
5
8
|
class ResourceXError extends Error {
|
|
6
9
|
constructor(message, options) {
|
|
@@ -195,6 +198,83 @@ class FileTransportHandler {
|
|
|
195
198
|
}
|
|
196
199
|
}
|
|
197
200
|
var fileHandler = new FileTransportHandler;
|
|
201
|
+
function deepracticeHandler(config = {}) {
|
|
202
|
+
const parentDir = config.parentDir || homedir();
|
|
203
|
+
const baseDir = join(parentDir, ".deepractice");
|
|
204
|
+
function resolvePath(location) {
|
|
205
|
+
return join(baseDir, location);
|
|
206
|
+
}
|
|
207
|
+
return {
|
|
208
|
+
name: "deepractice",
|
|
209
|
+
capabilities: {
|
|
210
|
+
canRead: true,
|
|
211
|
+
canWrite: true,
|
|
212
|
+
canList: true,
|
|
213
|
+
canDelete: true,
|
|
214
|
+
canStat: true
|
|
215
|
+
},
|
|
216
|
+
async read(location) {
|
|
217
|
+
const fullPath = resolvePath(location);
|
|
218
|
+
try {
|
|
219
|
+
return await readFile2(fullPath);
|
|
220
|
+
} catch (error) {
|
|
221
|
+
throw new TransportError(`Failed to read from deepractice: ${error.message}`, "deepractice", { cause: error });
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
async write(location, content) {
|
|
225
|
+
const fullPath = resolvePath(location);
|
|
226
|
+
try {
|
|
227
|
+
await mkdir2(join(fullPath, ".."), { recursive: true });
|
|
228
|
+
await writeFile2(fullPath, content);
|
|
229
|
+
} catch (error) {
|
|
230
|
+
throw new TransportError(`Failed to write to deepractice: ${error.message}`, "deepractice", { cause: error });
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
async list(location) {
|
|
234
|
+
const fullPath = resolvePath(location);
|
|
235
|
+
try {
|
|
236
|
+
return await readdir2(fullPath);
|
|
237
|
+
} catch (error) {
|
|
238
|
+
throw new TransportError(`Failed to list deepractice directory: ${error.message}`, "deepractice", { cause: error });
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
async exists(location) {
|
|
242
|
+
const fullPath = resolvePath(location);
|
|
243
|
+
try {
|
|
244
|
+
await access2(fullPath);
|
|
245
|
+
return true;
|
|
246
|
+
} catch {
|
|
247
|
+
return false;
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
async stat(location) {
|
|
251
|
+
const fullPath = resolvePath(location);
|
|
252
|
+
try {
|
|
253
|
+
const stats = await stat(fullPath);
|
|
254
|
+
return {
|
|
255
|
+
size: stats.size,
|
|
256
|
+
isDirectory: stats.isDirectory(),
|
|
257
|
+
modifiedAt: stats.mtime
|
|
258
|
+
};
|
|
259
|
+
} catch (error) {
|
|
260
|
+
throw new TransportError(`Failed to stat deepractice resource: ${error.message}`, "deepractice", { cause: error });
|
|
261
|
+
}
|
|
262
|
+
},
|
|
263
|
+
async delete(location) {
|
|
264
|
+
const fullPath = resolvePath(location);
|
|
265
|
+
try {
|
|
266
|
+
const stats = await stat(fullPath);
|
|
267
|
+
if (stats.isDirectory()) {
|
|
268
|
+
await rm2(fullPath, { recursive: true, force: true });
|
|
269
|
+
} else {
|
|
270
|
+
await unlink(fullPath);
|
|
271
|
+
}
|
|
272
|
+
} catch (error) {
|
|
273
|
+
throw new TransportError(`Failed to delete from deepractice: ${error.message}`, "deepractice", { cause: error });
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
};
|
|
277
|
+
}
|
|
198
278
|
var handlers = new Map([
|
|
199
279
|
["https", httpsHandler],
|
|
200
280
|
["http", httpHandler],
|
|
@@ -413,13 +493,15 @@ function createResourceRegistry() {
|
|
|
413
493
|
}
|
|
414
494
|
|
|
415
495
|
// src/ResourceX.ts
|
|
416
|
-
import { join } from "node:path";
|
|
496
|
+
import { join as join2 } from "node:path";
|
|
417
497
|
|
|
418
498
|
class ResourceX {
|
|
419
499
|
timeout;
|
|
500
|
+
alias;
|
|
420
501
|
resourceRegistry;
|
|
421
502
|
constructor(config = {}) {
|
|
422
503
|
this.timeout = config.timeout;
|
|
504
|
+
this.alias = config.alias || "@";
|
|
423
505
|
this.resourceRegistry = createResourceRegistry();
|
|
424
506
|
if (config.transports) {
|
|
425
507
|
for (const handler of config.transports) {
|
|
@@ -438,28 +520,57 @@ class ResourceX {
|
|
|
438
520
|
}
|
|
439
521
|
}
|
|
440
522
|
parseURL(url) {
|
|
523
|
+
let content;
|
|
441
524
|
if (url.startsWith("arp:")) {
|
|
442
|
-
|
|
525
|
+
content = url.substring(4);
|
|
526
|
+
} else if (url.startsWith(this.alias)) {
|
|
527
|
+
content = url.substring(this.alias.length);
|
|
528
|
+
} else {
|
|
529
|
+
throw new ParseError(`Invalid URL prefix: must start with "arp:" or "${this.alias}"`, url);
|
|
443
530
|
}
|
|
444
|
-
const
|
|
445
|
-
if (
|
|
446
|
-
throw new ParseError(`Invalid URL format:
|
|
531
|
+
const separatorIndex = content.indexOf("://");
|
|
532
|
+
if (separatorIndex === -1) {
|
|
533
|
+
throw new ParseError(`Invalid URL format: missing "://"`, url);
|
|
447
534
|
}
|
|
448
|
-
const
|
|
449
|
-
const
|
|
450
|
-
|
|
451
|
-
|
|
535
|
+
const beforeSeparator = content.substring(0, separatorIndex);
|
|
536
|
+
const location = content.substring(separatorIndex + 3);
|
|
537
|
+
const colonCount = (beforeSeparator.match(/:/g) || []).length;
|
|
538
|
+
if (colonCount === 1) {
|
|
539
|
+
const parts = beforeSeparator.split(":");
|
|
540
|
+
if (parts.length !== 2) {
|
|
541
|
+
throw new ParseError(`Invalid ARP URL format`, url);
|
|
542
|
+
}
|
|
543
|
+
const [semantic, transport] = parts;
|
|
544
|
+
if (!semantic || !transport || !location) {
|
|
545
|
+
throw new ParseError(`Invalid ARP URL: semantic, transport, and location are required`, url);
|
|
546
|
+
}
|
|
547
|
+
const arpUrl = `arp:${semantic}:${transport}://${location}`;
|
|
548
|
+
return {
|
|
549
|
+
arpUrl,
|
|
550
|
+
parsed: { semantic, transport, location }
|
|
551
|
+
};
|
|
452
552
|
}
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
parsed: {
|
|
458
|
-
semantic: definition.semantic,
|
|
459
|
-
transport: definition.transport,
|
|
460
|
-
location: fullLocation
|
|
553
|
+
if (colonCount === 0) {
|
|
554
|
+
const name = beforeSeparator;
|
|
555
|
+
if (!name || !location) {
|
|
556
|
+
throw new ParseError(`Invalid Resource URL: name and location are required`, url);
|
|
461
557
|
}
|
|
462
|
-
|
|
558
|
+
const definition = this.resourceRegistry.get(name);
|
|
559
|
+
if (!definition) {
|
|
560
|
+
throw new ParseError(`Unknown resource: "${name}"`, url);
|
|
561
|
+
}
|
|
562
|
+
const fullLocation = definition.basePath ? join2(definition.basePath, location) : location;
|
|
563
|
+
const arpUrl = `arp:${definition.semantic}:${definition.transport}://${fullLocation}`;
|
|
564
|
+
return {
|
|
565
|
+
arpUrl,
|
|
566
|
+
parsed: {
|
|
567
|
+
semantic: definition.semantic,
|
|
568
|
+
transport: definition.transport,
|
|
569
|
+
location: fullLocation
|
|
570
|
+
}
|
|
571
|
+
};
|
|
572
|
+
}
|
|
573
|
+
throw new ParseError(`Invalid URL format: unexpected colon count in "${beforeSeparator}"`, url);
|
|
463
574
|
}
|
|
464
575
|
parse(url) {
|
|
465
576
|
return this.parseURL(url).parsed;
|
|
@@ -480,18 +591,6 @@ class ResourceX {
|
|
|
480
591
|
const { arpUrl } = this.parseURL(url);
|
|
481
592
|
return resourceDelete(arpUrl);
|
|
482
593
|
}
|
|
483
|
-
registerTransport(handler) {
|
|
484
|
-
registerTransportHandler(handler);
|
|
485
|
-
}
|
|
486
|
-
registerSemantic(handler) {
|
|
487
|
-
registerSemanticHandler(handler);
|
|
488
|
-
}
|
|
489
|
-
getTransport(name) {
|
|
490
|
-
return getTransportHandler(name);
|
|
491
|
-
}
|
|
492
|
-
getSemantic(name) {
|
|
493
|
-
return getSemanticHandler(name);
|
|
494
|
-
}
|
|
495
594
|
}
|
|
496
595
|
|
|
497
596
|
// src/createResourceX.ts
|
|
@@ -499,6 +598,7 @@ function createResourceX(config) {
|
|
|
499
598
|
return new ResourceX(config);
|
|
500
599
|
}
|
|
501
600
|
export {
|
|
601
|
+
deepracticeHandler,
|
|
502
602
|
createResourceX,
|
|
503
603
|
TransportError,
|
|
504
604
|
SemanticError,
|
|
@@ -507,4 +607,4 @@ export {
|
|
|
507
607
|
ParseError
|
|
508
608
|
};
|
|
509
609
|
|
|
510
|
-
//# debugId=
|
|
610
|
+
//# debugId=AABACCD8A9EFB8D164756E2164756E21
|
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/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
|
|
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/deepractice.ts\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { readFile as readFile2, writeFile as writeFile2, readdir as readdir2, access as access2, unlink, mkdir as mkdir2, stat, rm as rm2 } from \"node:fs/promises\";\nfunction deepracticeHandler(config = {}) {\n const parentDir = config.parentDir || homedir();\n const baseDir = join(parentDir, \".deepractice\");\n function resolvePath(location) {\n return join(baseDir, location);\n }\n return {\n name: \"deepractice\",\n capabilities: {\n canRead: true,\n canWrite: true,\n canList: true,\n canDelete: true,\n canStat: true\n },\n async read(location) {\n const fullPath = resolvePath(location);\n try {\n return await readFile2(fullPath);\n } catch (error) {\n throw new TransportError(`Failed to read from deepractice: ${error.message}`, \"deepractice\", { cause: error });\n }\n },\n async write(location, content) {\n const fullPath = resolvePath(location);\n try {\n await mkdir2(join(fullPath, \"..\"), { recursive: true });\n await writeFile2(fullPath, content);\n } catch (error) {\n throw new TransportError(`Failed to write to deepractice: ${error.message}`, \"deepractice\", { cause: error });\n }\n },\n async list(location) {\n const fullPath = resolvePath(location);\n try {\n return await readdir2(fullPath);\n } catch (error) {\n throw new TransportError(`Failed to list deepractice directory: ${error.message}`, \"deepractice\", { cause: error });\n }\n },\n async exists(location) {\n const fullPath = resolvePath(location);\n try {\n await access2(fullPath);\n return true;\n } catch {\n return false;\n }\n },\n async stat(location) {\n const fullPath = resolvePath(location);\n try {\n const stats = await stat(fullPath);\n return {\n size: stats.size,\n isDirectory: stats.isDirectory(),\n modifiedAt: stats.mtime\n };\n } catch (error) {\n throw new TransportError(`Failed to stat deepractice resource: ${error.message}`, \"deepractice\", { cause: error });\n }\n },\n async delete(location) {\n const fullPath = resolvePath(location);\n try {\n const stats = await stat(fullPath);\n if (stats.isDirectory()) {\n await rm2(fullPath, { recursive: true, force: true });\n } else {\n await unlink(fullPath);\n }\n } catch (error) {\n throw new TransportError(`Failed to delete from deepractice: ${error.message}`, \"deepractice\", { cause: error });\n }\n }\n };\n}\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.4.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 deepracticeHandler,\n createResourceRegistry,\n binaryHandler,\n VERSION,\n TransportError,\n SemanticError,\n ResourceXError,\n ParseError\n};\n\n//# debugId=7CEC90BE3B5822A664756E2164756E21\n",
|
|
6
|
+
"/**\n * ResourceX - Main API class\n */\n\nimport {\n resolve as coreResolve,\n deposit as coreDeposit,\n resourceExists as coreExists,\n resourceDelete as coreDelete,\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 * URL prefix alias (default: \"arp\")\n * All URLs must start with this prefix\n * @example \"arp\", \"@\", \"r\"\n */\n alias?: string;\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 alias: string;\n private readonly resourceRegistry: ResourceRegistry;\n\n constructor(config: ResourceXConfig = {}) {\n this.timeout = config.timeout;\n this.alias = config.alias || \"@\";\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 with custom prefix)\n */\n private parseURL(url: string): { arpUrl: string; parsed: ParsedARP } {\n // Check prefix: \"arp:\" (always supported) or configured alias\n let content: string;\n\n if (url.startsWith(\"arp:\")) {\n content = url.substring(4); // Remove \"arp:\"\n } else if (url.startsWith(this.alias)) {\n content = url.substring(this.alias.length); // Remove alias\n } else {\n throw new ParseError(`Invalid URL prefix: must start with \"arp:\" or \"${this.alias}\"`, url);\n }\n\n // Find :// separator\n const separatorIndex = content.indexOf(\"://\");\n if (separatorIndex === -1) {\n throw new ParseError(`Invalid URL format: missing \"://\"`, url);\n }\n\n const beforeSeparator = content.substring(0, separatorIndex);\n const location = content.substring(separatorIndex + 3);\n\n // Count colons in the part before ://\n const colonCount = (beforeSeparator.match(/:/g) || []).length;\n\n // ARP URL: {alias}:semantic:transport://location (1 colon before ://)\n if (colonCount === 1) {\n const parts = beforeSeparator.split(\":\");\n if (parts.length !== 2) {\n throw new ParseError(`Invalid ARP URL format`, url);\n }\n\n const [semantic, transport] = parts;\n\n if (!semantic || !transport || !location) {\n throw new ParseError(\n `Invalid ARP URL: semantic, transport, and location are required`,\n url\n );\n }\n\n const arpUrl = `arp:${semantic}:${transport}://${location}`;\n\n return {\n arpUrl,\n parsed: { semantic, transport, location },\n };\n }\n\n // Resource URL: {alias}:name://location (0 colons before ://)\n if (colonCount === 0) {\n const name = beforeSeparator;\n\n if (!name || !location) {\n throw new ParseError(`Invalid Resource URL: name and location are required`, url);\n }\n\n const definition = this.resourceRegistry.get(name);\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 throw new ParseError(`Invalid URL format: unexpected colon count in \"${beforeSeparator}\"`, url);\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",
|
|
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": ";AAoGA,kEAA0D;AAC1D;AAAA;AApGA,MAAM,uBAAuB,MAAM;AAAA,EACjC,WAAW,CAAC,SAAS,SAAS;AAAA,IAC5B,MAAM,SAAS,OAAO;AAAA,IACtB,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEA,MAAM,mBAAmB,eAAe;AAAA,EACtC;AAAA,EACA,WAAW,CAAC,SAAS,KAAK;AAAA,IACxB,MAAM,OAAO;AAAA,IACb,KAAK,MAAM;AAAA,IACX,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEA,MAAM,uBAAuB,eAAe;AAAA,EAC1C;AAAA,EACA,WAAW,CAAC,SAAS,WAAW,SAAS;AAAA,IACvC,MAAM,SAAS,OAAO;AAAA,IACtB,KAAK,YAAY;AAAA,IACjB,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEA,MAAM,sBAAsB,eAAe;AAAA,EACzC;AAAA,EACA,WAAW,CAAC,SAAS,UAAU,SAAS;AAAA,IACtC,MAAM,SAAS,OAAO;AAAA,IACtB,KAAK,WAAW;AAAA,IAChB,KAAK,OAAO;AAAA;AAEhB;AAEA,SAAS,QAAQ,CAAC,KAAK;AAAA,EACrB,IAAI,CAAC,IAAI,WAAW,MAAM,GAAG;AAAA,IAC3B,MAAM,IAAI,WAAW,2CAA2C,GAAG;AAAA,EACrE;AAAA,EACA,MAAM,UAAU,IAAI,UAAU,CAAC;AAAA,EAC/B,MAAM,iBAAiB,QAAQ,QAAQ,KAAK;AAAA,EAC5C,IAAI,mBAAmB,IAAI;AAAA,IACzB,MAAM,IAAI,WAAW,kCAAkC,GAAG;AAAA,EAC5D;AAAA,EACA,MAAM,WAAW,QAAQ,UAAU,GAAG,cAAc;AAAA,EACpD,MAAM,WAAW,QAAQ,UAAU,iBAAiB,CAAC;AAAA,EACrD,MAAM,aAAa,SAAS,QAAQ,GAAG;AAAA,EACvC,IAAI,eAAe,IAAI;AAAA,IACrB,MAAM,IAAI,WAAW,mEAAmE,GAAG;AAAA,EAC7F;AAAA,EACA,MAAM,WAAW,SAAS,UAAU,GAAG,UAAU;AAAA,EACjD,MAAM,YAAY,SAAS,UAAU,aAAa,CAAC;AAAA,EACnD,IAAI,CAAC,UAAU;AAAA,IACb,MAAM,IAAI,WAAW,kDAAkD,GAAG;AAAA,EAC5E;AAAA,EACA,IAAI,CAAC,WAAW;AAAA,IACd,MAAM,IAAI,WAAW,mDAAmD,GAAG;AAAA,EAC7E;AAAA,EACA,IAAI,CAAC,UAAU;AAAA,IACb,MAAM,IAAI,WAAW,6CAA6C,GAAG;AAAA,EACvE;AAAA,EACA,OAAO,EAAE,UAAU,WAAW,SAAS;AAAA;AAAA;AAGzC,MAAM,qBAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA,eAAe;AAAA,IACb,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,EACX;AAAA,EACA,WAAW,CAAC,WAAW,SAAS;AAAA,IAC9B,KAAK,WAAW;AAAA,IAChB,KAAK,OAAO;AAAA;AAAA,OAER,KAAI,CAAC,UAAU;AAAA,IACnB,MAAM,MAAM,GAAG,KAAK,cAAc;AAAA,IAClC,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,MAAM,GAAG;AAAA,MAChC,IAAI,CAAC,SAAS,IAAI;AAAA,QAChB,MAAM,IAAI,eAAe,QAAQ,SAAS,WAAW,SAAS,gBAAgB,OAAO,KAAK,IAAI;AAAA,MAChG;AAAA,MACA,MAAM,cAAc,MAAM,SAAS,YAAY;AAAA,MAC/C,OAAO,OAAO,KAAK,WAAW;AAAA,MAC9B,OAAO,OAAO;AAAA,MACd,IAAI,iBAAiB,gBAAgB;AAAA,QACnC,MAAM;AAAA,MACR;AAAA,MACA,MAAM,IAAI,eAAe,kBAAkB,OAAO,KAAK,MAAM;AAAA,QAC3D,OAAO;AAAA,MACT,CAAC;AAAA;AAAA;AAGP;AACA,IAAI,eAAe,IAAI,qBAAqB,OAAO;AACnD,IAAI,cAAc,IAAI,qBAAqB,MAAM;AAAA;AAIjD,MAAM,qBAAqB;AAAA,EACzB,OAAO;AAAA,EACP,eAAe;AAAA,IACb,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,EACX;AAAA,EACA,WAAW,CAAC,UAAU;AAAA,IACpB,OAAO,QAAQ,QAAQ,IAAI,GAAG,QAAQ;AAAA;AAAA,OAElC,KAAI,CAAC,UAAU;AAAA,IACnB,MAAM,WAAW,KAAK,YAAY,QAAQ;AAAA,IAC1C,IAAI;AAAA,MACF,OAAO,MAAM,SAAS,QAAQ;AAAA,MAC9B,OAAO,OAAO;AAAA,MACd,MAAM,MAAM;AAAA,MACZ,MAAM,IAAI,eAAe,oBAAoB,IAAI,UAAU,YAAY,KAAK,MAAM;AAAA,QAChF,OAAO;AAAA,MACT,CAAC;AAAA;AAAA;AAAA,OAGC,MAAK,CAAC,UAAU,SAAS;AAAA,IAC7B,MAAM,WAAW,KAAK,YAAY,QAAQ;AAAA,IAC1C,IAAI;AAAA,MACF,MAAM,MAAM,QAAQ,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,MAClD,MAAM,UAAU,UAAU,OAAO;AAAA,MACjC,OAAO,OAAO;AAAA,MACd,MAAM,MAAM;AAAA,MACZ,MAAM,IAAI,eAAe,qBAAqB,IAAI,UAAU,YAAY,KAAK,MAAM;AAAA,QACjF,OAAO;AAAA,MACT,CAAC;AAAA;AAAA;AAAA,OAGC,KAAI,CAAC,UAAU;AAAA,IACnB,MAAM,UAAU,KAAK,YAAY,QAAQ;AAAA,IACzC,IAAI;AAAA,MACF,OAAO,MAAM,QAAQ,OAAO;AAAA,MAC5B,OAAO,OAAO;AAAA,MACd,MAAM,MAAM;AAAA,MACZ,MAAM,IAAI,eAAe,yBAAyB,IAAI,UAAU,WAAW,KAAK,MAAM;AAAA,QACpF,OAAO;AAAA,MACT,CAAC;AAAA;AAAA;AAAA,OAGC,MAAK,CAAC,UAAU;AAAA,IACpB,MAAM,UAAU,KAAK,YAAY,QAAQ;AAAA,IACzC,IAAI;AAAA,MACF,MAAM,MAAM,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA,MACxC,OAAO,OAAO;AAAA,MACd,MAAM,MAAM;AAAA,MACZ,MAAM,IAAI,eAAe,2BAA2B,IAAI,UAAU,WAAW,KAAK,MAAM;AAAA,QACtF,OAAO;AAAA,MACT,CAAC;AAAA;AAAA;AAAA,OAGC,OAAM,CAAC,UAAU;AAAA,IACrB,MAAM,WAAW,KAAK,YAAY,QAAQ;AAAA,IAC1C,IAAI;AAAA,MACF,MAAM,OAAO,QAAQ;AAAA,MACrB,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA;AAAA;AAAA,OAGL,KAAI,CAAC,UAAU;AAAA,IACnB,MAAM,WAAW,KAAK,YAAY,QAAQ;AAAA,IAC1C,IAAI;AAAA,MACF,MAAM,QAAQ,MAAM,OAAO,QAAQ;AAAA,MACnC,OAAO;AAAA,QACL,MAAM,MAAM;AAAA,QACZ,YAAY,MAAM;AAAA,QAClB,aAAa,MAAM,YAAY;AAAA,MACjC;AAAA,MACA,OAAO,OAAO;AAAA,MACd,MAAM,MAAM;AAAA,MACZ,MAAM,IAAI,eAAe,oBAAoB,IAAI,UAAU,YAAY,KAAK,MAAM;AAAA,QAChF,OAAO;AAAA,MACT,CAAC;AAAA;AAAA;AAAA,OAGC,OAAM,CAAC,UAAU;AAAA,IACrB,MAAM,WAAW,KAAK,YAAY,QAAQ;AAAA,IAC1C,IAAI;AAAA,MACF,MAAM,GAAG,UAAU,EAAE,WAAW,KAAK,CAAC;AAAA,MACtC,OAAO,OAAO;AAAA,MACd,MAAM,MAAM;AAAA,MACZ,MAAM,IAAI,eAAe,sBAAsB,IAAI,UAAU,YAAY,KAAK,MAAM;AAAA,QAClF,OAAO;AAAA,MACT,CAAC;AAAA;AAAA;AAGP;AACA,IAAI,cAAc,IAAI;AAEtB,IAAI,WAAW,IAAI,IAAI;AAAA,EACrB,CAAC,SAAS,YAAY;AAAA,EACtB,CAAC,QAAQ,WAAW;AAAA,EACpB,CAAC,QAAQ,WAAW;AACtB,CAAC;AACD,SAAS,mBAAmB,CAAC,MAAM;AAAA,EACjC,MAAM,UAAU,SAAS,IAAI,IAAI;AAAA,EACjC,IAAI,CAAC,SAAS;AAAA,IACZ,MAAM,IAAI,eAAe,+BAA+B,QAAQ,IAAI;AAAA,EACtE;AAAA,EACA,OAAO;AAAA;AAET,SAAS,wBAAwB,CAAC,SAAS;AAAA,EACzC,SAAS,IAAI,QAAQ,MAAM,OAAO;AAAA;AAAA;AAGpC,MAAM,oBAAoB;AAAA,EACxB,OAAO;AAAA,OACD,QAAO,CAAC,WAAW,UAAU,SAAS;AAAA,IAC1C,MAAM,SAAS,MAAM,UAAU,KAAK,QAAQ;AAAA,IAC5C,MAAM,OAAO,OAAO,SAAS,OAAO;AAAA,IACpC,MAAM,OAAO;AAAA,MACX,KAAK,QAAQ;AAAA,MACb,UAAU,QAAQ;AAAA,MAClB,WAAW,QAAQ;AAAA,MACnB,UAAU,QAAQ;AAAA,MAClB,MAAM,OAAO;AAAA,MACb,UAAU;AAAA,MACV,UAAU;AAAA,MACV,YAAY,QAAQ,UAAU,YAAY;AAAA,IAC5C;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT;AAAA,IACF;AAAA;AAAA,OAEI,QAAO,CAAC,WAAW,UAAU,MAAM,UAAU;AAAA,IACjD,IAAI,CAAC,UAAU,OAAO;AAAA,MACpB,MAAM,IAAI,cAAc,cAAc,UAAU,0CAA0C,KAAK,IAAI;AAAA,IACrG;AAAA,IACA,MAAM,SAAS,OAAO,KAAK,MAAM,OAAO;AAAA,IACxC,MAAM,UAAU,MAAM,UAAU,MAAM;AAAA;AAAA,OAElC,OAAM,CAAC,WAAW,UAAU,UAAU;AAAA,IAC1C,IAAI,UAAU,QAAQ;AAAA,MACpB,OAAO,UAAU,OAAO,QAAQ;AAAA,IAClC;AAAA,IACA,IAAI;AAAA,MACF,MAAM,UAAU,KAAK,QAAQ;AAAA,MAC7B,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA;AAAA;AAAA,OAGL,OAAM,CAAC,WAAW,UAAU,UAAU;AAAA,IAC1C,IAAI,CAAC,UAAU,QAAQ;AAAA,MACrB,MAAM,IAAI,cAAc,cAAc,UAAU,2CAA2C,KAAK,IAAI;AAAA,IACtG;AAAA,IACA,MAAM,UAAU,OAAO,QAAQ;AAAA;AAEnC;AACA,IAAI,cAAc,IAAI;AAEtB,SAAS,QAAQ,CAAC,MAAM;AAAA,EACtB,IAAI,OAAO,SAAS,IAAI,GAAG;AAAA,IACzB,OAAO;AAAA,EACT;AAAA,EACA,IAAI,gBAAgB,YAAY;AAAA,IAC9B,OAAO,OAAO,KAAK,IAAI;AAAA,EACzB;AAAA,EACA,IAAI,gBAAgB,aAAa;AAAA,IAC/B,OAAO,OAAO,KAAK,IAAI;AAAA,EACzB;AAAA,EACA,IAAI,MAAM,QAAQ,IAAI,GAAG;AAAA,IACvB,OAAO,OAAO,KAAK,IAAI;AAAA,EACzB;AAAA,EACA,MAAM,IAAI,cAAc,iCAAiC,QAAQ;AAAA;AAAA;AAGnE,MAAM,sBAAsB;AAAA,EAC1B,OAAO;AAAA,OACD,QAAO,CAAC,WAAW,UAAU,SAAS;AAAA,IAC1C,MAAM,SAAS,MAAM,UAAU,KAAK,QAAQ;AAAA,IAC5C,MAAM,OAAO;AAAA,MACX,KAAK,QAAQ;AAAA,MACb,UAAU,QAAQ;AAAA,MAClB,WAAW,QAAQ;AAAA,MACnB,UAAU,QAAQ;AAAA,MAClB,MAAM,OAAO;AAAA,MACb,YAAY,QAAQ,UAAU,YAAY;AAAA,IAC5C;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT;AAAA,IACF;AAAA;AAAA,OAEI,QAAO,CAAC,WAAW,UAAU,MAAM,UAAU;AAAA,IACjD,IAAI,CAAC,UAAU,OAAO;AAAA,MACpB,MAAM,IAAI,cAAc,cAAc,UAAU,0CAA0C,KAAK,IAAI;AAAA,IACrG;AAAA,IACA,MAAM,SAAS,SAAS,IAAI;AAAA,IAC5B,MAAM,UAAU,MAAM,UAAU,MAAM;AAAA;AAAA,OAElC,OAAM,CAAC,WAAW,UAAU,UAAU;AAAA,IAC1C,IAAI,UAAU,QAAQ;AAAA,MACpB,OAAO,UAAU,OAAO,QAAQ;AAAA,IAClC;AAAA,IACA,IAAI;AAAA,MACF,MAAM,UAAU,KAAK,QAAQ;AAAA,MAC7B,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA;AAAA;AAAA,OAGL,OAAM,CAAC,WAAW,UAAU,UAAU;AAAA,IAC1C,IAAI,CAAC,UAAU,QAAQ;AAAA,MACrB,MAAM,IAAI,cAAc,cAAc,UAAU,2CAA2C,KAAK,IAAI;AAAA,IACtG;AAAA,IACA,MAAM,UAAU,OAAO,QAAQ;AAAA;AAEnC;AACA,IAAI,gBAAgB,IAAI;AAExB,IAAI,YAAY,IAAI,IAAI;AAAA,EACtB,CAAC,QAAQ,WAAW;AAAA,EACpB,CAAC,UAAU,aAAa;AAC1B,CAAC;AACD,SAAS,kBAAkB,CAAC,MAAM;AAAA,EAChC,MAAM,UAAU,UAAU,IAAI,IAAI;AAAA,EAClC,IAAI,CAAC,SAAS;AAAA,IACZ,MAAM,IAAI,cAAc,8BAA8B,QAAQ,IAAI;AAAA,EACpE;AAAA,EACA,OAAO;AAAA;AAET,SAAS,uBAAuB,CAAC,SAAS;AAAA,EACxC,UAAU,IAAI,QAAQ,MAAM,OAAO;AAAA;AAGrC,SAAS,aAAa,CAAC,KAAK,UAAU,WAAW,UAAU;AAAA,EACzD,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,IAAI;AAAA,EACjB;AAAA;AAEF,eAAe,QAAQ,CAAC,KAAK;AAAA,EAC3B,MAAM,SAAS,SAAS,GAAG;AAAA,EAC3B,MAAM,YAAY,oBAAoB,OAAO,SAAS;AAAA,EACtD,MAAM,WAAW,mBAAmB,OAAO,QAAQ;AAAA,EACnD,MAAM,UAAU,cAAc,KAAK,OAAO,UAAU,OAAO,WAAW,OAAO,QAAQ;AAAA,EACrF,OAAO,SAAS,QAAQ,WAAW,OAAO,UAAU,OAAO;AAAA;AAE7D,eAAe,OAAO,CAAC,KAAK,MAAM;AAAA,EAChC,MAAM,SAAS,SAAS,GAAG;AAAA,EAC3B,MAAM,YAAY,oBAAoB,OAAO,SAAS;AAAA,EACtD,MAAM,WAAW,mBAAmB,OAAO,QAAQ;AAAA,EACnD,IAAI,CAAC,SAAS,SAAS;AAAA,IACrB,MAAM,IAAI,cAAc,aAAa,SAAS,4CAA4C,OAAO,QAAQ;AAAA,EAC3G;AAAA,EACA,MAAM,UAAU,cAAc,KAAK,OAAO,UAAU,OAAO,WAAW,OAAO,QAAQ;AAAA,EACrF,MAAM,SAAS,QAAQ,WAAW,OAAO,UAAU,MAAM,OAAO;AAAA;AAElE,eAAe,cAAc,CAAC,KAAK;AAAA,EACjC,MAAM,SAAS,SAAS,GAAG;AAAA,EAC3B,MAAM,YAAY,oBAAoB,OAAO,SAAS;AAAA,EACtD,MAAM,WAAW,mBAAmB,OAAO,QAAQ;AAAA,EACnD,MAAM,UAAU,cAAc,KAAK,OAAO,UAAU,OAAO,WAAW,OAAO,QAAQ;AAAA,EACrF,IAAI,SAAS,QAAQ;AAAA,IACnB,OAAO,SAAS,OAAO,WAAW,OAAO,UAAU,OAAO;AAAA,EAC5D;AAAA,EACA,IAAI,UAAU,QAAQ;AAAA,IACpB,OAAO,UAAU,OAAO,OAAO,QAAQ;AAAA,EACzC;AAAA,EACA,IAAI;AAAA,IACF,MAAM,UAAU,KAAK,OAAO,QAAQ;AAAA,IACpC,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAGX,eAAe,cAAc,CAAC,KAAK;AAAA,EACjC,MAAM,SAAS,SAAS,GAAG;AAAA,EAC3B,MAAM,YAAY,oBAAoB,OAAO,SAAS;AAAA,EACtD,MAAM,WAAW,mBAAmB,OAAO,QAAQ;AAAA,EACnD,MAAM,UAAU,cAAc,KAAK,OAAO,UAAU,OAAO,WAAW,OAAO,QAAQ;AAAA,EACrF,IAAI,SAAS,QAAQ;AAAA,IACnB,OAAO,SAAS,OAAO,WAAW,OAAO,UAAU,OAAO;AAAA,EAC5D;AAAA,EACA,IAAI,CAAC,UAAU,QAAQ;AAAA,IACrB,MAAM,IAAI,cAAc,qBAAqB,SAAS,wBAAwB,UAAU,mCAAmC,OAAO,QAAQ;AAAA,EAC5I;AAAA,EACA,MAAM,UAAU,OAAO,OAAO,QAAQ;AAAA;AAGxC,SAAS,sBAAsB,GAAG;AAAA,EAChC,MAAM,WAAW,IAAI;AAAA,EACrB,OAAO;AAAA,IACL,QAAQ,CAAC,YAAY;AAAA,MACnB,IAAI,CAAC,oBAAoB,KAAK,WAAW,IAAI,GAAG;AAAA,QAC9C,MAAM,IAAI,WAAW,2BAA2B,WAAW,qGAAqG,WAAW,IAAI;AAAA,MACjL;AAAA,MACA,mBAAmB,WAAW,QAAQ;AAAA,MACtC,oBAAoB,WAAW,SAAS;AAAA,MACxC,SAAS,IAAI,WAAW,MAAM,UAAU;AAAA;AAAA,IAE1C,GAAG,CAAC,MAAM;AAAA,MACR,OAAO,SAAS,IAAI,IAAI;AAAA;AAAA,IAE1B,GAAG,CAAC,MAAM;AAAA,MACR,OAAO,SAAS,IAAI,IAAI;AAAA;AAAA,IAE1B,KAAK,GAAG;AAAA,MACN,SAAS,MAAM;AAAA;AAAA,EAEnB;AAAA;;;ACzYF;AAAA;AA8BO,MAAM,UAAU;AAAA,EACZ;AAAA,EACQ;AAAA,EAEjB,WAAW,CAAC,SAA0B,CAAC,GAAG;AAAA,IACxC,KAAK,UAAU,OAAO;AAAA,IACtB,KAAK,mBAAmB,uBAAuB;AAAA,IAG/C,IAAI,OAAO,YAAY;AAAA,MACrB,WAAW,WAAW,OAAO,YAAY;AAAA,QACvC,yBAAyB,OAAO;AAAA,MAClC;AAAA,IACF;AAAA,IAEA,IAAI,OAAO,WAAW;AAAA,MACpB,WAAW,WAAW,OAAO,WAAW;AAAA,QACtC,wBAAwB,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,IAGA,IAAI,OAAO,WAAW;AAAA,MACpB,WAAW,YAAY,OAAO,WAAW;AAAA,QACvC,KAAK,iBAAiB,SAAS,QAAQ;AAAA,MACzC;AAAA,IACF;AAAA;AAAA,EAMM,QAAQ,CAAC,KAAoD;AAAA,IAEnE,IAAI,IAAI,WAAW,MAAM,GAAG;AAAA,MAC1B,OAAO,EAAE,QAAQ,KAAK,QAAQ,SAAS,GAAG,EAAE;AAAA,IAC9C;AAAA,IAGA,MAAM,QAAQ,IAAI,MAAM,8BAA8B;AAAA,IACtD,IAAI,CAAC,OAAO;AAAA,MACV,MAAM,IAAI,WAAW,uBAAuB,OAAO,GAAG;AAAA,IACxD;AAAA,IAEA,SAAS,MAAM,YAAY;AAAA,IAC3B,MAAM,aAAa,KAAK,iBAAiB,IAAI,IAAI;AAAA,IAEjD,IAAI,CAAC,YAAY;AAAA,MACf,MAAM,IAAI,WAAW,sBAAsB,SAAS,GAAG;AAAA,IACzD;AAAA,IAGA,MAAM,eAAe,WAAW,WAAW,KAAK,WAAW,UAAU,QAAQ,IAAI;AAAA,IAGjF,MAAM,SAAS,OAAO,WAAW,YAAY,WAAW,eAAe;AAAA,IAEvE,OAAO;AAAA,MACL;AAAA,MACA,QAAQ;AAAA,QACN,UAAU,WAAW;AAAA,QACrB,WAAW,WAAW;AAAA,QACtB,UAAU;AAAA,MACZ;AAAA,IACF;AAAA;AAAA,EAMF,KAAK,CAAC,KAAwB;AAAA,IAC5B,OAAO,KAAK,SAAS,GAAG,EAAE;AAAA;AAAA,OAMtB,QAAO,CAAC,KAAgC;AAAA,IAC5C,QAAQ,WAAW,KAAK,SAAS,GAAG;AAAA,IAEpC,OAAO,SAAY,MAAM;AAAA;AAAA,OAMrB,QAAO,CAAC,KAAa,MAA8B;AAAA,IACvD,QAAQ,WAAW,KAAK,SAAS,GAAG;AAAA,IACpC,OAAO,QAAY,QAAQ,IAAI;AAAA;AAAA,OAM3B,OAAM,CAAC,KAA+B;AAAA,IAC1C,QAAQ,WAAW,KAAK,SAAS,GAAG;AAAA,IACpC,OAAO,eAAW,MAAM;AAAA;AAAA,OAMpB,OAAM,CAAC,KAA4B;AAAA,IACvC,QAAQ,WAAW,KAAK,SAAS,GAAG;AAAA,IACpC,OAAO,eAAW,MAAM;AAAA;AAAA,EAM1B,iBAAiB,CAAC,SAAiC;AAAA,IACjD,yBAAyB,OAAO;AAAA;AAAA,EAMlC,gBAAgB,CAAC,SAAgC;AAAA,IAC/C,wBAAwB,OAAO;AAAA;AAAA,EAMjC,YAAY,CAAC,MAAgC;AAAA,IAC3C,OAAO,oBAAoB,IAAI;AAAA;AAAA,EAMjC,WAAW,CAAC,MAA+B;AAAA,IACzC,OAAO,mBAAmB,IAAI;AAAA;AAElC;;;AChKO,SAAS,eAAe,CAAC,QAAqC;AAAA,EACnE,OAAO,IAAI,UAAU,MAAM;AAAA;",
|
|
10
|
-
"debugId": "
|
|
9
|
+
"mappings": "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",
|
|
10
|
+
"debugId": "AABACCD8A9EFB8D164756E2164756E21",
|
|
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.4.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.4.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {},
|
|
44
44
|
"publishConfig": {
|