resourcexjs 1.7.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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(params) {\n return {\n url: this.toString(),\n semantic: this.semantic,\n transport: this.transport,\n location: this.location,\n timestamp: new Date,\n params\n };\n }\n async resolve(params) {\n const transport = this.resolver.getTransportHandler(this.transport);\n const semantic = this.resolver.getSemanticHandler(this.semantic);\n const context = this.createContext(params);\n return semantic.resolve(transport, this.location, context);\n }\n async deposit(data, params) {\n const transport = this.resolver.getTransportHandler(this.transport);\n const semantic = this.resolver.getSemanticHandler(this.semantic);\n const context = this.createContext(params);\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 return transport.exists(this.location);\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 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 } from \"node:fs/promises\";\nimport { resolve, dirname, join } from \"node:path\";\nclass FileTransportHandler {\n name = \"file\";\n resolvePath(location) {\n return resolve(process.cwd(), location);\n }\n async get(location, params) {\n const filePath = this.resolvePath(location);\n try {\n const stats = await stat(filePath);\n if (stats.isDirectory()) {\n return this.getDirectory(filePath, stats, params);\n } else {\n return this.getFile(filePath, stats);\n }\n } catch (error) {\n const err = error;\n throw new TransportError(`File get error: ${err.code} - ${filePath}`, this.name, {\n cause: err\n });\n }\n }\n async getFile(filePath, stats) {\n const content = await readFile(filePath);\n return {\n content,\n metadata: {\n type: \"file\",\n size: Number(stats.size),\n modifiedAt: stats.mtime\n }\n };\n }\n async getDirectory(dirPath, stats, params) {\n const recursive = params?.recursive === \"true\";\n const pattern = params?.pattern;\n let entries;\n if (recursive) {\n entries = await this.listRecursive(dirPath, dirPath);\n } else {\n entries = await readdir(dirPath);\n }\n if (pattern) {\n entries = this.filterByPattern(entries, pattern);\n }\n const content = Buffer.from(JSON.stringify(entries));\n return {\n content,\n metadata: {\n type: \"directory\",\n modifiedAt: stats.mtime\n }\n };\n }\n async listRecursive(basePath, currentPath) {\n const entries = await readdir(currentPath, { withFileTypes: true });\n const results = [];\n for (const entry of entries) {\n const fullPath = join(currentPath, entry.name);\n const relativePath = fullPath.substring(basePath.length + 1);\n if (entry.isDirectory()) {\n const subEntries = await this.listRecursive(basePath, fullPath);\n results.push(...subEntries);\n } else {\n results.push(relativePath);\n }\n }\n return results;\n }\n filterByPattern(entries, pattern) {\n const regexPattern = pattern.replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\").replace(/\\?/g, \".\");\n const regex = new RegExp(`^${regexPattern}$`);\n return entries.filter((entry) => {\n const filename = entry.split(\"/\").pop() || entry;\n return regex.test(filename);\n });\n }\n async set(location, content, _params) {\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 set error: ${err.code} - ${filePath}`, 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 delete(location) {\n const filePath = this.resolvePath(location);\n try {\n await rm(filePath, { recursive: true });\n } catch (error) {\n const err = error;\n if (err.code === \"ENOENT\") {\n return;\n }\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 constructor(protocol = \"https\") {\n this.protocol = protocol;\n this.name = protocol;\n }\n async get(location, params) {\n const url = this.buildUrl(location, params);\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 const content = Buffer.from(arrayBuffer);\n const contentType = response.headers.get(\"content-type\");\n const contentLength = response.headers.get(\"content-length\");\n const lastModified = response.headers.get(\"last-modified\");\n return {\n content,\n metadata: {\n type: \"file\",\n size: contentLength ? parseInt(contentLength, 10) : content.length,\n modifiedAt: lastModified ? new Date(lastModified) : undefined,\n contentType\n }\n };\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 buildUrl(location, params) {\n const url = new URL(`${this.protocol}://${location}`);\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n url.searchParams.set(key, value);\n }\n }\n return url.toString();\n }\n async set(_location, _content, _params) {\n throw new TransportError(\"HTTP transport is read-only, set not supported\", this.name);\n }\n async exists(location) {\n const url = `${this.protocol}://${location}`;\n try {\n const response = await fetch(url, { method: \"HEAD\" });\n return response.ok;\n } catch {\n return false;\n }\n }\n async delete(_location) {\n throw new TransportError(\"HTTP transport is read-only, delete not supported\", this.name);\n }\n}\nvar httpsTransport = new HttpTransportHandler(\"https\");\nvar httpTransport = new HttpTransportHandler(\"http\");\n// ../registry/dist/index.js\nimport { gzip, gunzip } from \"node:zlib\";\nimport { promisify } from \"node:util\";\nimport { homedir } from \"node:os\";\nimport { join as join2 } from \"node:path\";\nimport { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2, rm as rm2, stat as stat2, readdir as readdir2 } from \"node:fs/promises\";\nimport { gzip as gzip2, gunzip as gunzip2 } from \"node:zlib\";\nimport { promisify as promisify2 } from \"node:util\";\nfunction isRemoteConfig(config) {\n return config !== undefined && \"endpoint\" in config;\n}\n\nclass ResourceXError extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"ResourceXError\";\n }\n}\n\nclass ManifestError extends ResourceXError {\n constructor(message) {\n super(message);\n this.name = \"ManifestError\";\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}\nvar BLOCK_SIZE = 512;\nvar ZERO_BLOCK = new Uint8Array(BLOCK_SIZE);\nvar EMPTY = new Uint8Array(0);\nvar encoder = new TextEncoder;\nvar decoder = new TextDecoder;\nvar EOF_BUFFER = new Uint8Array(BLOCK_SIZE * 2);\nvar gzipAsync = promisify(gzip);\nvar gunzipAsync = promisify(gunzip);\n\nclass RegistryError extends ResourceXError {\n constructor(message) {\n super(message);\n this.name = \"RegistryError\";\n }\n}\n\nclass ResourceXError2 extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"ResourceXError\";\n }\n}\n\nclass ContentError extends ResourceXError2 {\n constructor(message) {\n super(message);\n this.name = \"ContentError\";\n }\n}\n\nclass RXLImpl2 {\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 isDomain2(str) {\n if (str === \"localhost\")\n return true;\n return str.includes(\".\");\n}\nfunction parseRXL2(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 && isDomain2(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 RXLImpl2({ domain, path, name, type, version });\n}\nvar BLOCK_SIZE2 = 512;\nvar BLOCK_SIZE_MASK = 511;\nvar DEFAULT_FILE_MODE = 420;\nvar DEFAULT_DIR_MODE = 493;\nvar USTAR_NAME_OFFSET = 0;\nvar USTAR_NAME_SIZE = 100;\nvar USTAR_MODE_OFFSET = 100;\nvar USTAR_MODE_SIZE = 8;\nvar USTAR_UID_OFFSET = 108;\nvar USTAR_UID_SIZE = 8;\nvar USTAR_GID_OFFSET = 116;\nvar USTAR_GID_SIZE = 8;\nvar USTAR_SIZE_OFFSET = 124;\nvar USTAR_SIZE_SIZE = 12;\nvar USTAR_MTIME_OFFSET = 136;\nvar USTAR_MTIME_SIZE = 12;\nvar USTAR_CHECKSUM_OFFSET = 148;\nvar USTAR_CHECKSUM_SIZE = 8;\nvar USTAR_TYPEFLAG_OFFSET = 156;\nvar USTAR_TYPEFLAG_SIZE = 1;\nvar USTAR_LINKNAME_OFFSET = 157;\nvar USTAR_LINKNAME_SIZE = 100;\nvar USTAR_MAGIC_OFFSET = 257;\nvar USTAR_MAGIC_SIZE = 6;\nvar USTAR_VERSION_OFFSET = 263;\nvar USTAR_VERSION_SIZE = 2;\nvar USTAR_UNAME_OFFSET = 265;\nvar USTAR_UNAME_SIZE = 32;\nvar USTAR_GNAME_OFFSET = 297;\nvar USTAR_GNAME_SIZE = 32;\nvar USTAR_PREFIX_OFFSET = 345;\nvar USTAR_PREFIX_SIZE = 155;\nvar USTAR_VERSION = \"00\";\nvar USTAR_MAX_UID_GID = 2097151;\nvar USTAR_MAX_SIZE = 8589934591;\nvar FILE = \"file\";\nvar LINK = \"link\";\nvar SYMLINK = \"symlink\";\nvar DIRECTORY = \"directory\";\nvar TYPEFLAG = {\n file: \"0\",\n link: \"1\",\n symlink: \"2\",\n \"character-device\": \"3\",\n \"block-device\": \"4\",\n directory: \"5\",\n fifo: \"6\",\n \"pax-header\": \"x\",\n \"pax-global-header\": \"g\",\n \"gnu-long-name\": \"L\",\n \"gnu-long-link-name\": \"K\"\n};\nvar FLAGTYPE = {\n \"0\": FILE,\n \"1\": LINK,\n \"2\": SYMLINK,\n \"3\": \"character-device\",\n \"4\": \"block-device\",\n \"5\": DIRECTORY,\n \"6\": \"fifo\",\n x: \"pax-header\",\n g: \"pax-global-header\",\n L: \"gnu-long-name\",\n K: \"gnu-long-link-name\"\n};\nvar ZERO_BLOCK2 = new Uint8Array(BLOCK_SIZE2);\nvar EMPTY2 = new Uint8Array(0);\nvar encoder2 = new TextEncoder;\nvar decoder2 = new TextDecoder;\nfunction writeString(view, offset, size, value) {\n if (value)\n encoder2.encodeInto(value, view.subarray(offset, offset + size));\n}\nfunction writeOctal(view, offset, size, value) {\n if (value === undefined)\n return;\n const octalString = value.toString(8).padStart(size - 1, \"0\");\n encoder2.encodeInto(octalString, view.subarray(offset, offset + size - 1));\n}\nfunction readString(view, offset, size) {\n const end = view.indexOf(0, offset);\n const sliceEnd = end === -1 || end > offset + size ? offset + size : end;\n return decoder2.decode(view.subarray(offset, sliceEnd));\n}\nfunction readOctal(view, offset, size) {\n let value = 0;\n const end = offset + size;\n for (let i = offset;i < end; i++) {\n const charCode = view[i];\n if (charCode === 0)\n break;\n if (charCode === 32)\n continue;\n value = value * 8 + (charCode - 48);\n }\n return value;\n}\nfunction readNumeric(view, offset, size) {\n if (view[offset] & 128) {\n let result = 0;\n result = view[offset] & 127;\n for (let i = 1;i < size; i++)\n result = result * 256 + view[offset + i];\n if (!Number.isSafeInteger(result))\n throw new Error(\"TAR number too large\");\n return result;\n }\n return readOctal(view, offset, size);\n}\nvar isBodyless = (header) => header.type === DIRECTORY || header.type === SYMLINK || header.type === LINK;\nasync function normalizeBody(body) {\n if (body === null || body === undefined)\n return EMPTY2;\n if (body instanceof Uint8Array)\n return body;\n if (typeof body === \"string\")\n return encoder2.encode(body);\n if (body instanceof ArrayBuffer)\n return new Uint8Array(body);\n if (body instanceof Blob)\n return new Uint8Array(await body.arrayBuffer());\n throw new TypeError(\"Unsupported content type for entry body.\");\n}\nfunction transformHeader(header, options) {\n const { strip, filter, map } = options;\n if (!strip && !filter && !map)\n return header;\n const h = { ...header };\n if (strip && strip > 0) {\n const components = h.name.split(\"/\").filter(Boolean);\n if (strip >= components.length)\n return null;\n const newName = components.slice(strip).join(\"/\");\n h.name = h.type === DIRECTORY && !newName.endsWith(\"/\") ? `${newName}/` : newName;\n if (h.linkname?.startsWith(\"/\")) {\n const linkComponents = h.linkname.split(\"/\").filter(Boolean);\n h.linkname = strip >= linkComponents.length ? \"/\" : `/${linkComponents.slice(strip).join(\"/\")}`;\n }\n }\n if (filter?.(h) === false)\n return null;\n const result = map ? map(h) : h;\n if (result && (!result.name || !result.name.trim() || result.name === \".\" || result.name === \"/\"))\n return null;\n return result;\n}\nvar CHECKSUM_SPACE = 32;\nvar ASCII_ZERO = 48;\nfunction validateChecksum(block) {\n const stored = readOctal(block, USTAR_CHECKSUM_OFFSET, USTAR_CHECKSUM_SIZE);\n let sum = 0;\n for (let i = 0;i < block.length; i++)\n if (i >= USTAR_CHECKSUM_OFFSET && i < USTAR_CHECKSUM_OFFSET + USTAR_CHECKSUM_SIZE)\n sum += CHECKSUM_SPACE;\n else\n sum += block[i];\n return stored === sum;\n}\nfunction writeChecksum(block) {\n block.fill(CHECKSUM_SPACE, USTAR_CHECKSUM_OFFSET, USTAR_CHECKSUM_OFFSET + USTAR_CHECKSUM_SIZE);\n let checksum = 0;\n for (const byte of block)\n checksum += byte;\n for (let i = USTAR_CHECKSUM_OFFSET + 6 - 1;i >= USTAR_CHECKSUM_OFFSET; i--) {\n block[i] = (checksum & 7) + ASCII_ZERO;\n checksum >>= 3;\n }\n block[USTAR_CHECKSUM_OFFSET + 6] = 0;\n block[USTAR_CHECKSUM_OFFSET + 7] = CHECKSUM_SPACE;\n}\nfunction generatePax(header) {\n const paxRecords = {};\n if (header.name.length > USTAR_NAME_SIZE) {\n if (findUstarSplit(header.name) === null)\n paxRecords.path = header.name;\n }\n if (header.linkname && header.linkname.length > USTAR_NAME_SIZE)\n paxRecords.linkpath = header.linkname;\n if (header.uname && header.uname.length > USTAR_UNAME_SIZE)\n paxRecords.uname = header.uname;\n if (header.gname && header.gname.length > USTAR_GNAME_SIZE)\n paxRecords.gname = header.gname;\n if (header.uid != null && header.uid > USTAR_MAX_UID_GID)\n paxRecords.uid = String(header.uid);\n if (header.gid != null && header.gid > USTAR_MAX_UID_GID)\n paxRecords.gid = String(header.gid);\n if (header.size != null && header.size > USTAR_MAX_SIZE)\n paxRecords.size = String(header.size);\n if (header.pax)\n Object.assign(paxRecords, header.pax);\n const paxEntries = Object.entries(paxRecords);\n if (paxEntries.length === 0)\n return null;\n const paxBody = encoder2.encode(paxEntries.map(([key, value]) => {\n const record = `${key}=${value}\n`;\n const partLength = encoder2.encode(record).length + 1;\n let totalLength = partLength + String(partLength).length;\n totalLength = partLength + String(totalLength).length;\n return `${totalLength} ${record}`;\n }).join(\"\"));\n return {\n paxHeader: createTarHeader({\n name: decoder2.decode(encoder2.encode(`PaxHeader/${header.name}`).slice(0, 100)),\n size: paxBody.length,\n type: \"pax-header\",\n mode: 420,\n mtime: header.mtime,\n uname: header.uname,\n gname: header.gname,\n uid: header.uid,\n gid: header.gid\n }),\n paxBody\n };\n}\nfunction findUstarSplit(path) {\n if (path.length <= USTAR_NAME_SIZE)\n return null;\n const minSlashIndex = path.length - USTAR_NAME_SIZE - 1;\n const slashIndex = path.lastIndexOf(\"/\", USTAR_PREFIX_SIZE);\n if (slashIndex > 0 && slashIndex >= minSlashIndex)\n return {\n prefix: path.slice(0, slashIndex),\n name: path.slice(slashIndex + 1)\n };\n return null;\n}\nfunction createTarHeader(header) {\n const view = new Uint8Array(BLOCK_SIZE2);\n const size = isBodyless(header) ? 0 : header.size ?? 0;\n let name = header.name;\n let prefix = \"\";\n if (!header.pax?.path) {\n const split = findUstarSplit(name);\n if (split) {\n name = split.name;\n prefix = split.prefix;\n }\n }\n writeString(view, USTAR_NAME_OFFSET, USTAR_NAME_SIZE, name);\n writeOctal(view, USTAR_MODE_OFFSET, USTAR_MODE_SIZE, header.mode ?? (header.type === DIRECTORY ? DEFAULT_DIR_MODE : DEFAULT_FILE_MODE));\n writeOctal(view, USTAR_UID_OFFSET, USTAR_UID_SIZE, header.uid ?? 0);\n writeOctal(view, USTAR_GID_OFFSET, USTAR_GID_SIZE, header.gid ?? 0);\n writeOctal(view, USTAR_SIZE_OFFSET, USTAR_SIZE_SIZE, size);\n writeOctal(view, USTAR_MTIME_OFFSET, USTAR_MTIME_SIZE, Math.floor((header.mtime?.getTime() ?? Date.now()) / 1000));\n writeString(view, USTAR_TYPEFLAG_OFFSET, USTAR_TYPEFLAG_SIZE, TYPEFLAG[header.type ?? FILE]);\n writeString(view, USTAR_LINKNAME_OFFSET, USTAR_LINKNAME_SIZE, header.linkname);\n writeString(view, USTAR_MAGIC_OFFSET, USTAR_MAGIC_SIZE, \"ustar\\x00\");\n writeString(view, USTAR_VERSION_OFFSET, USTAR_VERSION_SIZE, USTAR_VERSION);\n writeString(view, USTAR_UNAME_OFFSET, USTAR_UNAME_SIZE, header.uname);\n writeString(view, USTAR_GNAME_OFFSET, USTAR_GNAME_SIZE, header.gname);\n writeString(view, USTAR_PREFIX_OFFSET, USTAR_PREFIX_SIZE, prefix);\n writeChecksum(view);\n return view;\n}\nfunction parseUstarHeader(block, strict) {\n if (strict && !validateChecksum(block))\n throw new Error(\"Invalid tar header checksum.\");\n const typeflag = readString(block, USTAR_TYPEFLAG_OFFSET, USTAR_TYPEFLAG_SIZE);\n const header = {\n name: readString(block, USTAR_NAME_OFFSET, USTAR_NAME_SIZE),\n mode: readOctal(block, USTAR_MODE_OFFSET, USTAR_MODE_SIZE),\n uid: readNumeric(block, USTAR_UID_OFFSET, USTAR_UID_SIZE),\n gid: readNumeric(block, USTAR_GID_OFFSET, USTAR_GID_SIZE),\n size: readNumeric(block, USTAR_SIZE_OFFSET, USTAR_SIZE_SIZE),\n mtime: /* @__PURE__ */ new Date(readNumeric(block, USTAR_MTIME_OFFSET, USTAR_MTIME_SIZE) * 1000),\n type: FLAGTYPE[typeflag] || FILE,\n linkname: readString(block, USTAR_LINKNAME_OFFSET, USTAR_LINKNAME_SIZE)\n };\n const magic = readString(block, USTAR_MAGIC_OFFSET, USTAR_MAGIC_SIZE);\n if (magic.trim() === \"ustar\") {\n header.uname = readString(block, USTAR_UNAME_OFFSET, USTAR_UNAME_SIZE);\n header.gname = readString(block, USTAR_GNAME_OFFSET, USTAR_GNAME_SIZE);\n }\n if (magic === \"ustar\")\n header.prefix = readString(block, USTAR_PREFIX_OFFSET, USTAR_PREFIX_SIZE);\n return header;\n}\nvar PAX_MAPPING = {\n path: [\"name\", (v) => v],\n linkpath: [\"linkname\", (v) => v],\n size: [\"size\", (v) => parseInt(v, 10)],\n mtime: [\"mtime\", parseFloat],\n uid: [\"uid\", (v) => parseInt(v, 10)],\n gid: [\"gid\", (v) => parseInt(v, 10)],\n uname: [\"uname\", (v) => v],\n gname: [\"gname\", (v) => v]\n};\nfunction parsePax(buffer) {\n const decoder$1 = new TextDecoder(\"utf-8\");\n const overrides = {};\n const pax = {};\n let offset = 0;\n while (offset < buffer.length) {\n const spaceIndex = buffer.indexOf(32, offset);\n if (spaceIndex === -1)\n break;\n const length = parseInt(decoder$1.decode(buffer.subarray(offset, spaceIndex)), 10);\n if (Number.isNaN(length) || length === 0)\n break;\n const recordEnd = offset + length;\n const [key, value] = decoder$1.decode(buffer.subarray(spaceIndex + 1, recordEnd - 1)).split(\"=\", 2);\n if (key && value !== undefined) {\n pax[key] = value;\n const mapping = PAX_MAPPING[key];\n if (mapping) {\n const [targetKey, parser] = mapping;\n const parsedValue = parser(value);\n if (typeof parsedValue === \"string\" || !Number.isNaN(parsedValue))\n overrides[targetKey] = parsedValue;\n }\n }\n offset = recordEnd;\n }\n if (Object.keys(pax).length > 0)\n overrides.pax = pax;\n return overrides;\n}\nfunction applyOverrides(header, overrides) {\n if (overrides.name !== undefined)\n header.name = overrides.name;\n if (overrides.linkname !== undefined)\n header.linkname = overrides.linkname;\n if (overrides.size !== undefined)\n header.size = overrides.size;\n if (overrides.mtime !== undefined)\n header.mtime = /* @__PURE__ */ new Date(overrides.mtime * 1000);\n if (overrides.uid !== undefined)\n header.uid = overrides.uid;\n if (overrides.gid !== undefined)\n header.gid = overrides.gid;\n if (overrides.uname !== undefined)\n header.uname = overrides.uname;\n if (overrides.gname !== undefined)\n header.gname = overrides.gname;\n if (overrides.pax)\n header.pax = Object.assign({}, header.pax ?? {}, overrides.pax);\n}\nfunction getMetaParser(type) {\n switch (type) {\n case \"pax-global-header\":\n case \"pax-header\":\n return parsePax;\n case \"gnu-long-name\":\n return (data) => ({ name: readString(data, 0, data.length) });\n case \"gnu-long-link-name\":\n return (data) => ({ linkname: readString(data, 0, data.length) });\n default:\n return;\n }\n}\nfunction getHeaderBlocks(header) {\n const base = createTarHeader(header);\n const pax = generatePax(header);\n if (!pax)\n return [base];\n const paxPadding = -pax.paxBody.length & BLOCK_SIZE_MASK;\n const paddingBlocks = paxPadding > 0 ? [ZERO_BLOCK2.subarray(0, paxPadding)] : [];\n return [\n pax.paxHeader,\n pax.paxBody,\n ...paddingBlocks,\n base\n ];\n}\nvar EOF_BUFFER2 = new Uint8Array(BLOCK_SIZE2 * 2);\nfunction createTarPacker(onData, onError, onFinalize) {\n let currentHeader = null;\n let bytesWritten = 0;\n let finalized = false;\n return {\n add(header) {\n if (finalized) {\n const error = /* @__PURE__ */ new Error(\"No new tar entries after finalize.\");\n onError(error);\n throw error;\n }\n if (currentHeader !== null) {\n const error = /* @__PURE__ */ new Error(\"Previous entry must be completed before adding a new one\");\n onError(error);\n throw error;\n }\n try {\n const size = isBodyless(header) ? 0 : header.size ?? 0;\n const headerBlocks = getHeaderBlocks({\n ...header,\n size\n });\n for (const block of headerBlocks)\n onData(block);\n currentHeader = {\n ...header,\n size\n };\n bytesWritten = 0;\n } catch (error) {\n onError(error);\n }\n },\n write(chunk) {\n if (!currentHeader) {\n const error = /* @__PURE__ */ new Error(\"No active tar entry.\");\n onError(error);\n throw error;\n }\n if (finalized) {\n const error = /* @__PURE__ */ new Error(\"Cannot write data after finalize.\");\n onError(error);\n throw error;\n }\n const newTotal = bytesWritten + chunk.length;\n if (newTotal > currentHeader.size) {\n const error = /* @__PURE__ */ new Error(`\"${currentHeader.name}\" exceeds given size of ${currentHeader.size} bytes.`);\n onError(error);\n throw error;\n }\n try {\n bytesWritten = newTotal;\n onData(chunk);\n } catch (error) {\n onError(error);\n }\n },\n endEntry() {\n if (!currentHeader) {\n const error = /* @__PURE__ */ new Error(\"No active entry to end.\");\n onError(error);\n throw error;\n }\n if (finalized) {\n const error = /* @__PURE__ */ new Error(\"Cannot end entry after finalize.\");\n onError(error);\n throw error;\n }\n try {\n if (bytesWritten !== currentHeader.size) {\n const error = /* @__PURE__ */ new Error(`Size mismatch for \"${currentHeader.name}\".`);\n onError(error);\n throw error;\n }\n const paddingSize = -currentHeader.size & BLOCK_SIZE_MASK;\n if (paddingSize > 0)\n onData(new Uint8Array(paddingSize));\n currentHeader = null;\n bytesWritten = 0;\n } catch (error) {\n onError(error);\n throw error;\n }\n },\n finalize() {\n if (finalized) {\n const error = /* @__PURE__ */ new Error(\"Archive has already been finalized\");\n onError(error);\n throw error;\n }\n if (currentHeader !== null) {\n const error = /* @__PURE__ */ new Error(\"Cannot finalize while an entry is still active\");\n onError(error);\n throw error;\n }\n try {\n onData(EOF_BUFFER2);\n finalized = true;\n if (onFinalize)\n onFinalize();\n } catch (error) {\n onError(error);\n }\n }\n };\n}\nvar INITIAL_CAPACITY = 256;\nfunction createChunkQueue() {\n let chunks = new Array(INITIAL_CAPACITY);\n let capacityMask = chunks.length - 1;\n let head = 0;\n let tail = 0;\n let totalAvailable = 0;\n const consumeFromHead = (count) => {\n const chunk = chunks[head];\n if (count === chunk.length) {\n chunks[head] = EMPTY2;\n head = head + 1 & capacityMask;\n } else\n chunks[head] = chunk.subarray(count);\n totalAvailable -= count;\n if (totalAvailable === 0 && chunks.length > INITIAL_CAPACITY) {\n chunks = new Array(INITIAL_CAPACITY);\n capacityMask = INITIAL_CAPACITY - 1;\n head = 0;\n tail = 0;\n }\n };\n function pull(bytes, callback) {\n if (callback) {\n let fed = 0;\n let remaining$1 = Math.min(bytes, totalAvailable);\n while (remaining$1 > 0) {\n const chunk = chunks[head];\n const toFeed = Math.min(remaining$1, chunk.length);\n const segment = toFeed === chunk.length ? chunk : chunk.subarray(0, toFeed);\n consumeFromHead(toFeed);\n remaining$1 -= toFeed;\n fed += toFeed;\n if (!callback(segment))\n break;\n }\n return fed;\n }\n if (totalAvailable < bytes)\n return null;\n if (bytes === 0)\n return EMPTY2;\n const firstChunk = chunks[head];\n if (firstChunk.length >= bytes) {\n const view = firstChunk.length === bytes ? firstChunk : firstChunk.subarray(0, bytes);\n consumeFromHead(bytes);\n return view;\n }\n const result = new Uint8Array(bytes);\n let copied = 0;\n let remaining = bytes;\n while (remaining > 0) {\n const chunk = chunks[head];\n const toCopy = Math.min(remaining, chunk.length);\n result.set(toCopy === chunk.length ? chunk : chunk.subarray(0, toCopy), copied);\n copied += toCopy;\n remaining -= toCopy;\n consumeFromHead(toCopy);\n }\n return result;\n }\n return {\n push: (chunk) => {\n if (chunk.length === 0)\n return;\n let nextTail = tail + 1 & capacityMask;\n if (nextTail === head) {\n const oldLen = chunks.length;\n const newLen = oldLen * 2;\n const newChunks = new Array(newLen);\n const count = tail - head + oldLen & oldLen - 1;\n if (head < tail)\n for (let i = 0;i < count; i++)\n newChunks[i] = chunks[head + i];\n else if (count > 0) {\n const firstPart = oldLen - head;\n for (let i = 0;i < firstPart; i++)\n newChunks[i] = chunks[head + i];\n for (let i = 0;i < tail; i++)\n newChunks[firstPart + i] = chunks[i];\n }\n chunks = newChunks;\n capacityMask = newLen - 1;\n head = 0;\n tail = count;\n nextTail = tail + 1 & capacityMask;\n }\n chunks[tail] = chunk;\n tail = nextTail;\n totalAvailable += chunk.length;\n },\n available: () => totalAvailable,\n peek: (bytes) => {\n if (totalAvailable < bytes)\n return null;\n if (bytes === 0)\n return EMPTY2;\n const firstChunk = chunks[head];\n if (firstChunk.length >= bytes)\n return firstChunk.length === bytes ? firstChunk : firstChunk.subarray(0, bytes);\n const result = new Uint8Array(bytes);\n let copied = 0;\n let index = head;\n while (copied < bytes) {\n const chunk = chunks[index];\n const toCopy = Math.min(bytes - copied, chunk.length);\n if (toCopy === chunk.length)\n result.set(chunk, copied);\n else\n result.set(chunk.subarray(0, toCopy), copied);\n copied += toCopy;\n index = index + 1 & capacityMask;\n }\n return result;\n },\n discard: (bytes) => {\n if (bytes > totalAvailable)\n throw new Error(\"Too many bytes consumed\");\n if (bytes === 0)\n return;\n let remaining = bytes;\n while (remaining > 0) {\n const chunk = chunks[head];\n const toConsume = Math.min(remaining, chunk.length);\n consumeFromHead(toConsume);\n remaining -= toConsume;\n }\n },\n pull\n };\n}\nvar STATE_HEADER = 0;\nvar STATE_BODY = 1;\nvar truncateErr = /* @__PURE__ */ new Error(\"Tar archive is truncated.\");\nfunction createUnpacker(options = {}) {\n const strict = options.strict ?? false;\n const { available, peek, push, discard, pull } = createChunkQueue();\n let state = STATE_HEADER;\n let ended = false;\n let done = false;\n let eof = false;\n let currentEntry = null;\n const paxGlobals = {};\n let nextEntryOverrides = {};\n const unpacker = {\n isEntryActive: () => state === STATE_BODY,\n isBodyComplete: () => !currentEntry || currentEntry.remaining === 0,\n write(chunk) {\n if (ended)\n throw new Error(\"Archive already ended.\");\n push(chunk);\n },\n end() {\n ended = true;\n },\n readHeader() {\n if (state !== STATE_HEADER)\n throw new Error(\"Cannot read header while an entry is active\");\n if (done)\n return;\n while (!done) {\n if (available() < BLOCK_SIZE2) {\n if (ended) {\n if (available() > 0 && strict)\n throw truncateErr;\n done = true;\n return;\n }\n return null;\n }\n const headerBlock = peek(BLOCK_SIZE2);\n if (isZeroBlock(headerBlock)) {\n if (available() < BLOCK_SIZE2 * 2) {\n if (ended) {\n if (strict)\n throw truncateErr;\n done = true;\n return;\n }\n return null;\n }\n if (isZeroBlock(peek(BLOCK_SIZE2 * 2).subarray(BLOCK_SIZE2))) {\n discard(BLOCK_SIZE2 * 2);\n done = true;\n eof = true;\n return;\n }\n if (strict)\n throw new Error(\"Invalid tar header.\");\n discard(BLOCK_SIZE2);\n continue;\n }\n let internalHeader;\n try {\n internalHeader = parseUstarHeader(headerBlock, strict);\n } catch (err) {\n if (strict)\n throw err;\n discard(BLOCK_SIZE2);\n continue;\n }\n const metaParser = getMetaParser(internalHeader.type);\n if (metaParser) {\n const paddedSize = internalHeader.size + BLOCK_SIZE_MASK & ~BLOCK_SIZE_MASK;\n if (available() < BLOCK_SIZE2 + paddedSize) {\n if (ended && strict)\n throw truncateErr;\n return null;\n }\n discard(BLOCK_SIZE2);\n const overrides = metaParser(pull(paddedSize).subarray(0, internalHeader.size));\n const target = internalHeader.type === \"pax-global-header\" ? paxGlobals : nextEntryOverrides;\n for (const key in overrides)\n target[key] = overrides[key];\n continue;\n }\n discard(BLOCK_SIZE2);\n const header = internalHeader;\n if (internalHeader.prefix)\n header.name = `${internalHeader.prefix}/${header.name}`;\n applyOverrides(header, paxGlobals);\n applyOverrides(header, nextEntryOverrides);\n nextEntryOverrides = {};\n currentEntry = {\n header,\n remaining: header.size,\n padding: -header.size & BLOCK_SIZE_MASK\n };\n state = STATE_BODY;\n return header;\n }\n },\n streamBody(callback) {\n if (state !== STATE_BODY || !currentEntry || currentEntry.remaining === 0)\n return 0;\n const bytesToFeed = Math.min(currentEntry.remaining, available());\n if (bytesToFeed === 0)\n return 0;\n const fed = pull(bytesToFeed, callback);\n currentEntry.remaining -= fed;\n return fed;\n },\n skipPadding() {\n if (state !== STATE_BODY || !currentEntry)\n return true;\n if (currentEntry.remaining > 0)\n throw new Error(\"Body not fully consumed\");\n if (available() < currentEntry.padding)\n return false;\n discard(currentEntry.padding);\n currentEntry = null;\n state = STATE_HEADER;\n return true;\n },\n skipEntry() {\n if (state !== STATE_BODY || !currentEntry)\n return true;\n const toDiscard = Math.min(currentEntry.remaining, available());\n if (toDiscard > 0) {\n discard(toDiscard);\n currentEntry.remaining -= toDiscard;\n }\n if (currentEntry.remaining > 0)\n return false;\n return unpacker.skipPadding();\n },\n validateEOF() {\n if (strict) {\n if (!eof)\n throw truncateErr;\n if (available() > 0) {\n if (pull(available()).some((byte) => byte !== 0))\n throw new Error(\"Invalid EOF.\");\n }\n }\n }\n };\n return unpacker;\n}\nfunction isZeroBlock(block) {\n if (block.byteOffset % 8 === 0) {\n const view = new BigUint64Array(block.buffer, block.byteOffset, block.length / 8);\n for (let i = 0;i < view.length; i++)\n if (view[i] !== 0n)\n return false;\n return true;\n }\n for (let i = 0;i < block.length; i++)\n if (block[i] !== 0)\n return false;\n return true;\n}\nfunction createTarPacker2() {\n let streamController;\n let packer;\n return {\n readable: new ReadableStream({ start(controller) {\n streamController = controller;\n packer = createTarPacker(controller.enqueue.bind(controller), controller.error.bind(controller), controller.close.bind(controller));\n } }),\n controller: {\n add(header) {\n const bodyless = isBodyless(header);\n const h = { ...header };\n if (bodyless)\n h.size = 0;\n packer.add(h);\n if (bodyless)\n packer.endEntry();\n return new WritableStream({\n write(chunk) {\n packer.write(chunk);\n },\n close() {\n if (!bodyless)\n packer.endEntry();\n },\n abort(reason) {\n streamController.error(reason);\n }\n });\n },\n finalize() {\n packer.finalize();\n },\n error(err) {\n streamController.error(err);\n }\n }\n };\n}\nasync function streamToBuffer(stream) {\n const chunks = [];\n const reader = stream.getReader();\n let totalLength = 0;\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done)\n break;\n chunks.push(value);\n totalLength += value.length;\n }\n const result = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.length;\n }\n return result;\n } finally {\n reader.releaseLock();\n }\n}\nvar drain = (stream) => stream.pipeTo(new WritableStream);\nfunction createTarDecoder(options = {}) {\n const unpacker = createUnpacker(options);\n let bodyController = null;\n let pumping = false;\n const pump = (controller) => {\n if (pumping)\n return;\n pumping = true;\n try {\n while (true)\n if (unpacker.isEntryActive()) {\n if (bodyController) {\n if (unpacker.streamBody((c) => (bodyController.enqueue(c), true)) === 0 && !unpacker.isBodyComplete())\n break;\n } else if (!unpacker.skipEntry())\n break;\n if (unpacker.isBodyComplete()) {\n try {\n bodyController?.close();\n } catch {}\n bodyController = null;\n if (!unpacker.skipPadding())\n break;\n }\n } else {\n const header = unpacker.readHeader();\n if (header === null || header === undefined)\n break;\n controller.enqueue({\n header,\n body: new ReadableStream({\n start(c) {\n if (header.size === 0)\n c.close();\n else\n bodyController = c;\n },\n pull: () => pump(controller),\n cancel() {\n bodyController = null;\n pump(controller);\n }\n })\n });\n }\n } catch (error) {\n try {\n bodyController?.error(error);\n } catch {}\n bodyController = null;\n throw error;\n } finally {\n pumping = false;\n }\n };\n return new TransformStream({\n transform(chunk, controller) {\n try {\n unpacker.write(chunk);\n pump(controller);\n } catch (error) {\n try {\n bodyController?.error(error);\n } catch {}\n throw error;\n }\n },\n flush(controller) {\n try {\n unpacker.end();\n pump(controller);\n unpacker.validateEOF();\n if (unpacker.isEntryActive() && !unpacker.isBodyComplete())\n try {\n bodyController?.close();\n } catch {}\n } catch (error) {\n try {\n bodyController?.error(error);\n } catch {}\n throw error;\n }\n }\n }, undefined, { highWaterMark: 1 });\n}\nasync function packTar(entries) {\n const { readable, controller } = createTarPacker2();\n await (async () => {\n for (const entry of entries) {\n const entryStream = controller.add(entry.header);\n const body = \"body\" in entry ? entry.body : entry.data;\n if (!body) {\n await entryStream.close();\n continue;\n }\n if (body instanceof ReadableStream)\n await body.pipeTo(entryStream);\n else if (body instanceof Blob)\n await body.stream().pipeTo(entryStream);\n else\n try {\n const chunk = await normalizeBody(body);\n if (chunk.length > 0) {\n const writer = entryStream.getWriter();\n await writer.write(chunk);\n await writer.close();\n } else\n await entryStream.close();\n } catch {\n throw new TypeError(`Unsupported content type for entry \"${entry.header.name}\".`);\n }\n }\n })().then(() => controller.finalize()).catch((err) => controller.error(err));\n return new Uint8Array(await streamToBuffer(readable));\n}\nasync function unpackTar(archive, options = {}) {\n const sourceStream = archive instanceof ReadableStream ? archive : new ReadableStream({ start(controller) {\n controller.enqueue(archive instanceof Uint8Array ? archive : new Uint8Array(archive));\n controller.close();\n } });\n const results = [];\n const entryStream = sourceStream.pipeThrough(createTarDecoder(options));\n for await (const entry of entryStream) {\n let processedHeader;\n try {\n processedHeader = transformHeader(entry.header, options);\n } catch (error) {\n await entry.body.cancel();\n throw error;\n }\n if (processedHeader === null) {\n await drain(entry.body);\n continue;\n }\n if (isBodyless(processedHeader)) {\n await drain(entry.body);\n results.push({ header: processedHeader });\n } else\n results.push({\n header: processedHeader,\n data: await streamToBuffer(entry.body)\n });\n }\n return results;\n}\nvar gzipAsync2 = promisify2(gzip2);\nvar gunzipAsync2 = promisify2(gunzip2);\n\nclass RXCImpl {\n _buffer;\n _filesCache = null;\n constructor(buffer) {\n this._buffer = buffer;\n }\n get stream() {\n const buffer = this._buffer;\n return new ReadableStream({\n start(controller) {\n controller.enqueue(new Uint8Array(buffer));\n controller.close();\n }\n });\n }\n async buffer() {\n return this._buffer;\n }\n async file(path) {\n const filesMap = await this.files();\n const content = filesMap.get(path);\n if (!content) {\n throw new ContentError(`file not found: ${path}`);\n }\n return content;\n }\n async files() {\n if (this._filesCache) {\n return this._filesCache;\n }\n const tarBuffer = await gunzipAsync2(this._buffer);\n const entries = await unpackTar(tarBuffer);\n const filesMap = new Map;\n for (const entry of entries) {\n if ((entry.header.type === \"file\" || entry.header.type === undefined) && entry.data) {\n filesMap.set(entry.header.name, Buffer.from(entry.data));\n }\n }\n this._filesCache = filesMap;\n return filesMap;\n }\n}\nfunction isArchiveInput(input) {\n return \"archive\" in input && Buffer.isBuffer(input.archive);\n}\nasync function createRXC(input) {\n if (isArchiveInput(input)) {\n return new RXCImpl(input.archive);\n }\n const entries = Object.entries(input).map(([name, content]) => {\n const body = typeof content === \"string\" ? content : content instanceof Uint8Array ? content : new Uint8Array(content);\n const size = typeof content === \"string\" ? Buffer.byteLength(content) : content.length;\n return {\n header: { name, size, type: \"file\" },\n body\n };\n });\n const tarBuffer = await packTar(entries);\n const gzipBuffer = await gzipAsync2(Buffer.from(tarBuffer));\n return new RXCImpl(gzipBuffer);\n}\n\nclass ResourceTypeError extends ResourceXError2 {\n constructor(message) {\n super(message);\n this.name = \"ResourceTypeError\";\n }\n}\nvar textSerializer = {\n async serialize(rxr) {\n return rxr.content.buffer();\n },\n async deserialize(data, manifest) {\n return {\n locator: parseRXL2(manifest.toLocator()),\n manifest,\n content: await createRXC({ archive: data })\n };\n }\n};\nvar textResolver = {\n schema: undefined,\n async resolve(rxr) {\n return {\n resource: rxr,\n schema: undefined,\n execute: async () => {\n const buffer = await rxr.content.file(\"content\");\n return buffer.toString(\"utf-8\");\n }\n };\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 return rxr.content.buffer();\n },\n async deserialize(data, manifest) {\n return {\n locator: parseRXL2(manifest.toLocator()),\n manifest,\n content: await createRXC({ archive: data })\n };\n }\n};\nvar jsonResolver = {\n schema: undefined,\n async resolve(rxr) {\n return {\n resource: rxr,\n schema: undefined,\n execute: async () => {\n const buffer = await rxr.content.file(\"content\");\n return JSON.parse(buffer.toString(\"utf-8\"));\n }\n };\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: parseRXL2(manifest.toLocator()),\n manifest,\n content: await createRXC({ archive: data })\n };\n }\n};\nvar binaryResolver = {\n schema: undefined,\n async resolve(rxr) {\n return {\n resource: rxr,\n schema: undefined,\n execute: async () => {\n return rxr.content.file(\"content\");\n }\n };\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 constructor() {\n for (const type of builtinTypes) {\n this.registerBuiltin(type);\n }\n }\n static create() {\n return new TypeHandlerChain;\n }\n registerBuiltin(type) {\n this.handlers.set(type.name, type);\n if (type.aliases) {\n for (const alias of type.aliases) {\n this.handlers.set(alias, type);\n }\n }\n }\n register(type) {\n if (this.handlers.has(type.name)) {\n throw new ResourceTypeError(`Type '${type.name}' is already registered`);\n }\n this.handlers.set(type.name, type);\n if (type.aliases) {\n for (const alias of type.aliases) {\n if (this.handlers.has(alias)) {\n throw new ResourceTypeError(`Alias '${alias}' conflicts with existing type or alias`);\n }\n this.handlers.set(alias, type);\n }\n }\n }\n canHandle(typeName) {\n return this.handlers.has(typeName);\n }\n getHandler(typeName) {\n return this.handlers.get(typeName);\n }\n getSupportedTypes() {\n return Array.from(this.handlers.keys());\n }\n async serialize(rxr) {\n const typeName = rxr.manifest.type;\n const handler = this.handlers.get(typeName);\n if (!handler) {\n throw new ResourceTypeError(`Unsupported resource type: ${typeName}`);\n }\n return handler.serializer.serialize(rxr);\n }\n async deserialize(data, manifest) {\n const typeName = manifest.type;\n const handler = this.handlers.get(typeName);\n if (!handler) {\n throw new ResourceTypeError(`Unsupported resource type: ${typeName}`);\n }\n return handler.serializer.deserialize(data, manifest);\n }\n async resolve(rxr) {\n const typeName = rxr.manifest.type;\n const handler = this.handlers.get(typeName);\n if (!handler) {\n throw new ResourceTypeError(`Unsupported resource type: ${typeName}`);\n }\n return handler.resolver.resolve(rxr);\n }\n clearExtensions() {\n this.handlers.clear();\n for (const type of builtinTypes) {\n this.registerBuiltin(type);\n }\n }\n}\nvar DEFAULT_PATH = `${homedir()}/.resourcex`;\n\nclass LocalRegistry {\n basePath;\n typeHandler;\n constructor(config) {\n this.basePath = config?.path ?? DEFAULT_PATH;\n this.typeHandler = TypeHandlerChain.create();\n if (config?.types) {\n for (const type of config.types) {\n this.typeHandler.register(type);\n }\n }\n }\n supportType(type) {\n this.typeHandler.register(type);\n }\n buildPath(locator) {\n const rxl = typeof locator === \"string\" ? parseRXL(locator) : locator;\n const domain = rxl.domain ?? \"localhost\";\n const version = rxl.version ?? \"latest\";\n let path = join2(this.basePath, domain);\n if (rxl.path) {\n path = join2(path, rxl.path);\n }\n const resourceName = rxl.type ? `${rxl.name}.${rxl.type}` : rxl.name;\n return join2(path, resourceName, version);\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 resourcePath = this.buildPath(locator);\n await mkdir2(resourcePath, { recursive: true });\n const manifestPath = join2(resourcePath, \"manifest.json\");\n await writeFile2(manifestPath, JSON.stringify(resource.manifest.toJSON(), null, 2), \"utf-8\");\n const contentPath = join2(resourcePath, \"content.tar.gz\");\n const serialized = await this.typeHandler.serialize(resource);\n await writeFile2(contentPath, serialized);\n }\n async get(locator) {\n if (!await this.exists(locator)) {\n throw new RegistryError(`Resource not found: ${locator}`);\n }\n const resourcePath = this.buildPath(locator);\n const manifestPath = join2(resourcePath, \"manifest.json\");\n const manifestContent = await readFile2(manifestPath, \"utf-8\");\n const manifestData = JSON.parse(manifestContent);\n const manifest = createRXM(manifestData);\n const contentPath = join2(resourcePath, \"content.tar.gz\");\n const data = await readFile2(contentPath);\n return this.typeHandler.deserialize(data, manifest);\n }\n async resolve(locator) {\n const rxr = await this.get(locator);\n return this.typeHandler.resolve(rxr);\n }\n async exists(locator) {\n const resourcePath = this.buildPath(locator);\n const manifestPath = join2(resourcePath, \"manifest.json\");\n try {\n await stat2(manifestPath);\n return true;\n } catch {\n return false;\n }\n }\n async delete(locator) {\n if (!await this.exists(locator)) {\n return;\n }\n const resourcePath = this.buildPath(locator);\n await rm2(resourcePath, { recursive: true, force: true });\n }\n async search(options) {\n const { query, limit, offset = 0 } = options ?? {};\n let entries;\n try {\n entries = await this.listRecursive(this.basePath);\n } catch {\n return [];\n }\n const locators = [];\n for (const entry of entries) {\n if (!entry.endsWith(\"manifest.json\")) {\n continue;\n }\n const relativePath = entry.slice(this.basePath.length + 1);\n const rxl = this.parseEntryToRXL(relativePath);\n if (rxl) {\n locators.push(rxl);\n }\n }\n let filtered = locators;\n if (query) {\n const lowerQuery = query.toLowerCase();\n filtered = locators.filter((rxl) => {\n const searchText = `${rxl.domain ?? \"\"} ${rxl.path ?? \"\"} ${rxl.name} ${rxl.type ?? \"\"}`.toLowerCase();\n return searchText.includes(lowerQuery);\n });\n }\n let result = filtered.slice(offset);\n if (limit !== undefined) {\n result = result.slice(0, limit);\n }\n return result;\n }\n async listRecursive(dir) {\n const results = [];\n try {\n const entries = await readdir2(dir, { withFileTypes: true });\n for (const entry of entries) {\n const fullPath = join2(dir, entry.name);\n if (entry.isDirectory()) {\n const subEntries = await this.listRecursive(fullPath);\n results.push(...subEntries);\n } else {\n results.push(fullPath);\n }\n }\n } catch {}\n return results;\n }\n parseEntryToRXL(entry) {\n const dirPath = entry.replace(/[/\\\\]manifest\\.json$/, \"\");\n const parts = dirPath.split(/[/\\\\]/);\n if (parts.length < 3) {\n return null;\n }\n const version = parts.pop();\n const nameTypePart = parts.pop();\n const domain = parts.shift();\n const path = parts.length > 0 ? parts.join(\"/\") : undefined;\n const dotIndex = nameTypePart.lastIndexOf(\".\");\n let name;\n let type;\n if (dotIndex !== -1) {\n name = nameTypePart.substring(0, dotIndex);\n type = nameTypePart.substring(dotIndex + 1);\n } else {\n name = nameTypePart;\n type = undefined;\n }\n let locatorStr = domain;\n if (path) {\n locatorStr += `/${path}`;\n }\n locatorStr += `/${name}`;\n if (type) {\n locatorStr += `.${type}`;\n }\n locatorStr += `@${version}`;\n try {\n return parseRXL(locatorStr);\n } catch {\n return null;\n }\n }\n}\n\nclass RemoteRegistry {\n endpoint;\n typeHandler;\n constructor(config) {\n this.endpoint = config.endpoint.replace(/\\/$/, \"\");\n this.typeHandler = TypeHandlerChain.create();\n }\n supportType(type) {\n this.typeHandler.register(type);\n }\n async publish(_resource) {\n throw new RegistryError(\"Remote registry publish not implemented yet\");\n }\n async link(_resource) {\n throw new RegistryError(\"Cannot link to remote registry - use local registry for linking\");\n }\n async get(locator) {\n const manifestUrl = `${this.endpoint}/resource?locator=${encodeURIComponent(locator)}`;\n const manifestResponse = await fetch(manifestUrl);\n if (!manifestResponse.ok) {\n if (manifestResponse.status === 404) {\n throw new RegistryError(`Resource not found: ${locator}`);\n }\n throw new RegistryError(`Failed to fetch resource: ${manifestResponse.statusText}`);\n }\n const manifestData = await manifestResponse.json();\n const manifest = createRXM(manifestData);\n const contentUrl = `${this.endpoint}/content?locator=${encodeURIComponent(locator)}`;\n const contentResponse = await fetch(contentUrl);\n if (!contentResponse.ok) {\n throw new RegistryError(`Failed to fetch content: ${contentResponse.statusText}`);\n }\n const contentBuffer = Buffer.from(await contentResponse.arrayBuffer());\n return this.typeHandler.deserialize(contentBuffer, manifest);\n }\n async resolve(locator) {\n const rxr = await this.get(locator);\n return this.typeHandler.resolve(rxr);\n }\n async exists(locator) {\n const url = `${this.endpoint}/exists?locator=${encodeURIComponent(locator)}`;\n const response = await fetch(url);\n if (!response.ok) {\n return false;\n }\n const data = await response.json();\n return data.exists === true;\n }\n async delete(_locator) {\n throw new RegistryError(\"Cannot delete from remote registry - use local registry for deletion\");\n }\n async search(options) {\n const params = new URLSearchParams;\n if (options?.query)\n params.set(\"query\", options.query);\n if (options?.limit !== undefined)\n params.set(\"limit\", String(options.limit));\n if (options?.offset !== undefined)\n params.set(\"offset\", String(options.offset));\n const url = `${this.endpoint}/search?${params.toString()}`;\n const response = await fetch(url);\n if (!response.ok) {\n throw new RegistryError(`Search failed: ${response.statusText}`);\n }\n const data = await response.json();\n return (data.results || []).map((locator) => parseRXL(locator));\n }\n}\nasync function discoverRegistry(domain) {\n const wellKnownUrl = `https://${domain}/.well-known/resourcex`;\n try {\n const response = await fetch(wellKnownUrl);\n if (!response.ok) {\n throw new RegistryError(`Well-known discovery failed for ${domain}: ${response.statusText}`);\n }\n const data = await response.json();\n return data.registry;\n } catch (error) {\n if (error instanceof RegistryError) {\n throw error;\n }\n throw new RegistryError(`Failed to discover registry for ${domain}: ${error.message}`);\n }\n}\nfunction createRegistry(config) {\n if (isRemoteConfig(config)) {\n return new RemoteRegistry(config);\n }\n return new LocalRegistry(config);\n}\n\n// src/transport/rxr.ts\nvar registryCache = new Map;\n\nclass RxrTransport {\n registry;\n name = \"rxr\";\n constructor(registry) {\n this.registry = registry;\n }\n async get(location, _params) {\n const { domain, rxl, internalPath } = this.parseLocation(location);\n const registry = await this.getRegistry(domain);\n const rxr = await registry.get(rxl);\n const files = await rxr.content.files();\n const file = files.get(internalPath);\n if (!file) {\n throw new TransportError(`File not found in resource: ${internalPath}`, this.name);\n }\n return {\n content: file,\n metadata: { type: \"file\", size: file.length }\n };\n }\n async set(_location, _content, _params) {\n throw new TransportError(\"RXR transport is read-only\", this.name);\n }\n async exists(location) {\n try {\n const { domain, rxl, internalPath } = this.parseLocation(location);\n const registry = await this.getRegistry(domain);\n const rxr = await registry.get(rxl);\n const files = await rxr.content.files();\n return files.has(internalPath);\n } catch {\n return false;\n }\n }\n async delete(_location) {\n throw new TransportError(\"RXR transport is read-only\", this.name);\n }\n async getRegistry(domain) {\n if (this.registry) {\n return this.registry;\n }\n if (registryCache.has(domain)) {\n return registryCache.get(domain);\n }\n let registry;\n if (domain === \"localhost\") {\n registry = createRegistry();\n } else {\n try {\n const endpoint = await discoverRegistry(domain);\n registry = createRegistry({ endpoint });\n } catch (error) {\n throw new TransportError(`Failed to discover registry for domain ${domain}: ${error.message}`, this.name);\n }\n }\n registryCache.set(domain, registry);\n return registry;\n }\n parseLocation(location) {\n const atIndex = location.indexOf(\"@\");\n if (atIndex === -1) {\n throw new TransportError(`Invalid RXR location (missing @version): ${location}`, this.name);\n }\n const slashAfterVersion = location.indexOf(\"/\", atIndex);\n if (slashAfterVersion === -1) {\n throw new TransportError(`Invalid RXR location (missing internal path): ${location}`, this.name);\n }\n const firstSlash = location.indexOf(\"/\");\n const domain = firstSlash > 0 ? location.slice(0, firstSlash) : \"localhost\";\n return {\n domain,\n rxl: location.slice(0, slashAfterVersion),\n internalPath: location.slice(slashAfterVersion + 1)\n };\n }\n}\nfunction clearRegistryCache() {\n registryCache.clear();\n}\n// src/semantic/text.ts\nclass TextSemanticHandler {\n name = \"text\";\n async resolve(transport, location, context) {\n const result = await transport.get(location, context.params);\n if (result.metadata?.type === \"directory\") {\n const meta2 = {\n url: context.url,\n semantic: context.semantic,\n transport: context.transport,\n location: context.location,\n size: result.content.length,\n encoding: \"utf-8\",\n mimeType: \"application/json\",\n resolvedAt: context.timestamp.toISOString(),\n type: \"directory\"\n };\n return {\n type: \"text\",\n content: result.content.toString(\"utf-8\"),\n meta: meta2\n };\n }\n const text = result.content.toString(\"utf-8\");\n const meta = {\n url: context.url,\n semantic: context.semantic,\n transport: context.transport,\n location: context.location,\n size: result.metadata?.size ?? result.content.length,\n encoding: \"utf-8\",\n mimeType: \"text/plain\",\n resolvedAt: context.timestamp.toISOString(),\n type: \"file\"\n };\n return {\n type: \"text\",\n content: text,\n meta\n };\n }\n async deposit(transport, location, data, context) {\n const buffer = Buffer.from(data, \"utf-8\");\n try {\n await transport.set(location, buffer, context.params);\n } catch (error) {\n throw new SemanticError(`Failed to deposit text to \"${location}\": ${error.message}`, this.name, { cause: error });\n }\n }\n async exists(transport, location, _context) {\n return transport.exists(location);\n }\n async delete(transport, location, _context) {\n try {\n await transport.delete(location);\n } catch (error) {\n throw new SemanticError(`Failed to delete \"${location}\": ${error.message}`, this.name, { cause: error });\n }\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 result = await transport.get(location, context.params);\n const meta = {\n url: context.url,\n semantic: context.semantic,\n transport: context.transport,\n location: context.location,\n size: result.metadata?.size ?? result.content.length,\n resolvedAt: context.timestamp.toISOString(),\n type: result.metadata?.type\n };\n return {\n type: \"binary\",\n content: result.content,\n meta\n };\n }\n async deposit(transport, location, data, context) {\n const buffer = toBuffer(data);\n try {\n await transport.set(location, buffer, context.params);\n } catch (error) {\n throw new SemanticError(`Failed to deposit binary to \"${location}\": ${error.message}`, this.name, { cause: error });\n }\n }\n async exists(transport, location, _context) {\n return transport.exists(location);\n }\n async delete(transport, location, _context) {\n try {\n await transport.delete(location);\n } catch (error) {\n throw new SemanticError(`Failed to delete \"${location}\": ${error.message}`, this.name, { cause: error });\n }\n }\n}\nvar binarySemantic = new BinarySemanticHandler;\n// src/ARP.ts\nclass ARP {\n transports;\n semantics;\n constructor(config = {}) {\n this.transports = new Map;\n this.semantics = new Map;\n const defaultTransports = [fileTransport, httpTransport, httpsTransport];\n const defaultSemantics = [textSemantic, binarySemantic];\n for (const handler of defaultTransports) {\n this.transports.set(handler.name, handler);\n }\n for (const handler of defaultSemantics) {\n this.semantics.set(handler.name, handler);\n }\n if (config.transports) {\n for (const handler of config.transports) {\n this.transports.set(handler.name, handler);\n }\n }\n if (config.semantics) {\n for (const handler of config.semantics) {\n this.semantics.set(handler.name, handler);\n }\n }\n }\n registerTransport(handler) {\n this.transports.set(handler.name, handler);\n }\n registerSemantic(handler) {\n this.semantics.set(handler.name, handler);\n }\n getTransportHandler(name) {\n const handler = this.transports.get(name);\n if (!handler) {\n throw new TransportError(`Unsupported transport type: ${name}`, name);\n }\n return handler;\n }\n getSemanticHandler(name) {\n const handler = this.semantics.get(name);\n if (!handler) {\n throw new SemanticError(`Unsupported semantic type: ${name}`, name);\n }\n return handler;\n }\n parse(url) {\n if (!url.startsWith(\"arp:\")) {\n throw new ParseError(`Invalid ARP URL: must start with \"arp:\"`, url);\n }\n const content = url.substring(4);\n const separatorIndex = content.indexOf(\"://\");\n if (separatorIndex === -1) {\n throw new ParseError(`Invalid ARP URL: missing \"://\"`, url);\n }\n const typePart = content.substring(0, separatorIndex);\n const location = content.substring(separatorIndex + 3);\n const colonIndex = typePart.indexOf(\":\");\n if (colonIndex === -1) {\n throw new ParseError(`Invalid ARP URL: must have exactly 2 types (semantic:transport)`, url);\n }\n const semantic = typePart.substring(0, colonIndex);\n const transport = typePart.substring(colonIndex + 1);\n if (!semantic) {\n throw new ParseError(`Invalid ARP URL: semantic type cannot be empty`, url);\n }\n if (!transport) {\n throw new ParseError(`Invalid ARP URL: transport type cannot be empty`, url);\n }\n if (!location) {\n throw new ParseError(`Invalid ARP URL: location cannot be empty`, url);\n }\n this.getTransportHandler(transport);\n this.getSemanticHandler(semantic);\n return new ARL(semantic, transport, location, this);\n }\n}\nfunction createARP(config) {\n return new ARP(config);\n}\n\n// src/index.ts\nvar VERSION = \"1.7.0\";\nexport {\n textSemantic,\n httpsTransport,\n httpTransport,\n fileTransport,\n createARP,\n clearRegistryCache,\n binarySemantic,\n VERSION,\n TransportError,\n TextSemanticHandler,\n SemanticError,\n RxrTransport,\n ParseError,\n HttpTransportHandler,\n FileTransportHandler,\n BinarySemanticHandler,\n ARPError,\n ARP\n};\n\n//# debugId=A454D6FE1CE0DCC764756E2164756E21\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(params) {\n return {\n url: this.toString(),\n semantic: this.semantic,\n transport: this.transport,\n location: this.location,\n timestamp: new Date,\n params\n };\n }\n async resolve(params) {\n const transport = this.resolver.getTransportHandler(this.transport);\n const semantic = this.resolver.getSemanticHandler(this.semantic);\n const context = this.createContext(params);\n return semantic.resolve(transport, this.location, context);\n }\n async deposit(data, params) {\n const transport = this.resolver.getTransportHandler(this.transport);\n const semantic = this.resolver.getSemanticHandler(this.semantic);\n const context = this.createContext(params);\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 return transport.exists(this.location);\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 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 } from \"node:fs/promises\";\nimport { resolve, dirname, join } from \"node:path\";\nclass FileTransportHandler {\n name = \"file\";\n resolvePath(location) {\n return resolve(process.cwd(), location);\n }\n async get(location, params) {\n const filePath = this.resolvePath(location);\n try {\n const stats = await stat(filePath);\n if (stats.isDirectory()) {\n return this.getDirectory(filePath, stats, params);\n } else {\n return this.getFile(filePath, stats);\n }\n } catch (error) {\n const err = error;\n throw new TransportError(`File get error: ${err.code} - ${filePath}`, this.name, {\n cause: err\n });\n }\n }\n async getFile(filePath, stats) {\n const content = await readFile(filePath);\n return {\n content,\n metadata: {\n type: \"file\",\n size: Number(stats.size),\n modifiedAt: stats.mtime\n }\n };\n }\n async getDirectory(dirPath, stats, params) {\n const recursive = params?.recursive === \"true\";\n const pattern = params?.pattern;\n let entries;\n if (recursive) {\n entries = await this.listRecursive(dirPath, dirPath);\n } else {\n entries = await readdir(dirPath);\n }\n if (pattern) {\n entries = this.filterByPattern(entries, pattern);\n }\n const content = Buffer.from(JSON.stringify(entries));\n return {\n content,\n metadata: {\n type: \"directory\",\n modifiedAt: stats.mtime\n }\n };\n }\n async listRecursive(basePath, currentPath) {\n const entries = await readdir(currentPath, { withFileTypes: true });\n const results = [];\n for (const entry of entries) {\n const fullPath = join(currentPath, entry.name);\n const relativePath = fullPath.substring(basePath.length + 1);\n if (entry.isDirectory()) {\n const subEntries = await this.listRecursive(basePath, fullPath);\n results.push(...subEntries);\n } else {\n results.push(relativePath);\n }\n }\n return results;\n }\n filterByPattern(entries, pattern) {\n const regexPattern = pattern.replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\").replace(/\\?/g, \".\");\n const regex = new RegExp(`^${regexPattern}$`);\n return entries.filter((entry) => {\n const filename = entry.split(\"/\").pop() || entry;\n return regex.test(filename);\n });\n }\n async set(location, content, _params) {\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 set error: ${err.code} - ${filePath}`, 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 delete(location) {\n const filePath = this.resolvePath(location);\n try {\n await rm(filePath, { recursive: true });\n } catch (error) {\n const err = error;\n if (err.code === \"ENOENT\") {\n return;\n }\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 constructor(protocol = \"https\") {\n this.protocol = protocol;\n this.name = protocol;\n }\n async get(location, params) {\n const url = this.buildUrl(location, params);\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 const content = Buffer.from(arrayBuffer);\n const contentType = response.headers.get(\"content-type\");\n const contentLength = response.headers.get(\"content-length\");\n const lastModified = response.headers.get(\"last-modified\");\n return {\n content,\n metadata: {\n type: \"file\",\n size: contentLength ? parseInt(contentLength, 10) : content.length,\n modifiedAt: lastModified ? new Date(lastModified) : undefined,\n contentType\n }\n };\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 buildUrl(location, params) {\n const url = new URL(`${this.protocol}://${location}`);\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n url.searchParams.set(key, value);\n }\n }\n return url.toString();\n }\n async set(_location, _content, _params) {\n throw new TransportError(\"HTTP transport is read-only, set not supported\", this.name);\n }\n async exists(location) {\n const url = `${this.protocol}://${location}`;\n try {\n const response = await fetch(url, { method: \"HEAD\" });\n return response.ok;\n } catch {\n return false;\n }\n }\n async delete(_location) {\n throw new TransportError(\"HTTP transport is read-only, delete not supported\", this.name);\n }\n}\nvar httpsTransport = new HttpTransportHandler(\"https\");\nvar httpTransport = new HttpTransportHandler(\"http\");\n// ../registry/dist/index.js\nimport { gzip, gunzip } from \"node:zlib\";\nimport { promisify } from \"node:util\";\nimport { homedir } from \"node:os\";\nimport { join as join2 } from \"node:path\";\nimport { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2, rm as rm2, stat as stat2, readdir as readdir2 } from \"node:fs/promises\";\nimport { gzip as gzip2, gunzip as gunzip2 } from \"node:zlib\";\nimport { promisify as promisify2 } from \"node:util\";\nimport { homedir as homedir2 } from \"node:os\";\nimport { join as join22 } from \"node:path\";\nimport { readFile as readFile22, stat as stat22, readdir as readdir22, mkdir as mkdir22 } from \"node:fs/promises\";\nimport { execSync } from \"node:child_process\";\nfunction isRemoteConfig(config) {\n return config !== undefined && \"endpoint\" in config;\n}\nfunction isGitConfig(config) {\n return config !== undefined && \"type\" in config && config.type === \"git\";\n}\n\nclass ResourceXError extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"ResourceXError\";\n }\n}\n\nclass ManifestError extends ResourceXError {\n constructor(message) {\n super(message);\n this.name = \"ManifestError\";\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}\nvar BLOCK_SIZE = 512;\nvar ZERO_BLOCK = new Uint8Array(BLOCK_SIZE);\nvar EMPTY = new Uint8Array(0);\nvar encoder = new TextEncoder;\nvar decoder = new TextDecoder;\nvar EOF_BUFFER = new Uint8Array(BLOCK_SIZE * 2);\nvar gzipAsync = promisify(gzip);\nvar gunzipAsync = promisify(gunzip);\n\nclass RegistryError extends ResourceXError {\n constructor(message) {\n super(message);\n this.name = \"RegistryError\";\n }\n}\n\nclass ResourceXError2 extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"ResourceXError\";\n }\n}\n\nclass ContentError extends ResourceXError2 {\n constructor(message) {\n super(message);\n this.name = \"ContentError\";\n }\n}\n\nclass RXLImpl2 {\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 isDomain2(str) {\n if (str === \"localhost\")\n return true;\n return str.includes(\".\");\n}\nfunction parseRXL2(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 && isDomain2(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 RXLImpl2({ domain, path, name, type, version });\n}\nvar BLOCK_SIZE2 = 512;\nvar BLOCK_SIZE_MASK = 511;\nvar DEFAULT_FILE_MODE = 420;\nvar DEFAULT_DIR_MODE = 493;\nvar USTAR_NAME_OFFSET = 0;\nvar USTAR_NAME_SIZE = 100;\nvar USTAR_MODE_OFFSET = 100;\nvar USTAR_MODE_SIZE = 8;\nvar USTAR_UID_OFFSET = 108;\nvar USTAR_UID_SIZE = 8;\nvar USTAR_GID_OFFSET = 116;\nvar USTAR_GID_SIZE = 8;\nvar USTAR_SIZE_OFFSET = 124;\nvar USTAR_SIZE_SIZE = 12;\nvar USTAR_MTIME_OFFSET = 136;\nvar USTAR_MTIME_SIZE = 12;\nvar USTAR_CHECKSUM_OFFSET = 148;\nvar USTAR_CHECKSUM_SIZE = 8;\nvar USTAR_TYPEFLAG_OFFSET = 156;\nvar USTAR_TYPEFLAG_SIZE = 1;\nvar USTAR_LINKNAME_OFFSET = 157;\nvar USTAR_LINKNAME_SIZE = 100;\nvar USTAR_MAGIC_OFFSET = 257;\nvar USTAR_MAGIC_SIZE = 6;\nvar USTAR_VERSION_OFFSET = 263;\nvar USTAR_VERSION_SIZE = 2;\nvar USTAR_UNAME_OFFSET = 265;\nvar USTAR_UNAME_SIZE = 32;\nvar USTAR_GNAME_OFFSET = 297;\nvar USTAR_GNAME_SIZE = 32;\nvar USTAR_PREFIX_OFFSET = 345;\nvar USTAR_PREFIX_SIZE = 155;\nvar USTAR_VERSION = \"00\";\nvar USTAR_MAX_UID_GID = 2097151;\nvar USTAR_MAX_SIZE = 8589934591;\nvar FILE = \"file\";\nvar LINK = \"link\";\nvar SYMLINK = \"symlink\";\nvar DIRECTORY = \"directory\";\nvar TYPEFLAG = {\n file: \"0\",\n link: \"1\",\n symlink: \"2\",\n \"character-device\": \"3\",\n \"block-device\": \"4\",\n directory: \"5\",\n fifo: \"6\",\n \"pax-header\": \"x\",\n \"pax-global-header\": \"g\",\n \"gnu-long-name\": \"L\",\n \"gnu-long-link-name\": \"K\"\n};\nvar FLAGTYPE = {\n \"0\": FILE,\n \"1\": LINK,\n \"2\": SYMLINK,\n \"3\": \"character-device\",\n \"4\": \"block-device\",\n \"5\": DIRECTORY,\n \"6\": \"fifo\",\n x: \"pax-header\",\n g: \"pax-global-header\",\n L: \"gnu-long-name\",\n K: \"gnu-long-link-name\"\n};\nvar ZERO_BLOCK2 = new Uint8Array(BLOCK_SIZE2);\nvar EMPTY2 = new Uint8Array(0);\nvar encoder2 = new TextEncoder;\nvar decoder2 = new TextDecoder;\nfunction writeString(view, offset, size, value) {\n if (value)\n encoder2.encodeInto(value, view.subarray(offset, offset + size));\n}\nfunction writeOctal(view, offset, size, value) {\n if (value === undefined)\n return;\n const octalString = value.toString(8).padStart(size - 1, \"0\");\n encoder2.encodeInto(octalString, view.subarray(offset, offset + size - 1));\n}\nfunction readString(view, offset, size) {\n const end = view.indexOf(0, offset);\n const sliceEnd = end === -1 || end > offset + size ? offset + size : end;\n return decoder2.decode(view.subarray(offset, sliceEnd));\n}\nfunction readOctal(view, offset, size) {\n let value = 0;\n const end = offset + size;\n for (let i = offset;i < end; i++) {\n const charCode = view[i];\n if (charCode === 0)\n break;\n if (charCode === 32)\n continue;\n value = value * 8 + (charCode - 48);\n }\n return value;\n}\nfunction readNumeric(view, offset, size) {\n if (view[offset] & 128) {\n let result = 0;\n result = view[offset] & 127;\n for (let i = 1;i < size; i++)\n result = result * 256 + view[offset + i];\n if (!Number.isSafeInteger(result))\n throw new Error(\"TAR number too large\");\n return result;\n }\n return readOctal(view, offset, size);\n}\nvar isBodyless = (header) => header.type === DIRECTORY || header.type === SYMLINK || header.type === LINK;\nasync function normalizeBody(body) {\n if (body === null || body === undefined)\n return EMPTY2;\n if (body instanceof Uint8Array)\n return body;\n if (typeof body === \"string\")\n return encoder2.encode(body);\n if (body instanceof ArrayBuffer)\n return new Uint8Array(body);\n if (body instanceof Blob)\n return new Uint8Array(await body.arrayBuffer());\n throw new TypeError(\"Unsupported content type for entry body.\");\n}\nfunction transformHeader(header, options) {\n const { strip, filter, map } = options;\n if (!strip && !filter && !map)\n return header;\n const h = { ...header };\n if (strip && strip > 0) {\n const components = h.name.split(\"/\").filter(Boolean);\n if (strip >= components.length)\n return null;\n const newName = components.slice(strip).join(\"/\");\n h.name = h.type === DIRECTORY && !newName.endsWith(\"/\") ? `${newName}/` : newName;\n if (h.linkname?.startsWith(\"/\")) {\n const linkComponents = h.linkname.split(\"/\").filter(Boolean);\n h.linkname = strip >= linkComponents.length ? \"/\" : `/${linkComponents.slice(strip).join(\"/\")}`;\n }\n }\n if (filter?.(h) === false)\n return null;\n const result = map ? map(h) : h;\n if (result && (!result.name || !result.name.trim() || result.name === \".\" || result.name === \"/\"))\n return null;\n return result;\n}\nvar CHECKSUM_SPACE = 32;\nvar ASCII_ZERO = 48;\nfunction validateChecksum(block) {\n const stored = readOctal(block, USTAR_CHECKSUM_OFFSET, USTAR_CHECKSUM_SIZE);\n let sum = 0;\n for (let i = 0;i < block.length; i++)\n if (i >= USTAR_CHECKSUM_OFFSET && i < USTAR_CHECKSUM_OFFSET + USTAR_CHECKSUM_SIZE)\n sum += CHECKSUM_SPACE;\n else\n sum += block[i];\n return stored === sum;\n}\nfunction writeChecksum(block) {\n block.fill(CHECKSUM_SPACE, USTAR_CHECKSUM_OFFSET, USTAR_CHECKSUM_OFFSET + USTAR_CHECKSUM_SIZE);\n let checksum = 0;\n for (const byte of block)\n checksum += byte;\n for (let i = USTAR_CHECKSUM_OFFSET + 6 - 1;i >= USTAR_CHECKSUM_OFFSET; i--) {\n block[i] = (checksum & 7) + ASCII_ZERO;\n checksum >>= 3;\n }\n block[USTAR_CHECKSUM_OFFSET + 6] = 0;\n block[USTAR_CHECKSUM_OFFSET + 7] = CHECKSUM_SPACE;\n}\nfunction generatePax(header) {\n const paxRecords = {};\n if (header.name.length > USTAR_NAME_SIZE) {\n if (findUstarSplit(header.name) === null)\n paxRecords.path = header.name;\n }\n if (header.linkname && header.linkname.length > USTAR_NAME_SIZE)\n paxRecords.linkpath = header.linkname;\n if (header.uname && header.uname.length > USTAR_UNAME_SIZE)\n paxRecords.uname = header.uname;\n if (header.gname && header.gname.length > USTAR_GNAME_SIZE)\n paxRecords.gname = header.gname;\n if (header.uid != null && header.uid > USTAR_MAX_UID_GID)\n paxRecords.uid = String(header.uid);\n if (header.gid != null && header.gid > USTAR_MAX_UID_GID)\n paxRecords.gid = String(header.gid);\n if (header.size != null && header.size > USTAR_MAX_SIZE)\n paxRecords.size = String(header.size);\n if (header.pax)\n Object.assign(paxRecords, header.pax);\n const paxEntries = Object.entries(paxRecords);\n if (paxEntries.length === 0)\n return null;\n const paxBody = encoder2.encode(paxEntries.map(([key, value]) => {\n const record = `${key}=${value}\n`;\n const partLength = encoder2.encode(record).length + 1;\n let totalLength = partLength + String(partLength).length;\n totalLength = partLength + String(totalLength).length;\n return `${totalLength} ${record}`;\n }).join(\"\"));\n return {\n paxHeader: createTarHeader({\n name: decoder2.decode(encoder2.encode(`PaxHeader/${header.name}`).slice(0, 100)),\n size: paxBody.length,\n type: \"pax-header\",\n mode: 420,\n mtime: header.mtime,\n uname: header.uname,\n gname: header.gname,\n uid: header.uid,\n gid: header.gid\n }),\n paxBody\n };\n}\nfunction findUstarSplit(path) {\n if (path.length <= USTAR_NAME_SIZE)\n return null;\n const minSlashIndex = path.length - USTAR_NAME_SIZE - 1;\n const slashIndex = path.lastIndexOf(\"/\", USTAR_PREFIX_SIZE);\n if (slashIndex > 0 && slashIndex >= minSlashIndex)\n return {\n prefix: path.slice(0, slashIndex),\n name: path.slice(slashIndex + 1)\n };\n return null;\n}\nfunction createTarHeader(header) {\n const view = new Uint8Array(BLOCK_SIZE2);\n const size = isBodyless(header) ? 0 : header.size ?? 0;\n let name = header.name;\n let prefix = \"\";\n if (!header.pax?.path) {\n const split = findUstarSplit(name);\n if (split) {\n name = split.name;\n prefix = split.prefix;\n }\n }\n writeString(view, USTAR_NAME_OFFSET, USTAR_NAME_SIZE, name);\n writeOctal(view, USTAR_MODE_OFFSET, USTAR_MODE_SIZE, header.mode ?? (header.type === DIRECTORY ? DEFAULT_DIR_MODE : DEFAULT_FILE_MODE));\n writeOctal(view, USTAR_UID_OFFSET, USTAR_UID_SIZE, header.uid ?? 0);\n writeOctal(view, USTAR_GID_OFFSET, USTAR_GID_SIZE, header.gid ?? 0);\n writeOctal(view, USTAR_SIZE_OFFSET, USTAR_SIZE_SIZE, size);\n writeOctal(view, USTAR_MTIME_OFFSET, USTAR_MTIME_SIZE, Math.floor((header.mtime?.getTime() ?? Date.now()) / 1000));\n writeString(view, USTAR_TYPEFLAG_OFFSET, USTAR_TYPEFLAG_SIZE, TYPEFLAG[header.type ?? FILE]);\n writeString(view, USTAR_LINKNAME_OFFSET, USTAR_LINKNAME_SIZE, header.linkname);\n writeString(view, USTAR_MAGIC_OFFSET, USTAR_MAGIC_SIZE, \"ustar\\x00\");\n writeString(view, USTAR_VERSION_OFFSET, USTAR_VERSION_SIZE, USTAR_VERSION);\n writeString(view, USTAR_UNAME_OFFSET, USTAR_UNAME_SIZE, header.uname);\n writeString(view, USTAR_GNAME_OFFSET, USTAR_GNAME_SIZE, header.gname);\n writeString(view, USTAR_PREFIX_OFFSET, USTAR_PREFIX_SIZE, prefix);\n writeChecksum(view);\n return view;\n}\nfunction parseUstarHeader(block, strict) {\n if (strict && !validateChecksum(block))\n throw new Error(\"Invalid tar header checksum.\");\n const typeflag = readString(block, USTAR_TYPEFLAG_OFFSET, USTAR_TYPEFLAG_SIZE);\n const header = {\n name: readString(block, USTAR_NAME_OFFSET, USTAR_NAME_SIZE),\n mode: readOctal(block, USTAR_MODE_OFFSET, USTAR_MODE_SIZE),\n uid: readNumeric(block, USTAR_UID_OFFSET, USTAR_UID_SIZE),\n gid: readNumeric(block, USTAR_GID_OFFSET, USTAR_GID_SIZE),\n size: readNumeric(block, USTAR_SIZE_OFFSET, USTAR_SIZE_SIZE),\n mtime: /* @__PURE__ */ new Date(readNumeric(block, USTAR_MTIME_OFFSET, USTAR_MTIME_SIZE) * 1000),\n type: FLAGTYPE[typeflag] || FILE,\n linkname: readString(block, USTAR_LINKNAME_OFFSET, USTAR_LINKNAME_SIZE)\n };\n const magic = readString(block, USTAR_MAGIC_OFFSET, USTAR_MAGIC_SIZE);\n if (magic.trim() === \"ustar\") {\n header.uname = readString(block, USTAR_UNAME_OFFSET, USTAR_UNAME_SIZE);\n header.gname = readString(block, USTAR_GNAME_OFFSET, USTAR_GNAME_SIZE);\n }\n if (magic === \"ustar\")\n header.prefix = readString(block, USTAR_PREFIX_OFFSET, USTAR_PREFIX_SIZE);\n return header;\n}\nvar PAX_MAPPING = {\n path: [\"name\", (v) => v],\n linkpath: [\"linkname\", (v) => v],\n size: [\"size\", (v) => parseInt(v, 10)],\n mtime: [\"mtime\", parseFloat],\n uid: [\"uid\", (v) => parseInt(v, 10)],\n gid: [\"gid\", (v) => parseInt(v, 10)],\n uname: [\"uname\", (v) => v],\n gname: [\"gname\", (v) => v]\n};\nfunction parsePax(buffer) {\n const decoder$1 = new TextDecoder(\"utf-8\");\n const overrides = {};\n const pax = {};\n let offset = 0;\n while (offset < buffer.length) {\n const spaceIndex = buffer.indexOf(32, offset);\n if (spaceIndex === -1)\n break;\n const length = parseInt(decoder$1.decode(buffer.subarray(offset, spaceIndex)), 10);\n if (Number.isNaN(length) || length === 0)\n break;\n const recordEnd = offset + length;\n const [key, value] = decoder$1.decode(buffer.subarray(spaceIndex + 1, recordEnd - 1)).split(\"=\", 2);\n if (key && value !== undefined) {\n pax[key] = value;\n const mapping = PAX_MAPPING[key];\n if (mapping) {\n const [targetKey, parser] = mapping;\n const parsedValue = parser(value);\n if (typeof parsedValue === \"string\" || !Number.isNaN(parsedValue))\n overrides[targetKey] = parsedValue;\n }\n }\n offset = recordEnd;\n }\n if (Object.keys(pax).length > 0)\n overrides.pax = pax;\n return overrides;\n}\nfunction applyOverrides(header, overrides) {\n if (overrides.name !== undefined)\n header.name = overrides.name;\n if (overrides.linkname !== undefined)\n header.linkname = overrides.linkname;\n if (overrides.size !== undefined)\n header.size = overrides.size;\n if (overrides.mtime !== undefined)\n header.mtime = /* @__PURE__ */ new Date(overrides.mtime * 1000);\n if (overrides.uid !== undefined)\n header.uid = overrides.uid;\n if (overrides.gid !== undefined)\n header.gid = overrides.gid;\n if (overrides.uname !== undefined)\n header.uname = overrides.uname;\n if (overrides.gname !== undefined)\n header.gname = overrides.gname;\n if (overrides.pax)\n header.pax = Object.assign({}, header.pax ?? {}, overrides.pax);\n}\nfunction getMetaParser(type) {\n switch (type) {\n case \"pax-global-header\":\n case \"pax-header\":\n return parsePax;\n case \"gnu-long-name\":\n return (data) => ({ name: readString(data, 0, data.length) });\n case \"gnu-long-link-name\":\n return (data) => ({ linkname: readString(data, 0, data.length) });\n default:\n return;\n }\n}\nfunction getHeaderBlocks(header) {\n const base = createTarHeader(header);\n const pax = generatePax(header);\n if (!pax)\n return [base];\n const paxPadding = -pax.paxBody.length & BLOCK_SIZE_MASK;\n const paddingBlocks = paxPadding > 0 ? [ZERO_BLOCK2.subarray(0, paxPadding)] : [];\n return [\n pax.paxHeader,\n pax.paxBody,\n ...paddingBlocks,\n base\n ];\n}\nvar EOF_BUFFER2 = new Uint8Array(BLOCK_SIZE2 * 2);\nfunction createTarPacker(onData, onError, onFinalize) {\n let currentHeader = null;\n let bytesWritten = 0;\n let finalized = false;\n return {\n add(header) {\n if (finalized) {\n const error = /* @__PURE__ */ new Error(\"No new tar entries after finalize.\");\n onError(error);\n throw error;\n }\n if (currentHeader !== null) {\n const error = /* @__PURE__ */ new Error(\"Previous entry must be completed before adding a new one\");\n onError(error);\n throw error;\n }\n try {\n const size = isBodyless(header) ? 0 : header.size ?? 0;\n const headerBlocks = getHeaderBlocks({\n ...header,\n size\n });\n for (const block of headerBlocks)\n onData(block);\n currentHeader = {\n ...header,\n size\n };\n bytesWritten = 0;\n } catch (error) {\n onError(error);\n }\n },\n write(chunk) {\n if (!currentHeader) {\n const error = /* @__PURE__ */ new Error(\"No active tar entry.\");\n onError(error);\n throw error;\n }\n if (finalized) {\n const error = /* @__PURE__ */ new Error(\"Cannot write data after finalize.\");\n onError(error);\n throw error;\n }\n const newTotal = bytesWritten + chunk.length;\n if (newTotal > currentHeader.size) {\n const error = /* @__PURE__ */ new Error(`\"${currentHeader.name}\" exceeds given size of ${currentHeader.size} bytes.`);\n onError(error);\n throw error;\n }\n try {\n bytesWritten = newTotal;\n onData(chunk);\n } catch (error) {\n onError(error);\n }\n },\n endEntry() {\n if (!currentHeader) {\n const error = /* @__PURE__ */ new Error(\"No active entry to end.\");\n onError(error);\n throw error;\n }\n if (finalized) {\n const error = /* @__PURE__ */ new Error(\"Cannot end entry after finalize.\");\n onError(error);\n throw error;\n }\n try {\n if (bytesWritten !== currentHeader.size) {\n const error = /* @__PURE__ */ new Error(`Size mismatch for \"${currentHeader.name}\".`);\n onError(error);\n throw error;\n }\n const paddingSize = -currentHeader.size & BLOCK_SIZE_MASK;\n if (paddingSize > 0)\n onData(new Uint8Array(paddingSize));\n currentHeader = null;\n bytesWritten = 0;\n } catch (error) {\n onError(error);\n throw error;\n }\n },\n finalize() {\n if (finalized) {\n const error = /* @__PURE__ */ new Error(\"Archive has already been finalized\");\n onError(error);\n throw error;\n }\n if (currentHeader !== null) {\n const error = /* @__PURE__ */ new Error(\"Cannot finalize while an entry is still active\");\n onError(error);\n throw error;\n }\n try {\n onData(EOF_BUFFER2);\n finalized = true;\n if (onFinalize)\n onFinalize();\n } catch (error) {\n onError(error);\n }\n }\n };\n}\nvar INITIAL_CAPACITY = 256;\nfunction createChunkQueue() {\n let chunks = new Array(INITIAL_CAPACITY);\n let capacityMask = chunks.length - 1;\n let head = 0;\n let tail = 0;\n let totalAvailable = 0;\n const consumeFromHead = (count) => {\n const chunk = chunks[head];\n if (count === chunk.length) {\n chunks[head] = EMPTY2;\n head = head + 1 & capacityMask;\n } else\n chunks[head] = chunk.subarray(count);\n totalAvailable -= count;\n if (totalAvailable === 0 && chunks.length > INITIAL_CAPACITY) {\n chunks = new Array(INITIAL_CAPACITY);\n capacityMask = INITIAL_CAPACITY - 1;\n head = 0;\n tail = 0;\n }\n };\n function pull(bytes, callback) {\n if (callback) {\n let fed = 0;\n let remaining$1 = Math.min(bytes, totalAvailable);\n while (remaining$1 > 0) {\n const chunk = chunks[head];\n const toFeed = Math.min(remaining$1, chunk.length);\n const segment = toFeed === chunk.length ? chunk : chunk.subarray(0, toFeed);\n consumeFromHead(toFeed);\n remaining$1 -= toFeed;\n fed += toFeed;\n if (!callback(segment))\n break;\n }\n return fed;\n }\n if (totalAvailable < bytes)\n return null;\n if (bytes === 0)\n return EMPTY2;\n const firstChunk = chunks[head];\n if (firstChunk.length >= bytes) {\n const view = firstChunk.length === bytes ? firstChunk : firstChunk.subarray(0, bytes);\n consumeFromHead(bytes);\n return view;\n }\n const result = new Uint8Array(bytes);\n let copied = 0;\n let remaining = bytes;\n while (remaining > 0) {\n const chunk = chunks[head];\n const toCopy = Math.min(remaining, chunk.length);\n result.set(toCopy === chunk.length ? chunk : chunk.subarray(0, toCopy), copied);\n copied += toCopy;\n remaining -= toCopy;\n consumeFromHead(toCopy);\n }\n return result;\n }\n return {\n push: (chunk) => {\n if (chunk.length === 0)\n return;\n let nextTail = tail + 1 & capacityMask;\n if (nextTail === head) {\n const oldLen = chunks.length;\n const newLen = oldLen * 2;\n const newChunks = new Array(newLen);\n const count = tail - head + oldLen & oldLen - 1;\n if (head < tail)\n for (let i = 0;i < count; i++)\n newChunks[i] = chunks[head + i];\n else if (count > 0) {\n const firstPart = oldLen - head;\n for (let i = 0;i < firstPart; i++)\n newChunks[i] = chunks[head + i];\n for (let i = 0;i < tail; i++)\n newChunks[firstPart + i] = chunks[i];\n }\n chunks = newChunks;\n capacityMask = newLen - 1;\n head = 0;\n tail = count;\n nextTail = tail + 1 & capacityMask;\n }\n chunks[tail] = chunk;\n tail = nextTail;\n totalAvailable += chunk.length;\n },\n available: () => totalAvailable,\n peek: (bytes) => {\n if (totalAvailable < bytes)\n return null;\n if (bytes === 0)\n return EMPTY2;\n const firstChunk = chunks[head];\n if (firstChunk.length >= bytes)\n return firstChunk.length === bytes ? firstChunk : firstChunk.subarray(0, bytes);\n const result = new Uint8Array(bytes);\n let copied = 0;\n let index = head;\n while (copied < bytes) {\n const chunk = chunks[index];\n const toCopy = Math.min(bytes - copied, chunk.length);\n if (toCopy === chunk.length)\n result.set(chunk, copied);\n else\n result.set(chunk.subarray(0, toCopy), copied);\n copied += toCopy;\n index = index + 1 & capacityMask;\n }\n return result;\n },\n discard: (bytes) => {\n if (bytes > totalAvailable)\n throw new Error(\"Too many bytes consumed\");\n if (bytes === 0)\n return;\n let remaining = bytes;\n while (remaining > 0) {\n const chunk = chunks[head];\n const toConsume = Math.min(remaining, chunk.length);\n consumeFromHead(toConsume);\n remaining -= toConsume;\n }\n },\n pull\n };\n}\nvar STATE_HEADER = 0;\nvar STATE_BODY = 1;\nvar truncateErr = /* @__PURE__ */ new Error(\"Tar archive is truncated.\");\nfunction createUnpacker(options = {}) {\n const strict = options.strict ?? false;\n const { available, peek, push, discard, pull } = createChunkQueue();\n let state = STATE_HEADER;\n let ended = false;\n let done = false;\n let eof = false;\n let currentEntry = null;\n const paxGlobals = {};\n let nextEntryOverrides = {};\n const unpacker = {\n isEntryActive: () => state === STATE_BODY,\n isBodyComplete: () => !currentEntry || currentEntry.remaining === 0,\n write(chunk) {\n if (ended)\n throw new Error(\"Archive already ended.\");\n push(chunk);\n },\n end() {\n ended = true;\n },\n readHeader() {\n if (state !== STATE_HEADER)\n throw new Error(\"Cannot read header while an entry is active\");\n if (done)\n return;\n while (!done) {\n if (available() < BLOCK_SIZE2) {\n if (ended) {\n if (available() > 0 && strict)\n throw truncateErr;\n done = true;\n return;\n }\n return null;\n }\n const headerBlock = peek(BLOCK_SIZE2);\n if (isZeroBlock(headerBlock)) {\n if (available() < BLOCK_SIZE2 * 2) {\n if (ended) {\n if (strict)\n throw truncateErr;\n done = true;\n return;\n }\n return null;\n }\n if (isZeroBlock(peek(BLOCK_SIZE2 * 2).subarray(BLOCK_SIZE2))) {\n discard(BLOCK_SIZE2 * 2);\n done = true;\n eof = true;\n return;\n }\n if (strict)\n throw new Error(\"Invalid tar header.\");\n discard(BLOCK_SIZE2);\n continue;\n }\n let internalHeader;\n try {\n internalHeader = parseUstarHeader(headerBlock, strict);\n } catch (err) {\n if (strict)\n throw err;\n discard(BLOCK_SIZE2);\n continue;\n }\n const metaParser = getMetaParser(internalHeader.type);\n if (metaParser) {\n const paddedSize = internalHeader.size + BLOCK_SIZE_MASK & ~BLOCK_SIZE_MASK;\n if (available() < BLOCK_SIZE2 + paddedSize) {\n if (ended && strict)\n throw truncateErr;\n return null;\n }\n discard(BLOCK_SIZE2);\n const overrides = metaParser(pull(paddedSize).subarray(0, internalHeader.size));\n const target = internalHeader.type === \"pax-global-header\" ? paxGlobals : nextEntryOverrides;\n for (const key in overrides)\n target[key] = overrides[key];\n continue;\n }\n discard(BLOCK_SIZE2);\n const header = internalHeader;\n if (internalHeader.prefix)\n header.name = `${internalHeader.prefix}/${header.name}`;\n applyOverrides(header, paxGlobals);\n applyOverrides(header, nextEntryOverrides);\n nextEntryOverrides = {};\n currentEntry = {\n header,\n remaining: header.size,\n padding: -header.size & BLOCK_SIZE_MASK\n };\n state = STATE_BODY;\n return header;\n }\n },\n streamBody(callback) {\n if (state !== STATE_BODY || !currentEntry || currentEntry.remaining === 0)\n return 0;\n const bytesToFeed = Math.min(currentEntry.remaining, available());\n if (bytesToFeed === 0)\n return 0;\n const fed = pull(bytesToFeed, callback);\n currentEntry.remaining -= fed;\n return fed;\n },\n skipPadding() {\n if (state !== STATE_BODY || !currentEntry)\n return true;\n if (currentEntry.remaining > 0)\n throw new Error(\"Body not fully consumed\");\n if (available() < currentEntry.padding)\n return false;\n discard(currentEntry.padding);\n currentEntry = null;\n state = STATE_HEADER;\n return true;\n },\n skipEntry() {\n if (state !== STATE_BODY || !currentEntry)\n return true;\n const toDiscard = Math.min(currentEntry.remaining, available());\n if (toDiscard > 0) {\n discard(toDiscard);\n currentEntry.remaining -= toDiscard;\n }\n if (currentEntry.remaining > 0)\n return false;\n return unpacker.skipPadding();\n },\n validateEOF() {\n if (strict) {\n if (!eof)\n throw truncateErr;\n if (available() > 0) {\n if (pull(available()).some((byte) => byte !== 0))\n throw new Error(\"Invalid EOF.\");\n }\n }\n }\n };\n return unpacker;\n}\nfunction isZeroBlock(block) {\n if (block.byteOffset % 8 === 0) {\n const view = new BigUint64Array(block.buffer, block.byteOffset, block.length / 8);\n for (let i = 0;i < view.length; i++)\n if (view[i] !== 0n)\n return false;\n return true;\n }\n for (let i = 0;i < block.length; i++)\n if (block[i] !== 0)\n return false;\n return true;\n}\nfunction createTarPacker2() {\n let streamController;\n let packer;\n return {\n readable: new ReadableStream({ start(controller) {\n streamController = controller;\n packer = createTarPacker(controller.enqueue.bind(controller), controller.error.bind(controller), controller.close.bind(controller));\n } }),\n controller: {\n add(header) {\n const bodyless = isBodyless(header);\n const h = { ...header };\n if (bodyless)\n h.size = 0;\n packer.add(h);\n if (bodyless)\n packer.endEntry();\n return new WritableStream({\n write(chunk) {\n packer.write(chunk);\n },\n close() {\n if (!bodyless)\n packer.endEntry();\n },\n abort(reason) {\n streamController.error(reason);\n }\n });\n },\n finalize() {\n packer.finalize();\n },\n error(err) {\n streamController.error(err);\n }\n }\n };\n}\nasync function streamToBuffer(stream) {\n const chunks = [];\n const reader = stream.getReader();\n let totalLength = 0;\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done)\n break;\n chunks.push(value);\n totalLength += value.length;\n }\n const result = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.length;\n }\n return result;\n } finally {\n reader.releaseLock();\n }\n}\nvar drain = (stream) => stream.pipeTo(new WritableStream);\nfunction createTarDecoder(options = {}) {\n const unpacker = createUnpacker(options);\n let bodyController = null;\n let pumping = false;\n const pump = (controller) => {\n if (pumping)\n return;\n pumping = true;\n try {\n while (true)\n if (unpacker.isEntryActive()) {\n if (bodyController) {\n if (unpacker.streamBody((c) => (bodyController.enqueue(c), true)) === 0 && !unpacker.isBodyComplete())\n break;\n } else if (!unpacker.skipEntry())\n break;\n if (unpacker.isBodyComplete()) {\n try {\n bodyController?.close();\n } catch {}\n bodyController = null;\n if (!unpacker.skipPadding())\n break;\n }\n } else {\n const header = unpacker.readHeader();\n if (header === null || header === undefined)\n break;\n controller.enqueue({\n header,\n body: new ReadableStream({\n start(c) {\n if (header.size === 0)\n c.close();\n else\n bodyController = c;\n },\n pull: () => pump(controller),\n cancel() {\n bodyController = null;\n pump(controller);\n }\n })\n });\n }\n } catch (error) {\n try {\n bodyController?.error(error);\n } catch {}\n bodyController = null;\n throw error;\n } finally {\n pumping = false;\n }\n };\n return new TransformStream({\n transform(chunk, controller) {\n try {\n unpacker.write(chunk);\n pump(controller);\n } catch (error) {\n try {\n bodyController?.error(error);\n } catch {}\n throw error;\n }\n },\n flush(controller) {\n try {\n unpacker.end();\n pump(controller);\n unpacker.validateEOF();\n if (unpacker.isEntryActive() && !unpacker.isBodyComplete())\n try {\n bodyController?.close();\n } catch {}\n } catch (error) {\n try {\n bodyController?.error(error);\n } catch {}\n throw error;\n }\n }\n }, undefined, { highWaterMark: 1 });\n}\nasync function packTar(entries) {\n const { readable, controller } = createTarPacker2();\n await (async () => {\n for (const entry of entries) {\n const entryStream = controller.add(entry.header);\n const body = \"body\" in entry ? entry.body : entry.data;\n if (!body) {\n await entryStream.close();\n continue;\n }\n if (body instanceof ReadableStream)\n await body.pipeTo(entryStream);\n else if (body instanceof Blob)\n await body.stream().pipeTo(entryStream);\n else\n try {\n const chunk = await normalizeBody(body);\n if (chunk.length > 0) {\n const writer = entryStream.getWriter();\n await writer.write(chunk);\n await writer.close();\n } else\n await entryStream.close();\n } catch {\n throw new TypeError(`Unsupported content type for entry \"${entry.header.name}\".`);\n }\n }\n })().then(() => controller.finalize()).catch((err) => controller.error(err));\n return new Uint8Array(await streamToBuffer(readable));\n}\nasync function unpackTar(archive, options = {}) {\n const sourceStream = archive instanceof ReadableStream ? archive : new ReadableStream({ start(controller) {\n controller.enqueue(archive instanceof Uint8Array ? archive : new Uint8Array(archive));\n controller.close();\n } });\n const results = [];\n const entryStream = sourceStream.pipeThrough(createTarDecoder(options));\n for await (const entry of entryStream) {\n let processedHeader;\n try {\n processedHeader = transformHeader(entry.header, options);\n } catch (error) {\n await entry.body.cancel();\n throw error;\n }\n if (processedHeader === null) {\n await drain(entry.body);\n continue;\n }\n if (isBodyless(processedHeader)) {\n await drain(entry.body);\n results.push({ header: processedHeader });\n } else\n results.push({\n header: processedHeader,\n data: await streamToBuffer(entry.body)\n });\n }\n return results;\n}\nvar gzipAsync2 = promisify2(gzip2);\nvar gunzipAsync2 = promisify2(gunzip2);\n\nclass RXCImpl {\n _buffer;\n _filesCache = null;\n constructor(buffer) {\n this._buffer = buffer;\n }\n get stream() {\n const buffer = this._buffer;\n return new ReadableStream({\n start(controller) {\n controller.enqueue(new Uint8Array(buffer));\n controller.close();\n }\n });\n }\n async buffer() {\n return this._buffer;\n }\n async file(path) {\n const filesMap = await this.files();\n const content = filesMap.get(path);\n if (!content) {\n throw new ContentError(`file not found: ${path}`);\n }\n return content;\n }\n async files() {\n if (this._filesCache) {\n return this._filesCache;\n }\n const tarBuffer = await gunzipAsync2(this._buffer);\n const entries = await unpackTar(tarBuffer);\n const filesMap = new Map;\n for (const entry of entries) {\n if ((entry.header.type === \"file\" || entry.header.type === undefined) && entry.data) {\n filesMap.set(entry.header.name, Buffer.from(entry.data));\n }\n }\n this._filesCache = filesMap;\n return filesMap;\n }\n}\nfunction isArchiveInput(input) {\n return \"archive\" in input && Buffer.isBuffer(input.archive);\n}\nasync function createRXC(input) {\n if (isArchiveInput(input)) {\n return new RXCImpl(input.archive);\n }\n const entries = Object.entries(input).map(([name, content]) => {\n const body = typeof content === \"string\" ? content : content instanceof Uint8Array ? content : new Uint8Array(content);\n const size = typeof content === \"string\" ? Buffer.byteLength(content) : content.length;\n return {\n header: { name, size, type: \"file\" },\n body\n };\n });\n const tarBuffer = await packTar(entries);\n const gzipBuffer = await gzipAsync2(Buffer.from(tarBuffer));\n return new RXCImpl(gzipBuffer);\n}\n\nclass ResourceTypeError extends ResourceXError2 {\n constructor(message) {\n super(message);\n this.name = \"ResourceTypeError\";\n }\n}\nvar textSerializer = {\n async serialize(rxr) {\n return rxr.content.buffer();\n },\n async deserialize(data, manifest) {\n return {\n locator: parseRXL2(manifest.toLocator()),\n manifest,\n content: await createRXC({ archive: data })\n };\n }\n};\nvar textResolver = {\n schema: undefined,\n async resolve(rxr) {\n return {\n resource: rxr,\n schema: undefined,\n execute: async () => {\n const buffer = await rxr.content.file(\"content\");\n return buffer.toString(\"utf-8\");\n }\n };\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 return rxr.content.buffer();\n },\n async deserialize(data, manifest) {\n return {\n locator: parseRXL2(manifest.toLocator()),\n manifest,\n content: await createRXC({ archive: data })\n };\n }\n};\nvar jsonResolver = {\n schema: undefined,\n async resolve(rxr) {\n return {\n resource: rxr,\n schema: undefined,\n execute: async () => {\n const buffer = await rxr.content.file(\"content\");\n return JSON.parse(buffer.toString(\"utf-8\"));\n }\n };\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: parseRXL2(manifest.toLocator()),\n manifest,\n content: await createRXC({ archive: data })\n };\n }\n};\nvar binaryResolver = {\n schema: undefined,\n async resolve(rxr) {\n return {\n resource: rxr,\n schema: undefined,\n execute: async () => {\n return rxr.content.file(\"content\");\n }\n };\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 constructor() {\n for (const type of builtinTypes) {\n this.registerBuiltin(type);\n }\n }\n static create() {\n return new TypeHandlerChain;\n }\n registerBuiltin(type) {\n this.handlers.set(type.name, type);\n if (type.aliases) {\n for (const alias of type.aliases) {\n this.handlers.set(alias, type);\n }\n }\n }\n register(type) {\n if (this.handlers.has(type.name)) {\n throw new ResourceTypeError(`Type '${type.name}' is already registered`);\n }\n this.handlers.set(type.name, type);\n if (type.aliases) {\n for (const alias of type.aliases) {\n if (this.handlers.has(alias)) {\n throw new ResourceTypeError(`Alias '${alias}' conflicts with existing type or alias`);\n }\n this.handlers.set(alias, type);\n }\n }\n }\n canHandle(typeName) {\n return this.handlers.has(typeName);\n }\n getHandler(typeName) {\n return this.handlers.get(typeName);\n }\n getSupportedTypes() {\n return Array.from(this.handlers.keys());\n }\n async serialize(rxr) {\n const typeName = rxr.manifest.type;\n const handler = this.handlers.get(typeName);\n if (!handler) {\n throw new ResourceTypeError(`Unsupported resource type: ${typeName}`);\n }\n return handler.serializer.serialize(rxr);\n }\n async deserialize(data, manifest) {\n const typeName = manifest.type;\n const handler = this.handlers.get(typeName);\n if (!handler) {\n throw new ResourceTypeError(`Unsupported resource type: ${typeName}`);\n }\n return handler.serializer.deserialize(data, manifest);\n }\n async resolve(rxr) {\n const typeName = rxr.manifest.type;\n const handler = this.handlers.get(typeName);\n if (!handler) {\n throw new ResourceTypeError(`Unsupported resource type: ${typeName}`);\n }\n return handler.resolver.resolve(rxr);\n }\n clearExtensions() {\n this.handlers.clear();\n for (const type of builtinTypes) {\n this.registerBuiltin(type);\n }\n }\n}\nvar DEFAULT_PATH = `${homedir()}/.resourcex`;\n\nclass LocalRegistry {\n basePath;\n typeHandler;\n constructor(config) {\n this.basePath = config?.path ?? DEFAULT_PATH;\n this.typeHandler = TypeHandlerChain.create();\n if (config?.types) {\n for (const type of config.types) {\n this.typeHandler.register(type);\n }\n }\n }\n supportType(type) {\n this.typeHandler.register(type);\n }\n buildPath(locator, area) {\n const rxl = typeof locator === \"string\" ? parseRXL(locator) : locator;\n const resourceName = rxl.type ? `${rxl.name}.${rxl.type}` : rxl.name;\n const version = rxl.version ?? \"latest\";\n if (area === \"local\") {\n return join2(this.basePath, \"local\", resourceName, version);\n } else {\n const domain = rxl.domain ?? \"localhost\";\n let path = join2(this.basePath, \"cache\", domain);\n if (rxl.path) {\n path = join2(path, rxl.path);\n }\n return join2(path, resourceName, version);\n }\n }\n isLocalOnlyLocator(locator) {\n const rxl = typeof locator === \"string\" ? parseRXL(locator) : locator;\n return !rxl.domain || rxl.domain === \"localhost\";\n }\n async existsAt(resourcePath) {\n const manifestPath = join2(resourcePath, \"manifest.json\");\n try {\n await stat2(manifestPath);\n return true;\n } catch {\n return false;\n }\n }\n async findArea(locator) {\n const localPath = this.buildPath(locator, \"local\");\n if (await this.existsAt(localPath)) {\n return \"local\";\n }\n const cachePath = this.buildPath(locator, \"cache\");\n if (await this.existsAt(cachePath)) {\n return \"cache\";\n }\n return null;\n }\n async loadFrom(resourcePath) {\n const manifestPath = join2(resourcePath, \"manifest.json\");\n const manifestContent = await readFile2(manifestPath, \"utf-8\");\n const manifestData = JSON.parse(manifestContent);\n const manifest = createRXM(manifestData);\n const contentPath = join2(resourcePath, \"content.tar.gz\");\n const data = await readFile2(contentPath);\n return this.typeHandler.deserialize(data, manifest);\n }\n async pull(_locator, _options) {\n throw new RegistryError(\"Pull not implemented yet - see issue #018\");\n }\n async publish(_resource, _options) {\n throw new RegistryError(\"Publish not implemented yet - see issue #018\");\n }\n async link(resource) {\n const locator = resource.manifest.toLocator();\n const resourcePath = this.buildPath(locator, \"local\");\n await mkdir2(resourcePath, { recursive: true });\n const manifestPath = join2(resourcePath, \"manifest.json\");\n await writeFile2(manifestPath, JSON.stringify(resource.manifest.toJSON(), null, 2), \"utf-8\");\n const contentPath = join2(resourcePath, \"content.tar.gz\");\n const serialized = await this.typeHandler.serialize(resource);\n await writeFile2(contentPath, serialized);\n }\n async get(locator) {\n const area = await this.findArea(locator);\n if (!area) {\n throw new RegistryError(`Resource not found: ${locator}`);\n }\n const resourcePath = this.buildPath(locator, area);\n return this.loadFrom(resourcePath);\n }\n async resolve(locator) {\n const rxr = await this.get(locator);\n return this.typeHandler.resolve(rxr);\n }\n async exists(locator) {\n const area = await this.findArea(locator);\n return area !== null;\n }\n async delete(locator) {\n const isLocal = this.isLocalOnlyLocator(locator);\n if (isLocal) {\n const localPath = this.buildPath(locator, \"local\");\n if (await this.existsAt(localPath)) {\n await rm2(localPath, { recursive: true, force: true });\n }\n } else {\n const cachePath = this.buildPath(locator, \"cache\");\n if (await this.existsAt(cachePath)) {\n await rm2(cachePath, { recursive: true, force: true });\n }\n }\n }\n async search(options) {\n const { query, limit, offset = 0 } = options ?? {};\n const locators = [];\n const localDir = join2(this.basePath, \"local\");\n try {\n const localEntries = await this.listRecursive(localDir);\n for (const entry of localEntries) {\n if (!entry.endsWith(\"manifest.json\"))\n continue;\n const relativePath = entry.slice(localDir.length + 1);\n const rxl = this.parseLocalEntry(relativePath);\n if (rxl)\n locators.push(rxl);\n }\n } catch {}\n const cacheDir = join2(this.basePath, \"cache\");\n try {\n const cacheEntries = await this.listRecursive(cacheDir);\n for (const entry of cacheEntries) {\n if (!entry.endsWith(\"manifest.json\"))\n continue;\n const relativePath = entry.slice(cacheDir.length + 1);\n const rxl = this.parseCacheEntry(relativePath);\n if (rxl)\n locators.push(rxl);\n }\n } catch {}\n let filtered = locators;\n if (query) {\n const lowerQuery = query.toLowerCase();\n filtered = locators.filter((rxl) => {\n const searchText = `${rxl.domain ?? \"\"} ${rxl.path ?? \"\"} ${rxl.name} ${rxl.type ?? \"\"}`.toLowerCase();\n return searchText.includes(lowerQuery);\n });\n }\n let result = filtered.slice(offset);\n if (limit !== undefined) {\n result = result.slice(0, limit);\n }\n return result;\n }\n async listRecursive(dir) {\n const results = [];\n try {\n const entries = await readdir2(dir, { withFileTypes: true });\n for (const entry of entries) {\n const fullPath = join2(dir, entry.name);\n if (entry.isDirectory()) {\n const subEntries = await this.listRecursive(fullPath);\n results.push(...subEntries);\n } else {\n results.push(fullPath);\n }\n }\n } catch {}\n return results;\n }\n parseLocalEntry(entry) {\n const dirPath = entry.replace(/[/\\\\]manifest\\.json$/, \"\");\n const parts = dirPath.split(/[/\\\\]/);\n if (parts.length < 2) {\n return null;\n }\n const version = parts.pop();\n const nameTypePart = parts.shift();\n const { name, type } = this.parseNameType(nameTypePart);\n let locatorStr = name;\n if (type) {\n locatorStr += `.${type}`;\n }\n locatorStr += `@${version}`;\n try {\n return parseRXL(locatorStr);\n } catch {\n return null;\n }\n }\n parseCacheEntry(entry) {\n const dirPath = entry.replace(/[/\\\\]manifest\\.json$/, \"\");\n const parts = dirPath.split(/[/\\\\]/);\n if (parts.length < 3) {\n return null;\n }\n const version = parts.pop();\n const nameTypePart = parts.pop();\n const domain = parts.shift();\n const path = parts.length > 0 ? parts.join(\"/\") : undefined;\n const { name, type } = this.parseNameType(nameTypePart);\n let locatorStr = domain;\n if (path) {\n locatorStr += `/${path}`;\n }\n locatorStr += `/${name}`;\n if (type) {\n locatorStr += `.${type}`;\n }\n locatorStr += `@${version}`;\n try {\n return parseRXL(locatorStr);\n } catch {\n return null;\n }\n }\n parseNameType(nameTypePart) {\n const dotIndex = nameTypePart.lastIndexOf(\".\");\n if (dotIndex !== -1) {\n return {\n name: nameTypePart.substring(0, dotIndex),\n type: nameTypePart.substring(dotIndex + 1)\n };\n } else {\n return { name: nameTypePart, type: undefined };\n }\n }\n}\n\nclass RemoteRegistry {\n endpoint;\n typeHandler;\n constructor(config) {\n this.endpoint = config.endpoint.replace(/\\/$/, \"\");\n this.typeHandler = TypeHandlerChain.create();\n }\n supportType(type) {\n this.typeHandler.register(type);\n }\n async pull(_locator, _options) {\n throw new RegistryError(\"Cannot pull to remote registry - use local registry for pulling\");\n }\n async publish(_resource, _options) {\n throw new RegistryError(\"Remote registry publish not implemented yet\");\n }\n async link(_resource) {\n throw new RegistryError(\"Cannot link to remote registry - use local registry for linking\");\n }\n async get(locator) {\n const manifestUrl = `${this.endpoint}/resource?locator=${encodeURIComponent(locator)}`;\n const manifestResponse = await fetch(manifestUrl);\n if (!manifestResponse.ok) {\n if (manifestResponse.status === 404) {\n throw new RegistryError(`Resource not found: ${locator}`);\n }\n throw new RegistryError(`Failed to fetch resource: ${manifestResponse.statusText}`);\n }\n const manifestData = await manifestResponse.json();\n const manifest = createRXM(manifestData);\n const contentUrl = `${this.endpoint}/content?locator=${encodeURIComponent(locator)}`;\n const contentResponse = await fetch(contentUrl);\n if (!contentResponse.ok) {\n throw new RegistryError(`Failed to fetch content: ${contentResponse.statusText}`);\n }\n const contentBuffer = Buffer.from(await contentResponse.arrayBuffer());\n return this.typeHandler.deserialize(contentBuffer, manifest);\n }\n async resolve(locator) {\n const rxr = await this.get(locator);\n return this.typeHandler.resolve(rxr);\n }\n async exists(locator) {\n const url = `${this.endpoint}/exists?locator=${encodeURIComponent(locator)}`;\n const response = await fetch(url);\n if (!response.ok) {\n return false;\n }\n const data = await response.json();\n return data.exists === true;\n }\n async delete(_locator) {\n throw new RegistryError(\"Cannot delete from remote registry - use local registry for deletion\");\n }\n async search(options) {\n const params = new URLSearchParams;\n if (options?.query)\n params.set(\"query\", options.query);\n if (options?.limit !== undefined)\n params.set(\"limit\", String(options.limit));\n if (options?.offset !== undefined)\n params.set(\"offset\", String(options.offset));\n const url = `${this.endpoint}/search?${params.toString()}`;\n const response = await fetch(url);\n if (!response.ok) {\n throw new RegistryError(`Search failed: ${response.statusText}`);\n }\n const data = await response.json();\n return (data.results || []).map((locator) => parseRXL(locator));\n }\n}\nasync function discoverRegistry(domain) {\n const wellKnownUrl = `https://${domain}/.well-known/resourcex`;\n try {\n const response = await fetch(wellKnownUrl);\n if (!response.ok) {\n throw new RegistryError(`Well-known discovery failed for ${domain}: ${response.statusText}`);\n }\n const data = await response.json();\n if (!data.registries || !Array.isArray(data.registries) || data.registries.length === 0) {\n throw new RegistryError(`Invalid well-known response for ${domain}: missing or empty registries`);\n }\n return {\n domain,\n registries: data.registries\n };\n } catch (error) {\n if (error instanceof RegistryError) {\n throw error;\n }\n throw new RegistryError(`Failed to discover registry for ${domain}: ${error.message}`);\n }\n}\nvar DEFAULT_GIT_CACHE = `${homedir2()}/.resourcex/.git-cache`;\n\nclass GitRegistry {\n url;\n ref;\n basePath;\n cacheDir;\n typeHandler;\n trustedDomain;\n constructor(config) {\n this.url = config.url;\n this.ref = config.ref ?? \"main\";\n this.basePath = config.basePath ?? \".resourcex\";\n this.typeHandler = TypeHandlerChain.create();\n this.trustedDomain = config.domain;\n if (this.isRemoteUrl(config.url) && !config.domain) {\n throw new RegistryError(`Remote git registry requires a trusted domain.\n\n` + `Either:\n` + `1. Use discoverRegistry(\"your-domain.com\") to auto-bind domain\n` + `2. Explicitly set domain: createRegistry({ type: \"git\", url: \"...\", domain: \"your-domain.com\" })\n\n` + `This ensures resources from untrusted sources cannot impersonate your domain.`);\n }\n this.cacheDir = this.buildCacheDir(config.url);\n }\n isRemoteUrl(url) {\n return url.startsWith(\"git@\") || url.startsWith(\"https://\") || url.startsWith(\"http://\");\n }\n buildCacheDir(url) {\n let normalized = url;\n if (url.startsWith(\"git@\")) {\n normalized = url.slice(4).replace(\":\", \"/\");\n }\n if (normalized.endsWith(\".git\")) {\n normalized = normalized.slice(0, -4);\n }\n const dirName = normalized.replace(/\\//g, \"-\");\n return join22(DEFAULT_GIT_CACHE, dirName);\n }\n supportType(type) {\n this.typeHandler.register(type);\n }\n async ensureCloned() {\n const gitDir = join22(this.cacheDir, \".git\");\n try {\n await stat22(gitDir);\n this.gitExec(`fetch origin ${this.ref}`);\n this.gitExec(`checkout FETCH_HEAD`);\n } catch {\n await mkdir22(DEFAULT_GIT_CACHE, { recursive: true });\n execSync(`git clone --depth 1 --branch ${this.ref} ${this.url} ${this.cacheDir}`, {\n stdio: \"pipe\"\n });\n }\n }\n gitExec(command) {\n execSync(`git -C ${this.cacheDir} ${command}`, { stdio: \"pipe\" });\n }\n buildResourcePath(locator) {\n const rxl = parseRXL(locator);\n const domain = rxl.domain ?? \"localhost\";\n const version = rxl.version ?? \"latest\";\n let path = join22(this.cacheDir, this.basePath, domain);\n if (rxl.path) {\n path = join22(path, rxl.path);\n }\n const resourceName = rxl.type ? `${rxl.name}.${rxl.type}` : rxl.name;\n return join22(path, resourceName, version);\n }\n async get(locator) {\n await this.ensureCloned();\n const resourcePath = this.buildResourcePath(locator);\n const manifestPath = join22(resourcePath, \"manifest.json\");\n try {\n await stat22(manifestPath);\n } catch {\n throw new RegistryError(`Resource not found: ${locator}`);\n }\n const manifestContent = await readFile22(manifestPath, \"utf-8\");\n const manifestData = JSON.parse(manifestContent);\n const manifest = createRXM(manifestData);\n if (this.trustedDomain && manifest.domain !== this.trustedDomain) {\n throw new RegistryError(`Untrusted domain: resource claims \"${manifest.domain}\" but registry only trusts \"${this.trustedDomain}\"`);\n }\n const contentPath = join22(resourcePath, \"content.tar.gz\");\n const data = await readFile22(contentPath);\n return this.typeHandler.deserialize(data, manifest);\n }\n async resolve(locator) {\n const rxr = await this.get(locator);\n return this.typeHandler.resolve(rxr);\n }\n async exists(locator) {\n try {\n await this.ensureCloned();\n const resourcePath = this.buildResourcePath(locator);\n const manifestPath = join22(resourcePath, \"manifest.json\");\n await stat22(manifestPath);\n return true;\n } catch {\n return false;\n }\n }\n async search(options) {\n await this.ensureCloned();\n const { query, limit, offset = 0 } = options ?? {};\n const locators = [];\n const baseDir = join22(this.cacheDir, this.basePath);\n try {\n const entries = await this.listRecursive(baseDir);\n for (const entry of entries) {\n if (!entry.endsWith(\"manifest.json\"))\n continue;\n const relativePath = entry.slice(baseDir.length + 1);\n const rxl = this.parseEntryToRXL(relativePath);\n if (rxl)\n locators.push(rxl);\n }\n } catch {\n return [];\n }\n let filtered = locators;\n if (query) {\n const lowerQuery = query.toLowerCase();\n filtered = locators.filter((rxl) => {\n const searchText = `${rxl.domain ?? \"\"} ${rxl.path ?? \"\"} ${rxl.name} ${rxl.type ?? \"\"}`.toLowerCase();\n return searchText.includes(lowerQuery);\n });\n }\n let result = filtered.slice(offset);\n if (limit !== undefined) {\n result = result.slice(0, limit);\n }\n return result;\n }\n async listRecursive(dir) {\n const results = [];\n try {\n const entries = await readdir22(dir, { withFileTypes: true });\n for (const entry of entries) {\n const fullPath = join22(dir, entry.name);\n if (entry.isDirectory()) {\n const subEntries = await this.listRecursive(fullPath);\n results.push(...subEntries);\n } else {\n results.push(fullPath);\n }\n }\n } catch {}\n return results;\n }\n parseEntryToRXL(entry) {\n const dirPath = entry.replace(/[/\\\\]manifest\\.json$/, \"\");\n const parts = dirPath.split(/[/\\\\]/);\n if (parts.length < 3)\n return null;\n const version = parts.pop();\n const nameTypePart = parts.pop();\n const domain = parts.shift();\n const path = parts.length > 0 ? parts.join(\"/\") : undefined;\n const dotIndex = nameTypePart.lastIndexOf(\".\");\n let name;\n let type;\n if (dotIndex !== -1) {\n name = nameTypePart.substring(0, dotIndex);\n type = nameTypePart.substring(dotIndex + 1);\n } else {\n name = nameTypePart;\n type = undefined;\n }\n let locatorStr = domain;\n if (path)\n locatorStr += `/${path}`;\n locatorStr += `/${name}`;\n if (type)\n locatorStr += `.${type}`;\n locatorStr += `@${version}`;\n try {\n return parseRXL(locatorStr);\n } catch {\n return null;\n }\n }\n async pull(_locator, _options) {\n throw new RegistryError(\"GitRegistry is read-only - use LocalRegistry.pull()\");\n }\n async publish(_resource, _options) {\n throw new RegistryError(\"GitRegistry is read-only - use LocalRegistry.publish()\");\n }\n async link(_resource) {\n throw new RegistryError(\"GitRegistry is read-only - use LocalRegistry.link()\");\n }\n async delete(_locator) {\n throw new RegistryError(\"GitRegistry is read-only - use LocalRegistry.delete()\");\n }\n}\nfunction createRegistry(config) {\n if (isRemoteConfig(config)) {\n return new RemoteRegistry(config);\n }\n if (isGitConfig(config)) {\n return new GitRegistry(config);\n }\n return new LocalRegistry(config);\n}\n\n// src/transport/rxr.ts\nvar registryCache = new Map;\n\nclass RxrTransport {\n registry;\n name = \"rxr\";\n constructor(registry) {\n this.registry = registry;\n }\n async get(location, _params) {\n const { domain, rxl, internalPath } = this.parseLocation(location);\n const registry = await this.getRegistry(domain);\n const rxr = await registry.get(rxl);\n const files = await rxr.content.files();\n const file = files.get(internalPath);\n if (!file) {\n throw new TransportError(`File not found in resource: ${internalPath}`, this.name);\n }\n return {\n content: file,\n metadata: { type: \"file\", size: file.length }\n };\n }\n async set(_location, _content, _params) {\n throw new TransportError(\"RXR transport is read-only\", this.name);\n }\n async exists(location) {\n try {\n const { domain, rxl, internalPath } = this.parseLocation(location);\n const registry = await this.getRegistry(domain);\n const rxr = await registry.get(rxl);\n const files = await rxr.content.files();\n return files.has(internalPath);\n } catch {\n return false;\n }\n }\n async delete(_location) {\n throw new TransportError(\"RXR transport is read-only\", this.name);\n }\n async getRegistry(domain) {\n if (this.registry) {\n return this.registry;\n }\n if (registryCache.has(domain)) {\n return registryCache.get(domain);\n }\n let registry;\n if (domain === \"localhost\") {\n registry = createRegistry();\n } else {\n try {\n const discovery = await discoverRegistry(domain);\n const registryUrl = discovery.registries[0];\n if (this.isGitUrl(registryUrl)) {\n registry = createRegistry({\n type: \"git\",\n url: registryUrl,\n domain: discovery.domain\n });\n } else {\n registry = createRegistry({ endpoint: registryUrl });\n }\n } catch (error) {\n throw new TransportError(`Failed to discover registry for domain ${domain}: ${error.message}`, this.name);\n }\n }\n registryCache.set(domain, registry);\n return registry;\n }\n isGitUrl(url) {\n return url.startsWith(\"git@\") || url.endsWith(\".git\");\n }\n parseLocation(location) {\n const atIndex = location.indexOf(\"@\");\n if (atIndex === -1) {\n throw new TransportError(`Invalid RXR location (missing @version): ${location}`, this.name);\n }\n const slashAfterVersion = location.indexOf(\"/\", atIndex);\n if (slashAfterVersion === -1) {\n throw new TransportError(`Invalid RXR location (missing internal path): ${location}`, this.name);\n }\n const firstSlash = location.indexOf(\"/\");\n const domain = firstSlash > 0 ? location.slice(0, firstSlash) : \"localhost\";\n return {\n domain,\n rxl: location.slice(0, slashAfterVersion),\n internalPath: location.slice(slashAfterVersion + 1)\n };\n }\n}\nfunction clearRegistryCache() {\n registryCache.clear();\n}\n// src/semantic/text.ts\nclass TextSemanticHandler {\n name = \"text\";\n async resolve(transport, location, context) {\n const result = await transport.get(location, context.params);\n if (result.metadata?.type === \"directory\") {\n const meta2 = {\n url: context.url,\n semantic: context.semantic,\n transport: context.transport,\n location: context.location,\n size: result.content.length,\n encoding: \"utf-8\",\n mimeType: \"application/json\",\n resolvedAt: context.timestamp.toISOString(),\n type: \"directory\"\n };\n return {\n type: \"text\",\n content: result.content.toString(\"utf-8\"),\n meta: meta2\n };\n }\n const text = result.content.toString(\"utf-8\");\n const meta = {\n url: context.url,\n semantic: context.semantic,\n transport: context.transport,\n location: context.location,\n size: result.metadata?.size ?? result.content.length,\n encoding: \"utf-8\",\n mimeType: \"text/plain\",\n resolvedAt: context.timestamp.toISOString(),\n type: \"file\"\n };\n return {\n type: \"text\",\n content: text,\n meta\n };\n }\n async deposit(transport, location, data, context) {\n const buffer = Buffer.from(data, \"utf-8\");\n try {\n await transport.set(location, buffer, context.params);\n } catch (error) {\n throw new SemanticError(`Failed to deposit text to \"${location}\": ${error.message}`, this.name, { cause: error });\n }\n }\n async exists(transport, location, _context) {\n return transport.exists(location);\n }\n async delete(transport, location, _context) {\n try {\n await transport.delete(location);\n } catch (error) {\n throw new SemanticError(`Failed to delete \"${location}\": ${error.message}`, this.name, { cause: error });\n }\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 result = await transport.get(location, context.params);\n const meta = {\n url: context.url,\n semantic: context.semantic,\n transport: context.transport,\n location: context.location,\n size: result.metadata?.size ?? result.content.length,\n resolvedAt: context.timestamp.toISOString(),\n type: result.metadata?.type\n };\n return {\n type: \"binary\",\n content: result.content,\n meta\n };\n }\n async deposit(transport, location, data, context) {\n const buffer = toBuffer(data);\n try {\n await transport.set(location, buffer, context.params);\n } catch (error) {\n throw new SemanticError(`Failed to deposit binary to \"${location}\": ${error.message}`, this.name, { cause: error });\n }\n }\n async exists(transport, location, _context) {\n return transport.exists(location);\n }\n async delete(transport, location, _context) {\n try {\n await transport.delete(location);\n } catch (error) {\n throw new SemanticError(`Failed to delete \"${location}\": ${error.message}`, this.name, { cause: error });\n }\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 = \"2.0.0\";\nexport {\n textSemantic,\n httpsTransport,\n httpTransport,\n fileTransport,\n createARP,\n clearRegistryCache,\n binarySemantic,\n VERSION,\n TransportError,\n TextSemanticHandler,\n SemanticError,\n RxrTransport,\n ParseError,\n HttpTransportHandler,\n FileTransportHandler,\n BinarySemanticHandler,\n ARPError,\n ARP\n};\n\n//# debugId=1847C08CED2B25BC64756E2164756E21\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "FC92A0992F1DA3E764756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "CFFA41D50CE0FA3A64756E2164756E21",
9
9
  "names": []
10
10
  }