UNPKG

@baqhub/sdk

Version:

The official JavaScript SDK for the BAQ federated app platform.

27 lines (26 loc) 938 B
"use strict"; // Inspired by: // https://github.com/cyberphone/json-canonicalization/blob/master/node-es6/canonicalize.js Object.defineProperty(exports, "__esModule", { value: true }); exports.Canonicalization = void 0; const type_js_1 = require("./type.js"); function canonicalize(object) { // Primitive type or "toJSON": use native stringify. if (object === null || typeof object !== "object" || "toJSON" in object) { return JSON.stringify(object); } // Array: maintain element order. if (Array.isArray(object)) { return `[${object.map(canonicalize).join(",")}]`; } // Object: sort properties. const valuesJson = Object.keys(object) .filter(key => (0, type_js_1.isDefined)(object[key])) .sort() .map(key => `${JSON.stringify(key)}:${canonicalize(object[key])}`) .join(","); return `{${valuesJson}}`; } exports.Canonicalization = { canonicalize, };