Fix up some of the new formatting stuff

This commit is contained in:
Gregory Schier
2024-10-22 08:07:56 -07:00
parent e216214085
commit 57a05d5486
7 changed files with 70 additions and 17 deletions

View File

@@ -63,8 +63,12 @@ async function pluginHookExport(_ctx, request) {
}
xs.push(NEWLINE);
}
} else if (typeof request.body?.query === "string") {
const body = { query: request.body.query || "", variables: maybeParseJSON(request.body.variables, void 0) };
xs.push("--data-raw", `${quote(JSON.stringify(body))}`);
xs.push(NEWLINE);
} else if (typeof request.body?.text === "string") {
xs.push("--data-raw", `$${quote(request.body.text)}`);
xs.push("--data-raw", `${quote(request.body.text)}`);
xs.push(NEWLINE);
}
if (request.authenticationType === "basic" || request.authenticationType === "digest") {
@@ -91,6 +95,13 @@ function quote(arg) {
function onlyEnabled(v) {
return v.enabled !== false && !!v.name;
}
function maybeParseJSON(v, fallback) {
try {
return JSON.parse(v);
} catch (err) {
return fallback;
}
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
plugin,

View File

@@ -96,20 +96,12 @@ pub fn format_json(text: &str, tab: &str) -> String {
new_json.push('\n');
new_json.push_str(tab.to_string().repeat(depth).as_str());
new_json.push(current_char);
// Pad with space if the next char is not a comma
if let Some(',') = chars.peek() {
new_json.push(' ');
}
}
']' => {
depth -= 1;
new_json.push('\n');
new_json.push_str(tab.to_string().repeat(depth).as_str());
new_json.push(current_char);
// Pad with space if the next char is not a comma
if let Some(',') = chars.peek() {
new_json.push(' ');
}
}
':' => {
new_json.push(current_char);
@@ -227,4 +219,37 @@ mod test {
.trim()
);
}
#[test]
fn test_graphql_response() {
assert_eq!(
format_json(r#"{"data":{"capsules":[{"landings":null,"original_launch":null,"reuse_count":0,"status":"retired","type":"Dragon 1.0","missions":null},{"id":"5e9e2c5bf3591882af3b2665","landings":null,"original_launch":null,"reuse_count":0,"status":"retired","type":"Dragon 1.0","missions":null}]}}"#, " "),
r#"
{
"data": {
"capsules": [
{
"landings": null,
"original_launch": null,
"reuse_count": 0,
"status": "retired",
"type": "Dragon 1.0",
"missions": null
},
{
"id": "5e9e2c5bf3591882af3b2665",
"landings": null,
"original_launch": null,
"reuse_count": 0,
"status": "retired",
"type": "Dragon 1.0",
"missions": null
}
]
}
}
"#
.trim()
);
}
}