@gmetrixr/rjson
Version:
(R)ecursive Json
29 lines (28 loc) • 1.12 kB
JavaScript
import { recordTypeDefinitions } from "./RecordTypes";
import { jsUtils } from "@gmetrixr/gdash";
const { generateId } = jsUtils;
/**
* generates an empty RecordOrderedMap
*/
export const emptyROM = () => {
return { order: [], map: {} };
};
/**
* Creates an object of any of the known record types
* id is optional - creates an id if not given
* name is optional - used only in case this rcord type needs a name. In case not given, can also use once from rt definitions.
*/
export const createRecord = (type, id, name) => {
const node = {
id: id !== null && id !== void 0 ? id : generateId(),
type: type,
//name: name ?? recordTypeDefinitions[type].defaultName, Optional. So we check below if it is even needed.
props: {},
//records: {}, //Optional, so don't set here. Automatically set when first record is added.
};
//Add name only if this RecordType uses name
if (recordTypeDefinitions[type].defaultName !== undefined) {
node.name = name !== null && name !== void 0 ? name : recordTypeDefinitions[type].defaultName;
}
return node;
};