package transom
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
OCaml backend/application logic for desktop WebView apps
Install
dune-project
Dependency
Authors
Maintainers
Sources
v0.2.0.tar.gz
md5=4d0b0117994a250dd343bbc03f65acf5
sha512=629a5e39f3b142ff0391bbcab6a193480d07d04b3a101da85693778dae6539f48b48bc5c36cf24ed4a920da26bab2b9c955d2bb2a5c43fc3dcaec137523a7527
doc/src/transom.codegen/gen_ts_client.ml.html
Source file gen_ts_client.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64let interface_lines = [ "export interface TransomTransport {"; " call(method: string, params: unknown): Promise<unknown>;"; " stream?("; " method: string,"; " params: unknown,"; " onEvent: (event: unknown) => void"; " ): Promise<unknown>;"; "}"; ] let command_name command = Manifest.command_name_to_string command.Manifest.name let ts_type value = Manifest.ts_type_to_string value let command_lines command = let name = command_name command in let ts_request = ts_type command.Manifest.ts_request in let ts_response = ts_type command.Manifest.ts_response in match command.Manifest.event with | None -> [ Printf.sprintf "export async function %s(" name; " transport: TransomTransport,"; Printf.sprintf " req: Api.%s" ts_request; Printf.sprintf "): Promise<Api.%s> {" ts_response; Printf.sprintf " return (await transport.call(%S, req)) as Api.%s;" name ts_response; "}"; ] | Some _ -> let ts_event = command.Manifest.ts_event |> Option.map Manifest.ts_type_to_string |> Option.value ~default:"unknown" in [ Printf.sprintf "export async function %s(" name; " transport: TransomTransport,"; Printf.sprintf " req: Api.%s," ts_request; Printf.sprintf " onEvent: (event: Api.%s) => void" ts_event; Printf.sprintf "): Promise<Api.%s> {" ts_response; " if (!transport.stream) {"; " throw new Error(\"Transom transport does not support streaming\");"; " }"; Printf.sprintf " return (await transport.stream(%S, req, event => onEvent(event as \ Api.%s))) as Api.%s;" name ts_event ts_response; "}"; ] let implementation manifest = String.concat "\n" ([ Printf.sprintf "import type * as Api from %S;" (Manifest.typescript_module_to_string manifest.Manifest.typescript_types_module); ""; ] @ interface_lines @ [ "" ] @ List.concat_map (fun command -> command_lines command @ [ "" ]) manifest.Manifest.commands)
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>