mirror of
https://github.com/denoland/deno.git
synced 2024-12-12 02:27:46 -05:00
b50691efed
This PR makes json_op_sync/async generic to all Deserialize/Serialize types instead of the loosely-typed serde_json::Value. Since serde_json::Value implements Deserialize/Serialize, very little existing code needs to be updated, however as json_op_sync/async are now generic, type inference is broken in some cases (see cli/build.rs:146). I've found this reduces a good bit of boilerplate, as seen in the updated deno_core examples. This change may also reduce serialization and deserialization overhead as serde has a better idea of what types it is working with. I am currently working on benchmarks to confirm this and I will update this PR with my findings.
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
|
|
|
|
// deno-lint-ignore-file no-explicit-any
|
|
|
|
/// <reference no-default-lib="true" />
|
|
/// <reference lib="esnext" />
|
|
|
|
declare namespace Deno {
|
|
declare namespace core {
|
|
/** Send a JSON op to Rust, and synchronously receive the result. */
|
|
function jsonOpSync(
|
|
opName: string,
|
|
args?: any,
|
|
...zeroCopy: Uint8Array[]
|
|
): any;
|
|
|
|
/** Send a JSON op to Rust, and asynchronously receive the result. */
|
|
function jsonOpAsync(
|
|
opName: string,
|
|
args?: any,
|
|
...zeroCopy: Uint8Array[]
|
|
): Promise<any>;
|
|
|
|
/**
|
|
* Retrieve a list of all registered ops, in the form of a map that maps op
|
|
* name to internal numerical op id.
|
|
*/
|
|
function ops(): Record<string, number>;
|
|
|
|
/**
|
|
* Retrieve a list of all open resources, in the form of a map that maps
|
|
* resource id to the resource name.
|
|
*/
|
|
function resources(): Record<string, string>;
|
|
|
|
/** Close the resource with the specified op id. */
|
|
function close(rid: number): void;
|
|
}
|
|
}
|