resourcexjs 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/arp.js CHANGED
@@ -424,7 +424,7 @@ class ARP {
424
424
  function createARP(config) {
425
425
  return new ARP(config);
426
426
  }
427
- var VERSION = "0.1.0";
427
+ var VERSION = "0.8.0";
428
428
  export {
429
429
  textSemantic,
430
430
  httpsTransport,
@@ -444,4 +444,4 @@ export {
444
444
  ARP
445
445
  };
446
446
 
447
- //# debugId=36FACDD005EB8EAF64756E2164756E21
447
+ //# debugId=DD7322268AB6527E64756E2164756E21
package/dist/arp.js.map CHANGED
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../../arp/dist/index.js"],
4
4
  "sourcesContent": [
5
- "// 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.1.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=C42DE403B8D4732364756E2164756E21\n"
5
+ "// 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.8.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=A9FBA0D0D6DAEAA464756E2164756E21\n"
6
6
  ],
7
7
  "mappings": "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",
8
- "debugId": "36FACDD005EB8EAF64756E2164756E21",
8
+ "debugId": "DD7322268AB6527E64756E2164756E21",
9
9
  "names": []
10
10
  }
package/dist/index.d.ts CHANGED
@@ -1,9 +1,16 @@
1
- import { ResourceXError, LocatorError, ManifestError, ContentError } from "@resourcexjs/core";
1
+ import { ResourceXError, LocatorError, ManifestError, ContentError, ResourceTypeError } from "@resourcexjs/core";
2
+ import { RegistryError } from "@resourcexjs/registry";
2
3
  import { RXL } from "@resourcexjs/core";
3
4
  import { parseRXL } from "@resourcexjs/core";
4
5
  import { RXM, ManifestData } from "@resourcexjs/core";
5
6
  import { createRXM } from "@resourcexjs/core";
6
7
  import { RXC } from "@resourcexjs/core";
7
8
  import { createRXC, loadRXC } from "@resourcexjs/core";
9
+ import { RXR, ResourceType, ResourceSerializer, ResourceResolver } from "@resourcexjs/core";
10
+ import { defineResourceType, getResourceType, clearResourceTypes } from "@resourcexjs/core";
11
+ import { textType, jsonType, binaryType, builtinTypes } from "@resourcexjs/core";
12
+ import { TypeHandlerChain, createTypeHandlerChain } from "@resourcexjs/core";
13
+ import { Registry, RegistryConfig } from "@resourcexjs/registry";
14
+ import { createRegistry, ARPRegistry } from "@resourcexjs/registry";
8
15
  declare const VERSION: string;
9
- export { parseRXL, loadRXC, createRXM, createRXC, VERSION, ResourceXError, RXM, RXL, RXC, ManifestError, ManifestData, LocatorError, ContentError };
16
+ export { textType, parseRXL, loadRXC, jsonType, getResourceType, defineResourceType, createTypeHandlerChain, createRegistry, createRXM, createRXC, clearResourceTypes, builtinTypes, binaryType, VERSION, TypeHandlerChain, ResourceXError, ResourceTypeError, ResourceType, ResourceSerializer, ResourceResolver, RegistryError, RegistryConfig, Registry, RXR, RXM, RXL, RXC, ManifestError, ManifestData, LocatorError, ContentError, ARPRegistry };
package/dist/index.js CHANGED
@@ -241,6 +241,97 @@ async function loadRXC(source) {
241
241
  return createRXC(webStream);
242
242
  }
243
243
  var resourceTypes = new Map;
244
+ function defineResourceType(config) {
245
+ if (resourceTypes.has(config.name)) {
246
+ throw new ResourceTypeError(`Resource type "${config.name}" is already registered`);
247
+ }
248
+ resourceTypes.set(config.name, config);
249
+ return config;
250
+ }
251
+ function getResourceType(name) {
252
+ return resourceTypes.get(name);
253
+ }
254
+ function clearResourceTypes() {
255
+ resourceTypes.clear();
256
+ }
257
+ var textSerializer = {
258
+ async serialize(rxr) {
259
+ const text = await rxr.content.text();
260
+ return Buffer.from(text, "utf-8");
261
+ },
262
+ async deserialize(data, manifest) {
263
+ const text = data.toString("utf-8");
264
+ return {
265
+ locator: parseRXL(manifest.toLocator()),
266
+ manifest,
267
+ content: createRXC(text)
268
+ };
269
+ }
270
+ };
271
+ var textResolver = {
272
+ async resolve(rxr) {
273
+ return rxr.content.text();
274
+ }
275
+ };
276
+ var textType = {
277
+ name: "text",
278
+ aliases: ["txt", "plaintext"],
279
+ description: "Plain text content",
280
+ serializer: textSerializer,
281
+ resolver: textResolver
282
+ };
283
+ var jsonSerializer = {
284
+ async serialize(rxr) {
285
+ const json = await rxr.content.json();
286
+ return Buffer.from(JSON.stringify(json, null, 2), "utf-8");
287
+ },
288
+ async deserialize(data, manifest) {
289
+ const text = data.toString("utf-8");
290
+ return {
291
+ locator: parseRXL(manifest.toLocator()),
292
+ manifest,
293
+ content: createRXC(text)
294
+ };
295
+ }
296
+ };
297
+ var jsonResolver = {
298
+ async resolve(rxr) {
299
+ return rxr.content.json();
300
+ }
301
+ };
302
+ var jsonType = {
303
+ name: "json",
304
+ aliases: ["config", "manifest"],
305
+ description: "JSON content",
306
+ serializer: jsonSerializer,
307
+ resolver: jsonResolver
308
+ };
309
+ var binarySerializer = {
310
+ async serialize(rxr) {
311
+ return rxr.content.buffer();
312
+ },
313
+ async deserialize(data, manifest) {
314
+ return {
315
+ locator: parseRXL(manifest.toLocator()),
316
+ manifest,
317
+ content: createRXC(data)
318
+ };
319
+ }
320
+ };
321
+ var binaryResolver = {
322
+ async resolve(rxr) {
323
+ return rxr.content.buffer();
324
+ }
325
+ };
326
+ var binaryType = {
327
+ name: "binary",
328
+ aliases: ["bin", "blob", "raw"],
329
+ description: "Binary content",
330
+ serializer: binarySerializer,
331
+ resolver: binaryResolver
332
+ };
333
+ var builtinTypes = [textType, jsonType, binaryType];
334
+
244
335
  class TypeHandlerChain {
245
336
  handlers = new Map;
246
337
  register(type) {
@@ -287,19 +378,892 @@ class TypeHandlerChain {
287
378
  return handler.resolver.resolve(rxr);
288
379
  }
289
380
  }
381
+ function createTypeHandlerChain(types) {
382
+ const chain = new TypeHandlerChain;
383
+ if (types) {
384
+ chain.registerAll(types);
385
+ }
386
+ return chain;
387
+ }
388
+ // ../registry/dist/index.js
389
+ import { homedir } from "node:os";
390
+ import { readFile, writeFile, readdir, mkdir, rm, access, stat as fsStat } from "node:fs/promises";
391
+ import { resolve, dirname } from "node:path";
392
+
393
+ class ResourceXError2 extends Error {
394
+ constructor(message, options) {
395
+ super(message, options);
396
+ this.name = "ResourceXError";
397
+ }
398
+ }
399
+
400
+ class ManifestError2 extends ResourceXError2 {
401
+ constructor(message) {
402
+ super(message);
403
+ this.name = "ManifestError";
404
+ }
405
+ }
406
+
407
+ class ContentError2 extends ResourceXError2 {
408
+ constructor(message) {
409
+ super(message);
410
+ this.name = "ContentError";
411
+ }
412
+ }
413
+
414
+ class ResourceTypeError2 extends ResourceXError2 {
415
+ constructor(message) {
416
+ super(message);
417
+ this.name = "ResourceTypeError";
418
+ }
419
+ }
420
+
421
+ class RXLImpl2 {
422
+ domain;
423
+ path;
424
+ name;
425
+ type;
426
+ version;
427
+ constructor(parts) {
428
+ this.domain = parts.domain;
429
+ this.path = parts.path;
430
+ this.name = parts.name;
431
+ this.type = parts.type;
432
+ this.version = parts.version;
433
+ }
434
+ toString() {
435
+ let result = "";
436
+ if (this.domain) {
437
+ result += this.domain + "/";
438
+ if (this.path) {
439
+ result += this.path + "/";
440
+ }
441
+ }
442
+ result += this.name;
443
+ if (this.type) {
444
+ result += "." + this.type;
445
+ }
446
+ if (this.version) {
447
+ result += "@" + this.version;
448
+ }
449
+ return result;
450
+ }
451
+ }
452
+ function isDomain2(str) {
453
+ if (str === "localhost")
454
+ return true;
455
+ return str.includes(".");
456
+ }
457
+ function parseRXL2(locator) {
458
+ let remaining = locator;
459
+ let version;
460
+ let type;
461
+ let domain;
462
+ let path;
463
+ let name;
464
+ const atIndex = remaining.indexOf("@");
465
+ if (atIndex !== -1) {
466
+ version = remaining.slice(atIndex + 1);
467
+ remaining = remaining.slice(0, atIndex);
468
+ }
469
+ const segments = remaining.split("/");
470
+ if (segments.length > 1 && isDomain2(segments[0])) {
471
+ domain = segments[0];
472
+ const lastSegment = segments[segments.length - 1];
473
+ if (segments.length > 2) {
474
+ path = segments.slice(1, -1).join("/");
475
+ }
476
+ remaining = lastSegment;
477
+ } else {
478
+ remaining = segments.join("/");
479
+ }
480
+ const dotIndex = remaining.lastIndexOf(".");
481
+ if (dotIndex !== -1) {
482
+ type = remaining.slice(dotIndex + 1);
483
+ name = remaining.slice(0, dotIndex);
484
+ } else {
485
+ name = remaining;
486
+ }
487
+ return new RXLImpl2({ domain, path, name, type, version });
488
+ }
489
+
490
+ class RXMImpl2 {
491
+ domain;
492
+ path;
493
+ name;
494
+ type;
495
+ version;
496
+ constructor(data) {
497
+ this.domain = data.domain;
498
+ this.path = data.path;
499
+ this.name = data.name;
500
+ this.type = data.type;
501
+ this.version = data.version;
502
+ }
503
+ toLocator() {
504
+ let result = this.domain + "/";
505
+ if (this.path) {
506
+ result += this.path + "/";
507
+ }
508
+ result += this.name;
509
+ result += "." + this.type;
510
+ result += "@" + this.version;
511
+ return result;
512
+ }
513
+ toJSON() {
514
+ const json = {
515
+ domain: this.domain,
516
+ name: this.name,
517
+ type: this.type,
518
+ version: this.version
519
+ };
520
+ if (this.path !== undefined) {
521
+ json.path = this.path;
522
+ }
523
+ return json;
524
+ }
525
+ }
526
+ function createRXM2(data) {
527
+ if (!data.domain) {
528
+ throw new ManifestError2("domain is required");
529
+ }
530
+ if (!data.name) {
531
+ throw new ManifestError2("name is required");
532
+ }
533
+ if (!data.type) {
534
+ throw new ManifestError2("type is required");
535
+ }
536
+ if (!data.version) {
537
+ throw new ManifestError2("version is required");
538
+ }
539
+ return new RXMImpl2({
540
+ domain: data.domain,
541
+ path: data.path,
542
+ name: data.name,
543
+ type: data.type,
544
+ version: data.version
545
+ });
546
+ }
547
+
548
+ class RXCImpl2 {
549
+ _stream;
550
+ _consumed = false;
551
+ constructor(stream) {
552
+ this._stream = stream;
553
+ }
554
+ get stream() {
555
+ if (this._consumed) {
556
+ throw new ContentError2("Content has already been consumed");
557
+ }
558
+ this._consumed = true;
559
+ return this._stream;
560
+ }
561
+ async text() {
562
+ const buffer = await this.buffer();
563
+ return buffer.toString("utf-8");
564
+ }
565
+ async buffer() {
566
+ if (this._consumed) {
567
+ throw new ContentError2("Content has already been consumed");
568
+ }
569
+ this._consumed = true;
570
+ const reader = this._stream.getReader();
571
+ const chunks = [];
572
+ while (true) {
573
+ const { done, value } = await reader.read();
574
+ if (done)
575
+ break;
576
+ chunks.push(value);
577
+ }
578
+ return Buffer.concat(chunks);
579
+ }
580
+ async json() {
581
+ const text = await this.text();
582
+ return JSON.parse(text);
583
+ }
584
+ }
585
+ function createRXC2(data) {
586
+ let stream;
587
+ if (typeof data === "string") {
588
+ const encoded = new TextEncoder().encode(data);
589
+ stream = new ReadableStream({
590
+ start(controller) {
591
+ controller.enqueue(encoded);
592
+ controller.close();
593
+ }
594
+ });
595
+ } else if (Buffer.isBuffer(data)) {
596
+ stream = new ReadableStream({
597
+ start(controller) {
598
+ controller.enqueue(new Uint8Array(data));
599
+ controller.close();
600
+ }
601
+ });
602
+ } else {
603
+ stream = data;
604
+ }
605
+ return new RXCImpl2(stream);
606
+ }
607
+ var resourceTypes2 = new Map;
608
+ var textSerializer2 = {
609
+ async serialize(rxr) {
610
+ const text = await rxr.content.text();
611
+ return Buffer.from(text, "utf-8");
612
+ },
613
+ async deserialize(data, manifest) {
614
+ const text = data.toString("utf-8");
615
+ return {
616
+ locator: parseRXL2(manifest.toLocator()),
617
+ manifest,
618
+ content: createRXC2(text)
619
+ };
620
+ }
621
+ };
622
+ var textResolver2 = {
623
+ async resolve(rxr) {
624
+ return rxr.content.text();
625
+ }
626
+ };
627
+ var textType2 = {
628
+ name: "text",
629
+ aliases: ["txt", "plaintext"],
630
+ description: "Plain text content",
631
+ serializer: textSerializer2,
632
+ resolver: textResolver2
633
+ };
634
+ var jsonSerializer2 = {
635
+ async serialize(rxr) {
636
+ const json = await rxr.content.json();
637
+ return Buffer.from(JSON.stringify(json, null, 2), "utf-8");
638
+ },
639
+ async deserialize(data, manifest) {
640
+ const text = data.toString("utf-8");
641
+ return {
642
+ locator: parseRXL2(manifest.toLocator()),
643
+ manifest,
644
+ content: createRXC2(text)
645
+ };
646
+ }
647
+ };
648
+ var jsonResolver2 = {
649
+ async resolve(rxr) {
650
+ return rxr.content.json();
651
+ }
652
+ };
653
+ var jsonType2 = {
654
+ name: "json",
655
+ aliases: ["config", "manifest"],
656
+ description: "JSON content",
657
+ serializer: jsonSerializer2,
658
+ resolver: jsonResolver2
659
+ };
660
+ var binarySerializer2 = {
661
+ async serialize(rxr) {
662
+ return rxr.content.buffer();
663
+ },
664
+ async deserialize(data, manifest) {
665
+ return {
666
+ locator: parseRXL2(manifest.toLocator()),
667
+ manifest,
668
+ content: createRXC2(data)
669
+ };
670
+ }
671
+ };
672
+ var binaryResolver2 = {
673
+ async resolve(rxr) {
674
+ return rxr.content.buffer();
675
+ }
676
+ };
677
+ var binaryType2 = {
678
+ name: "binary",
679
+ aliases: ["bin", "blob", "raw"],
680
+ description: "Binary content",
681
+ serializer: binarySerializer2,
682
+ resolver: binaryResolver2
683
+ };
684
+ var builtinTypes2 = [textType2, jsonType2, binaryType2];
685
+
686
+ class TypeHandlerChain2 {
687
+ handlers = new Map;
688
+ register(type) {
689
+ this.handlers.set(type.name, type);
690
+ if (type.aliases) {
691
+ for (const alias of type.aliases) {
692
+ this.handlers.set(alias, type);
693
+ }
694
+ }
695
+ }
696
+ registerAll(types) {
697
+ for (const type of types) {
698
+ this.register(type);
699
+ }
700
+ }
701
+ canHandle(typeName) {
702
+ return this.handlers.has(typeName);
703
+ }
704
+ getHandler(typeName) {
705
+ return this.handlers.get(typeName);
706
+ }
707
+ async serialize(rxr) {
708
+ const typeName = rxr.manifest.type;
709
+ const handler = this.handlers.get(typeName);
710
+ if (!handler) {
711
+ throw new ResourceTypeError2(`Unsupported resource type: ${typeName}`);
712
+ }
713
+ return handler.serializer.serialize(rxr);
714
+ }
715
+ async deserialize(data, manifest) {
716
+ const typeName = manifest.type;
717
+ const handler = this.handlers.get(typeName);
718
+ if (!handler) {
719
+ throw new ResourceTypeError2(`Unsupported resource type: ${typeName}`);
720
+ }
721
+ return handler.serializer.deserialize(data, manifest);
722
+ }
723
+ async resolve(rxr) {
724
+ const typeName = rxr.manifest.type;
725
+ const handler = this.handlers.get(typeName);
726
+ if (!handler) {
727
+ throw new ResourceTypeError2(`Unsupported resource type: ${typeName}`);
728
+ }
729
+ return handler.resolver.resolve(rxr);
730
+ }
731
+ }
732
+ function createTypeHandlerChain2(types) {
733
+ const chain = new TypeHandlerChain2;
734
+ if (types) {
735
+ chain.registerAll(types);
736
+ }
737
+ return chain;
738
+ }
739
+
740
+ class RegistryError extends ResourceXError2 {
741
+ constructor(message) {
742
+ super(message);
743
+ this.name = "RegistryError";
744
+ }
745
+ }
746
+
747
+ class ARPError extends Error {
748
+ constructor(message, options) {
749
+ super(message, options);
750
+ this.name = "ARPError";
751
+ }
752
+ }
753
+
754
+ class ParseError extends ARPError {
755
+ url;
756
+ constructor(message, url) {
757
+ super(message);
758
+ this.url = url;
759
+ this.name = "ParseError";
760
+ }
761
+ }
762
+
763
+ class TransportError extends ARPError {
764
+ transport;
765
+ constructor(message, transport, options) {
766
+ super(message, options);
767
+ this.transport = transport;
768
+ this.name = "TransportError";
769
+ }
770
+ }
771
+
772
+ class SemanticError extends ARPError {
773
+ semantic;
774
+ constructor(message, semantic, options) {
775
+ super(message, options);
776
+ this.semantic = semantic;
777
+ this.name = "SemanticError";
778
+ }
779
+ }
780
+
781
+ class ARL {
782
+ semantic;
783
+ transport;
784
+ location;
785
+ resolver;
786
+ constructor(semantic, transport, location, resolver) {
787
+ this.semantic = semantic;
788
+ this.transport = transport;
789
+ this.location = location;
790
+ this.resolver = resolver;
791
+ }
792
+ createContext() {
793
+ return {
794
+ url: this.toString(),
795
+ semantic: this.semantic,
796
+ transport: this.transport,
797
+ location: this.location,
798
+ timestamp: new Date
799
+ };
800
+ }
801
+ async resolve() {
802
+ const transport = this.resolver.getTransportHandler(this.transport);
803
+ const semantic = this.resolver.getSemanticHandler(this.semantic);
804
+ const context = this.createContext();
805
+ return semantic.resolve(transport, this.location, context);
806
+ }
807
+ async deposit(data) {
808
+ const transport = this.resolver.getTransportHandler(this.transport);
809
+ const semantic = this.resolver.getSemanticHandler(this.semantic);
810
+ const context = this.createContext();
811
+ if (!semantic.deposit) {
812
+ throw new SemanticError(`Semantic "${semantic.name}" does not support deposit operation`, this.semantic);
813
+ }
814
+ await semantic.deposit(transport, this.location, data, context);
815
+ }
816
+ async exists() {
817
+ const transport = this.resolver.getTransportHandler(this.transport);
818
+ const semantic = this.resolver.getSemanticHandler(this.semantic);
819
+ const context = this.createContext();
820
+ if (semantic.exists) {
821
+ return semantic.exists(transport, this.location, context);
822
+ }
823
+ if (transport.exists) {
824
+ return transport.exists(this.location);
825
+ }
826
+ try {
827
+ await transport.read(this.location);
828
+ return true;
829
+ } catch {
830
+ return false;
831
+ }
832
+ }
833
+ async delete() {
834
+ const transport = this.resolver.getTransportHandler(this.transport);
835
+ const semantic = this.resolver.getSemanticHandler(this.semantic);
836
+ const context = this.createContext();
837
+ if (semantic.delete) {
838
+ return semantic.delete(transport, this.location, context);
839
+ }
840
+ if (!transport.delete) {
841
+ throw new SemanticError(`Neither semantic "${semantic.name}" nor transport "${transport.name}" supports delete operation`, this.semantic);
842
+ }
843
+ await transport.delete(this.location);
844
+ }
845
+ toString() {
846
+ return `arp:${this.semantic}:${this.transport}://${this.location}`;
847
+ }
848
+ }
849
+
850
+ class FileTransportHandler {
851
+ name = "file";
852
+ capabilities = {
853
+ canRead: true,
854
+ canWrite: true,
855
+ canList: true,
856
+ canDelete: true,
857
+ canStat: true
858
+ };
859
+ resolvePath(location) {
860
+ return resolve(process.cwd(), location);
861
+ }
862
+ async read(location) {
863
+ const filePath = this.resolvePath(location);
864
+ try {
865
+ return await readFile(filePath);
866
+ } catch (error) {
867
+ const err = error;
868
+ throw new TransportError(`File read error: ${err.code} - ${filePath}`, this.name, {
869
+ cause: err
870
+ });
871
+ }
872
+ }
873
+ async write(location, content) {
874
+ const filePath = this.resolvePath(location);
875
+ try {
876
+ await mkdir(dirname(filePath), { recursive: true });
877
+ await writeFile(filePath, content);
878
+ } catch (error) {
879
+ const err = error;
880
+ throw new TransportError(`File write error: ${err.code} - ${filePath}`, this.name, {
881
+ cause: err
882
+ });
883
+ }
884
+ }
885
+ async list(location) {
886
+ const dirPath = this.resolvePath(location);
887
+ try {
888
+ return await readdir(dirPath);
889
+ } catch (error) {
890
+ const err = error;
891
+ throw new TransportError(`Directory list error: ${err.code} - ${dirPath}`, this.name, {
892
+ cause: err
893
+ });
894
+ }
895
+ }
896
+ async mkdir(location) {
897
+ const dirPath = this.resolvePath(location);
898
+ try {
899
+ await mkdir(dirPath, { recursive: true });
900
+ } catch (error) {
901
+ const err = error;
902
+ throw new TransportError(`Directory create error: ${err.code} - ${dirPath}`, this.name, {
903
+ cause: err
904
+ });
905
+ }
906
+ }
907
+ async exists(location) {
908
+ const filePath = this.resolvePath(location);
909
+ try {
910
+ await access(filePath);
911
+ return true;
912
+ } catch {
913
+ return false;
914
+ }
915
+ }
916
+ async stat(location) {
917
+ const filePath = this.resolvePath(location);
918
+ try {
919
+ const stats = await fsStat(filePath);
920
+ return {
921
+ size: stats.size,
922
+ modifiedAt: stats.mtime,
923
+ isDirectory: stats.isDirectory()
924
+ };
925
+ } catch (error) {
926
+ const err = error;
927
+ throw new TransportError(`File stat error: ${err.code} - ${filePath}`, this.name, {
928
+ cause: err
929
+ });
930
+ }
931
+ }
932
+ async delete(location) {
933
+ const filePath = this.resolvePath(location);
934
+ try {
935
+ await rm(filePath, { recursive: true });
936
+ } catch (error) {
937
+ const err = error;
938
+ throw new TransportError(`File delete error: ${err.code} - ${filePath}`, this.name, {
939
+ cause: err
940
+ });
941
+ }
942
+ }
943
+ }
944
+ var fileTransport = new FileTransportHandler;
945
+
946
+ class HttpTransportHandler {
947
+ name;
948
+ protocol;
949
+ capabilities = {
950
+ canRead: true,
951
+ canWrite: false,
952
+ canList: false,
953
+ canDelete: false,
954
+ canStat: false
955
+ };
956
+ constructor(protocol = "https") {
957
+ this.protocol = protocol;
958
+ this.name = protocol;
959
+ }
960
+ async read(location) {
961
+ const url = `${this.protocol}://${location}`;
962
+ try {
963
+ const response = await fetch(url);
964
+ if (!response.ok) {
965
+ throw new TransportError(`HTTP ${response.status}: ${response.statusText} - ${url}`, this.name);
966
+ }
967
+ const arrayBuffer = await response.arrayBuffer();
968
+ return Buffer.from(arrayBuffer);
969
+ } catch (error) {
970
+ if (error instanceof TransportError) {
971
+ throw error;
972
+ }
973
+ throw new TransportError(`Network error: ${url}`, this.name, {
974
+ cause: error
975
+ });
976
+ }
977
+ }
978
+ }
979
+ var httpsTransport = new HttpTransportHandler("https");
980
+ var httpTransport = new HttpTransportHandler("http");
981
+
982
+ class TextSemanticHandler {
983
+ name = "text";
984
+ async resolve(transport, location, context) {
985
+ const buffer = await transport.read(location);
986
+ const text = buffer.toString("utf-8");
987
+ const meta = {
988
+ url: context.url,
989
+ semantic: context.semantic,
990
+ transport: context.transport,
991
+ location: context.location,
992
+ size: buffer.length,
993
+ encoding: "utf-8",
994
+ mimeType: "text/plain",
995
+ resolvedAt: context.timestamp.toISOString()
996
+ };
997
+ return {
998
+ type: "text",
999
+ content: text,
1000
+ meta
1001
+ };
1002
+ }
1003
+ async deposit(transport, location, data, _context) {
1004
+ if (!transport.write) {
1005
+ throw new SemanticError(`Transport "${transport.name}" does not support write operation`, this.name);
1006
+ }
1007
+ const buffer = Buffer.from(data, "utf-8");
1008
+ await transport.write(location, buffer);
1009
+ }
1010
+ async exists(transport, location, _context) {
1011
+ if (transport.exists) {
1012
+ return transport.exists(location);
1013
+ }
1014
+ try {
1015
+ await transport.read(location);
1016
+ return true;
1017
+ } catch {
1018
+ return false;
1019
+ }
1020
+ }
1021
+ async delete(transport, location, _context) {
1022
+ if (!transport.delete) {
1023
+ throw new SemanticError(`Transport "${transport.name}" does not support delete operation`, this.name);
1024
+ }
1025
+ await transport.delete(location);
1026
+ }
1027
+ }
1028
+ var textSemantic = new TextSemanticHandler;
1029
+ function toBuffer(data) {
1030
+ if (Buffer.isBuffer(data)) {
1031
+ return data;
1032
+ }
1033
+ if (data instanceof Uint8Array) {
1034
+ return Buffer.from(data);
1035
+ }
1036
+ if (data instanceof ArrayBuffer) {
1037
+ return Buffer.from(data);
1038
+ }
1039
+ if (Array.isArray(data)) {
1040
+ return Buffer.from(data);
1041
+ }
1042
+ throw new SemanticError(`Unsupported binary input type`, "binary");
1043
+ }
1044
+
1045
+ class BinarySemanticHandler {
1046
+ name = "binary";
1047
+ async resolve(transport, location, context) {
1048
+ const buffer = await transport.read(location);
1049
+ const meta = {
1050
+ url: context.url,
1051
+ semantic: context.semantic,
1052
+ transport: context.transport,
1053
+ location: context.location,
1054
+ size: buffer.length,
1055
+ resolvedAt: context.timestamp.toISOString()
1056
+ };
1057
+ return {
1058
+ type: "binary",
1059
+ content: buffer,
1060
+ meta
1061
+ };
1062
+ }
1063
+ async deposit(transport, location, data, _context) {
1064
+ if (!transport.write) {
1065
+ throw new SemanticError(`Transport "${transport.name}" does not support write operation`, this.name);
1066
+ }
1067
+ const buffer = toBuffer(data);
1068
+ await transport.write(location, buffer);
1069
+ }
1070
+ async exists(transport, location, _context) {
1071
+ if (transport.exists) {
1072
+ return transport.exists(location);
1073
+ }
1074
+ try {
1075
+ await transport.read(location);
1076
+ return true;
1077
+ } catch {
1078
+ return false;
1079
+ }
1080
+ }
1081
+ async delete(transport, location, _context) {
1082
+ if (!transport.delete) {
1083
+ throw new SemanticError(`Transport "${transport.name}" does not support delete operation`, this.name);
1084
+ }
1085
+ await transport.delete(location);
1086
+ }
1087
+ }
1088
+ var binarySemantic = new BinarySemanticHandler;
1089
+
1090
+ class ARP {
1091
+ transports;
1092
+ semantics;
1093
+ constructor(config = {}) {
1094
+ this.transports = new Map;
1095
+ this.semantics = new Map;
1096
+ const defaultTransports = [fileTransport, httpTransport, httpsTransport];
1097
+ const defaultSemantics = [textSemantic, binarySemantic];
1098
+ for (const handler of defaultTransports) {
1099
+ this.transports.set(handler.name, handler);
1100
+ }
1101
+ for (const handler of defaultSemantics) {
1102
+ this.semantics.set(handler.name, handler);
1103
+ }
1104
+ if (config.transports) {
1105
+ for (const handler of config.transports) {
1106
+ this.transports.set(handler.name, handler);
1107
+ }
1108
+ }
1109
+ if (config.semantics) {
1110
+ for (const handler of config.semantics) {
1111
+ this.semantics.set(handler.name, handler);
1112
+ }
1113
+ }
1114
+ }
1115
+ registerTransport(handler) {
1116
+ this.transports.set(handler.name, handler);
1117
+ }
1118
+ registerSemantic(handler) {
1119
+ this.semantics.set(handler.name, handler);
1120
+ }
1121
+ getTransportHandler(name) {
1122
+ const handler = this.transports.get(name);
1123
+ if (!handler) {
1124
+ throw new TransportError(`Unsupported transport type: ${name}`, name);
1125
+ }
1126
+ return handler;
1127
+ }
1128
+ getSemanticHandler(name) {
1129
+ const handler = this.semantics.get(name);
1130
+ if (!handler) {
1131
+ throw new SemanticError(`Unsupported semantic type: ${name}`, name);
1132
+ }
1133
+ return handler;
1134
+ }
1135
+ parse(url) {
1136
+ if (!url.startsWith("arp:")) {
1137
+ throw new ParseError(`Invalid ARP URL: must start with "arp:"`, url);
1138
+ }
1139
+ const content = url.substring(4);
1140
+ const separatorIndex = content.indexOf("://");
1141
+ if (separatorIndex === -1) {
1142
+ throw new ParseError(`Invalid ARP URL: missing "://"`, url);
1143
+ }
1144
+ const typePart = content.substring(0, separatorIndex);
1145
+ const location = content.substring(separatorIndex + 3);
1146
+ const colonIndex = typePart.indexOf(":");
1147
+ if (colonIndex === -1) {
1148
+ throw new ParseError(`Invalid ARP URL: must have exactly 2 types (semantic:transport)`, url);
1149
+ }
1150
+ const semantic = typePart.substring(0, colonIndex);
1151
+ const transport = typePart.substring(colonIndex + 1);
1152
+ if (!semantic) {
1153
+ throw new ParseError(`Invalid ARP URL: semantic type cannot be empty`, url);
1154
+ }
1155
+ if (!transport) {
1156
+ throw new ParseError(`Invalid ARP URL: transport type cannot be empty`, url);
1157
+ }
1158
+ if (!location) {
1159
+ throw new ParseError(`Invalid ARP URL: location cannot be empty`, url);
1160
+ }
1161
+ this.getTransportHandler(transport);
1162
+ this.getSemanticHandler(semantic);
1163
+ return new ARL(semantic, transport, location, this);
1164
+ }
1165
+ }
1166
+ function createARP(config) {
1167
+ return new ARP(config);
1168
+ }
1169
+ var DEFAULT_PATH = `${homedir()}/.resourcex`;
1170
+
1171
+ class ARPRegistry {
1172
+ arp;
1173
+ basePath;
1174
+ typeChain;
1175
+ constructor(config) {
1176
+ this.arp = createARP();
1177
+ this.basePath = config?.path ?? DEFAULT_PATH;
1178
+ this.typeChain = createTypeHandlerChain2(config?.types ?? builtinTypes2);
1179
+ }
1180
+ buildUrl(locator, filename) {
1181
+ const rxl = typeof locator === "string" ? parseRXL2(locator) : locator;
1182
+ const domain = rxl.domain ?? "localhost";
1183
+ let path = `${this.basePath}/${domain}`;
1184
+ if (rxl.path) {
1185
+ path += `/${rxl.path}`;
1186
+ }
1187
+ const resourceDir = rxl.type ? `${rxl.name}.${rxl.type}@${rxl.version ?? "latest"}` : `${rxl.name}@${rxl.version ?? "latest"}`;
1188
+ return `arp:text:file://${path}/${resourceDir}/${filename}`;
1189
+ }
1190
+ async publish(_resource) {
1191
+ throw new RegistryError("Remote publish not implemented yet");
1192
+ }
1193
+ async link(resource) {
1194
+ const locator = resource.manifest.toLocator();
1195
+ const manifestUrl = this.buildUrl(locator, "manifest.json");
1196
+ const manifestArl = this.arp.parse(manifestUrl);
1197
+ await manifestArl.deposit(JSON.stringify(resource.manifest.toJSON(), null, 2));
1198
+ const contentUrl = this.buildUrl(locator, "content").replace("arp:text:", "arp:binary:");
1199
+ const contentArl = this.arp.parse(contentUrl);
1200
+ const serialized = await this.typeChain.serialize(resource);
1201
+ await contentArl.deposit(serialized);
1202
+ }
1203
+ async resolve(locator) {
1204
+ if (!await this.exists(locator)) {
1205
+ throw new RegistryError(`Resource not found: ${locator}`);
1206
+ }
1207
+ const manifestUrl = this.buildUrl(locator, "manifest.json");
1208
+ const manifestArl = this.arp.parse(manifestUrl);
1209
+ const manifestResult = await manifestArl.resolve();
1210
+ const manifestData = JSON.parse(manifestResult.content);
1211
+ const manifest = createRXM2(manifestData);
1212
+ const contentUrl = this.buildUrl(locator, "content").replace("arp:text:", "arp:binary:");
1213
+ const contentArl = this.arp.parse(contentUrl);
1214
+ const contentResult = await contentArl.resolve();
1215
+ const data = contentResult.content;
1216
+ return this.typeChain.deserialize(data, manifest);
1217
+ }
1218
+ async exists(locator) {
1219
+ const manifestUrl = this.buildUrl(locator, "manifest.json");
1220
+ const manifestArl = this.arp.parse(manifestUrl);
1221
+ return manifestArl.exists();
1222
+ }
1223
+ async delete(locator) {
1224
+ if (!await this.exists(locator)) {
1225
+ return;
1226
+ }
1227
+ const manifestUrl = this.buildUrl(locator, "manifest.json");
1228
+ const manifestArl = this.arp.parse(manifestUrl);
1229
+ await manifestArl.delete();
1230
+ const contentUrl = this.buildUrl(locator, "content").replace("arp:text:", "arp:binary:");
1231
+ const contentArl = this.arp.parse(contentUrl);
1232
+ await contentArl.delete();
1233
+ }
1234
+ async search(_query) {
1235
+ throw new RegistryError("Search not implemented yet");
1236
+ }
1237
+ }
1238
+ function createRegistry(config) {
1239
+ return new ARPRegistry(config);
1240
+ }
290
1241
 
291
1242
  // src/index.ts
292
- var VERSION = "0.7.0";
1243
+ var VERSION = "0.8.0";
293
1244
  export {
1245
+ textType,
294
1246
  parseRXL,
295
1247
  loadRXC,
1248
+ jsonType,
1249
+ getResourceType,
1250
+ defineResourceType,
1251
+ createTypeHandlerChain,
1252
+ createRegistry,
296
1253
  createRXM,
297
1254
  createRXC,
1255
+ clearResourceTypes,
1256
+ builtinTypes,
1257
+ binaryType,
298
1258
  VERSION,
1259
+ TypeHandlerChain,
299
1260
  ResourceXError,
1261
+ ResourceTypeError,
1262
+ RegistryError,
300
1263
  ManifestError,
301
1264
  LocatorError,
302
- ContentError
1265
+ ContentError,
1266
+ ARPRegistry
303
1267
  };
304
1268
 
305
- //# debugId=5FA549FBFF6E3EDA64756E2164756E21
1269
+ //# debugId=96615F86A216DCEF64756E2164756E21
package/dist/index.js.map CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../core/dist/index.js", "../src/index.ts"],
3
+ "sources": ["../../core/dist/index.js", "../../registry/dist/index.js", "../src/index.ts"],
4
4
  "sourcesContent": [
5
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}\nexport {\n textType,\n parseRXL,\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 ContentError\n};\n\n//# debugId=B9B3CCB31ADA300B64756E2164756E21\n",
6
- "/**\n * resourcexjs - AI Resource Management Protocol\n *\n * ResourceX is like npm for AI resources (prompts, tools, agents, etc.)\n *\n * @example\n * ```typescript\n * import { parseRXL, createRXM } from \"resourcexjs\";\n *\n * const rxl = parseRXL(\"deepractice.ai/sean/assistant.prompt@1.0.0\");\n * const rxm = createRXM({ domain: \"deepractice.ai\", name: \"assistant\", type: \"prompt\", version: \"1.0.0\" });\n * ```\n *\n * For low-level ARP protocol access:\n * ```typescript\n * import { createARP } from \"resourcexjs/arp\";\n * ```\n *\n * @packageDocumentation\n */\n\n// Errors\nexport { ResourceXError, LocatorError, ManifestError, ContentError } from \"@resourcexjs/core\";\n\n// RXL - ResourceX Locator\nexport type { RXL } from \"@resourcexjs/core\";\nexport { parseRXL } from \"@resourcexjs/core\";\n\n// RXM - ResourceX Manifest\nexport type { RXM, ManifestData } from \"@resourcexjs/core\";\nexport { createRXM } from \"@resourcexjs/core\";\n\n// RXC - ResourceX Content\nexport type { RXC } from \"@resourcexjs/core\";\nexport { createRXC, loadRXC } from \"@resourcexjs/core\";\n\n// TODO: Implement ResourceX protocol\n// - RXR (Resource)\n\ndeclare const __VERSION__: string | undefined;\nexport const VERSION: string = typeof __VERSION__ !== \"undefined\" ? __VERSION__ : \"0.0.0-dev\";\n"
6
+ "// ../core/dist/index.js\nclass ResourceXError extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"ResourceXError\";\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\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\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\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}\nvar resourceTypes = new Map;\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\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\n// src/errors.ts\nclass RegistryError extends ResourceXError {\n constructor(message) {\n super(message);\n this.name = \"RegistryError\";\n }\n}\n// src/ARPRegistry.ts\nimport { homedir } from \"node:os\";\n\n// ../arp/dist/index.js\nimport { readFile, writeFile, readdir, mkdir, rm, access, stat as fsStat } from \"node:fs/promises\";\nimport { resolve, dirname } from \"node:path\";\n\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\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\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\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\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;\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\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/ARPRegistry.ts\nvar DEFAULT_PATH = `${homedir()}/.resourcex`;\n\nclass ARPRegistry {\n arp;\n basePath;\n typeChain;\n constructor(config) {\n this.arp = createARP();\n this.basePath = config?.path ?? DEFAULT_PATH;\n this.typeChain = createTypeHandlerChain(config?.types ?? builtinTypes);\n }\n buildUrl(locator, filename) {\n const rxl = typeof locator === \"string\" ? parseRXL(locator) : locator;\n const domain = rxl.domain ?? \"localhost\";\n let path = `${this.basePath}/${domain}`;\n if (rxl.path) {\n path += `/${rxl.path}`;\n }\n const resourceDir = rxl.type ? `${rxl.name}.${rxl.type}@${rxl.version ?? \"latest\"}` : `${rxl.name}@${rxl.version ?? \"latest\"}`;\n return `arp:text:file://${path}/${resourceDir}/${filename}`;\n }\n async publish(_resource) {\n throw new RegistryError(\"Remote publish not implemented yet\");\n }\n async link(resource) {\n const locator = resource.manifest.toLocator();\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 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 async resolve(locator) {\n if (!await this.exists(locator)) {\n throw new RegistryError(`Resource not found: ${locator}`);\n }\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);\n const manifest = createRXM(manifestData);\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;\n return this.typeChain.deserialize(data, manifest);\n }\n async exists(locator) {\n const manifestUrl = this.buildUrl(locator, \"manifest.json\");\n const manifestArl = this.arp.parse(manifestUrl);\n return manifestArl.exists();\n }\n async delete(locator) {\n if (!await this.exists(locator)) {\n return;\n }\n const manifestUrl = this.buildUrl(locator, \"manifest.json\");\n const manifestArl = this.arp.parse(manifestUrl);\n await manifestArl.delete();\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 async search(_query) {\n throw new RegistryError(\"Search not implemented yet\");\n }\n}\n// src/createRegistry.ts\nfunction createRegistry(config) {\n return new ARPRegistry(config);\n}\nexport {\n createRegistry,\n RegistryError,\n ARPRegistry\n};\n\n//# debugId=53960965C6094C1064756E2164756E21\n",
7
+ "/**\n * resourcexjs - AI Resource Management Protocol\n *\n * ResourceX is like npm for AI resources (prompts, tools, agents, etc.)\n *\n * @example\n * ```typescript\n * import { parseRXL, createRXM, createRegistry } from \"resourcexjs\";\n *\n * const rxl = parseRXL(\"deepractice.ai/sean/assistant.prompt@1.0.0\");\n * const rxm = createRXM({ domain: \"deepractice.ai\", name: \"assistant\", type: \"prompt\", version: \"1.0.0\" });\n * const registry = createRegistry();\n * ```\n *\n * For low-level ARP protocol access:\n * ```typescript\n * import { createARP } from \"resourcexjs/arp\";\n * ```\n *\n * @packageDocumentation\n */\n\n// ============================================\n// Errors\n// ============================================\nexport {\n ResourceXError,\n LocatorError,\n ManifestError,\n ContentError,\n ResourceTypeError,\n} from \"@resourcexjs/core\";\n\nexport { RegistryError } from \"@resourcexjs/registry\";\n\n// ============================================\n// RXL - ResourceX Locator\n// ============================================\nexport type { RXL } from \"@resourcexjs/core\";\nexport { parseRXL } from \"@resourcexjs/core\";\n\n// ============================================\n// RXM - ResourceX Manifest\n// ============================================\nexport type { RXM, ManifestData } from \"@resourcexjs/core\";\nexport { createRXM } from \"@resourcexjs/core\";\n\n// ============================================\n// RXC - ResourceX Content\n// ============================================\nexport type { RXC } from \"@resourcexjs/core\";\nexport { createRXC, loadRXC } from \"@resourcexjs/core\";\n\n// ============================================\n// RXR - ResourceX Resource\n// ============================================\nexport type { RXR, ResourceType, ResourceSerializer, ResourceResolver } from \"@resourcexjs/core\";\n\n// ============================================\n// Resource Type System\n// ============================================\nexport { defineResourceType, getResourceType, clearResourceTypes } from \"@resourcexjs/core\";\nexport { textType, jsonType, binaryType, builtinTypes } from \"@resourcexjs/core\";\nexport { TypeHandlerChain, createTypeHandlerChain } from \"@resourcexjs/core\";\n\n// ============================================\n// Registry\n// ============================================\nexport type { Registry, RegistryConfig } from \"@resourcexjs/registry\";\nexport { createRegistry, ARPRegistry } from \"@resourcexjs/registry\";\n\n// ============================================\n// Version\n// ============================================\ndeclare const __VERSION__: string | undefined;\nexport const VERSION: string = typeof __VERSION__ !== \"undefined\" ? __VERSION__ : \"0.0.0-dev\";\n"
7
8
  ],
8
- "mappings": "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",
9
- "debugId": "5FA549FBFF6E3EDA64756E2164756E21",
9
+ "mappings": "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",
10
+ "debugId": "96615F86A216DCEF64756E2164756E21",
10
11
  "names": []
11
12
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "resourcexjs",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "ResourceX - AI Resource Management Protocol",
5
5
  "keywords": [
6
6
  "resourcex",
@@ -43,8 +43,9 @@
43
43
  "clean": "rm -rf dist"
44
44
  },
45
45
  "dependencies": {
46
- "@resourcexjs/arp": "^0.7.0",
47
- "@resourcexjs/core": "^0.7.0"
46
+ "@resourcexjs/arp": "^0.8.0",
47
+ "@resourcexjs/core": "^0.8.0",
48
+ "@resourcexjs/registry": "^0.8.0"
48
49
  },
49
50
  "devDependencies": {},
50
51
  "publishConfig": {