mirror of
https://github.com/denoland/deno.git
synced 2025-10-03 07:34:36 +00:00
feat: add writeJson/writeJsonSync for fs modules (denoland/deno_std#271)
Original: e9d104a424
This commit is contained in:
parent
0b4f73cf9d
commit
6565e5095e
3 changed files with 302 additions and 0 deletions
57
fs/write_json.ts
Normal file
57
fs/write_json.ts
Normal file
|
@ -0,0 +1,57 @@
|
|||
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import * as path from "./path/mod.ts";
|
||||
type Replacer = (key: string, value: any) => any;
|
||||
|
||||
export interface WriteJsonOptions {
|
||||
spaces?: number | string;
|
||||
replacer?: Array<number | string> | Replacer;
|
||||
}
|
||||
|
||||
/* Writes an object to a JSON file. */
|
||||
export async function writeJson(
|
||||
filePath: string,
|
||||
object: any,
|
||||
options: WriteJsonOptions = {}
|
||||
): Promise<void> {
|
||||
filePath = path.resolve(filePath);
|
||||
|
||||
let contentRaw = "";
|
||||
|
||||
try {
|
||||
contentRaw = JSON.stringify(
|
||||
object,
|
||||
options.replacer as string[],
|
||||
options.spaces
|
||||
);
|
||||
} catch (err) {
|
||||
err.message = `${filePath}: ${err.message}`;
|
||||
throw err;
|
||||
}
|
||||
|
||||
await Deno.writeFile(filePath, new TextEncoder().encode(contentRaw));
|
||||
}
|
||||
|
||||
/* Writes an object to a JSON file. */
|
||||
export function writeJsonSync(
|
||||
filePath: string,
|
||||
object: any,
|
||||
options: WriteJsonOptions = {}
|
||||
): void {
|
||||
filePath = path.resolve(filePath);
|
||||
|
||||
let contentRaw = "";
|
||||
|
||||
try {
|
||||
contentRaw = JSON.stringify(
|
||||
object,
|
||||
options.replacer as string[],
|
||||
options.spaces
|
||||
);
|
||||
} catch (err) {
|
||||
err.message = `${filePath}: ${err.message}`;
|
||||
throw err;
|
||||
}
|
||||
|
||||
Deno.writeFileSync(filePath, new TextEncoder().encode(contentRaw));
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue