@resourcexjs/registry 0.9.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,396 @@
1
+ # @resourcexjs/registry
2
+
3
+ Resource registry for ResourceX - storage and retrieval of resources.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ bun add @resourcexjs/registry
9
+ ```
10
+
11
+ ## Overview
12
+
13
+ The `@resourcexjs/registry` package provides a Maven-style registry for storing and resolving resources locally.
14
+
15
+ ### Key Concepts
16
+
17
+ - **Registry**: Interface for resource storage and retrieval
18
+ - **ARPRegistry**: Implementation using ARP (Agent Resource Protocol) for I/O
19
+ - **Local-first**: Resources cached locally at `~/.resourcex`
20
+ - **Maven-style**: Organized by `domain/path/name.type@version`
21
+
22
+ ## Usage
23
+
24
+ ### Create Registry
25
+
26
+ ```typescript
27
+ import { createRegistry } from "@resourcexjs/registry";
28
+
29
+ // Default configuration (~/.resourcex)
30
+ const registry = createRegistry();
31
+
32
+ // Custom path
33
+ const registry = createRegistry({
34
+ path: "./my-registry",
35
+ });
36
+
37
+ // With extension types
38
+ import { promptType } from "@my-org/types";
39
+
40
+ const registry = createRegistry({
41
+ types: [promptType],
42
+ });
43
+ ```
44
+
45
+ ### Link Resource
46
+
47
+ Link a resource to local registry for development or caching:
48
+
49
+ ```typescript
50
+ import { loadResource } from "@resourcexjs/loader";
51
+ import { createRegistry } from "@resourcexjs/registry";
52
+
53
+ // Load resource from folder
54
+ const rxr = await loadResource("./my-prompt");
55
+
56
+ // Link to registry
57
+ const registry = createRegistry();
58
+ await registry.link(rxr);
59
+
60
+ // Now available at: ~/.resourcex/localhost/my-prompt.text@1.0.0/
61
+ ```
62
+
63
+ ### Resolve Resource
64
+
65
+ Retrieve a resource by its locator:
66
+
67
+ ```typescript
68
+ const registry = createRegistry();
69
+
70
+ // Resolve by full locator
71
+ const rxr = await registry.resolve("localhost/my-prompt.text@1.0.0");
72
+
73
+ console.log(rxr.manifest.name); // "my-prompt"
74
+ console.log(await rxr.content.text()); // Content
75
+ ```
76
+
77
+ ### Check Existence
78
+
79
+ ```typescript
80
+ const registry = createRegistry();
81
+
82
+ if (await registry.exists("localhost/my-prompt.text@1.0.0")) {
83
+ console.log("Resource exists");
84
+ }
85
+ ```
86
+
87
+ ### Delete Resource
88
+
89
+ ```typescript
90
+ const registry = createRegistry();
91
+
92
+ await registry.delete("localhost/my-prompt.text@1.0.0");
93
+ ```
94
+
95
+ ## API Reference
96
+
97
+ ### `createRegistry(config?)`
98
+
99
+ Create a new registry instance.
100
+
101
+ **Parameters:**
102
+
103
+ - `config?: RegistryConfig`
104
+ - `path?: string` - Storage path (default: `~/.resourcex`)
105
+ - `types?: ResourceType[]` - Extension types to register globally
106
+
107
+ **Returns**: `Registry`
108
+
109
+ ```typescript
110
+ const registry = createRegistry({
111
+ path: "./custom-registry",
112
+ types: [promptType, toolType],
113
+ });
114
+ ```
115
+
116
+ ### Registry Interface
117
+
118
+ #### `link(resource: RXR): Promise<void>`
119
+
120
+ Link a resource to local registry.
121
+
122
+ **Parameters:**
123
+
124
+ - `resource: RXR` - Complete resource object
125
+
126
+ ```typescript
127
+ await registry.link(rxr);
128
+ ```
129
+
130
+ #### `resolve(locator: string): Promise<RXR>`
131
+
132
+ Resolve a resource by locator.
133
+
134
+ **Parameters:**
135
+
136
+ - `locator: string` - Full resource locator
137
+
138
+ **Returns**: `Promise<RXR>`
139
+
140
+ **Throws**: `RegistryError` if resource not found
141
+
142
+ ```typescript
143
+ const rxr = await registry.resolve("localhost/my-prompt.text@1.0.0");
144
+ ```
145
+
146
+ #### `exists(locator: string): Promise<boolean>`
147
+
148
+ Check if resource exists in registry.
149
+
150
+ **Parameters:**
151
+
152
+ - `locator: string` - Full resource locator
153
+
154
+ **Returns**: `Promise<boolean>`
155
+
156
+ ```typescript
157
+ if (await registry.exists("localhost/my-prompt.text@1.0.0")) {
158
+ // Resource exists
159
+ }
160
+ ```
161
+
162
+ #### `delete(locator: string): Promise<void>`
163
+
164
+ Delete resource from local registry.
165
+
166
+ **Parameters:**
167
+
168
+ - `locator: string` - Full resource locator
169
+
170
+ ```typescript
171
+ await registry.delete("localhost/my-prompt.text@1.0.0");
172
+ ```
173
+
174
+ #### `publish(resource: RXR): Promise<void>`
175
+
176
+ Publish resource to remote registry (TODO: not yet implemented).
177
+
178
+ #### `search(query: string): Promise<RXL[]>`
179
+
180
+ Search for resources (TODO: not yet implemented).
181
+
182
+ ## Storage Structure
183
+
184
+ Resources are stored in Maven-style structure:
185
+
186
+ ```
187
+ ~/.resourcex/
188
+ └── {domain}/
189
+ └── {path}/
190
+ └── {name}.{type}@{version}/
191
+ ├── manifest.json # RXM metadata
192
+ └── content # Serialized content
193
+ ```
194
+
195
+ ### Example
196
+
197
+ For resource `deepractice.ai/prompts/assistant.prompt@1.0.0`:
198
+
199
+ ```
200
+ ~/.resourcex/
201
+ └── deepractice.ai/
202
+ └── prompts/
203
+ └── assistant.prompt@1.0.0/
204
+ ├── manifest.json
205
+ └── content
206
+ ```
207
+
208
+ **manifest.json:**
209
+
210
+ ```json
211
+ {
212
+ "domain": "deepractice.ai",
213
+ "path": "prompts",
214
+ "name": "assistant",
215
+ "type": "prompt",
216
+ "version": "1.0.0"
217
+ }
218
+ ```
219
+
220
+ **content:** (serialized by type's serializer)
221
+
222
+ ## Extension Types
223
+
224
+ Register extension types globally when creating registry:
225
+
226
+ ```typescript
227
+ import { createRegistry } from "@resourcexjs/registry";
228
+ import type { ResourceType } from "@resourcexjs/type";
229
+
230
+ const promptType: ResourceType<string> = {
231
+ name: "prompt",
232
+ description: "AI Prompt template",
233
+ serializer: {
234
+ async serialize(rxr) {
235
+ const text = await rxr.content.text();
236
+ return Buffer.from(text, "utf-8");
237
+ },
238
+ async deserialize(data, manifest) {
239
+ // ... implementation
240
+ },
241
+ },
242
+ resolver: {
243
+ async resolve(rxr) {
244
+ return rxr.content.text();
245
+ },
246
+ },
247
+ };
248
+
249
+ // Register when creating registry
250
+ const registry = createRegistry({
251
+ types: [promptType],
252
+ });
253
+
254
+ // Now can link/resolve prompt resources
255
+ ```
256
+
257
+ ## Error Handling
258
+
259
+ ```typescript
260
+ import { RegistryError } from "@resourcexjs/registry";
261
+
262
+ try {
263
+ const rxr = await registry.resolve("localhost/not-exist.text@1.0.0");
264
+ } catch (error) {
265
+ if (error instanceof RegistryError) {
266
+ console.error("Registry error:", error.message);
267
+ // "Resource not found: localhost/not-exist.text@1.0.0"
268
+ }
269
+ }
270
+ ```
271
+
272
+ ### Common Errors
273
+
274
+ **Resource not found:**
275
+
276
+ ```
277
+ RegistryError: Resource not found: localhost/my-prompt.text@1.0.0
278
+ ```
279
+
280
+ **Unsupported type:**
281
+
282
+ ```
283
+ RegistryError: Unsupported resource type 'unknown'
284
+ ```
285
+
286
+ ## Examples
287
+
288
+ ### Complete Workflow
289
+
290
+ ```typescript
291
+ import { loadResource } from "@resourcexjs/loader";
292
+ import { createRegistry } from "@resourcexjs/registry";
293
+
294
+ // 1. Load resource from folder
295
+ const rxr = await loadResource("./my-prompts/assistant");
296
+
297
+ // 2. Create registry
298
+ const registry = createRegistry();
299
+
300
+ // 3. Link to local registry
301
+ await registry.link(rxr);
302
+
303
+ // 4. Resolve later
304
+ const resolved = await registry.resolve("localhost/assistant.prompt@1.0.0");
305
+
306
+ // 5. Use content
307
+ const text = await resolved.content.text();
308
+ console.log(text);
309
+ ```
310
+
311
+ ### Versioning
312
+
313
+ ```typescript
314
+ const registry = createRegistry();
315
+
316
+ // Link multiple versions
317
+ await registry.link(promptV1); // v1.0.0
318
+ await registry.link(promptV2); // v2.0.0
319
+ await registry.link(promptV3); // v3.0.0
320
+
321
+ // Resolve specific version
322
+ const v1 = await registry.resolve("localhost/prompt.text@1.0.0");
323
+ const v2 = await registry.resolve("localhost/prompt.text@2.0.0");
324
+ const latest = await registry.resolve("localhost/prompt.text@3.0.0");
325
+ ```
326
+
327
+ ### Custom Storage Path
328
+
329
+ ```typescript
330
+ // Project-local registry
331
+ const registry = createRegistry({
332
+ path: "./project-registry",
333
+ });
334
+
335
+ await registry.link(rxr);
336
+ // Stored at: ./project-registry/localhost/...
337
+ ```
338
+
339
+ ### With Custom Types
340
+
341
+ ```typescript
342
+ import { promptType, toolType, agentType } from "@my-org/ai-types";
343
+
344
+ const registry = createRegistry({
345
+ types: [promptType, toolType, agentType],
346
+ });
347
+
348
+ // Now can handle these custom types
349
+ await registry.link(promptResource);
350
+ await registry.link(toolResource);
351
+ await registry.link(agentResource);
352
+ ```
353
+
354
+ ## Resolution Strategy
355
+
356
+ 1. **Check local registry** (`~/.resourcex` or custom path)
357
+ 2. **If not found**: (TODO) Fetch from remote registry based on domain
358
+ 3. **Cache locally** after fetching
359
+ 4. **Return** resource
360
+
361
+ Currently only local resolution is implemented. Remote fetching is planned.
362
+
363
+ ## Architecture
364
+
365
+ ```
366
+ ┌─────────────────────────────────────┐
367
+ │ Registry Interface │
368
+ └──────────────┬──────────────────────┘
369
+
370
+ ┌──────▼──────┐
371
+ │ARPRegistry │
372
+ │(implements) │
373
+ └──────┬──────┘
374
+
375
+ ┌─────────┴─────────┐
376
+ │ │
377
+ ┌────▼────┐ ┌──────▼──────┐
378
+ │ ARP │ │TypeHandler │
379
+ │(I/O) │ │Chain │
380
+ └─────────┘ └─────────────┘
381
+ ```
382
+
383
+ ## Type Safety
384
+
385
+ All operations are fully typed:
386
+
387
+ ```typescript
388
+ import type { RXR, Registry } from "@resourcexjs/registry";
389
+
390
+ const registry: Registry = createRegistry();
391
+ const rxr: RXR = await registry.resolve("localhost/test.text@1.0.0");
392
+ ```
393
+
394
+ ## License
395
+
396
+ MIT
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { RXR, RXL, ResourceType } from "@resourcexjs/core";
1
+ import { RXR, RXL } from "@resourcexjs/core";
2
+ import { ResourceType } from "@resourcexjs/type";
2
3
  /**
3
4
  * Registry configuration options.
4
5
  */
@@ -54,12 +55,11 @@ import { RXR as RXR2, RXL as RXL2 } from "@resourcexjs/core";
54
55
  /**
55
56
  * ARP-based registry implementation.
56
57
  * Uses ARP protocol for atomic I/O operations.
57
- * Uses TypeHandlerChain for serialization/deserialization.
58
+ * Uses global TypeHandlerChain for serialization/deserialization.
58
59
  */
59
60
  declare class ARPRegistry implements Registry {
60
61
  private readonly arp;
61
62
  private readonly basePath;
62
- private readonly typeChain;
63
63
  constructor(config?: RegistryConfig);
64
64
  /**
65
65
  * Build ARP URL for a resource file.
package/dist/index.js CHANGED
@@ -11,21 +11,6 @@ class ManifestError extends ResourceXError {
11
11
  this.name = "ManifestError";
12
12
  }
13
13
  }
14
-
15
- class ContentError extends ResourceXError {
16
- constructor(message) {
17
- super(message);
18
- this.name = "ContentError";
19
- }
20
- }
21
-
22
- class ResourceTypeError extends ResourceXError {
23
- constructor(message) {
24
- super(message);
25
- this.name = "ResourceTypeError";
26
- }
27
- }
28
-
29
14
  class RXLImpl {
30
15
  domain;
31
16
  path;
@@ -153,6 +138,100 @@ function createRXM(data) {
153
138
  });
154
139
  }
155
140
 
141
+ // src/errors.ts
142
+ class RegistryError extends ResourceXError {
143
+ constructor(message) {
144
+ super(message);
145
+ this.name = "RegistryError";
146
+ }
147
+ }
148
+ // src/ARPRegistry.ts
149
+ import { homedir } from "node:os";
150
+
151
+ // ../type/dist/index.js
152
+ class ResourceXError2 extends Error {
153
+ constructor(message, options) {
154
+ super(message, options);
155
+ this.name = "ResourceXError";
156
+ }
157
+ }
158
+
159
+ class ContentError extends ResourceXError2 {
160
+ constructor(message) {
161
+ super(message);
162
+ this.name = "ContentError";
163
+ }
164
+ }
165
+
166
+ class RXLImpl2 {
167
+ domain;
168
+ path;
169
+ name;
170
+ type;
171
+ version;
172
+ constructor(parts) {
173
+ this.domain = parts.domain;
174
+ this.path = parts.path;
175
+ this.name = parts.name;
176
+ this.type = parts.type;
177
+ this.version = parts.version;
178
+ }
179
+ toString() {
180
+ let result = "";
181
+ if (this.domain) {
182
+ result += this.domain + "/";
183
+ if (this.path) {
184
+ result += this.path + "/";
185
+ }
186
+ }
187
+ result += this.name;
188
+ if (this.type) {
189
+ result += "." + this.type;
190
+ }
191
+ if (this.version) {
192
+ result += "@" + this.version;
193
+ }
194
+ return result;
195
+ }
196
+ }
197
+ function isDomain2(str) {
198
+ if (str === "localhost")
199
+ return true;
200
+ return str.includes(".");
201
+ }
202
+ function parseRXL2(locator) {
203
+ let remaining = locator;
204
+ let version;
205
+ let type;
206
+ let domain;
207
+ let path;
208
+ let name;
209
+ const atIndex = remaining.indexOf("@");
210
+ if (atIndex !== -1) {
211
+ version = remaining.slice(atIndex + 1);
212
+ remaining = remaining.slice(0, atIndex);
213
+ }
214
+ const segments = remaining.split("/");
215
+ if (segments.length > 1 && isDomain2(segments[0])) {
216
+ domain = segments[0];
217
+ const lastSegment = segments[segments.length - 1];
218
+ if (segments.length > 2) {
219
+ path = segments.slice(1, -1).join("/");
220
+ }
221
+ remaining = lastSegment;
222
+ } else {
223
+ remaining = segments.join("/");
224
+ }
225
+ const dotIndex = remaining.lastIndexOf(".");
226
+ if (dotIndex !== -1) {
227
+ type = remaining.slice(dotIndex + 1);
228
+ name = remaining.slice(0, dotIndex);
229
+ } else {
230
+ name = remaining;
231
+ }
232
+ return new RXLImpl2({ domain, path, name, type, version });
233
+ }
234
+
156
235
  class RXCImpl {
157
236
  _stream;
158
237
  _consumed = false;
@@ -212,7 +291,13 @@ function createRXC(data) {
212
291
  }
213
292
  return new RXCImpl(stream);
214
293
  }
215
- var resourceTypes = new Map;
294
+
295
+ class ResourceTypeError extends ResourceXError2 {
296
+ constructor(message) {
297
+ super(message);
298
+ this.name = "ResourceTypeError";
299
+ }
300
+ }
216
301
  var textSerializer = {
217
302
  async serialize(rxr) {
218
303
  const text = await rxr.content.text();
@@ -221,7 +306,7 @@ var textSerializer = {
221
306
  async deserialize(data, manifest) {
222
307
  const text = data.toString("utf-8");
223
308
  return {
224
- locator: parseRXL(manifest.toLocator()),
309
+ locator: parseRXL2(manifest.toLocator()),
225
310
  manifest,
226
311
  content: createRXC(text)
227
312
  };
@@ -247,7 +332,7 @@ var jsonSerializer = {
247
332
  async deserialize(data, manifest) {
248
333
  const text = data.toString("utf-8");
249
334
  return {
250
- locator: parseRXL(manifest.toLocator()),
335
+ locator: parseRXL2(manifest.toLocator()),
251
336
  manifest,
252
337
  content: createRXC(text)
253
338
  };
@@ -271,7 +356,7 @@ var binarySerializer = {
271
356
  },
272
357
  async deserialize(data, manifest) {
273
358
  return {
274
- locator: parseRXL(manifest.toLocator()),
359
+ locator: parseRXL2(manifest.toLocator()),
275
360
  manifest,
276
361
  content: createRXC(data)
277
362
  };
@@ -292,8 +377,20 @@ var binaryType = {
292
377
  var builtinTypes = [textType, jsonType, binaryType];
293
378
 
294
379
  class TypeHandlerChain {
380
+ static instance;
295
381
  handlers = new Map;
296
- register(type) {
382
+ constructor() {
383
+ for (const type of builtinTypes) {
384
+ this.registerBuiltin(type);
385
+ }
386
+ }
387
+ static getInstance() {
388
+ if (!TypeHandlerChain.instance) {
389
+ TypeHandlerChain.instance = new TypeHandlerChain;
390
+ }
391
+ return TypeHandlerChain.instance;
392
+ }
393
+ registerBuiltin(type) {
297
394
  this.handlers.set(type.name, type);
298
395
  if (type.aliases) {
299
396
  for (const alias of type.aliases) {
@@ -301,9 +398,18 @@ class TypeHandlerChain {
301
398
  }
302
399
  }
303
400
  }
304
- registerAll(types) {
305
- for (const type of types) {
306
- this.register(type);
401
+ register(type) {
402
+ if (this.handlers.has(type.name)) {
403
+ throw new ResourceTypeError(`Type '${type.name}' is already registered`);
404
+ }
405
+ this.handlers.set(type.name, type);
406
+ if (type.aliases) {
407
+ for (const alias of type.aliases) {
408
+ if (this.handlers.has(alias)) {
409
+ throw new ResourceTypeError(`Alias '${alias}' conflicts with existing type or alias`);
410
+ }
411
+ this.handlers.set(alias, type);
412
+ }
307
413
  }
308
414
  }
309
415
  canHandle(typeName) {
@@ -312,6 +418,9 @@ class TypeHandlerChain {
312
418
  getHandler(typeName) {
313
419
  return this.handlers.get(typeName);
314
420
  }
421
+ getSupportedTypes() {
422
+ return Array.from(this.handlers.keys());
423
+ }
315
424
  async serialize(rxr) {
316
425
  const typeName = rxr.manifest.type;
317
426
  const handler = this.handlers.get(typeName);
@@ -336,24 +445,14 @@ class TypeHandlerChain {
336
445
  }
337
446
  return handler.resolver.resolve(rxr);
338
447
  }
339
- }
340
- function createTypeHandlerChain(types) {
341
- const chain = new TypeHandlerChain;
342
- if (types) {
343
- chain.registerAll(types);
344
- }
345
- return chain;
346
- }
347
-
348
- // src/errors.ts
349
- class RegistryError extends ResourceXError {
350
- constructor(message) {
351
- super(message);
352
- this.name = "RegistryError";
448
+ clearExtensions() {
449
+ this.handlers.clear();
450
+ for (const type of builtinTypes) {
451
+ this.registerBuiltin(type);
452
+ }
353
453
  }
354
454
  }
355
- // src/ARPRegistry.ts
356
- import { homedir } from "node:os";
455
+ var globalTypeHandlerChain = TypeHandlerChain.getInstance();
357
456
 
358
457
  // ../arp/dist/index.js
359
458
  import { readFile, writeFile, readdir, mkdir, rm, access, stat as fsStat } from "node:fs/promises";
@@ -788,11 +887,14 @@ var DEFAULT_PATH = `${homedir()}/.resourcex`;
788
887
  class ARPRegistry {
789
888
  arp;
790
889
  basePath;
791
- typeChain;
792
890
  constructor(config) {
793
891
  this.arp = createARP();
794
892
  this.basePath = config?.path ?? DEFAULT_PATH;
795
- this.typeChain = createTypeHandlerChain([...builtinTypes, ...config?.types ?? []]);
893
+ if (config?.types) {
894
+ for (const type of config.types) {
895
+ globalTypeHandlerChain.register(type);
896
+ }
897
+ }
796
898
  }
797
899
  buildUrl(locator, filename) {
798
900
  const rxl = typeof locator === "string" ? parseRXL(locator) : locator;
@@ -814,7 +916,7 @@ class ARPRegistry {
814
916
  await manifestArl.deposit(JSON.stringify(resource.manifest.toJSON(), null, 2));
815
917
  const contentUrl = this.buildUrl(locator, "content").replace("arp:text:", "arp:binary:");
816
918
  const contentArl = this.arp.parse(contentUrl);
817
- const serialized = await this.typeChain.serialize(resource);
919
+ const serialized = await globalTypeHandlerChain.serialize(resource);
818
920
  await contentArl.deposit(serialized);
819
921
  }
820
922
  async resolve(locator) {
@@ -830,7 +932,7 @@ class ARPRegistry {
830
932
  const contentArl = this.arp.parse(contentUrl);
831
933
  const contentResult = await contentArl.resolve();
832
934
  const data = contentResult.content;
833
- return this.typeChain.deserialize(data, manifest);
935
+ return globalTypeHandlerChain.deserialize(data, manifest);
834
936
  }
835
937
  async exists(locator) {
836
938
  const manifestUrl = this.buildUrl(locator, "manifest.json");
@@ -862,4 +964,4 @@ export {
862
964
  ARPRegistry
863
965
  };
864
966
 
865
- //# debugId=F946E1BEB367C85D64756E2164756E21
967
+ //# debugId=690671A1EE104C4464756E2164756E21
package/dist/index.js.map CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../core/dist/index.js", "../src/errors.ts", "../src/ARPRegistry.ts", "../../arp/dist/index.js", "../src/createRegistry.ts"],
3
+ "sources": ["../../core/dist/index.js", "../src/errors.ts", "../src/ARPRegistry.ts", "../../type/dist/index.js", "../../arp/dist/index.js", "../src/createRegistry.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 LocatorError extends ResourceXError {\n locator;\n constructor(message, locator) {\n super(message);\n this.locator = locator;\n this.name = \"LocatorError\";\n }\n}\n\nclass ManifestError extends ResourceXError {\n constructor(message) {\n super(message);\n this.name = \"ManifestError\";\n }\n}\n\nclass ContentError extends ResourceXError {\n constructor(message) {\n super(message);\n this.name = \"ContentError\";\n }\n}\n\nclass ResourceTypeError extends ResourceXError {\n constructor(message) {\n super(message);\n this.name = \"ResourceTypeError\";\n }\n}\n// src/locator/parseRXL.ts\nclass RXLImpl {\n domain;\n path;\n name;\n type;\n version;\n constructor(parts) {\n this.domain = parts.domain;\n this.path = parts.path;\n this.name = parts.name;\n this.type = parts.type;\n this.version = parts.version;\n }\n toString() {\n let result = \"\";\n if (this.domain) {\n result += this.domain + \"/\";\n if (this.path) {\n result += this.path + \"/\";\n }\n }\n result += this.name;\n if (this.type) {\n result += \".\" + this.type;\n }\n if (this.version) {\n result += \"@\" + this.version;\n }\n return result;\n }\n}\nfunction isDomain(str) {\n if (str === \"localhost\")\n return true;\n return str.includes(\".\");\n}\nfunction parseRXL(locator) {\n let remaining = locator;\n let version;\n let type;\n let domain;\n let path;\n let name;\n const atIndex = remaining.indexOf(\"@\");\n if (atIndex !== -1) {\n version = remaining.slice(atIndex + 1);\n remaining = remaining.slice(0, atIndex);\n }\n const segments = remaining.split(\"/\");\n if (segments.length > 1 && isDomain(segments[0])) {\n domain = segments[0];\n const lastSegment = segments[segments.length - 1];\n if (segments.length > 2) {\n path = segments.slice(1, -1).join(\"/\");\n }\n remaining = lastSegment;\n } else {\n remaining = segments.join(\"/\");\n }\n const dotIndex = remaining.lastIndexOf(\".\");\n if (dotIndex !== -1) {\n type = remaining.slice(dotIndex + 1);\n name = remaining.slice(0, dotIndex);\n } else {\n name = remaining;\n }\n return new RXLImpl({ domain, path, name, type, version });\n}\n// src/manifest/createRXM.ts\nclass RXMImpl {\n domain;\n path;\n name;\n type;\n version;\n constructor(data) {\n this.domain = data.domain;\n this.path = data.path;\n this.name = data.name;\n this.type = data.type;\n this.version = data.version;\n }\n toLocator() {\n let result = this.domain + \"/\";\n if (this.path) {\n result += this.path + \"/\";\n }\n result += this.name;\n result += \".\" + this.type;\n result += \"@\" + this.version;\n return result;\n }\n toJSON() {\n const json = {\n domain: this.domain,\n name: this.name,\n type: this.type,\n version: this.version\n };\n if (this.path !== undefined) {\n json.path = this.path;\n }\n return json;\n }\n}\nfunction createRXM(data) {\n if (!data.domain) {\n throw new ManifestError(\"domain is required\");\n }\n if (!data.name) {\n throw new ManifestError(\"name is required\");\n }\n if (!data.type) {\n throw new ManifestError(\"type is required\");\n }\n if (!data.version) {\n throw new ManifestError(\"version is required\");\n }\n return new RXMImpl({\n domain: data.domain,\n path: data.path,\n name: data.name,\n type: data.type,\n version: data.version\n });\n}\n// src/content/createRXC.ts\nclass RXCImpl {\n _stream;\n _consumed = false;\n constructor(stream) {\n this._stream = stream;\n }\n get stream() {\n if (this._consumed) {\n throw new ContentError(\"Content has already been consumed\");\n }\n this._consumed = true;\n return this._stream;\n }\n async text() {\n const buffer = await this.buffer();\n return buffer.toString(\"utf-8\");\n }\n async buffer() {\n if (this._consumed) {\n throw new ContentError(\"Content has already been consumed\");\n }\n this._consumed = true;\n const reader = this._stream.getReader();\n const chunks = [];\n while (true) {\n const { done, value } = await reader.read();\n if (done)\n break;\n chunks.push(value);\n }\n return Buffer.concat(chunks);\n }\n async json() {\n const text = await this.text();\n return JSON.parse(text);\n }\n}\nfunction createRXC(data) {\n let stream;\n if (typeof data === \"string\") {\n const encoded = new TextEncoder().encode(data);\n stream = new ReadableStream({\n start(controller) {\n controller.enqueue(encoded);\n controller.close();\n }\n });\n } else if (Buffer.isBuffer(data)) {\n stream = new ReadableStream({\n start(controller) {\n controller.enqueue(new Uint8Array(data));\n controller.close();\n }\n });\n } else {\n stream = data;\n }\n return new RXCImpl(stream);\n}\n// src/content/loadRXC.ts\nimport { createReadStream } from \"node:fs\";\nimport { Readable } from \"node:stream\";\nasync function loadRXC(source) {\n if (source.startsWith(\"http://\") || source.startsWith(\"https://\")) {\n const response = await fetch(source);\n if (!response.ok) {\n throw new Error(`Failed to fetch ${source}: ${response.statusText}`);\n }\n if (!response.body) {\n throw new Error(`No body in response from ${source}`);\n }\n return createRXC(response.body);\n }\n const nodeStream = createReadStream(source);\n const webStream = Readable.toWeb(nodeStream);\n return createRXC(webStream);\n}\n// src/resource/defineResourceType.ts\nvar resourceTypes = new Map;\nfunction defineResourceType(config) {\n if (resourceTypes.has(config.name)) {\n throw new ResourceTypeError(`Resource type \"${config.name}\" is already registered`);\n }\n resourceTypes.set(config.name, config);\n return config;\n}\nfunction getResourceType(name) {\n return resourceTypes.get(name);\n}\nfunction clearResourceTypes() {\n resourceTypes.clear();\n}\n// src/resource/builtinTypes.ts\nvar textSerializer = {\n async serialize(rxr) {\n const text = await rxr.content.text();\n return Buffer.from(text, \"utf-8\");\n },\n async deserialize(data, manifest) {\n const text = data.toString(\"utf-8\");\n return {\n locator: parseRXL(manifest.toLocator()),\n manifest,\n content: createRXC(text)\n };\n }\n};\nvar textResolver = {\n async resolve(rxr) {\n return rxr.content.text();\n }\n};\nvar textType = {\n name: \"text\",\n aliases: [\"txt\", \"plaintext\"],\n description: \"Plain text content\",\n serializer: textSerializer,\n resolver: textResolver\n};\nvar jsonSerializer = {\n async serialize(rxr) {\n const json = await rxr.content.json();\n return Buffer.from(JSON.stringify(json, null, 2), \"utf-8\");\n },\n async deserialize(data, manifest) {\n const text = data.toString(\"utf-8\");\n return {\n locator: parseRXL(manifest.toLocator()),\n manifest,\n content: createRXC(text)\n };\n }\n};\nvar jsonResolver = {\n async resolve(rxr) {\n return rxr.content.json();\n }\n};\nvar jsonType = {\n name: \"json\",\n aliases: [\"config\", \"manifest\"],\n description: \"JSON content\",\n serializer: jsonSerializer,\n resolver: jsonResolver\n};\nvar binarySerializer = {\n async serialize(rxr) {\n return rxr.content.buffer();\n },\n async deserialize(data, manifest) {\n return {\n locator: parseRXL(manifest.toLocator()),\n manifest,\n content: createRXC(data)\n };\n }\n};\nvar binaryResolver = {\n async resolve(rxr) {\n return rxr.content.buffer();\n }\n};\nvar binaryType = {\n name: \"binary\",\n aliases: [\"bin\", \"blob\", \"raw\"],\n description: \"Binary content\",\n serializer: binarySerializer,\n resolver: binaryResolver\n};\nvar builtinTypes = [textType, jsonType, binaryType];\n// src/resource/TypeHandlerChain.ts\nclass TypeHandlerChain {\n handlers = new Map;\n register(type) {\n this.handlers.set(type.name, type);\n if (type.aliases) {\n for (const alias of type.aliases) {\n this.handlers.set(alias, type);\n }\n }\n }\n registerAll(types) {\n for (const type of types) {\n this.register(type);\n }\n }\n canHandle(typeName) {\n return this.handlers.has(typeName);\n }\n getHandler(typeName) {\n return this.handlers.get(typeName);\n }\n async serialize(rxr) {\n const typeName = rxr.manifest.type;\n const handler = this.handlers.get(typeName);\n if (!handler) {\n throw new ResourceTypeError(`Unsupported resource type: ${typeName}`);\n }\n return handler.serializer.serialize(rxr);\n }\n async deserialize(data, manifest) {\n const typeName = manifest.type;\n const handler = this.handlers.get(typeName);\n if (!handler) {\n throw new ResourceTypeError(`Unsupported resource type: ${typeName}`);\n }\n return handler.serializer.deserialize(data, manifest);\n }\n async resolve(rxr) {\n const typeName = rxr.manifest.type;\n const handler = this.handlers.get(typeName);\n if (!handler) {\n throw new ResourceTypeError(`Unsupported resource type: ${typeName}`);\n }\n return handler.resolver.resolve(rxr);\n }\n}\nfunction createTypeHandlerChain(types) {\n const chain = new TypeHandlerChain;\n if (types) {\n chain.registerAll(types);\n }\n return chain;\n}\n// src/resource/FolderLoader.ts\nimport { join } from \"node:path\";\nimport { stat, readFile } from \"node:fs/promises\";\nclass FolderLoader {\n async canLoad(source) {\n try {\n const stats = await stat(source);\n if (!stats.isDirectory()) {\n return false;\n }\n const manifestPath = join(source, \"resource.json\");\n const contentPath = join(source, \"content\");\n const manifestStats = await stat(manifestPath);\n const contentStats = await stat(contentPath);\n return manifestStats.isFile() && contentStats.isFile();\n } catch {\n return false;\n }\n }\n async load(folderPath) {\n const manifestPath = join(folderPath, \"resource.json\");\n let manifestJson;\n try {\n manifestJson = await readFile(manifestPath, \"utf-8\");\n } catch (error) {\n throw new ResourceXError(`Failed to read resource.json: ${error instanceof Error ? error.message : String(error)}`);\n }\n let manifestData;\n try {\n manifestData = JSON.parse(manifestJson);\n } catch (error) {\n throw new ResourceXError(`Invalid JSON in resource.json: ${error instanceof Error ? error.message : String(error)}`);\n }\n if (!manifestData.name) {\n throw new ResourceXError(\"Invalid resource.json: missing required field 'name'\");\n }\n if (!manifestData.type) {\n throw new ResourceXError(\"Invalid resource.json: missing required field 'type'\");\n }\n if (!manifestData.version) {\n throw new ResourceXError(\"Invalid resource.json: missing required field 'version'\");\n }\n const manifest = createRXM({\n domain: manifestData.domain ?? \"localhost\",\n path: manifestData.path,\n name: manifestData.name,\n type: manifestData.type,\n version: manifestData.version\n });\n const contentPath = join(folderPath, \"content\");\n let contentBuffer;\n try {\n contentBuffer = await readFile(contentPath);\n } catch (error) {\n throw new ResourceXError(`Failed to read content file: ${error instanceof Error ? error.message : String(error)}`);\n }\n const content = createRXC(contentBuffer);\n const locator = parseRXL(manifest.toLocator());\n return {\n locator,\n manifest,\n content\n };\n }\n}\n// src/resource/loadResource.ts\nasync function loadResource(source, config) {\n const loader = config?.loader ?? new FolderLoader;\n const canLoad = await loader.canLoad(source);\n if (!canLoad) {\n throw new ResourceXError(`Cannot load resource from: ${source}`);\n }\n return loader.load(source);\n}\nexport {\n textType,\n parseRXL,\n loadResource,\n loadRXC,\n jsonType,\n getResourceType,\n defineResourceType,\n createTypeHandlerChain,\n createRXM,\n createRXC,\n clearResourceTypes,\n builtinTypes,\n binaryType,\n TypeHandlerChain,\n ResourceXError,\n ResourceTypeError,\n ManifestError,\n LocatorError,\n FolderLoader,\n ContentError\n};\n\n//# debugId=9516A09E80942F2964756E2164756E21\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 LocatorError extends ResourceXError {\n locator;\n constructor(message, locator) {\n super(message);\n this.locator = locator;\n this.name = \"LocatorError\";\n }\n}\n\nclass ManifestError extends ResourceXError {\n constructor(message) {\n super(message);\n this.name = \"ManifestError\";\n }\n}\n\nclass ContentError extends ResourceXError {\n constructor(message) {\n super(message);\n this.name = \"ContentError\";\n }\n}\n// src/locator/parseRXL.ts\nclass RXLImpl {\n domain;\n path;\n name;\n type;\n version;\n constructor(parts) {\n this.domain = parts.domain;\n this.path = parts.path;\n this.name = parts.name;\n this.type = parts.type;\n this.version = parts.version;\n }\n toString() {\n let result = \"\";\n if (this.domain) {\n result += this.domain + \"/\";\n if (this.path) {\n result += this.path + \"/\";\n }\n }\n result += this.name;\n if (this.type) {\n result += \".\" + this.type;\n }\n if (this.version) {\n result += \"@\" + this.version;\n }\n return result;\n }\n}\nfunction isDomain(str) {\n if (str === \"localhost\")\n return true;\n return str.includes(\".\");\n}\nfunction parseRXL(locator) {\n let remaining = locator;\n let version;\n let type;\n let domain;\n let path;\n let name;\n const atIndex = remaining.indexOf(\"@\");\n if (atIndex !== -1) {\n version = remaining.slice(atIndex + 1);\n remaining = remaining.slice(0, atIndex);\n }\n const segments = remaining.split(\"/\");\n if (segments.length > 1 && isDomain(segments[0])) {\n domain = segments[0];\n const lastSegment = segments[segments.length - 1];\n if (segments.length > 2) {\n path = segments.slice(1, -1).join(\"/\");\n }\n remaining = lastSegment;\n } else {\n remaining = segments.join(\"/\");\n }\n const dotIndex = remaining.lastIndexOf(\".\");\n if (dotIndex !== -1) {\n type = remaining.slice(dotIndex + 1);\n name = remaining.slice(0, dotIndex);\n } else {\n name = remaining;\n }\n return new RXLImpl({ domain, path, name, type, version });\n}\n// src/manifest/createRXM.ts\nclass RXMImpl {\n domain;\n path;\n name;\n type;\n version;\n constructor(data) {\n this.domain = data.domain;\n this.path = data.path;\n this.name = data.name;\n this.type = data.type;\n this.version = data.version;\n }\n toLocator() {\n let result = this.domain + \"/\";\n if (this.path) {\n result += this.path + \"/\";\n }\n result += this.name;\n result += \".\" + this.type;\n result += \"@\" + this.version;\n return result;\n }\n toJSON() {\n const json = {\n domain: this.domain,\n name: this.name,\n type: this.type,\n version: this.version\n };\n if (this.path !== undefined) {\n json.path = this.path;\n }\n return json;\n }\n}\nfunction createRXM(data) {\n if (!data.domain) {\n throw new ManifestError(\"domain is required\");\n }\n if (!data.name) {\n throw new ManifestError(\"name is required\");\n }\n if (!data.type) {\n throw new ManifestError(\"type is required\");\n }\n if (!data.version) {\n throw new ManifestError(\"version is required\");\n }\n return new RXMImpl({\n domain: data.domain,\n path: data.path,\n name: data.name,\n type: data.type,\n version: data.version\n });\n}\n// src/content/createRXC.ts\nclass RXCImpl {\n _stream;\n _consumed = false;\n constructor(stream) {\n this._stream = stream;\n }\n get stream() {\n if (this._consumed) {\n throw new ContentError(\"Content has already been consumed\");\n }\n this._consumed = true;\n return this._stream;\n }\n async text() {\n const buffer = await this.buffer();\n return buffer.toString(\"utf-8\");\n }\n async buffer() {\n if (this._consumed) {\n throw new ContentError(\"Content has already been consumed\");\n }\n this._consumed = true;\n const reader = this._stream.getReader();\n const chunks = [];\n while (true) {\n const { done, value } = await reader.read();\n if (done)\n break;\n chunks.push(value);\n }\n return Buffer.concat(chunks);\n }\n async json() {\n const text = await this.text();\n return JSON.parse(text);\n }\n}\nfunction createRXC(data) {\n let stream;\n if (typeof data === \"string\") {\n const encoded = new TextEncoder().encode(data);\n stream = new ReadableStream({\n start(controller) {\n controller.enqueue(encoded);\n controller.close();\n }\n });\n } else if (Buffer.isBuffer(data)) {\n stream = new ReadableStream({\n start(controller) {\n controller.enqueue(new Uint8Array(data));\n controller.close();\n }\n });\n } else {\n stream = data;\n }\n return new RXCImpl(stream);\n}\n// src/content/loadRXC.ts\nimport { createReadStream } from \"node:fs\";\nimport { Readable } from \"node:stream\";\nasync function loadRXC(source) {\n if (source.startsWith(\"http://\") || source.startsWith(\"https://\")) {\n const response = await fetch(source);\n if (!response.ok) {\n throw new Error(`Failed to fetch ${source}: ${response.statusText}`);\n }\n if (!response.body) {\n throw new Error(`No body in response from ${source}`);\n }\n return createRXC(response.body);\n }\n const nodeStream = createReadStream(source);\n const webStream = Readable.toWeb(nodeStream);\n return createRXC(webStream);\n}\nexport {\n parseRXL,\n loadRXC,\n createRXM,\n createRXC,\n ResourceXError,\n ManifestError,\n LocatorError,\n ContentError\n};\n\n//# debugId=2AAEFC45892A016E64756E2164756E21\n",
6
6
  "import { ResourceXError } from \"@resourcexjs/core\";\n\n/**\n * Registry-specific error.\n */\nexport class RegistryError extends ResourceXError {\n constructor(message: string) {\n super(message);\n this.name = \"RegistryError\";\n }\n}\n",
