@tai-kun/surrealdb
Version:
The SurrealDB SDK for JavaScript
90 lines (88 loc) • 8.5 kB
JavaScript
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
// src/formatters/json/formatter.ts
import {
JsonUnsafeMapKeyError,
SurrealTypeError
} from "../../errors/index.mjs";
import {
cloneSync,
EncodedJSON
} from "../../formatter/index.mjs";
import { isArrayBuffer, utf8 } from "../../utils/index.mjs";
var __PROTO__REGEX = /"(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])"\s*:/;
var CONSTRUCTOR_REGEX = /"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/;
var _JsonFormatter = class _JsonFormatter {
constructor() {
this.contentType = "application/json";
this.wsProtocols = ["json"];
}
encodeSync(data) {
return JSON.stringify(data);
}
decodeSync(data) {
const json = toString(data);
if (__PROTO__REGEX.test(json)) {
throw new JsonUnsafeMapKeyError("__proto__");
}
if (CONSTRUCTOR_REGEX.test(json)) {
throw new JsonUnsafeMapKeyError("constructor");
}
return JSON.parse(json);
}
cloneSync(data) {
switch (typeof data) {
case "string":
case "number":
case "boolean":
return data;
default:
switch (data) {
case null:
case void 0:
return data;
default:
return cloneSync(this, data);
}
}
}
toEncoded(data) {
if (data instanceof EncodedJSON) {
return data;
}
return new EncodedJSON(
{
data: this.cloneSync(data)
},
/* @__PURE__ */ __name(function toJSON() {
return this.data;
}, "toJSON")
// TODO(tai-kun): JSON フォーマッターの事前エンコーディングを実装する。
// function toRawJSON() {
// return (this.json ??= JSON.stringify(this.data));
// },
);
}
};
__name(_JsonFormatter, "JsonFormatter");
var JsonFormatter = _JsonFormatter;
function toString(data) {
switch (true) {
case typeof data === "string":
return data;
case (data instanceof Uint8Array || isArrayBuffer(data)):
return utf8.decode(data);
case (typeof Buffer !== "undefined" && Array.isArray(data) && data.every((b) => Buffer.isBuffer(b))):
return utf8.decode(Buffer.concat(data));
default:
throw new SurrealTypeError(
["String", "Buffer", "ArrayBuffer", "Uint8Array", "Buffer[]"],
data
);
}
}
__name(toString, "toString");
export {
JsonFormatter as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Zvcm1hdHRlcnMvanNvbi9mb3JtYXR0ZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7XG4gIEpzb25VbnNhZmVNYXBLZXlFcnJvcixcbiAgU3VycmVhbFR5cGVFcnJvcixcbn0gZnJvbSBcIkB0YWkta3VuL3N1cnJlYWxkYi9lcnJvcnNcIjtcbmltcG9ydCB7XG4gIGNsb25lU3luYyxcbiAgdHlwZSBEYXRhLFxuICBFbmNvZGVkSlNPTixcbiAgdHlwZSBGb3JtYXR0ZXIsXG59IGZyb20gXCJAdGFpLWt1bi9zdXJyZWFsZGIvZm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBpc0FycmF5QnVmZmVyLCB1dGY4IH0gZnJvbSBcIkB0YWkta3VuL3N1cnJlYWxkYi91dGlsc1wiO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZmFzdGlmeS9zZWN1cmUtanNvbi1wYXJzZVxuY29uc3QgX19QUk9UT19fUkVHRVggPVxuICAvXCIoPzpffFxcXFx1MDA1W0ZmXSkoPzpffFxcXFx1MDA1W0ZmXSkoPzpwfFxcXFx1MDA3MCkoPzpyfFxcXFx1MDA3MikoPzpvfFxcXFx1MDA2W0ZmXSkoPzp0fFxcXFx1MDA3NCkoPzpvfFxcXFx1MDA2W0ZmXSkoPzpffFxcXFx1MDA1W0ZmXSkoPzpffFxcXFx1MDA1W0ZmXSlcIlxccyo6LztcbmNvbnN0IENPTlNUUlVDVE9SX1JFR0VYID1cbiAgL1wiKD86Y3xcXFxcdTAwNjMpKD86b3xcXFxcdTAwNltGZl0pKD86bnxcXFxcdTAwNltFZV0pKD86c3xcXFxcdTAwNzMpKD86dHxcXFxcdTAwNzQpKD86cnxcXFxcdTAwNzIpKD86dXxcXFxcdTAwNzUpKD86Y3xcXFxcdTAwNjMpKD86dHxcXFxcdTAwNzQpKD86b3xcXFxcdTAwNltGZl0pKD86cnxcXFxcdTAwNzIpXCJcXHMqOi87XG5cbi8vIFRPRE8odGFpLWt1bik6IGlzU2FmZU1hcEtleSwgaXNTYWZlT2JqZWN0S2V5IFx1MzA5Mlx1MzBBQVx1MzBEN1x1MzBCN1x1MzBFN1x1MzBGM1x1MzA2Qlx1OEZGRFx1NTJBMFxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSnNvbkZvcm1hdHRlciBpbXBsZW1lbnRzIEZvcm1hdHRlciB7XG4gIGNvbnRlbnRUeXBlID0gXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gIHdzUHJvdG9jb2xzID0gW1wianNvblwiXTtcblxuICBlbmNvZGVTeW5jKGRhdGE6IHVua25vd24pOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgfVxuXG4gIGRlY29kZVN5bmMoZGF0YTogRGF0YSk6IHVua25vd24ge1xuICAgIGNvbnN0IGpzb24gPSB0b1N0cmluZyhkYXRhKTtcblxuICAgIGlmIChfX1BST1RPX19SRUdFWC50ZXN0KGpzb24pKSB7XG4gICAgICB0aHJvdyBuZXcgSnNvblVuc2FmZU1hcEtleUVycm9yKFwiX19wcm90b19fXCIpO1xuICAgIH1cblxuICAgIGlmIChDT05TVFJVQ1RPUl9SRUdFWC50ZXN0KGpzb24pKSB7XG4gICAgICB0aHJvdyBuZXcgSnNvblVuc2FmZU1hcEtleUVycm9yKFwiY29uc3RydWN0b3JcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoanNvbik7XG4gIH1cblxuICBjbG9uZVN5bmM8VD4oZGF0YTogVCk6IFQge1xuICAgIHN3aXRjaCAodHlwZW9mIGRhdGEpIHtcbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgIHJldHVybiBkYXRhO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBzd2l0Y2ggKGRhdGEpIHtcbiAgICAgICAgICBjYXNlIG51bGw6XG4gICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gY2xvbmVTeW5jKHRoaXMsIGRhdGEpO1xuICAgICAgICB9XG4gICAgfVxuICB9XG5cbiAgdG9FbmNvZGVkPFREYXRhPihkYXRhOiBURGF0YSk6IEVuY29kZWRKU09OPFREYXRhPiB7XG4gICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBFbmNvZGVkSlNPTikge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBFbmNvZGVkSlNPTihcbiAgICAgIHtcbiAgICAgICAgZGF0YTogdGhpcy5jbG9uZVN5bmMoZGF0YSksXG4gICAgICB9LFxuICAgICAgZnVuY3Rpb24gdG9KU09OKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhO1xuICAgICAgfSxcbiAgICAgIC8vIFRPRE8odGFpLWt1bik6IEpTT04gXHUzMEQ1XHUzMEE5XHUzMEZDXHUzMERFXHUzMEMzXHUzMEJGXHUzMEZDXHUzMDZFXHU0RThCXHU1MjREXHUzMEE4XHUzMEYzXHUzMEIzXHUzMEZDXHUzMEM3XHUzMEEzXHUzMEYzXHUzMEIwXHUzMDkyXHU1QjlGXHU4OEM1XHUzMDU5XHUzMDhCXHUzMDAyXG4gICAgICAvLyBmdW5jdGlvbiB0b1Jhd0pTT04oKSB7XG4gICAgICAvLyAgIHJldHVybiAodGhpcy5qc29uID8/PSBKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEpKTtcbiAgICAgIC8vIH0sXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b1N0cmluZyhkYXRhOiBEYXRhKTogc3RyaW5nIHtcbiAgc3dpdGNoICh0cnVlKSB7XG4gICAgY2FzZSB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIjpcbiAgICAgIHJldHVybiBkYXRhO1xuXG4gICAgY2FzZSBkYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSB8fCBpc0FycmF5QnVmZmVyKGRhdGEpOlxuICAgICAgcmV0dXJuIHV0ZjguZGVjb2RlKGRhdGEpO1xuXG4gICAgY2FzZSB0eXBlb2YgQnVmZmVyICE9PSBcInVuZGVmaW5lZFwiXG4gICAgICAmJiBBcnJheS5pc0FycmF5KGRhdGEpXG4gICAgICAmJiBkYXRhLmV2ZXJ5KGIgPT4gQnVmZmVyLmlzQnVmZmVyKGIpKTpcbiAgICAgIHJldHVybiB1dGY4LmRlY29kZShCdWZmZXIuY29uY2F0KGRhdGEpKTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgU3VycmVhbFR5cGVFcnJvcihcbiAgICAgICAgW1wiU3RyaW5nXCIsIFwiQnVmZmVyXCIsIFwiQXJyYXlCdWZmZXJcIiwgXCJVaW50OEFycmF5XCIsIFwiQnVmZmVyW11cIl0sXG4gICAgICAgIGRhdGEsXG4gICAgICApO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7O0FBQUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUVBO0FBQUEsT0FFSztBQUNQLFNBQVMsZUFBZSxZQUFZO0FBR3BDLElBQU0saUJBQ0o7QUFDRixJQUFNLG9CQUNKO0FBR0YsSUFBcUIsaUJBQXJCLE1BQXFCLGVBQW1DO0FBQUEsRUFBeEQ7QUFDRSx1QkFBYztBQUNkLHVCQUFjLENBQUMsTUFBTTtBQUFBO0FBQUEsRUFFckIsV0FBVyxNQUF1QjtBQUNoQyxXQUFPLEtBQUssVUFBVSxJQUFJO0FBQUEsRUFDNUI7QUFBQSxFQUVBLFdBQVcsTUFBcUI7QUFDOUIsVUFBTSxPQUFPLFNBQVMsSUFBSTtBQUUxQixRQUFJLGVBQWUsS0FBSyxJQUFJLEdBQUc7QUFDN0IsWUFBTSxJQUFJLHNCQUFzQixXQUFXO0FBQUEsSUFDN0M7QUFFQSxRQUFJLGtCQUFrQixLQUFLLElBQUksR0FBRztBQUNoQyxZQUFNLElBQUksc0JBQXNCLGFBQWE7QUFBQSxJQUMvQztBQUVBLFdBQU8sS0FBSyxNQUFNLElBQUk7QUFBQSxFQUN4QjtBQUFBLEVBRUEsVUFBYSxNQUFZO0FBQ3ZCLFlBQVEsT0FBTyxNQUFNO0FBQUEsTUFDbkIsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUNILGVBQU87QUFBQSxNQUVUO0FBQ0UsZ0JBQVEsTUFBTTtBQUFBLFVBQ1osS0FBSztBQUFBLFVBQ0wsS0FBSztBQUNILG1CQUFPO0FBQUEsVUFFVDtBQUNFLG1CQUFPLFVBQVUsTUFBTSxJQUFJO0FBQUEsUUFDL0I7QUFBQSxJQUNKO0FBQUEsRUFDRjtBQUFBLEVBRUEsVUFBaUIsTUFBaUM7QUFDaEQsUUFBSSxnQkFBZ0IsYUFBYTtBQUMvQixhQUFPO0FBQUEsSUFDVDtBQUVBLFdBQU8sSUFBSTtBQUFBLE1BQ1Q7QUFBQSxRQUNFLE1BQU0sS0FBSyxVQUFVLElBQUk7QUFBQSxNQUMzQjtBQUFBLE1BQ0EsZ0NBQVMsU0FBUztBQUNoQixlQUFPLEtBQUs7QUFBQSxNQUNkLEdBRkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBT0Y7QUFBQSxFQUNGO0FBQ0Y7QUEzRHdEO0FBQXhELElBQXFCLGdCQUFyQjtBQTZEQSxTQUFTLFNBQVMsTUFBb0I7QUFDcEMsVUFBUSxNQUFNO0FBQUEsSUFDWixLQUFLLE9BQU8sU0FBUztBQUNuQixhQUFPO0FBQUEsSUFFVCxNQUFLLGdCQUFnQixjQUFjLGNBQWMsSUFBSTtBQUNuRCxhQUFPLEtBQUssT0FBTyxJQUFJO0FBQUEsSUFFekIsTUFBSyxPQUFPLFdBQVcsZUFDbEIsTUFBTSxRQUFRLElBQUksS0FDbEIsS0FBSyxNQUFNLE9BQUssT0FBTyxTQUFTLENBQUMsQ0FBQztBQUNyQyxhQUFPLEtBQUssT0FBTyxPQUFPLE9BQU8sSUFBSSxDQUFDO0FBQUEsSUFFeEM7QUFDRSxZQUFNLElBQUk7QUFBQSxRQUNSLENBQUMsVUFBVSxVQUFVLGVBQWUsY0FBYyxVQUFVO0FBQUEsUUFDNUQ7QUFBQSxNQUNGO0FBQUEsRUFDSjtBQUNGO0FBbkJTOyIsCiAgIm5hbWVzIjogW10KfQo=