UNPKG

@tai-kun/surrealdb

Version:

The SurrealDB SDK for JavaScript

90 lines (88 loc) 8.5 kB
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=