lucent-pack 0.1.0__py3-none-any.whl

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/httpuv/constants.ts","../src/httpuv/debug.ts","../src/httpuv/prefix.ts","../src/httpuv/bridge.ts","../src/httpuv/r-push.ts","../src/httpuv/index.ts"],"names":["shinyPrefix","body","transfer"],"mappings":"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","file":"httpuv-web.js","sourcesContent":["/** WebSocket frame types used by httpuv (mirrors native httpuv). */\nexport const WS_FRAME = {\n SEND: \"websocket.send\",\n CLOSE: \"websocket.close\",\n} as const;\n\n/** R_HOME inside the mounted wasm prefix (VFS root is /). */\nexport const WASM_R_HOME = \"/lib/R\";\n\n/** Max time the service worker waits for the R worker to answer a request. */\nexport const REQUEST_TIMEOUT_MS = 180_000;\n\n/** Message types exchanged between the service worker and the main page. */\nexport const MSG = {\n REGISTER_HOST: \"httpuv_register_host\",\n HTTP_REQUEST: \"httpuv_http_request\",\n HTTP_RESPONSE: \"httpuv_http_response\",\n WS_PUSH: \"httpuv_ws_push\",\n /** Iframe → SW (on session port): frame delivered to Shiny.createSocket. */\n WS_PUSH_ACK: \"httpuv_ws_push_ack\",\n STOP: \"httpuv_stop\",\n /** Drop cached GET /shiny/ without tearing down the R worker (app restart). */\n CLEAR_APP_CACHE: \"httpuv_clear_app_cache\",\n /** Host -> SW: full shiny::resourcePaths() map (warmup). */\n REGISTER_RESOURCE_PATHS: \"httpuv_register_resource_paths\",\n /** Host -> SW: upsert or remove one addResourcePath prefix (empty dir removes). */\n UPDATE_RESOURCE_PATH: \"httpuv_update_resource_path\",\n /** SW -> host: Comlink to the R worker was lost (e.g. after SW update). */\n REQUEST_COMLINK: \"httpuv_request_comlink\",\n /** Iframe → SW: transfer a MessagePort for session WS push delivery. */\n REGISTER_SESSION: \"httpuv_register_session\",\n /** SW → iframe (on session port): registration accepted. */\n SESSION_ACK: \"httpuv_session_ack\",\n /** SW → iframe client: session MessagePort was lost (e.g. SW idle restart); re-REGISTER_SESSION. */\n REQUEST_SESSION_PORT: \"httpuv_request_session_port\",\n} as const;\n\n/** Bypass SW app-document cache (warmup must hit R so deps register). */\nexport const WARMUP_REQUEST_HEADER = \"X-Shiny-Forge-Warmup\";\n\n/** Message types on Module.httpuv.channel (R <-> JS bridge). */\nexport const CHANNEL = {\n HTTP_REQUEST: \"httpuv_http_request\",\n TCP_RESPONSE: \"httpuv_tcp_response\",\n WS_OPEN: \"httpuv_ws_open\",\n WS_MESSAGE: \"httpuv_ws_message\",\n WS_CLOSE: \"httpuv_ws_close\",\n WS_RESPONSE: \"httpuv_ws_response\",\n STDIN: \"stdin\",\n} as const;\n\n/** R option names registered by httpuv::startServer(). */\nexport const HTTPUV_OPTIONS = {\n ON_REQUEST: \"httpuv_onRequest\",\n ON_WS_OPEN: \"httpuv_onWSOpen\",\n ON_WS_MESSAGE: \"httpuv_onWSMessage\",\n ON_WS_CLOSE: \"httpuv_onWSClose\",\n} as const;\n\n/** Comlink MessagePort handshake between host page, service worker, and R worker. */\nexport const COMLINK = {\n PORT_HANDOFF: \"httpuv_comlink_port\",\n /**\n * SW -> host: the handoff port arrived. Sent before the Comlink round-trip so\n * the host can distinguish a dropped handoff (worker evicted mid-boot) from an\n * R worker that never finished setup.\n */\n PORT_HANDOFF_ACK: \"httpuv_comlink_port_ack\",\n} as const;\n","/**\n * Opt-in tracing for the httpuv / Shiny-Forge request pipeline.\n *\n * Enable with either:\n * - URL query: ?httpuvDebug=1\n * - localStorage: localStorage.shinyForgeDebug = \"1\"\n * - console: shinyForge.enableHttpuvDebug()\n */\nexport function isHttpuvDebug(): boolean {\n if (globalThis.__HTTPUV_DEBUG__) {\n return true;\n }\n try {\n if (typeof location !== \"undefined\") {\n const params = new URLSearchParams(location.search);\n if (params.has(\"httpuvDebug\") || params.get(\"debug\") === \"httpuv\") {\n return true;\n }\n }\n if (typeof localStorage !== \"undefined\" && localStorage.getItem(\"shinyForgeDebug\") === \"1\") {\n return true;\n }\n if (typeof self !== \"undefined\" && self.location?.href) {\n const params = new URL(self.location.href).searchParams;\n if (params.has(\"httpuvDebug\") || params.get(\"debug\") === \"httpuv\") {\n return true;\n }\n }\n } catch {\n // ignore\n }\n return false;\n}\n\nexport function httpuvDebugLog(stage: string, ...args: unknown[]): void {\n if (!isHttpuvDebug()) {\n return;\n }\n console.info(`[httpuv-debug:${stage}]`, ...args);\n}\n\nexport function enableHttpuvDebug(): void {\n globalThis.__HTTPUV_DEBUG__ = true;\n try {\n localStorage.setItem(\"shinyForgeDebug\", \"1\");\n } catch {\n // ignore\n }\n console.info(\n \"[httpuv-debug] enabled - reload or run shinyForge.enableHttpuvDebug() then re-run app\",\n );\n}\n","let shinyPrefix: string | null = null;\n\n/**\n * Resolve the virtual Shiny app prefix from a module script URL.\n * e.g. /site/runApp.js -> /site/shiny/\n */\nexport function resolveShinyPrefix(fromUrl: string | URL): string {\n const prefix = new URL(\"shiny/\", fromUrl).pathname;\n return prefix.endsWith(\"/\") ? prefix : `${prefix}/`;\n}\n\nexport function setShinyPrefix(prefix: string): void {\n shinyPrefix = prefix.endsWith(\"/\") ? prefix : `${prefix}/`;\n}\n\nexport function getShinyPrefix(): string {\n if (!shinyPrefix) {\n throw new Error(\"Shiny prefix not initialized\");\n }\n return shinyPrefix;\n}\n\n/** Session directory name under the Shiny virtual app prefix. */\nexport const SESSION_DIR = \"__session__\";\n\n/** Host -> SW outbound path (fetch fallback when controller.postMessage unavailable). */\nexport const HOST_DIR = \"__host__\";\n\nexport interface SessionAction {\n action: string;\n handle: string | null;\n}\n\n/**\n * Strip accidental JSON quoting from session handles (R/Comlink sometimes\n * double-encode UUID strings).\n */\nexport function normalizeSessionHandle(handle: unknown): string {\n let s = String(handle ?? \"\").trim();\n while (s.length >= 2 && s.startsWith('\"') && s.endsWith('\"')) {\n s = s.slice(1, -1);\n }\n return s;\n}\n\nexport function resolveSessionPrefix(fromUrl: string | URL): string {\n return `${resolveShinyPrefix(fromUrl)}${SESSION_DIR}/`;\n}\n\nexport function getSessionPrefix(): string {\n return `${getShinyPrefix()}${SESSION_DIR}/`;\n}\n\nexport function parseSessionAction(urlString: string, prefix: string): SessionAction | null {\n const url = new URL(urlString);\n const sessionPrefix = `${prefix}${SESSION_DIR}/`;\n if (!url.pathname.startsWith(sessionPrefix)) {\n return null;\n }\n const action = url.pathname.slice(sessionPrefix.length).replace(/\\/$/, \"\");\n if (![\"open\", \"send\", \"recv\", \"close\"].includes(action)) {\n return null;\n }\n const rawHandle = url.searchParams.get(\"handle\");\n return {\n action,\n handle: rawHandle ? normalizeSessionHandle(rawHandle) : null,\n };\n}\n\n/** Session HTTP actions handled by the R worker (not SW MessagePort delivery). */\nexport function isSessionHttpRequest(urlString: string, prefix?: string): boolean {\n if (prefix) {\n const session = parseSessionAction(urlString, prefix);\n return session !== null && session.action !== \"recv\";\n }\n return /\\/__session__\\/(open|send|close)(?:\\?|$|\\/)/.test(urlString);\n}\n\nexport function isHostPushUrl(urlString: string, prefix: string): boolean {\n const url = new URL(urlString);\n return url.pathname === `${prefix}${HOST_DIR}/push`;\n}\n\n/**\n * Build a same-origin URL under the Shiny virtual app prefix.\n * @param fromUrl defaults to this module's location when called from the main page\n */\nexport function shinyAppUrl(subpath = \"\", fromUrl: string | URL = import.meta.url): string {\n const base = new URL(\"shiny/\", fromUrl);\n return new URL(subpath.replace(/^\\//, \"\"), base).href;\n}\n","import { CHANNEL, HTTPUV_OPTIONS, MSG, WS_FRAME } from \"./constants\";\nimport { httpuvDebugLog } from \"./debug\";\nimport {\n getShinyPrefix,\n normalizeSessionHandle,\n parseSessionAction,\n shinyAppUrl,\n} from \"./prefix\";\nimport type { SessionAction } from \"./prefix\";\nimport type {\n ChannelMessage,\n HeaderMap,\n HostInboundMessage,\n HttpRequestInput,\n HttpuvChannel,\n HttpuvModule,\n InvokeROption,\n OutboundDeliver,\n} from \"./types\";\n\nlet invokeROption: InvokeROption | null = null;\n\nlet pushToR: ((msg: ChannelMessage) => void) | null = null;\n\nfunction decodeBase64Body(data: unknown): ArrayBuffer {\n const text = String(data ?? \"\");\n const binary = atob(text);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes.buffer;\n}\n\nfunction encodeResponseBody(body: unknown): string | ArrayBuffer | null {\n if (body == null) {\n return null;\n }\n if (\n typeof body === \"object\" &&\n !Array.isArray(body) &&\n (body as { httpuvRaw?: string }).httpuvRaw === \"base64\"\n ) {\n return decodeBase64Body((body as { data?: unknown }).data);\n }\n if (typeof body === \"string\") {\n return body;\n }\n if (body instanceof ArrayBuffer) {\n return body;\n }\n if (ArrayBuffer.isView(body)) {\n return body.buffer.slice(body.byteOffset, body.byteOffset + body.byteLength) as ArrayBuffer;\n }\n if (Array.isArray(body)) {\n return new Uint8Array(body).buffer;\n }\n return String(body);\n}\n\nfunction normalizeHeaders(headers: unknown): HeaderMap {\n if (!headers || typeof headers !== \"object\") {\n return {};\n }\n const out: HeaderMap = {};\n for (const [key, value] of Object.entries(headers as Record<string, unknown>)) {\n if (value != null) {\n out[key] = String(value);\n }\n }\n return out;\n}\n\nfunction shinyPathInfo(pathname: string): string {\n const shinyPrefix = getShinyPrefix();\n if (!pathname.startsWith(shinyPrefix)) {\n return pathname || \"/\";\n }\n const rest = pathname.slice(shinyPrefix.length).replace(/^\\/+/, \"\");\n return rest ? `/${rest}` : \"/\";\n}\n\n/** Build a rook-like request env object for httpuv handlers. */\nexport function buildReq(msg: HttpRequestInput): Record<string, unknown> {\n const url = new URL(msg.url);\n const pathInfo = shinyPathInfo(url.pathname);\n const queryString = url.search.length > 1 ? url.search.slice(1) : \"\";\n const shinyPrefix = getShinyPrefix();\n\n const req: Record<string, unknown> = {\n UUID: msg.uuid,\n REQUEST_METHOD: msg.method,\n SCRIPT_NAME: shinyPrefix.replace(/\\/$/, \"\"),\n PATH_INFO: pathInfo,\n QUERY_STRING: queryString,\n \"rook.version\": \"1.1-0\",\n \"rook.url_scheme\": url.protocol === \"https:\" ? \"https\" : \"http\",\n SERVER_NAME: url.hostname,\n SERVER_PORT: url.port || (url.protocol === \"https:\" ? \"443\" : \"80\"),\n REMOTE_ADDR: \"127.0.0.1\",\n REMOTE_PORT: \"0\",\n HEADERS: { ...(msg.headers ?? {}) },\n };\n\n for (const [key, value] of Object.entries(msg.headers ?? {})) {\n req[`HTTP_${key.toUpperCase().replace(/-/g, \"_\")}`] = value;\n }\n\n if (msg.body) {\n req.body = msg.body;\n req.CONTENT_LENGTH = String(msg.body.byteLength);\n }\n\n return req;\n}\n\n/** Absolute pathname for shiny-socket.js (served next to httpuv-web.js). */\nexport function shinySocketScriptUrl(): string {\n return new URL(\"./shiny-socket.js\", import.meta.url).pathname;\n}\n\n/** Inject the virtual Shiny socket bootstrap into an HTML document. */\nexport function injectShinySocketBootstrap(html: string): string {\n const prefix = getShinyPrefix();\n const baseTag = html.includes(\"<base\") ? \"\" : `<base href=\"${prefix}\">`;\n const tag = `<script type=\"module\" src=\"${shinySocketScriptUrl()}\"></script>`;\n const injection = [baseTag, tag].filter(Boolean).join(\"\\n \");\n if (html.includes(\"<head\")) {\n return html.replace(/<head([^>]*)>/, `<head$1>\\n ${injection}`);\n }\n if (html.includes(\"<body\")) {\n return html.replace(/<body([^>]*)>/, `<body$1>\\n ${tag}`);\n }\n return `${tag}\\n${html}`;\n}\n\nfunction bodyToText(body: unknown): string | null {\n if (body == null) {\n return null;\n }\n if (typeof body === \"string\") {\n return body;\n }\n if (body instanceof ArrayBuffer) {\n return new TextDecoder().decode(body);\n }\n if (ArrayBuffer.isView(body)) {\n return new TextDecoder().decode(body);\n }\n if (Array.isArray(body)) {\n return new TextDecoder().decode(new Uint8Array(body));\n }\n return null;\n}\n\nfunction maybeInjectShinySocketBootstrap(\n body: unknown,\n headers: HeaderMap,\n): string | ArrayBuffer | null {\n const contentType =\n Object.entries(headers).find(([key]) => key.toLowerCase() === \"content-type\")?.[1] ?? \"\";\n // Decode httpuvRaw/base64 (and other wire formats) before HTML text injection.\n const normalized = encodeResponseBody(body);\n if (!contentType.includes(\"text/html\")) {\n return normalized;\n }\n const html = bodyToText(normalized);\n if (!html) {\n return normalized;\n }\n return injectShinySocketBootstrap(html);\n}\n\nfunction sessionMessageFromBody(\n body: ArrayBuffer | null | undefined,\n): { binary: boolean; message: string | ArrayBuffer } {\n if (!body || body.byteLength === 0) {\n return { binary: false, message: \"\" };\n }\n const bytes = new Uint8Array(body);\n const isText = bytes.every((b) => b === 9 || b === 10 || b === 13 || (b >= 32 && b <= 126));\n if (isText) {\n return { binary: false, message: new TextDecoder().decode(body) };\n }\n return { binary: true, message: body };\n}\n\nfunction handleSessionHttp(msg: HostInboundMessage, session: SessionAction): void {\n switch (session.action) {\n case \"open\": {\n const handle = normalizeSessionHandle(crypto.randomUUID());\n const req = buildReq(msg as HttpRequestInput);\n pushInboundChannelMessage({ type: CHANNEL.WS_OPEN, handle, req });\n sendTcpResponse(\n msg.uuid ?? \"\",\n 200,\n { \"Content-Type\": \"application/json\" },\n JSON.stringify({ handle }),\n );\n break;\n }\n\n case \"send\": {\n if (!session.handle) {\n sendTcpResponse(msg.uuid ?? \"\", 400, { \"Content-Type\": \"text/plain\" }, \"missing handle\");\n return;\n }\n const { binary, message } = sessionMessageFromBody(msg.body);\n pushInboundChannelMessage({\n type: CHANNEL.WS_MESSAGE,\n handle: normalizeSessionHandle(session.handle),\n binary,\n message,\n });\n sendTcpResponse(msg.uuid ?? \"\", 204, {}, null);\n break;\n }\n\n case \"close\": {\n if (!session.handle) {\n sendTcpResponse(msg.uuid ?? \"\", 400, { \"Content-Type\": \"text/plain\" }, \"missing handle\");\n return;\n }\n pushInboundChannelMessage({\n type: CHANNEL.WS_CLOSE,\n handle: normalizeSessionHandle(session.handle),\n });\n sendTcpResponse(msg.uuid ?? \"\", 204, {}, null);\n break;\n }\n\n default:\n sendTcpResponse(\n msg.uuid ?? \"\",\n 404,\n { \"Content-Type\": \"text/plain\" },\n \"unknown session action\",\n );\n }\n}\n\nfunction sendTcpResponse(\n uuid: string,\n status: number,\n headers: HeaderMap,\n body: unknown,\n): void {\n getChannel().write({\n type: CHANNEL.TCP_RESPONSE,\n uuid,\n data: {\n status,\n headers,\n body,\n },\n });\n}\n\nfunction getServiceWorkerController(): ServiceWorker | null {\n return navigator.serviceWorker.controller;\n}\n\nfunction serializeBodyForChannel(body: ArrayBuffer | null | undefined): number[] | null {\n if (!body) {\n return null;\n }\n return Array.from(new Uint8Array(body));\n}\n\nfunction formatOutboundForHost(msg: ChannelMessage, deliver: OutboundDeliver): void {\n if (msg.type === CHANNEL.TCP_RESPONSE) {\n const headers = normalizeHeaders(msg.data?.headers);\n let body: string | ArrayBuffer | null;\n try {\n body = maybeInjectShinySocketBootstrap(msg.data?.body, headers);\n } catch (err) {\n console.warn(\"[httpuv-bridge] shiny socket bootstrap injection failed\", err);\n body = encodeResponseBody(msg.data?.body);\n }\n const transfer = body instanceof ArrayBuffer ? [body] : [];\n deliver(\n {\n type: MSG.HTTP_RESPONSE,\n uuid: msg.uuid,\n status: msg.data?.status ?? 500,\n headers,\n body,\n },\n transfer,\n );\n return;\n }\n\n const body = encodeResponseBody(msg.data?.message);\n const transfer = body instanceof ArrayBuffer ? [body] : [];\n\n if (msg.type === CHANNEL.WS_RESPONSE) {\n deliver(\n {\n type: MSG.WS_PUSH,\n handle: normalizeSessionHandle(msg.data?.handle),\n binary: msg.data?.binary ?? false,\n wsType: msg.data?.type ?? WS_FRAME.SEND,\n message: body,\n },\n transfer,\n );\n }\n}\n\nasync function postToServiceWorker(msg: ChannelMessage): Promise<void> {\n const controller = getServiceWorkerController();\n formatOutboundForHost(msg, (outbound, transfer = []) => {\n if (msg.type === CHANNEL.TCP_RESPONSE) {\n if (controller) {\n controller.postMessage(outbound, transfer);\n return;\n }\n void fetch(shinyAppUrl(\"__host__/push\"), {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(outbound),\n });\n return;\n }\n\n if (msg.type === CHANNEL.WS_RESPONSE) {\n if (controller) {\n controller.postMessage(outbound, transfer);\n return;\n }\n const outboundMsg = outbound as { message?: unknown };\n void fetch(shinyAppUrl(\"__host__/push\"), {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n ...outbound,\n message:\n typeof outboundMsg.message === \"string\" ? outboundMsg.message : undefined,\n }),\n });\n }\n });\n}\n\nlet postOutbound: OutboundDeliver | null = null;\n\nconst deferredOutbound: ChannelMessage[] = [];\n\n/**\n * Deliver responses queued while evalR is active (Comlink must not run inside WASM eval).\n */\nexport function flushDeferredOutbound(): void {\n if (deferredOutbound.length === 0) {\n return;\n }\n const batch = deferredOutbound.splice(0, deferredOutbound.length);\n for (const msg of batch) {\n postOutboundSync(msg);\n }\n}\n\nfunction postOutboundMaybeDefer(msg: ChannelMessage): void {\n const depth = globalThis.Module?._rWasmEvalDepth ?? 0;\n if (depth > 0) {\n deferredOutbound.push(msg);\n if (msg.type === CHANNEL.TCP_RESPONSE) {\n httpuvDebugLog(\"channel-tcp-response-deferred\", {\n uuid: msg.uuid,\n status: msg.data?.status,\n depth,\n });\n }\n return;\n }\n if (msg.type === CHANNEL.TCP_RESPONSE) {\n httpuvDebugLog(\"channel-tcp-response\", {\n uuid: msg.uuid,\n status: msg.data?.status,\n });\n }\n postOutboundSync(msg);\n}\n\nfunction postOutboundSync(msg: ChannelMessage): void {\n if (postOutbound) {\n formatOutboundForHost(msg, (outbound, transfer = []) => {\n postOutbound?.(outbound, transfer);\n });\n return;\n }\n void postToServiceWorker(msg);\n}\n\nfunction createChannel(): HttpuvChannel {\n const inbox: ChannelMessage[] = [];\n\n return {\n inbox,\n\n hasMessage() {\n return inbox.length > 0;\n },\n\n read() {\n return inbox.shift() ?? { type: CHANNEL.STDIN };\n },\n\n write(msg: ChannelMessage) {\n if (msg.type === CHANNEL.TCP_RESPONSE || msg.type === CHANNEL.WS_RESPONSE) {\n postOutboundMaybeDefer(msg);\n return;\n }\n console.warn(\n \"[httpuv-bridge] inbound channel.write is deprecated; use pushInboundChannelMessage\",\n msg.type,\n );\n pushInboundChannelMessage(msg);\n },\n };\n}\n\nexport function dispatch(msg: ChannelMessage): void {\n if (!msg || typeof msg !== \"object\" || typeof msg.type !== \"string\") {\n return;\n }\n\n switch (msg.type) {\n case CHANNEL.HTTP_REQUEST: {\n const req = buildReq(msg as unknown as HttpRequestInput);\n const handled = invokeROption?.(HTTPUV_OPTIONS.ON_REQUEST, req) ?? false;\n if (!handled) {\n sendTcpResponse(\n msg.uuid ?? \"\",\n 503,\n { \"Content-Type\": \"text/plain\" },\n \"httpuv: no R handler registered\",\n );\n }\n break;\n }\n\n case CHANNEL.WS_OPEN: {\n const handled =\n invokeROption?.(HTTPUV_OPTIONS.ON_WS_OPEN, msg.handle, msg.req) ?? false;\n if (!handled) {\n httpuvDebugLog(\"bridge-ws-open-no-handler\", msg.handle);\n }\n break;\n }\n\n case CHANNEL.WS_MESSAGE: {\n const handled =\n invokeROption?.(\n HTTPUV_OPTIONS.ON_WS_MESSAGE,\n msg.handle,\n msg.binary,\n msg.message,\n ) ?? false;\n if (!handled) {\n httpuvDebugLog(\"bridge-ws-message-no-handler\", msg.handle);\n getChannel().write({\n type: CHANNEL.WS_RESPONSE,\n data: {\n handle: msg.handle,\n binary: msg.binary,\n type: WS_FRAME.SEND,\n message: msg.message,\n },\n });\n }\n break;\n }\n\n case CHANNEL.WS_CLOSE: {\n invokeROption?.(HTTPUV_OPTIONS.ON_WS_CLOSE, msg.handle);\n break;\n }\n\n default:\n console.warn(\"[httpuv-bridge] unhandled channel message\", msg.type);\n }\n}\n\n/** Drain inbound channel messages until empty or only stdin placeholders remain. */\nexport function drainInboundChannel(): void {\n const channel = getChannel();\n while (channel.hasMessage()) {\n const msg = channel.read();\n if (msg.type === CHANNEL.STDIN) {\n continue;\n }\n dispatch(msg);\n }\n}\n\nfunction getChannel(): HttpuvChannel {\n const httpuv = ensureModuleHttpuv();\n if (!httpuv.channel) {\n httpuv.channel = createChannel();\n }\n return httpuv.channel;\n}\n\nfunction ensureModuleHttpuv(): HttpuvModule {\n globalThis.Module = globalThis.Module ?? {};\n globalThis.Module.httpuv = globalThis.Module.httpuv ?? {};\n return globalThis.Module.httpuv;\n}\n\n/** Push a channel message into R immediately (worker push path). */\nexport function pushInboundChannelMessage(msg: ChannelMessage): boolean {\n if (!pushToR) {\n console.warn(\"[httpuv-bridge] pushToR not configured\");\n return false;\n }\n pushToR(msg);\n return true;\n}\n\n/** Push an inbound host message from the service worker into R. */\nexport function pushInboundHostMessage(msg: HostInboundMessage): void {\n if (!msg || typeof msg !== \"object\") {\n return;\n }\n\n switch (msg.type) {\n case MSG.HTTP_REQUEST: {\n const session = parseSessionAction(msg.url ?? \"\", getShinyPrefix());\n if (session && session.action !== \"recv\") {\n httpuvDebugLog(\"bridge-inbound-session\", {\n uuid: msg.uuid,\n action: session.action,\n handle: session.handle,\n });\n handleSessionHttp(msg, session);\n break;\n }\n\n httpuvDebugLog(\"bridge-push-http\", {\n uuid: msg.uuid,\n method: msg.method,\n url: msg.url,\n });\n pushInboundChannelMessage({\n type: CHANNEL.HTTP_REQUEST,\n uuid: msg.uuid,\n method: msg.method,\n url: msg.url,\n headers: msg.headers ?? {},\n body: serializeBodyForChannel(msg.body),\n clientId: msg.clientId,\n });\n break;\n }\n\n case MSG.STOP:\n break;\n\n default:\n break;\n }\n}\n\n/** Handle an inbound message from the service worker (or a host proxy). */\nexport function handleInboundHostMessage(msg: HostInboundMessage): void {\n pushInboundHostMessage(msg);\n}\n\nfunction installServiceWorkerListener(): void {\n navigator.serviceWorker.addEventListener(\"message\", (event) => {\n handleInboundHostMessage(event.data as HostInboundMessage);\n });\n}\n\nexport interface HttpuvBridgeOptions {\n /** Deliver HTTP/WS responses to the host (main page -> service worker). */\n postOutbound?: OutboundDeliver;\n /** Listen for service worker messages in this context (false in the R worker). */\n installSwListener?: boolean;\n /** Push inbound HTTP/WebSocket channel messages into R (R worker only). */\n pushToR?: (msg: ChannelMessage) => void;\n /** Shiny host mode: immediate wake (NEED_SERVICE). */\n requestHostService?: () => void;\n /** Shiny host mode: delayed wake (SCHEDULE_DELAY). */\n scheduleHostDelay?: (delayMs: number) => void;\n}\n\n/**\n * Install Module.httpuv (channel + dispatch) and optionally wire the service\n * worker listener. Call before WASM R starts.\n */\nexport function installHttpuvBridge(options: HttpuvBridgeOptions = {}): HttpuvModule {\n if (options.postOutbound) {\n postOutbound = options.postOutbound;\n }\n if (options.pushToR) {\n pushToR = options.pushToR;\n }\n\n const httpuv = ensureModuleHttpuv();\n\n if (!httpuv.channel) {\n httpuv.channel = createChannel();\n }\n\n httpuv.dispatch = dispatch;\n httpuv.drainInboundChannel = drainInboundChannel;\n httpuv.pushInboundChannelMessage = pushInboundChannelMessage;\n httpuv.pushInboundHostMessage = pushInboundHostMessage;\n httpuv.buildReq = buildReq;\n httpuv.injectShinySocketBootstrap = injectShinySocketBootstrap;\n httpuv.shinySocketScriptUrl = shinySocketScriptUrl;\n httpuv.shinyPrefix = getShinyPrefix();\n\n if (options.requestHostService) {\n httpuv.requestHostService = options.requestHostService;\n }\n if (options.scheduleHostDelay) {\n httpuv.scheduleHostDelay = options.scheduleHostDelay;\n }\n\n /** Push a message to a virtual socket recv waiter (used by R via channel.write). */\n httpuv.pushWsMessage = (handle, message, opts = {}) => {\n getChannel().write({\n type: CHANNEL.WS_RESPONSE,\n data: {\n handle,\n binary: opts.binary ?? false,\n type: opts.wsType ?? WS_FRAME.SEND,\n message,\n },\n });\n };\n\n /** Called from R (via emscripten) once httpuv registers option handlers. */\n httpuv.bindInvokeROption = (fn: InvokeROption) => {\n invokeROption = fn;\n };\n\n const installSwListener = options.installSwListener ?? true;\n if (installSwListener && !httpuv._swListenerInstalled) {\n installServiceWorkerListener();\n httpuv._swListenerInstalled = true;\n }\n\n httpuvDebugLog(\"bridge-installed\");\n return httpuv;\n}\n\nexport function setInvokeROption(fn: InvokeROption | null): void {\n invokeROption = fn;\n}\n\nexport function setPushToR(fn: ((msg: ChannelMessage) => void) | null): void {\n pushToR = fn;\n}\n","import { CHANNEL } from \"./constants\";\nimport type { ChannelMessage } from \"./types\";\n\n/** Double-encode a value as a JSON string literal safe to embed in R source. */\nexport function jsonForR(value: unknown): string {\n return JSON.stringify(JSON.stringify(value));\n}\n\nexport function serializeReqForR(req: Record<string, unknown>): Record<string, unknown> {\n const out = { ...req };\n const body = out.body;\n if (body instanceof ArrayBuffer) {\n out.body = Array.from(new Uint8Array(body));\n } else if (ArrayBuffer.isView(body)) {\n out.body = Array.from(\n new Uint8Array(body.buffer, body.byteOffset, body.byteLength),\n );\n }\n return out;\n}\n\nfunction encodeWsPayloadBytes(message: unknown, binary: boolean): number[] {\n if (binary) {\n if (message instanceof ArrayBuffer) {\n return Array.from(new Uint8Array(message));\n }\n if (ArrayBuffer.isView(message)) {\n return Array.from(new Uint8Array(message.buffer, message.byteOffset, message.byteLength));\n }\n if (Array.isArray(message)) {\n return message as number[];\n }\n }\n return Array.from(new TextEncoder().encode(String(message ?? \"\")));\n}\n\nexport function isLikelyStaticAsset(url: string): boolean {\n return (\n /\\.(js|css|png|jpe?g|gif|svg|woff2?|ico|map)(\\?|$)/i.test(url) ||\n /\\/shiny\\/(shared|jquery|bootstrap|htmltools|shiny-)/i.test(url)\n );\n}\n\n/** Build an R expression that pushes a channel message into httpuv handlers. */\nexport function channelMessageToRExpr(msg: ChannelMessage): string {\n switch (msg.type) {\n case CHANNEL.HTTP_REQUEST: {\n const payload = {\n uuid: msg.uuid,\n method: msg.method,\n url: msg.url,\n headers: msg.headers ?? {},\n body: msg.body ?? null,\n };\n const msgJson = jsonForR(payload);\n\n // Always synchronous in the WASM host: later::later never reliably fires\n // from Chromium dedicated workers, which left the SW waiting until 503.\n return `local({\n msg <- jsonlite::fromJSON(${msgJson}, simplifyVector=FALSE)\n wrapper <- get(\"active_app_wrapper\", envir=httpuv:::.globals)\n if (is.null(wrapper)) {\n if (!is.null(msg$uuid)) {\n httpuv:::httpuv_write_tcp_response(\n msg$uuid,\n list(\n status = 503L,\n headers = list(\\`Content-Type\\` = \"text/plain\"),\n body = \"httpuv: no server running\"\n )\n )\n }\n } else {\n httpuv:::httpuv_handle_http_request(wrapper, msg)\n }\n invisible(TRUE)\n})`;\n }\n\n case CHANNEL.WS_OPEN: {\n const reqPart = msg.req\n ? `jsonlite::fromJSON(${jsonForR(serializeReqForR(msg.req as Record<string, unknown>))}, simplifyVector=FALSE)`\n : \"NULL\";\n return `local({\n wrapper <- get(\"active_app_wrapper\", envir=httpuv:::.globals)\n if (!is.null(wrapper)) {\n req <- ${reqPart}\n wrapper$onWSOpen(${jsonForR(msg.handle)}, httpuv:::httpuv_js_req_to_rook(req))\n }\n invisible(TRUE)\n})`;\n }\n\n case CHANNEL.WS_MESSAGE: {\n const bytesJson = jsonForR(encodeWsPayloadBytes(msg.message, Boolean(msg.binary)));\n return `local({\n wrapper <- get(\"active_app_wrapper\", envir=httpuv:::.globals)\n if (!is.null(wrapper)) {\n msg_raw <- httpuv:::httpuv_bytes_to_raw(\n jsonlite::fromJSON(${bytesJson}, simplifyVector=FALSE)\n )\n wrapper$onWSMessage(${jsonForR(msg.handle)}, TRUE, msg_raw)\n }\n invisible(TRUE)\n})`;\n }\n\n case CHANNEL.WS_CLOSE:\n return `local({\n wrapper <- get(\"active_app_wrapper\", envir=httpuv:::.globals)\n if (!is.null(wrapper)) {\n wrapper$onWSClose(${jsonForR(msg.handle)})\n }\n invisible(TRUE)\n})`;\n\n default:\n throw new Error(`unsupported inbound channel message type: ${msg.type}`);\n }\n}\n","export const HTTPUV_TRANSPORT_VERSION = \"0.0.0\";\n\nexport * from \"./bridge\";\nexport * from \"./r-push\";\nexport * from \"./constants\";\nexport * from \"./prefix\";\nexport { isHttpuvDebug, httpuvDebugLog, enableHttpuvDebug } from \"./debug\";\nexport type * from \"./types\";\nexport type {\n RHostApi,\n SwDeliveryApi,\n HttpResponsePayload,\n} from \"./comlink\";\n"]}
@@ -0,0 +1,2 @@
1
+
2
+ export { }