UNPKG

nuxt-surrealdb

Version:

A Nuxt module aimed to simplify the use of SurrealDB

67 lines (66 loc) 2.1 kB
import { textToBase64 } from "undio"; import { createDefu, defu } from "defu"; export function authTokenFn(authToken) { if (!authToken) return void 0; if (typeof authToken === "string") { return `Bearer ${authToken}`; } else { return `Basic ${textToBase64(`${authToken.user}:${authToken.pass}`, { dataURL: false })}`; } } export function getDatabasePreset(options) { const { authDatabase, databases, overrides, userToken } = options; const getAuthToken = (basePreset2, overrideToken) => { if (typeof overrideToken === "boolean") { return overrideToken ? basePreset2.auth : void 0; } return overrideToken || basePreset2.auth; }; const getPresetWithAuth = (preset, token2) => ({ ...preset, auth: getAuthToken(preset, token2) }); if (!overrides) { return authDatabase === "default" ? getPresetWithAuth(databases["default"], userToken) : databases["default"]; } const { database, token } = overrides; if (typeof database === "string" || typeof database === "number" || typeof database === "symbol") { const preset = databases[database]; const authToken = authDatabase === database ? token ?? userToken : token; return getPresetWithAuth(preset, authToken); } const basePreset = defu(database, databases["default"]); return getPresetWithAuth(basePreset, token); } export function surrealFetchOptionsOverride(databasePreset) { const authorization = authTokenFn(databasePreset.auth); return { baseURL: databasePreset.host, headers: { ...authorization ? { Authorization: authorization } : {}, "surreal-NS": databasePreset.NS, "surreal-DB": databasePreset.DB, "Content-Type": "application/json", "Accept": "application/json" } }; } export const defuDbs = createDefu((obj, key, value) => { if (value) { obj[key] = value; return true; } return true; }); export function setRequestHeaders(headers, append) { if (!append) return headers; for (const [key, value] of Object.entries(append)) { headers.set(key, value); } return headers; }