@tai-kun/surrealdb
Version:
The SurrealDB SDK for JavaScript
100 lines (98 loc) • 10.4 kB
JavaScript
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
// src/utils/escape.ts
var BRACKET_L = "\u27E8";
var BRACKET_R = "\u27E9";
var BRACKET_ESC = "\\\u27E9";
var BACKTICK = "`";
var BACKTICK_ESC = "\\`";
var SINGLE_QUOTE = "'";
var DOUBLE_QUOTE = '"';
var DOUBLE_QUOTE_ESC = '\\"';
var UNDERSCORE = 95;
var isAsciiDigit = /* @__PURE__ */ __name((code) => 48 <= code && code <= 57, "isAsciiDigit");
var isAsciiAlpha = /* @__PURE__ */ __name((code) => 65 <= code && code <= 90 || 97 <= code && code <= 122, "isAsciiAlpha");
var isAsciiAlphaNumeric = /* @__PURE__ */ __name((code) => isAsciiDigit(code) || isAsciiAlpha(code), "isAsciiAlphaNumeric");
function escape(str, left, right, escaped) {
return left + str.replaceAll(right, escaped) + right;
}
__name(escape, "escape");
function escapeNormal(str, left, right, escaped) {
return escapeStartsNumeric(str, left, right, escaped);
}
__name(escapeNormal, "escapeNormal");
function escapeStartsNumeric(str, left, right, escaped) {
for (let i = 0, len = str.length, code; i < len; i++) {
code = str.charCodeAt(i);
if (i <= 0 && isAsciiDigit(code)) {
return escape(str, left, right, escaped);
}
if (!(isAsciiAlphaNumeric(code) || code === UNDERSCORE)) {
return escape(str, left, right, escaped);
}
}
return str;
}
__name(escapeStartsNumeric, "escapeStartsNumeric");
function escapeFullNumeric(str, left, right, escaped) {
let numeric = true;
for (let i = 0, len = str.length, code; i < len; i++) {
code = str.charCodeAt(i);
if (!(isAsciiAlphaNumeric(code) || code === UNDERSCORE)) {
return escape(str, left, right, escaped);
}
if (numeric && !isAsciiDigit(code)) {
numeric = false;
}
}
if (numeric) {
return escape(str, left, right, escaped);
}
return str;
}
__name(escapeFullNumeric, "escapeFullNumeric");
function quoteStr(str) {
if (!str) {
return SINGLE_QUOTE + SINGLE_QUOTE;
}
str = str.replaceAll("\\", "\\\\");
if (str.indexOf(SINGLE_QUOTE) === -1) {
return SINGLE_QUOTE + str + SINGLE_QUOTE;
} else {
return DOUBLE_QUOTE + str.replaceAll(DOUBLE_QUOTE, DOUBLE_QUOTE_ESC) + DOUBLE_QUOTE;
}
}
__name(quoteStr, "quoteStr");
function escapeKey(key) {
if (!key) {
return DOUBLE_QUOTE + DOUBLE_QUOTE;
}
return escapeNormal(key, DOUBLE_QUOTE, DOUBLE_QUOTE, DOUBLE_QUOTE_ESC);
}
__name(escapeKey, "escapeKey");
function escapeRid(rid) {
if (!rid) {
return BRACKET_L + BRACKET_R;
}
return escapeFullNumeric(rid, BRACKET_L, BRACKET_R, BRACKET_ESC);
}
__name(escapeRid, "escapeRid");
function escapeIdent(ident) {
if (!ident) {
return BACKTICK + BACKTICK;
}
return escapeStartsNumeric(ident, BACKTICK, BACKTICK, BACKTICK_ESC);
}
__name(escapeIdent, "escapeIdent");
export {
BACKTICK,
BRACKET_L,
BRACKET_R,
DOUBLE_QUOTE,
SINGLE_QUOTE,
escapeIdent,
escapeKey,
escapeRid,
quoteStr
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2VzY2FwZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3N1cnJlYWxkYmRiL3N1cnJlYWxkYmRiL2Jsb2IvdjIuMC4wLWFscGhhLjcvY29yZS9zcmMvc3FsL2VzY2FwZS5yc1xuXG5leHBvcnQgY29uc3QgQlJBQ0tFVF9MID0gXCJcdTI3RThcIjtcbmV4cG9ydCBjb25zdCBCUkFDS0VUX1IgPSBcIlx1MjdFOVwiO1xuY29uc3QgQlJBQ0tFVF9FU0MgPSBcIlxcXFxcdTI3RTlcIjtcblxuZXhwb3J0IGNvbnN0IEJBQ0tUSUNLID0gXCJgXCI7XG5jb25zdCBCQUNLVElDS19FU0MgPSBcIlxcXFxgXCI7XG5cbmV4cG9ydCBjb25zdCBTSU5HTEVfUVVPVEUgPSBcIidcIjtcblxuLy8gZHByaW50LWlnbm9yZVxuZXhwb3J0IGNvbnN0IERPVUJMRV9RVU9URSA9ICdcIic7XG4vLyBkcHJpbnQtaWdub3JlXG5jb25zdCBET1VCTEVfUVVPVEVfRVNDID0gJ1xcXFxcIic7XG5cbmNvbnN0IFVOREVSU0NPUkUgPSA5NTsgLy8gX1xuXG5jb25zdCBpc0FzY2lpRGlnaXQgPSAoY29kZTogbnVtYmVyKSA9PiA0OCA8PSBjb2RlICYmIGNvZGUgPD0gNTc7IC8vIDAtOVxuXG5jb25zdCBpc0FzY2lpQWxwaGEgPSAoY29kZTogbnVtYmVyKSA9PlxuICAoNjUgPD0gY29kZSAmJiBjb2RlIDw9IDkwKSAvLyBBLVpcbiAgfHwgKDk3IDw9IGNvZGUgJiYgY29kZSA8PSAxMjIpOyAvLyBhLXpcblxuY29uc3QgaXNBc2NpaUFscGhhTnVtZXJpYyA9IChjb2RlOiBudW1iZXIpID0+XG4gIGlzQXNjaWlEaWdpdChjb2RlKVxuICB8fCBpc0FzY2lpQWxwaGEoY29kZSk7XG5cbmZ1bmN0aW9uIGVzY2FwZShcbiAgc3RyOiBzdHJpbmcsXG4gIGxlZnQ6IHN0cmluZyxcbiAgcmlnaHQ6IHN0cmluZyxcbiAgZXNjYXBlZDogc3RyaW5nLFxuKSB7XG4gIHJldHVybiBsZWZ0ICsgc3RyLnJlcGxhY2VBbGwocmlnaHQsIGVzY2FwZWQpICsgcmlnaHQ7XG59XG5cbi8vIHYyLjAuM1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3N1cnJlYWxkYi9zdXJyZWFsZGIvYmxvYi81NjY3MjA3N2FjM2JhN2I4OGNhZDc3NmM4MWQzOWZjZDY4YTk0MTU3L2NvcmUvc3JjL3NxbC9lc2NhcGUucnMjTDgxLUw5NFxuLy8gXHUzMDgyXHUzMDZGXHUzMDg0IGVzY2FwZV9zdGFydHNfbnVtZXJpYyBcdTMwNjhcdTMwNkVcdTkwNTVcdTMwNDRcdTMwNkZcdTcxMjFcdTMwNEZcdTMwNkFcdTMwNjNcdTMwNUZcdTMwMDJcbmZ1bmN0aW9uIGVzY2FwZU5vcm1hbChcbiAgc3RyOiBzdHJpbmcsXG4gIGxlZnQ6IHN0cmluZyxcbiAgcmlnaHQ6IHN0cmluZyxcbiAgZXNjYXBlZDogc3RyaW5nLFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIGVzY2FwZVN0YXJ0c051bWVyaWMoc3RyLCBsZWZ0LCByaWdodCwgZXNjYXBlZCk7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZVN0YXJ0c051bWVyaWMoXG4gIHN0cjogc3RyaW5nLFxuICBsZWZ0OiBzdHJpbmcsXG4gIHJpZ2h0OiBzdHJpbmcsXG4gIGVzY2FwZWQ6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBzdHIubGVuZ3RoLCBjb2RlOiBudW1iZXI7IGkgPCBsZW47IGkrKykge1xuICAgIGNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcblxuICAgIGlmIChpIDw9IDAgJiYgaXNBc2NpaURpZ2l0KGNvZGUpKSB7XG4gICAgICByZXR1cm4gZXNjYXBlKHN0ciwgbGVmdCwgcmlnaHQsIGVzY2FwZWQpO1xuICAgIH1cblxuICAgIGlmICghKGlzQXNjaWlBbHBoYU51bWVyaWMoY29kZSkgfHwgY29kZSA9PT0gVU5ERVJTQ09SRSkpIHtcbiAgICAgIHJldHVybiBlc2NhcGUoc3RyLCBsZWZ0LCByaWdodCwgZXNjYXBlZCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0cjtcbn1cblxuZnVuY3Rpb24gZXNjYXBlRnVsbE51bWVyaWMoXG4gIHN0cjogc3RyaW5nLFxuICBsZWZ0OiBzdHJpbmcsXG4gIHJpZ2h0OiBzdHJpbmcsXG4gIGVzY2FwZWQ6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGxldCBudW1lcmljID0gdHJ1ZTtcblxuICBmb3IgKGxldCBpID0gMCwgbGVuID0gc3RyLmxlbmd0aCwgY29kZTogbnVtYmVyOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7XG5cbiAgICBpZiAoIShpc0FzY2lpQWxwaGFOdW1lcmljKGNvZGUpIHx8IGNvZGUgPT09IFVOREVSU0NPUkUpKSB7XG4gICAgICByZXR1cm4gZXNjYXBlKHN0ciwgbGVmdCwgcmlnaHQsIGVzY2FwZWQpO1xuICAgIH1cblxuICAgIGlmIChudW1lcmljICYmICFpc0FzY2lpRGlnaXQoY29kZSkpIHtcbiAgICAgIG51bWVyaWMgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpZiAobnVtZXJpYykge1xuICAgIHJldHVybiBlc2NhcGUoc3RyLCBsZWZ0LCByaWdodCwgZXNjYXBlZCk7XG4gIH1cblxuICByZXR1cm4gc3RyO1xufVxuXG4vKipcbiAqIFtBUEkgUmVmZXJlbmNlXShodHRwczovL3RhaS1rdW4uZ2l0aHViLmlvL3N1cnJlYWxkYi5qcy92Mi9hcGkvdXRpbHMvZXNjYXBlLyNxdW90ZXN0cilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHF1b3RlU3RyKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFzdHIpIHtcbiAgICByZXR1cm4gU0lOR0xFX1FVT1RFICsgU0lOR0xFX1FVT1RFO1xuICB9XG5cbiAgc3RyID0gc3RyLnJlcGxhY2VBbGwoXCJcXFxcXCIsIFwiXFxcXFxcXFxcIik7XG5cbiAgaWYgKHN0ci5pbmRleE9mKFNJTkdMRV9RVU9URSkgPT09IC0xKSB7XG4gICAgcmV0dXJuIFNJTkdMRV9RVU9URVxuICAgICAgKyBzdHJcbiAgICAgICsgU0lOR0xFX1FVT1RFO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBET1VCTEVfUVVPVEVcbiAgICAgICsgc3RyLnJlcGxhY2VBbGwoRE9VQkxFX1FVT1RFLCBET1VCTEVfUVVPVEVfRVNDKVxuICAgICAgKyBET1VCTEVfUVVPVEU7XG4gIH1cbn1cblxuLyoqXG4gKiBbQVBJIFJlZmVyZW5jZV0oaHR0cHM6Ly90YWkta3VuLmdpdGh1Yi5pby9zdXJyZWFsZGIuanMvdjIvYXBpL3V0aWxzL2VzY2FwZS8jZXNjYXBla2V5KVxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFrZXkpIHtcbiAgICByZXR1cm4gRE9VQkxFX1FVT1RFICsgRE9VQkxFX1FVT1RFO1xuICB9XG5cbiAgcmV0dXJuIGVzY2FwZU5vcm1hbChrZXksIERPVUJMRV9RVU9URSwgRE9VQkxFX1FVT1RFLCBET1VCTEVfUVVPVEVfRVNDKTtcbn1cblxuLyoqXG4gKiBbQVBJIFJlZmVyZW5jZV0oaHR0cHM6Ly90YWkta3VuLmdpdGh1Yi5pby9zdXJyZWFsZGIuanMvdjIvYXBpL3V0aWxzL2VzY2FwZS8jZXNjYXBlcmlkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlUmlkKHJpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFyaWQpIHtcbiAgICByZXR1cm4gQlJBQ0tFVF9MICsgQlJBQ0tFVF9SO1xuICB9XG5cbiAgcmV0dXJuIGVzY2FwZUZ1bGxOdW1lcmljKHJpZCwgQlJBQ0tFVF9MLCBCUkFDS0VUX1IsIEJSQUNLRVRfRVNDKTtcbn1cblxuLyoqXG4gKiBbQVBJIFJlZmVyZW5jZV0oaHR0cHM6Ly90YWkta3VuLmdpdGh1Yi5pby9zdXJyZWFsZGIuanMvdjIvYXBpL3V0aWxzL2VzY2FwZS8jZXNjYXBlaWRlbnQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVJZGVudChpZGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFpZGVudCkge1xuICAgIHJldHVybiBCQUNLVElDSyArIEJBQ0tUSUNLO1xuICB9XG5cbiAgcmV0dXJuIGVzY2FwZVN0YXJ0c051bWVyaWMoaWRlbnQsIEJBQ0tUSUNLLCBCQUNLVElDSywgQkFDS1RJQ0tfRVNDKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7QUFFTyxJQUFNLFlBQVk7QUFDbEIsSUFBTSxZQUFZO0FBQ3pCLElBQU0sY0FBYztBQUViLElBQU0sV0FBVztBQUN4QixJQUFNLGVBQWU7QUFFZCxJQUFNLGVBQWU7QUFHckIsSUFBTSxlQUFlO0FBRTVCLElBQU0sbUJBQW1CO0FBRXpCLElBQU0sYUFBYTtBQUVuQixJQUFNLGVBQWUsd0JBQUMsU0FBaUIsTUFBTSxRQUFRLFFBQVEsSUFBeEM7QUFFckIsSUFBTSxlQUFlLHdCQUFDLFNBQ25CLE1BQU0sUUFBUSxRQUFRLE1BQ25CLE1BQU0sUUFBUSxRQUFRLEtBRlA7QUFJckIsSUFBTSxzQkFBc0Isd0JBQUMsU0FDM0IsYUFBYSxJQUFJLEtBQ2QsYUFBYSxJQUFJLEdBRk07QUFJNUIsU0FBUyxPQUNQLEtBQ0EsTUFDQSxPQUNBLFNBQ0E7QUFDQSxTQUFPLE9BQU8sSUFBSSxXQUFXLE9BQU8sT0FBTyxJQUFJO0FBQ2pEO0FBUFM7QUFZVCxTQUFTLGFBQ1AsS0FDQSxNQUNBLE9BQ0EsU0FDUTtBQUNSLFNBQU8sb0JBQW9CLEtBQUssTUFBTSxPQUFPLE9BQU87QUFDdEQ7QUFQUztBQVNULFNBQVMsb0JBQ1AsS0FDQSxNQUNBLE9BQ0EsU0FDUTtBQUNSLFdBQVMsSUFBSSxHQUFHLE1BQU0sSUFBSSxRQUFRLE1BQWMsSUFBSSxLQUFLLEtBQUs7QUFDNUQsV0FBTyxJQUFJLFdBQVcsQ0FBQztBQUV2QixRQUFJLEtBQUssS0FBSyxhQUFhLElBQUksR0FBRztBQUNoQyxhQUFPLE9BQU8sS0FBSyxNQUFNLE9BQU8sT0FBTztBQUFBLElBQ3pDO0FBRUEsUUFBSSxFQUFFLG9CQUFvQixJQUFJLEtBQUssU0FBUyxhQUFhO0FBQ3ZELGFBQU8sT0FBTyxLQUFLLE1BQU0sT0FBTyxPQUFPO0FBQUEsSUFDekM7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUO0FBbkJTO0FBcUJULFNBQVMsa0JBQ1AsS0FDQSxNQUNBLE9BQ0EsU0FDUTtBQUNSLE1BQUksVUFBVTtBQUVkLFdBQVMsSUFBSSxHQUFHLE1BQU0sSUFBSSxRQUFRLE1BQWMsSUFBSSxLQUFLLEtBQUs7QUFDNUQsV0FBTyxJQUFJLFdBQVcsQ0FBQztBQUV2QixRQUFJLEVBQUUsb0JBQW9CLElBQUksS0FBSyxTQUFTLGFBQWE7QUFDdkQsYUFBTyxPQUFPLEtBQUssTUFBTSxPQUFPLE9BQU87QUFBQSxJQUN6QztBQUVBLFFBQUksV0FBVyxDQUFDLGFBQWEsSUFBSSxHQUFHO0FBQ2xDLGdCQUFVO0FBQUEsSUFDWjtBQUFBLEVBQ0Y7QUFFQSxNQUFJLFNBQVM7QUFDWCxXQUFPLE9BQU8sS0FBSyxNQUFNLE9BQU8sT0FBTztBQUFBLEVBQ3pDO0FBRUEsU0FBTztBQUNUO0FBekJTO0FBOEJGLFNBQVMsU0FBUyxLQUFxQjtBQUM1QyxNQUFJLENBQUMsS0FBSztBQUNSLFdBQU8sZUFBZTtBQUFBLEVBQ3hCO0FBRUEsUUFBTSxJQUFJLFdBQVcsTUFBTSxNQUFNO0FBRWpDLE1BQUksSUFBSSxRQUFRLFlBQVksTUFBTSxJQUFJO0FBQ3BDLFdBQU8sZUFDSCxNQUNBO0FBQUEsRUFDTixPQUFPO0FBQ0wsV0FBTyxlQUNILElBQUksV0FBVyxjQUFjLGdCQUFnQixJQUM3QztBQUFBLEVBQ047QUFDRjtBQWhCZ0I7QUFxQlQsU0FBUyxVQUFVLEtBQXFCO0FBQzdDLE1BQUksQ0FBQyxLQUFLO0FBQ1IsV0FBTyxlQUFlO0FBQUEsRUFDeEI7QUFFQSxTQUFPLGFBQWEsS0FBSyxjQUFjLGNBQWMsZ0JBQWdCO0FBQ3ZFO0FBTmdCO0FBV1QsU0FBUyxVQUFVLEtBQXFCO0FBQzdDLE1BQUksQ0FBQyxLQUFLO0FBQ1IsV0FBTyxZQUFZO0FBQUEsRUFDckI7QUFFQSxTQUFPLGtCQUFrQixLQUFLLFdBQVcsV0FBVyxXQUFXO0FBQ2pFO0FBTmdCO0FBV1QsU0FBUyxZQUFZLE9BQXVCO0FBQ2pELE1BQUksQ0FBQyxPQUFPO0FBQ1YsV0FBTyxXQUFXO0FBQUEsRUFDcEI7QUFFQSxTQUFPLG9CQUFvQixPQUFPLFVBQVUsVUFBVSxZQUFZO0FBQ3BFO0FBTmdCOyIsCiAgIm5hbWVzIjogW10KfQo=