7
- "import { homedir } from \"node:os\";\nimport type { Registry, RegistryConfig } from \"./types.js\";\nimport type { RXR, RXL } from \"@resourcexjs/core\";\nimport {\n parseRXL,\n createRXM,\n builtinTypes,\n createTypeHandlerChain,\n TypeHandlerChain,\n} from \"@resourcexjs/core\";\nimport { createARP } from \"@resourcexjs/arp\";\nimport type { ARP } from \"@resourcexjs/arp\";\nimport { RegistryError } from \"./errors.js\";\n\nconst DEFAULT_PATH = `${homedir()}/.resourcex`;\n\n/**\n * ARP-based registry implementation.\n * Uses ARP protocol for atomic I/O operations.\n * Uses TypeHandlerChain for serialization/deserialization.\n */\nexport class ARPRegistry implements Registry {\n private readonly arp: ARP;\n private readonly basePath: string;\n private readonly typeChain: TypeHandlerChain;\n\n constructor(config?: RegistryConfig) {\n this.arp = createARP();\n this.basePath = config?.path ?? DEFAULT_PATH;\n\n // Create type handler chain with builtin types + custom types\n this.typeChain = createTypeHandlerChain([...builtinTypes, ...(config?.types ?? [])]);\n }\n\n /**\n * Build ARP URL for a resource file.\n */\n private buildUrl(locator: string | RXL, filename: string): string {\n const rxl = typeof locator === \"string\" ? parseRXL(locator) : locator;\n const domain = rxl.domain ?? \"localhost\";\n\n let path = `${this.basePath}/${domain}`;\n if (rxl.path) {\n path += `/${rxl.path}`;\n }\n\n const resourceDir = rxl.type\n ? `${rxl.name}.${rxl.type}@${rxl.version ?? \"latest\"}`\n : `${rxl.name}@${rxl.version ?? \"latest\"}`;\n\n return `arp:text:file://${path}/${resourceDir}/${filename}`;\n }\n\n async publish(_resource: RXR): Promise<void> {\n // TODO: Implement remote publishing based on domain\n throw new RegistryError(\"Remote publish not implemented yet\");\n }\n\n async link(resource: RXR): Promise<void> {\n const locator = resource.manifest.toLocator();\n\n // Write manifest (text/json)\n const manifestUrl = this.buildUrl(locator, \"manifest.json\");\n const manifestArl = this.arp.parse(manifestUrl);\n await manifestArl.deposit(JSON.stringify(resource.manifest.toJSON(), null, 2));\n\n // Serialize content using type handler chain\n const contentUrl = this.buildUrl(locator, \"content\").replace(\"arp:text:\", \"arp:binary:\");\n const contentArl = this.arp.parse(contentUrl);\n const serialized = await this.typeChain.serialize(resource);\n await contentArl.deposit(serialized);\n }\n\n async resolve(locator: string): Promise<RXR> {\n // Check exists first\n if (!(await this.exists(locator))) {\n throw new RegistryError(`Resource not found: ${locator}`);\n }\n\n // Read manifest first to determine type\n const manifestUrl = this.buildUrl(locator, \"manifest.json\");\n const manifestArl = this.arp.parse(manifestUrl);\n const manifestResult = await manifestArl.resolve();\n const manifestData = JSON.parse(manifestResult.content as string);\n const manifest = createRXM(manifestData);\n\n // Read content\n const contentUrl = this.buildUrl(locator, \"content\").replace(\"arp:text:\", \"arp:binary:\");\n const contentArl = this.arp.parse(contentUrl);\n const contentResult = await contentArl.resolve();\n const data = contentResult.content as Buffer;\n\n // Deserialize using type handler chain\n return this.typeChain.deserialize(data, manifest);\n }\n\n async exists(locator: string): Promise<boolean> {\n const manifestUrl = this.buildUrl(locator, \"manifest.json\");\n const manifestArl = this.arp.parse(manifestUrl);\n return manifestArl.exists();\n }\n\n async delete(locator: string): Promise<void> {\n // Check if exists first - silently return if not\n if (!(await this.exists(locator))) {\n return;\n }\n\n // Delete manifest\n const manifestUrl = this.buildUrl(locator, \"manifest.json\");\n const manifestArl = this.arp.parse(manifestUrl);\n await manifestArl.delete();\n\n // Delete content\n const contentUrl = this.buildUrl(locator, \"content\").replace(\"arp:text:\", \"arp:binary:\");\n const contentArl = this.arp.parse(contentUrl);\n await contentArl.delete();\n }\n\n async search(_query: string): Promise<RXL[]> {\n // TODO: Implement search - requires listing directory\n // ARP doesn't have list operation yet\n throw new RegistryError(\"Search not implemented yet\");\n }\n}\n",
8
- "// src/errors.ts\nclass ARPError extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"ARPError\";\n }\n}\n\nclass ParseError extends ARPError {\n url;\n constructor(message, url) {\n super(message);\n this.url = url;\n this.name = \"ParseError\";\n }\n}\n\nclass TransportError extends ARPError {\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 ARPError {\n semantic;\n constructor(message, semantic, options) {\n super(message, options);\n this.semantic = semantic;\n this.name = \"SemanticError\";\n }\n}\n\n// src/ARL.ts\nclass ARL {\n semantic;\n transport;\n location;\n resolver;\n constructor(semantic, transport, location, resolver) {\n this.semantic = semantic;\n this.transport = transport;\n this.location = location;\n this.resolver = resolver;\n }\n createContext() {\n return {\n url: this.toString(),\n semantic: this.semantic,\n transport: this.transport,\n location: this.location,\n timestamp: new Date\n };\n }\n async resolve() {\n const transport = this.resolver.getTransportHandler(this.transport);\n const semantic = this.resolver.getSemanticHandler(this.semantic);\n const context = this.createContext();\n return semantic.resolve(transport, this.location, context);\n }\n async deposit(data) {\n const transport = this.resolver.getTransportHandler(this.transport);\n const semantic = this.resolver.getSemanticHandler(this.semantic);\n const context = this.createContext();\n if (!semantic.deposit) {\n throw new SemanticError(`Semantic \"${semantic.name}\" does not support deposit operation`, this.semantic);\n }\n await semantic.deposit(transport, this.location, data, context);\n }\n async exists() {\n const transport = this.resolver.getTransportHandler(this.transport);\n const semantic = this.resolver.getSemanticHandler(this.semantic);\n const context = this.createContext();\n if (semantic.exists) {\n return semantic.exists(transport, this.location, context);\n }\n if (transport.exists) {\n return transport.exists(this.location);\n }\n try {\n await transport.read(this.location);\n return true;\n } catch {\n return false;\n }\n }\n async delete() {\n const transport = this.resolver.getTransportHandler(this.transport);\n const semantic = this.resolver.getSemanticHandler(this.semantic);\n const context = this.createContext();\n if (semantic.delete) {\n return semantic.delete(transport, this.location, context);\n }\n if (!transport.delete) {\n throw new SemanticError(`Neither semantic \"${semantic.name}\" nor transport \"${transport.name}\" supports delete operation`, this.semantic);\n }\n await transport.delete(this.location);\n }\n toString() {\n return `arp:${this.semantic}:${this.transport}://${this.location}`;\n }\n}\n\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 fileTransport = new FileTransportHandler;\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 httpsTransport = new HttpTransportHandler(\"https\");\nvar httpTransport = new HttpTransportHandler(\"http\");\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 textSemantic = 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 binarySemantic = new BinarySemanticHandler;\n// src/ARP.ts\nclass ARP {\n transports;\n semantics;\n constructor(config = {}) {\n this.transports = new Map;\n this.semantics = new Map;\n const defaultTransports = [fileTransport, httpTransport, httpsTransport];\n const defaultSemantics = [textSemantic, binarySemantic];\n for (const handler of defaultTransports) {\n this.transports.set(handler.name, handler);\n }\n for (const handler of defaultSemantics) {\n this.semantics.set(handler.name, handler);\n }\n if (config.transports) {\n for (const handler of config.transports) {\n this.transports.set(handler.name, handler);\n }\n }\n if (config.semantics) {\n for (const handler of config.semantics) {\n this.semantics.set(handler.name, handler);\n }\n }\n }\n registerTransport(handler) {\n this.transports.set(handler.name, handler);\n }\n registerSemantic(handler) {\n this.semantics.set(handler.name, handler);\n }\n getTransportHandler(name) {\n const handler = this.transports.get(name);\n if (!handler) {\n throw new TransportError(`Unsupported transport type: ${name}`, name);\n }\n return handler;\n }\n getSemanticHandler(name) {\n const handler = this.semantics.get(name);\n if (!handler) {\n throw new SemanticError(`Unsupported semantic type: ${name}`, name);\n }\n return handler;\n }\n parse(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 this.getTransportHandler(transport);\n this.getSemanticHandler(semantic);\n return new ARL(semantic, transport, location, this);\n }\n}\nfunction createARP(config) {\n return new ARP(config);\n}\n\n// src/index.ts\nvar VERSION = \"0.9.0\";\nexport {\n textSemantic,\n httpsTransport,\n httpTransport,\n fileTransport,\n createARP,\n binarySemantic,\n VERSION,\n TransportError,\n TextSemanticHandler,\n SemanticError,\n ParseError,\n HttpTransportHandler,\n FileTransportHandler,\n BinarySemanticHandler,\n ARPError,\n ARP\n};\n\n//# debugId=C55CE20C38A9427D64756E2164756E21\n",
7
+ "import { homedir } from \"node:os\";\nimport type { Registry, RegistryConfig } from \"./types.js\";\nimport type { RXR, RXL } from \"@resourcexjs/core\";\nimport { parseRXL, createRXM } from \"@resourcexjs/core\";\nimport { globalTypeHandlerChain } from \"@resourcexjs/type\";\nimport { createARP } from \"@resourcexjs/arp\";\nimport type { ARP } from \"@resourcexjs/arp\";\nimport { RegistryError } from \"./errors.js\";\n\nconst DEFAULT_PATH = `${homedir()}/.resourcex`;\n\n/**\n * ARP-based registry implementation.\n * Uses ARP protocol for atomic I/O operations.\n * Uses global TypeHandlerChain for serialization/deserialization.\n */\nexport class ARPRegistry implements Registry {\n private readonly arp: ARP;\n private readonly basePath: string;\n\n constructor(config?: RegistryConfig) {\n this.arp = createARP();\n this.basePath = config?.path ?? DEFAULT_PATH;\n\n // Register extension types to global chain\n if (config?.types) {\n for (const type of config.types) {\n globalTypeHandlerChain.register(type);\n }\n }\n }\n\n /**\n * Build ARP URL for a resource file.\n */\n private buildUrl(locator: string | RXL, filename: string): string {\n const rxl = typeof locator === \"string\" ? parseRXL(locator) : locator;\n const domain = rxl.domain ?? \"localhost\";\n\n let path = `${this.basePath}/${domain}`;\n if (rxl.path) {\n path += `/${rxl.path}`;\n }\n\n const resourceDir = rxl.type\n ? `${rxl.name}.${rxl.type}@${rxl.version ?? \"latest\"}`\n : `${rxl.name}@${rxl.version ?? \"latest\"}`;\n\n return `arp:text:file://${path}/${resourceDir}/${filename}`;\n }\n\n async publish(_resource: RXR): Promise<void> {\n // TODO: Implement remote publishing based on domain\n throw new RegistryError(\"Remote publish not implemented yet\");\n }\n\n async link(resource: RXR): Promise<void> {\n const locator = resource.manifest.toLocator();\n\n // Write manifest (text/json)\n const manifestUrl = this.buildUrl(locator, \"manifest.json\");\n const manifestArl = this.arp.parse(manifestUrl);\n await manifestArl.deposit(JSON.stringify(resource.manifest.toJSON(), null, 2));\n\n // Serialize content using global type handler chain\n const contentUrl = this.buildUrl(locator, \"content\").replace(\"arp:text:\", \"arp:binary:\");\n const contentArl = this.arp.parse(contentUrl);\n const serialized = await globalTypeHandlerChain.serialize(resource);\n await contentArl.deposit(serialized);\n }\n\n async resolve(locator: string): Promise<RXR> {\n // Check exists first\n if (!(await this.exists(locator))) {\n throw new RegistryError(`Resource not found: ${locator}`);\n }\n\n // Read manifest first to determine type\n const manifestUrl = this.buildUrl(locator, \"manifest.json\");\n const manifestArl = this.arp.parse(manifestUrl);\n const manifestResult = await manifestArl.resolve();\n const manifestData = JSON.parse(manifestResult.content as string);\n const manifest = createRXM(manifestData);\n\n // Read content\n const contentUrl = this.buildUrl(locator, \"content\").replace(\"arp:text:\", \"arp:binary:\");\n const contentArl = this.arp.parse(contentUrl);\n const contentResult = await contentArl.resolve();\n const data = contentResult.content as Buffer;\n\n // Deserialize using global type handler chain\n return globalTypeHandlerChain.deserialize(data, manifest);\n }\n\n async exists(locator: string): Promise<boolean> {\n const manifestUrl = this.buildUrl(locator, \"manifest.json\");\n const manifestArl = this.arp.parse(manifestUrl);\n return manifestArl.exists();\n }\n\n async delete(locator: string): Promise<void> {\n // Check if exists first - silently return if not\n if (!(await this.exists(locator))) {\n return;\n }\n\n // Delete manifest\n const manifestUrl = this.buildUrl(locator, \"manifest.json\");\n const manifestArl = this.arp.parse(manifestUrl);\n await manifestArl.delete();\n\n // Delete content\n const contentUrl = this.buildUrl(locator, \"content\").replace(\"arp:text:\", \"arp:binary:\");\n const contentArl = this.arp.parse(contentUrl);\n await contentArl.delete();\n }\n\n async search(_query: string): Promise<RXL[]> {\n // TODO: Implement search - requires listing directory\n // ARP doesn't have list operation yet\n throw new RegistryError(\"Search not implemented yet\");\n }\n}\n",
8
+ "// ../core/dist/index.js\nclass ResourceXError extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"ResourceXError\";\n }\n}\nclass ContentError extends ResourceXError {\n constructor(message) {\n super(message);\n this.name = \"ContentError\";\n }\n}\n\nclass RXLImpl {\n domain;\n path;\n name;\n type;\n version;\n constructor(parts) {\n this.domain = parts.domain;\n this.path = parts.path;\n this.name = parts.name;\n this.type = parts.type;\n this.version = parts.version;\n }\n toString() {\n let result = \"\";\n if (this.domain) {\n result += this.domain + \"/\";\n if (this.path) {\n result += this.path + \"/\";\n }\n }\n result += this.name;\n if (this.type) {\n result += \".\" + this.type;\n }\n if (this.version) {\n result += \"@\" + this.version;\n }\n return result;\n }\n}\nfunction isDomain(str) {\n if (str === \"localhost\")\n return true;\n return str.includes(\".\");\n}\nfunction parseRXL(locator) {\n let remaining = locator;\n let version;\n let type;\n let domain;\n let path;\n let name;\n const atIndex = remaining.indexOf(\"@\");\n if (atIndex !== -1) {\n version = remaining.slice(atIndex + 1);\n remaining = remaining.slice(0, atIndex);\n }\n const segments = remaining.split(\"/\");\n if (segments.length > 1 && isDomain(segments[0])) {\n domain = segments[0];\n const lastSegment = segments[segments.length - 1];\n if (segments.length > 2) {\n path = segments.slice(1, -1).join(\"/\");\n }\n remaining = lastSegment;\n } else {\n remaining = segments.join(\"/\");\n }\n const dotIndex = remaining.lastIndexOf(\".\");\n if (dotIndex !== -1) {\n type = remaining.slice(dotIndex + 1);\n name = remaining.slice(0, dotIndex);\n } else {\n name = remaining;\n }\n return new RXLImpl({ domain, path, name, type, version });\n}\nclass RXCImpl {\n _stream;\n _consumed = false;\n constructor(stream) {\n this._stream = stream;\n }\n get stream() {\n if (this._consumed) {\n throw new ContentError(\"Content has already been consumed\");\n }\n this._consumed = true;\n return this._stream;\n }\n async text() {\n const buffer = await this.buffer();\n return buffer.toString(\"utf-8\");\n }\n async buffer() {\n if (this._consumed) {\n throw new ContentError(\"Content has already been consumed\");\n }\n this._consumed = true;\n const reader = this._stream.getReader();\n const chunks = [];\n while (true) {\n const { done, value } = await reader.read();\n if (done)\n break;\n chunks.push(value);\n }\n return Buffer.concat(chunks);\n }\n async json() {\n const text = await this.text();\n return JSON.parse(text);\n }\n}\nfunction createRXC(data) {\n let stream;\n if (typeof data === \"string\") {\n const encoded = new TextEncoder().encode(data);\n stream = new ReadableStream({\n start(controller) {\n controller.enqueue(encoded);\n controller.close();\n }\n });\n } else if (Buffer.isBuffer(data)) {\n stream = new ReadableStream({\n start(controller) {\n controller.enqueue(new Uint8Array(data));\n controller.close();\n }\n });\n } else {\n stream = data;\n }\n return new RXCImpl(stream);\n}\n\n// src/errors.ts\nclass ResourceTypeError extends ResourceXError {\n constructor(message) {\n super(message);\n this.name = \"ResourceTypeError\";\n }\n}\n// src/builtinTypes.ts\nvar textSerializer = {\n async serialize(rxr) {\n const text = await rxr.content.text();\n return Buffer.from(text, \"utf-8\");\n },\n async deserialize(data, manifest) {\n const text = data.toString(\"utf-8\");\n return {\n locator: parseRXL(manifest.toLocator()),\n manifest,\n content: createRXC(text)\n };\n }\n};\nvar textResolver = {\n async resolve(rxr) {\n return rxr.content.text();\n }\n};\nvar textType = {\n name: \"text\",\n aliases: [\"txt\", \"plaintext\"],\n description: \"Plain text content\",\n serializer: textSerializer,\n resolver: textResolver\n};\nvar jsonSerializer = {\n async serialize(rxr) {\n const json = await rxr.content.json();\n return Buffer.from(JSON.stringify(json, null, 2), \"utf-8\");\n },\n async deserialize(data, manifest) {\n const text = data.toString(\"utf-8\");\n return {\n locator: parseRXL(manifest.toLocator()),\n manifest,\n content: createRXC(text)\n };\n }\n};\nvar jsonResolver = {\n async resolve(rxr) {\n return rxr.content.json();\n }\n};\nvar jsonType = {\n name: \"json\",\n aliases: [\"config\", \"manifest\"],\n description: \"JSON content\",\n serializer: jsonSerializer,\n resolver: jsonResolver\n};\nvar binarySerializer = {\n async serialize(rxr) {\n return rxr.content.buffer();\n },\n async deserialize(data, manifest) {\n return {\n locator: parseRXL(manifest.toLocator()),\n manifest,\n content: createRXC(data)\n };\n }\n};\nvar binaryResolver = {\n async resolve(rxr) {\n return rxr.content.buffer();\n }\n};\nvar binaryType = {\n name: \"binary\",\n aliases: [\"bin\", \"blob\", \"raw\"],\n description: \"Binary content\",\n serializer: binarySerializer,\n resolver: binaryResolver\n};\nvar builtinTypes = [textType, jsonType, binaryType];\n// src/TypeHandlerChain.ts\nclass TypeHandlerChain {\n static instance;\n handlers = new Map;\n constructor() {\n for (const type of builtinTypes) {\n this.registerBuiltin(type);\n }\n }\n static getInstance() {\n if (!TypeHandlerChain.instance) {\n TypeHandlerChain.instance = new TypeHandlerChain;\n }\n return TypeHandlerChain.instance;\n }\n registerBuiltin(type) {\n this.handlers.set(type.name, type);\n if (type.aliases) {\n for (const alias of type.aliases) {\n this.handlers.set(alias, type);\n }\n }\n }\n register(type) {\n if (this.handlers.has(type.name)) {\n throw new ResourceTypeError(`Type '${type.name}' is already registered`);\n }\n this.handlers.set(type.name, type);\n if (type.aliases) {\n for (const alias of type.aliases) {\n if (this.handlers.has(alias)) {\n throw new ResourceTypeError(`Alias '${alias}' conflicts with existing type or alias`);\n }\n this.handlers.set(alias, type);\n }\n }\n }\n canHandle(typeName) {\n return this.handlers.has(typeName);\n }\n getHandler(typeName) {\n return this.handlers.get(typeName);\n }\n getSupportedTypes() {\n return Array.from(this.handlers.keys());\n }\n async serialize(rxr) {\n const typeName = rxr.manifest.type;\n const handler = this.handlers.get(typeName);\n if (!handler) {\n throw new ResourceTypeError(`Unsupported resource type: ${typeName}`);\n }\n return handler.serializer.serialize(rxr);\n }\n async deserialize(data, manifest) {\n const typeName = manifest.type;\n const handler = this.handlers.get(typeName);\n if (!handler) {\n throw new ResourceTypeError(`Unsupported resource type: ${typeName}`);\n }\n return handler.serializer.deserialize(data, manifest);\n }\n async resolve(rxr) {\n const typeName = rxr.manifest.type;\n const handler = this.handlers.get(typeName);\n if (!handler) {\n throw new ResourceTypeError(`Unsupported resource type: ${typeName}`);\n }\n return handler.resolver.resolve(rxr);\n }\n clearExtensions() {\n this.handlers.clear();\n for (const type of builtinTypes) {\n this.registerBuiltin(type);\n }\n }\n}\nvar globalTypeHandlerChain = TypeHandlerChain.getInstance();\nexport {\n textType,\n jsonType,\n globalTypeHandlerChain,\n builtinTypes,\n binaryType,\n TypeHandlerChain,\n ResourceTypeError\n};\n\n//# debugId=ED28E038CDB29DF864756E2164756E21\n",
9
+ "// src/errors.ts\nclass ARPError extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"ARPError\";\n }\n}\n\nclass ParseError extends ARPError {\n url;\n constructor(message, url) {\n super(message);\n this.url = url;\n this.name = \"ParseError\";\n }\n}\n\nclass TransportError extends ARPError {\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 ARPError {\n semantic;\n constructor(message, semantic, options) {\n super(message, options);\n this.semantic = semantic;\n this.name = \"SemanticError\";\n }\n}\n\n// src/ARL.ts\nclass ARL {\n semantic;\n transport;\n location;\n resolver;\n constructor(semantic, transport, location, resolver) {\n this.semantic = semantic;\n this.transport = transport;\n this.location = location;\n this.resolver = resolver;\n }\n createContext() {\n return {\n url: this.toString(),\n semantic: this.semantic,\n transport: this.transport,\n location: this.location,\n timestamp: new Date\n };\n }\n async resolve() {\n const transport = this.resolver.getTransportHandler(this.transport);\n const semantic = this.resolver.getSemanticHandler(this.semantic);\n const context = this.createContext();\n return semantic.resolve(transport, this.location, context);\n }\n async deposit(data) {\n const transport = this.resolver.getTransportHandler(this.transport);\n const semantic = this.resolver.getSemanticHandler(this.semantic);\n const context = this.createContext();\n if (!semantic.deposit) {\n throw new SemanticError(`Semantic \"${semantic.name}\" does not support deposit operation`, this.semantic);\n }\n await semantic.deposit(transport, this.location, data, context);\n }\n async exists() {\n const transport = this.resolver.getTransportHandler(this.transport);\n const semantic = this.resolver.getSemanticHandler(this.semantic);\n const context = this.createContext();\n if (semantic.exists) {\n return semantic.exists(transport, this.location, context);\n }\n if (transport.exists) {\n return transport.exists(this.location);\n }\n try {\n await transport.read(this.location);\n return true;\n } catch {\n return false;\n }\n }\n async delete() {\n const transport = this.resolver.getTransportHandler(this.transport);\n const semantic = this.resolver.getSemanticHandler(this.semantic);\n const context = this.createContext();\n if (semantic.delete) {\n return semantic.delete(transport, this.location, context);\n }\n if (!transport.delete) {\n throw new SemanticError(`Neither semantic \"${semantic.name}\" nor transport \"${transport.name}\" supports delete operation`, this.semantic);\n }\n await transport.delete(this.location);\n }\n toString() {\n return `arp:${this.semantic}:${this.transport}://${this.location}`;\n }\n}\n\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 fileTransport = new FileTransportHandler;\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 httpsTransport = new HttpTransportHandler(\"https\");\nvar httpTransport = new HttpTransportHandler(\"http\");\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 textSemantic = 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 binarySemantic = new BinarySemanticHandler;\n// src/ARP.ts\nclass ARP {\n transports;\n semantics;\n constructor(config = {}) {\n this.transports = new Map;\n this.semantics = new Map;\n const defaultTransports = [fileTransport, httpTransport, httpsTransport];\n const defaultSemantics = [textSemantic, binarySemantic];\n for (const handler of defaultTransports) {\n this.transports.set(handler.name, handler);\n }\n for (const handler of defaultSemantics) {\n this.semantics.set(handler.name, handler);\n }\n if (config.transports) {\n for (const handler of config.transports) {\n this.transports.set(handler.name, handler);\n }\n }\n if (config.semantics) {\n for (const handler of config.semantics) {\n this.semantics.set(handler.name, handler);\n }\n }\n }\n registerTransport(handler) {\n this.transports.set(handler.name, handler);\n }\n registerSemantic(handler) {\n this.semantics.set(handler.name, handler);\n }\n getTransportHandler(name) {\n const handler = this.transports.get(name);\n if (!handler) {\n throw new TransportError(`Unsupported transport type: ${name}`, name);\n }\n return handler;\n }\n getSemanticHandler(name) {\n const handler = this.semantics.get(name);\n if (!handler) {\n throw new SemanticError(`Unsupported semantic type: ${name}`, name);\n }\n return handler;\n }\n parse(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 this.getTransportHandler(transport);\n this.getSemanticHandler(semantic);\n return new ARL(semantic, transport, location, this);\n }\n}\nfunction createARP(config) {\n return new ARP(config);\n}\n\n// src/index.ts\nvar VERSION = \"1.0.0\";\nexport {\n textSemantic,\n httpsTransport,\n httpTransport,\n fileTransport,\n createARP,\n binarySemantic,\n VERSION,\n TransportError,\n TextSemanticHandler,\n SemanticError,\n ParseError,\n HttpTransportHandler,\n FileTransportHandler,\n BinarySemanticHandler,\n ARPError,\n ARP\n};\n\n//# debugId=897CAF2B3335A7ED64756E2164756E21\n",
9
10
  "import type { Registry, RegistryConfig } from \"./types.js\";\nimport { ARPRegistry } from \"./ARPRegistry.js\";\n\n/**\n * Create a registry instance.\n * Uses ARP protocol for storage operations.\n */\nexport function createRegistry(config?: RegistryConfig): Registry {\n return new ARPRegistry(config);\n}\n"
10
11
  ],
11
- "mappings": "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",
12
- "debugId": "F946E1BEB367C85D64756E2164756E21",
12
+ "mappings": "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",
13
+ "debugId": "690671A1EE104C4464756E2164756E21",
13
14
  "names": []
14
15
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@resourcexjs/registry",
3
- "version": "0.9.0",
3
+ "version": "1.0.0",
4
4
  "description": "ResourceX Registry - Resource storage and retrieval",
5
5
  "keywords": [
6
6
  "resourcex",
@@ -37,8 +37,9 @@
37
37
  "clean": "rm -rf dist"
38
38
  },
39
39
  "dependencies": {
40
- "@resourcexjs/core": "^0.9.0",
41
- "@resourcexjs/arp": "^0.9.0"
40
+ "@resourcexjs/arp": "^1.0.0",
41
+ "@resourcexjs/core": "^1.0.0",
42
+ "@resourcexjs/type": "^1.0.0"
42
43
  },
43
44
  "devDependencies": {},
44
45
  "publishConfig": {