diff --git a/packages/react-native/Libraries/Blob/URL.js b/packages/react-native/Libraries/Blob/URL.js index db4bb2792a1e3a..addba01427dce1 100644 --- a/packages/react-native/Libraries/Blob/URL.js +++ b/packages/react-native/Libraries/Blob/URL.js @@ -107,15 +107,19 @@ export class URL { } get hash(): string { - throw new Error('URL.hash is not implemented'); + const hashMatch = this._url.match(/#(.*)$/); + return hashMatch ? `#${hashMatch[1]}` : ''; } get host(): string { - throw new Error('URL.host is not implemented'); + const hostMatch = this._url.match(/^https?:\/\/([^:/?#]+)/); + const portMatch = this._url.match(/:(\d+)(?=[/?#]|$)/); + return hostMatch ? hostMatch[1] + (portMatch ? `:${portMatch[1]}` : '') : ''; } get hostname(): string { - throw new Error('URL.hostname is not implemented'); + const hostnameMatch = this._url.match(/^https?:\/\/([^:/?#]+)/); + return hostnameMatch ? hostnameMatch[1] : ''; } get href(): string { @@ -123,27 +127,33 @@ export class URL { } get origin(): string { - throw new Error('URL.origin is not implemented'); + const matches = this._url.match(/^(https?:\/\/[^/]+)/); + return matches ? matches[1] : ''; } get password(): string { - throw new Error('URL.password is not implemented'); + const passwordMatch = this._url.match(/https?:\/\/.*:(.*)@/); + return passwordMatch ? passwordMatch[1] : ''; } get pathname(): string { - throw new Error('URL.pathname not implemented'); + const pathMatch = this._url.match(/https?:\/\/[^/]+(\/[^?#]*)?/); + return pathMatch ? pathMatch[1] || '/' : '/'; } get port(): string { - throw new Error('URL.port is not implemented'); + const portMatch = this._url.match(/:(\d+)(?=[/?#]|$)/); + return portMatch ? portMatch[1] : ''; } get protocol(): string { - throw new Error('URL.protocol is not implemented'); + const protocolMatch = this._url.match(/^([a-zA-Z][a-zA-Z\d+\-.]*):/); + return protocolMatch ? protocolMatch[1] + ':' : ''; } get search(): string { - throw new Error('URL.search is not implemented'); + const searchMatch = this._url.match(/\?([^#]*)/); + return searchMatch ? `?${searchMatch[1]}` : ''; } get searchParams(): URLSearchParams {