codemirror-json-schema
Version:
Codemirror 6 extensions that provide full JSONSchema support for `@codemirror/lang-json` and `codemirror-json5`
33 lines (32 loc) • 1.06 kB
JavaScript
import { json } from "@codemirror/lang-json";
import { EditorState } from "@codemirror/state";
import { parse } from "best-effort-json-parser";
import { MODES } from "../constants";
import { getJsonPointers } from "../utils/json-pointers";
/**
* Return parsed data and json pointers for a given codemirror EditorState
* @group Utilities
*/
export function parseJSONDocumentState(state) {
let data = null;
try {
data = JSON.parse(state.doc.toString());
// return pointers regardless of whether JSON.parse succeeds
}
catch (_a) {
try {
data = parse(state.doc.toString());
}
catch (_b) { }
}
const pointers = getJsonPointers(state, MODES.JSON);
return { data, pointers };
}
/**
* Mimics the behavior of `json-source-map`'s `parseJSONDocument` function using codemirror EditorState
* @group Utilities
*/
export function parseJSONDocument(jsonString) {
const state = EditorState.create({ doc: jsonString, extensions: [json()] });
return parseJSONDocumentState(state);
}