@tai-kun/surrealdb
Version:
The SurrealDB SDK for JavaScript
109 lines (107 loc) • 10.4 kB
JavaScript
;
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/surreal/surql/create-surql.ts
var create_surql_exports = {};
__export(create_surql_exports, {
default: () => createSurql
});
module.exports = __toCommonJS(create_surql_exports);
var import_errors = require("../../errors/index.cjs");
var import_prepared_query = __toESM(require("./prepared-query.cjs"), 1);
var import_raw = __toESM(require("./raw.cjs"), 1);
var import_slot = __toESM(require("./slot.cjs"), 1);
function createSurql(config) {
const {
formatter,
varPrefix = "_jst_"
// JavaScript, Tagged Template Literals
} = config;
function surql(texts, ...values) {
if (texts.length - values.length !== 1) {
throw new import_errors.SurrealValueError(
"template string",
`texts.length=${texts.length} and values.length=${values.length}`
);
}
let text = "";
const vars = {};
const slots = [];
for (let i = 0, j, v, len = texts.length, named = []; i < len; i++) {
text += texts[i];
if (i + 1 === len) {
break;
}
for (j = 0; j < i; j++) {
if (Object.is(values[j], values[i])) {
break;
}
}
v = values[j];
if (v instanceof import_slot.default) {
text += "$" + v.name;
if (j === i && named.indexOf(v.name) < 0) {
if (v.name.startsWith(varPrefix)) {
throw new import_errors.SurrealValueError(
`a variable name that do not start with "${varPrefix}"`,
v.name
);
}
slots.push(v);
named.push(v.name);
}
} else if (v instanceof import_raw.default) {
text += v.toString();
} else {
text += "$" + varPrefix + j;
if (!(varPrefix + j in vars)) {
vars[varPrefix + j] = formatter.toEncoded?.(v) || v;
}
}
}
return new import_prepared_query.default(text, vars, slots, {
encodedText: formatter.toEncoded?.(text)
});
}
__name(surql, "surql");
function raw(value) {
return new import_raw.default(value);
}
__name(raw, "raw");
function slot(...args) {
return args.length === 1 ? new import_slot.default(args[0], true, { formatter }) : new import_slot.default(args[0], false, {
formatter,
defaultValue: formatter.toEncoded?.(args[1]) || args[1]
});
}
__name(slot, "slot");
return Object.assign(surql, { raw, slot });
}
__name(createSurql, "createSurql");
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3N1cnJlYWwvc3VycWwvY3JlYXRlLXN1cnFsLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBTdXJyZWFsVmFsdWVFcnJvciB9IGZyb20gXCJAdGFpLWt1bi9zdXJyZWFsZGIvZXJyb3JzXCI7XG5pbXBvcnQgdHlwZSB7IEZvcm1hdHRlciB9IGZyb20gXCJAdGFpLWt1bi9zdXJyZWFsZGIvZm9ybWF0dGVyXCI7XG5pbXBvcnQgUHJlcGFyZWRRdWVyeSBmcm9tIFwiLi9wcmVwYXJlZC1xdWVyeVwiO1xuaW1wb3J0IFJhdywgeyB0eXBlIFJhd1ZhbHVlIH0gZnJvbSBcIi4vcmF3XCI7XG5pbXBvcnQgU2xvdCBmcm9tIFwiLi9zbG90XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VycWwge1xuICA8VFZhbHVlcyBleHRlbmRzIHVua25vd25bXSA9IHVua25vd25bXT4oXG4gICAgdGV4dHM6IHJlYWRvbmx5IHN0cmluZ1tdIHwgVGVtcGxhdGVTdHJpbmdzQXJyYXksXG4gICAgLi4udmFsdWVzOiBUVmFsdWVzXG4gICk6IFByZXBhcmVkUXVlcnk8RXh0cmFjdDxUVmFsdWVzW251bWJlcl0sIFNsb3Q+PjtcbiAgcmF3OiB7XG4gICAgKHZhbHVlOiBSYXdWYWx1ZSk6IFJhdztcbiAgfTtcbiAgc2xvdDoge1xuICAgIDxjb25zdCBUTmFtZSBleHRlbmRzIHN0cmluZywgVFZhbHVlID0gdW5rbm93bj4oXG4gICAgICBuYW1lOiBUTmFtZSxcbiAgICApOiBTbG90PFROYW1lLCB0cnVlLCBUVmFsdWUgfCB1bmRlZmluZWQ+O1xuICAgIDxjb25zdCBUTmFtZSBleHRlbmRzIHN0cmluZywgVFZhbHVlPihcbiAgICAgIG5hbWU6IFROYW1lLFxuICAgICAgZGVmYXVsdFZhbHVlOiBUVmFsdWUsXG4gICAgKTogU2xvdDxUTmFtZSwgZmFsc2UsIFRWYWx1ZT47XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlU3VycWxDb25maWcge1xuICByZWFkb25seSBmb3JtYXR0ZXI6IEZvcm1hdHRlcjtcbiAgcmVhZG9ubHkgdmFyUHJlZml4Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVTdXJxbChjb25maWc6IENyZWF0ZVN1cnFsQ29uZmlnKTogU3VycWwge1xuICBjb25zdCB7XG4gICAgZm9ybWF0dGVyLFxuICAgIHZhclByZWZpeCA9IFwiX2pzdF9cIiwgLy8gSmF2YVNjcmlwdCwgVGFnZ2VkIFRlbXBsYXRlIExpdGVyYWxzXG4gIH0gPSBjb25maWc7XG5cbiAgZnVuY3Rpb24gc3VycWwodGV4dHM6IHJlYWRvbmx5IHN0cmluZ1tdLCAuLi52YWx1ZXM6IHVua25vd25bXSkge1xuICAgIGlmICh0ZXh0cy5sZW5ndGggLSB2YWx1ZXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgU3VycmVhbFZhbHVlRXJyb3IoXG4gICAgICAgIFwidGVtcGxhdGUgc3RyaW5nXCIsXG4gICAgICAgIGB0ZXh0cy5sZW5ndGg9JHt0ZXh0cy5sZW5ndGh9IGFuZCB2YWx1ZXMubGVuZ3RoPSR7dmFsdWVzLmxlbmd0aH1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgdGV4dCA9IFwiXCI7XG4gICAgY29uc3QgdmFyczogeyBbcDogc3RyaW5nXTogdW5rbm93biB9ID0ge307XG4gICAgY29uc3Qgc2xvdHM6IFNsb3RbXSA9IFtdO1xuXG4gICAgZm9yIChcbiAgICAgIGxldCBpID0gMCxcbiAgICAgICAgajogbnVtYmVyLFxuICAgICAgICB2LFxuICAgICAgICBsZW4gPSB0ZXh0cy5sZW5ndGgsXG4gICAgICAgIG5hbWVkOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgaSA8IGxlbjtcbiAgICAgIGkrK1xuICAgICkge1xuICAgICAgdGV4dCArPSB0ZXh0c1tpXTtcblxuICAgICAgaWYgKGkgKyAxID09PSBsZW4pIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGZvciAoaiA9IDA7IGogPCBpOyBqKyspIHtcbiAgICAgICAgaWYgKE9iamVjdC5pcyh2YWx1ZXNbal0sIHZhbHVlc1tpXSkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2ID0gdmFsdWVzW2pdO1xuXG4gICAgICBpZiAodiBpbnN0YW5jZW9mIFNsb3QpIHtcbiAgICAgICAgdGV4dCArPSBcIiRcIiArIHYubmFtZTtcblxuICAgICAgICBpZiAoaiA9PT0gaSAmJiBuYW1lZC5pbmRleE9mKHYubmFtZSkgPCAwKSB7XG4gICAgICAgICAgaWYgKCh2Lm5hbWUgYXMgc3RyaW5nKS5zdGFydHNXaXRoKHZhclByZWZpeCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBTdXJyZWFsVmFsdWVFcnJvcihcbiAgICAgICAgICAgICAgYGEgdmFyaWFibGUgbmFtZSB0aGF0IGRvIG5vdCBzdGFydCB3aXRoIFwiJHt2YXJQcmVmaXh9XCJgLFxuICAgICAgICAgICAgICB2Lm5hbWUsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHNsb3RzLnB1c2godik7XG4gICAgICAgICAgbmFtZWQucHVzaCh2Lm5hbWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBSYXcpIHtcbiAgICAgICAgdGV4dCArPSB2LnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZXh0ICs9IFwiJFwiICsgdmFyUHJlZml4ICsgajtcblxuICAgICAgICBpZiAoISgodmFyUHJlZml4ICsgaikgaW4gdmFycykpIHtcbiAgICAgICAgICB2YXJzW3ZhclByZWZpeCArIGpdID0gZm9ybWF0dGVyLnRvRW5jb2RlZD8uKHYpIHx8IHY7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByZXBhcmVkUXVlcnkodGV4dCwgdmFycywgc2xvdHMsIHtcbiAgICAgIGVuY29kZWRUZXh0OiBmb3JtYXR0ZXIudG9FbmNvZGVkPy4odGV4dCksXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiByYXcodmFsdWU6IFJhd1ZhbHVlKTogUmF3IHtcbiAgICByZXR1cm4gbmV3IFJhdyh2YWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBzbG90KC4uLmFyZ3M6IFtuYW1lOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHVua25vd25dKTogU2xvdCB7XG4gICAgcmV0dXJuIGFyZ3MubGVuZ3RoID09PSAxXG4gICAgICA/IG5ldyBTbG90KGFyZ3NbMF0sIHRydWUsIHsgZm9ybWF0dGVyIH0pXG4gICAgICA6IG5ldyBTbG90KGFyZ3NbMF0sIGZhbHNlLCB7XG4gICAgICAgIGZvcm1hdHRlcixcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBmb3JtYXR0ZXIudG9FbmNvZGVkPy4oYXJnc1sxXSkgfHwgYXJnc1sxXSxcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICByZXR1cm4gT2JqZWN0LmFzc2lnbihzdXJxbCwgeyByYXcsIHNsb3QgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG9CQUFrQztBQUVsQyw0QkFBMEI7QUFDMUIsaUJBQW1DO0FBQ25DLGtCQUFpQjtBQTBCRixTQUFSLFlBQTZCLFFBQWtDO0FBQ3BFLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQSxZQUFZO0FBQUE7QUFBQSxFQUNkLElBQUk7QUFFSixXQUFTLE1BQU0sVUFBNkIsUUFBbUI7QUFDN0QsUUFBSSxNQUFNLFNBQVMsT0FBTyxXQUFXLEdBQUc7QUFDdEMsWUFBTSxJQUFJO0FBQUEsUUFDUjtBQUFBLFFBQ0EsZ0JBQWdCLE1BQU0sTUFBTSxzQkFBc0IsT0FBTyxNQUFNO0FBQUEsTUFDakU7QUFBQSxJQUNGO0FBRUEsUUFBSSxPQUFPO0FBQ1gsVUFBTSxPQUFpQyxDQUFDO0FBQ3hDLFVBQU0sUUFBZ0IsQ0FBQztBQUV2QixhQUNNLElBQUksR0FDTixHQUNBLEdBQ0EsTUFBTSxNQUFNLFFBQ1osUUFBa0IsQ0FBQyxHQUNyQixJQUFJLEtBQ0osS0FDQTtBQUNBLGNBQVEsTUFBTSxDQUFDO0FBRWYsVUFBSSxJQUFJLE1BQU0sS0FBSztBQUNqQjtBQUFBLE1BQ0Y7QUFFQSxXQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSztBQUN0QixZQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHO0FBQ25DO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFFQSxVQUFJLE9BQU8sQ0FBQztBQUVaLFVBQUksYUFBYSxZQUFBQSxTQUFNO0FBQ3JCLGdCQUFRLE1BQU0sRUFBRTtBQUVoQixZQUFJLE1BQU0sS0FBSyxNQUFNLFFBQVEsRUFBRSxJQUFJLElBQUksR0FBRztBQUN4QyxjQUFLLEVBQUUsS0FBZ0IsV0FBVyxTQUFTLEdBQUc7QUFDNUMsa0JBQU0sSUFBSTtBQUFBLGNBQ1IsMkNBQTJDLFNBQVM7QUFBQSxjQUNwRCxFQUFFO0FBQUEsWUFDSjtBQUFBLFVBQ0Y7QUFFQSxnQkFBTSxLQUFLLENBQUM7QUFDWixnQkFBTSxLQUFLLEVBQUUsSUFBSTtBQUFBLFFBQ25CO0FBQUEsTUFDRixXQUFXLGFBQWEsV0FBQUMsU0FBSztBQUMzQixnQkFBUSxFQUFFLFNBQVM7QUFBQSxNQUNyQixPQUFPO0FBQ0wsZ0JBQVEsTUFBTSxZQUFZO0FBRTFCLFlBQUksRUFBRyxZQUFZLEtBQU0sT0FBTztBQUM5QixlQUFLLFlBQVksQ0FBQyxJQUFJLFVBQVUsWUFBWSxDQUFDLEtBQUs7QUFBQSxRQUNwRDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBRUEsV0FBTyxJQUFJLHNCQUFBQyxRQUFjLE1BQU0sTUFBTSxPQUFPO0FBQUEsTUFDMUMsYUFBYSxVQUFVLFlBQVksSUFBSTtBQUFBLElBQ3pDLENBQUM7QUFBQSxFQUNIO0FBL0RTO0FBaUVULFdBQVMsSUFBSSxPQUFzQjtBQUNqQyxXQUFPLElBQUksV0FBQUQsUUFBSSxLQUFLO0FBQUEsRUFDdEI7QUFGUztBQUlULFdBQVMsUUFBUSxNQUFvRDtBQUNuRSxXQUFPLEtBQUssV0FBVyxJQUNuQixJQUFJLFlBQUFELFFBQUssS0FBSyxDQUFDLEdBQUcsTUFBTSxFQUFFLFVBQVUsQ0FBQyxJQUNyQyxJQUFJLFlBQUFBLFFBQUssS0FBSyxDQUFDLEdBQUcsT0FBTztBQUFBLE1BQ3pCO0FBQUEsTUFDQSxjQUFjLFVBQVUsWUFBWSxLQUFLLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQztBQUFBLElBQ3hELENBQUM7QUFBQSxFQUNMO0FBUFM7QUFVVCxTQUFPLE9BQU8sT0FBTyxPQUFPLEVBQUUsS0FBSyxLQUFLLENBQUM7QUFDM0M7QUF0RndCOyIsCiAgIm5hbWVzIjogWyJTbG90IiwgIlJhdyIsICJQcmVwYXJlZFF1ZXJ5Il0KfQo=