1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-21 15:04:11 -05:00

fix(node): implement v8 serialize and deserialize (#22975)

Fixes https://github.com/denoland/deno/issues/22971
This commit is contained in:
Divy Srivastava 2024-03-18 13:48:55 +05:30 committed by GitHub
parent becdad531f
commit bd6938ac70
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 20 additions and 4 deletions

View file

@ -1,14 +1,19 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
// Copyright Joyent and Node contributors. All rights reserved. MIT license.
/// <reference path="../../core/internal.d.ts" />
// TODO(petamoriken): enable prefer-primordials for node polyfills
// deno-lint-ignore-file prefer-primordials
import { core } from "ext:core/mod.js";
import {
op_v8_cached_data_version_tag,
op_v8_get_heap_statistics,
} from "ext:core/ops";
import { Buffer } from "node:buffer";
import { notImplemented } from "ext:deno_node/_utils.ts";
export function cachedDataVersionTag() {
@ -66,11 +71,11 @@ export function takeCoverage() {
export function writeHeapSnapshot() {
notImplemented("v8.writeHeapSnapshot");
}
export function serialize() {
notImplemented("v8.serialize");
export function serialize(value) {
return Buffer.from(core.serialize(value));
}
export function deserialize() {
notImplemented("v8.deserialize");
export function deserialize(data) {
return core.deserialize(data);
}
export class Serializer {
constructor() {

View file

@ -1,7 +1,9 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
import {
cachedDataVersionTag,
deserialize,
getHeapStatistics,
serialize,
setFlagsFromString,
} from "node:v8";
import { assertEquals } from "@std/assert/mod.ts";
@ -53,3 +55,12 @@ Deno.test({
setFlagsFromString("--allow_natives_syntax");
},
});
Deno.test({
name: "serialize deserialize",
fn() {
const s = serialize({ a: 1 });
const d = deserialize(s);
assertEquals(d, { a: 1 });
},
});