UNPKG

akasharender

Version:

Rendering support for generating static HTML websites or EPUB eBooks

88 lines 10.3 kB
/** * * Copyright 2024-2025 David Herron * * This file is part of AkashaCMS (http://akashacms.com/). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // import sqleanLibs from 'sqlite3-sqlean'; import * as sqlite_regex from "sqlite-regex"; import * as sqlite_vec from 'sqlite-vec'; import * as sqlite_lembed from 'sqlite-lembed'; import { SQ3DataStore } from 'sq3-kv-data-store'; import { AsyncDatabase } from 'promised-sqlite3'; import { default as SQ3QueryLog } from 'sqlite3-query-log'; const dburl = typeof process.env.AK_DB_URL === 'string' ? process.env.AK_DB_URL : ':memory:'; export const sqdb = await AsyncDatabase.open(dburl); // await sqdb.open(dburl); // await sqdb.open('test.db'); // sqdb.loadExtension(sqleanLibs.reLibPath); sqdb.inner.loadExtension(sqlite_regex.getLoadablePath()); const lembedModelFile = typeof process.env.AK_LEMBED_MODEL === 'string' ? process.env.AK_LEMBED_MODEL : undefined; export const lembedModelName = typeof process.env.AK_LEMBED_MODEL_NAME === 'string' ? process.env.AK_LEMBED_MODEL_NAME : undefined; if (typeof lembedModelFile !== 'undefined') { console.log({ lembedModelFile, lembedModelName, lembed: sqlite_lembed.getLoadablePath(), vec: sqlite_vec.getLoadablePath() }); sqlite_lembed.load(sqdb.inner); sqlite_vec.load(sqdb.inner); await sqdb.run(` INSERT INTO temp.lembed_models(name, model) select ?, lembed_model_from_file(?); `, [ lembedModelName, lembedModelFile ]); } await sqdb.run('PRAGMA journal_mode=WAL;'); // if (typeof process.env.AK_PROFILE === 'string') { // SQ3QueryLog(sqdb.inner, process.env.AK_PROFILE); // } // This traces SQL statements // // sqdb.inner.on('trace', sql => { // console.log(sql); // }); // sqdb.inner.on('error', err => { // console.error(err); // }); sqdb.inner.on('error', err => { console.error(err); }); // Profiling SQL queries // This might be useful for performance evaluation. // The output is TSV separated fields: // 1. base64-encoded SQL // This was chosen to prevent newlines in this field // and to keep the format simple // 2. Approximate number of milliseconds to execute // if (typeof process.env.AK_PROFILE === 'string') { SQ3QueryLog(sqdb.inner, process.env.AK_PROFILE); } //////////////////////// export function newSQ3DataStore(name) { // console.log(`newSQ3DataStore ${name}`); return new SQ3DataStore(sqdb.inner, name); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FkYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9zcWRiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQVdILDJDQUEyQztBQUMzQyxPQUFPLEtBQUssWUFBWSxNQUFPLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEtBQUssVUFBVSxNQUFTLFlBQVksQ0FBQztBQUM1QyxPQUFPLEtBQUssYUFBYSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELE9BQU8sRUFBRSxPQUFPLElBQUksV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFM0QsTUFBTSxLQUFLLEdBQUcsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsS0FBSyxRQUFRO0lBQy9DLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVM7SUFDdkIsQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUVyQixNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BELDBCQUEwQjtBQUMxQiw4QkFBOEI7QUFDOUIsNENBQTRDO0FBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO0FBRXpELE1BQU0sZUFBZSxHQUFHLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEtBQUssUUFBUTtJQUMvRCxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlO0lBQzdCLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDcEIsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsS0FBSyxRQUFRO0lBQzNFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQjtJQUNsQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBRXBCLElBQUksT0FBTyxlQUFlLEtBQUssV0FBVyxFQUFFLENBQUM7SUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUNSLGVBQWU7UUFDZixlQUFlO1FBQ2YsTUFBTSxFQUFFLGFBQWEsQ0FBQyxlQUFlLEVBQUU7UUFDdkMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxlQUFlLEVBQUU7S0FDcEMsQ0FBQyxDQUFDO0lBQ0gsYUFBYSxDQUFDLElBQUksQ0FBTSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsVUFBVSxDQUFDLElBQUksQ0FBTSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFakMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDOzs7S0FHZCxFQUFFO1FBQ0MsZUFBZTtRQUNmLGVBQWU7S0FDbEIsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBRTNDLG9EQUFvRDtBQUNwRCx1REFBdUQ7QUFDdkQsSUFBSTtBQUVKLDZCQUE2QjtBQUM3QixFQUFFO0FBQ0Ysa0NBQWtDO0FBQ2xDLHdCQUF3QjtBQUN4QixNQUFNO0FBQ04sa0NBQWtDO0FBQ2xDLDBCQUEwQjtBQUMxQixNQUFNO0FBRU4sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFO0lBQ3pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsQ0FBQyxDQUFDLENBQUM7QUFFSCx3QkFBd0I7QUFDeEIsbURBQW1EO0FBQ25ELHNDQUFzQztBQUN0QywwQkFBMEI7QUFDMUIseURBQXlEO0FBQ3pELHFDQUFxQztBQUNyQyxxREFBcUQ7QUFDckQsRUFBRTtBQUNGLElBQUksT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztJQUM3QyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFHRCx3QkFBd0I7QUFFeEIsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFZO0lBR3hDLDBDQUEwQztJQUMxQyxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqIENvcHlyaWdodCAyMDI0LTIwMjUgRGF2aWQgSGVycm9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgQWthc2hhQ01TIChodHRwOi8vYWthc2hhY21zLmNvbS8pLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIFNRTCBEYXRhYmFzZSBzdXBwb3J0IHVzaW5nIFNRTElURTMuXG4gKiBcbiAqIFdoYXQncyBzdXBwb3J0ZWQgaXMgU1FMSVRFM09STSAtIGEgbGlnaHR3ZWlnaHRcbiAqIE9STSB0aGF0IHJ1bnMgb24gdG9wIG9mIFNRTElURTMuXG4gKi9cblxuaW1wb3J0IGZzIGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgRGF0YWJhc2UgfSBmcm9tICdzcWxpdGUzJztcbi8vIGltcG9ydCBzcWxlYW5MaWJzIGZyb20gJ3NxbGl0ZTMtc3FsZWFuJztcbmltcG9ydCAqIGFzIHNxbGl0ZV9yZWdleCAgZnJvbSBcInNxbGl0ZS1yZWdleFwiO1xuaW1wb3J0ICogYXMgc3FsaXRlX3ZlYyAgICBmcm9tICdzcWxpdGUtdmVjJztcbmltcG9ydCAqIGFzIHNxbGl0ZV9sZW1iZWQgZnJvbSAnc3FsaXRlLWxlbWJlZCc7XG5pbXBvcnQgeyBTUTNEYXRhU3RvcmUgfSBmcm9tICdzcTMta3YtZGF0YS1zdG9yZSc7XG5cbmltcG9ydCB7IEFzeW5jRGF0YWJhc2UgfSBmcm9tICdwcm9taXNlZC1zcWxpdGUzJztcblxuaW1wb3J0IHsgZGVmYXVsdCBhcyBTUTNRdWVyeUxvZyB9IGZyb20gJ3NxbGl0ZTMtcXVlcnktbG9nJztcblxuY29uc3QgZGJ1cmwgPSB0eXBlb2YgcHJvY2Vzcy5lbnYuQUtfREJfVVJMID09PSAnc3RyaW5nJ1xuICAgICAgICA/IHByb2Nlc3MuZW52LkFLX0RCX1VSTFxuICAgICAgICA6ICc6bWVtb3J5Oic7XG5cbmV4cG9ydCBjb25zdCBzcWRiID0gYXdhaXQgQXN5bmNEYXRhYmFzZS5vcGVuKGRidXJsKTtcbi8vIGF3YWl0IHNxZGIub3BlbihkYnVybCk7XG4vLyBhd2FpdCBzcWRiLm9wZW4oJ3Rlc3QuZGInKTtcbi8vIHNxZGIubG9hZEV4dGVuc2lvbihzcWxlYW5MaWJzLnJlTGliUGF0aCk7XG5zcWRiLmlubmVyLmxvYWRFeHRlbnNpb24oc3FsaXRlX3JlZ2V4LmdldExvYWRhYmxlUGF0aCgpKTtcblxuY29uc3QgbGVtYmVkTW9kZWxGaWxlID0gdHlwZW9mIHByb2Nlc3MuZW52LkFLX0xFTUJFRF9NT0RFTCA9PT0gJ3N0cmluZydcbiAgICAgICAgPyBwcm9jZXNzLmVudi5BS19MRU1CRURfTU9ERUxcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5leHBvcnQgY29uc3QgbGVtYmVkTW9kZWxOYW1lID0gdHlwZW9mIHByb2Nlc3MuZW52LkFLX0xFTUJFRF9NT0RFTF9OQU1FID09PSAnc3RyaW5nJ1xuICAgICAgICA/IHByb2Nlc3MuZW52LkFLX0xFTUJFRF9NT0RFTF9OQU1FXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG5pZiAodHlwZW9mIGxlbWJlZE1vZGVsRmlsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zb2xlLmxvZyh7XG4gICAgICAgIGxlbWJlZE1vZGVsRmlsZSxcbiAgICAgICAgbGVtYmVkTW9kZWxOYW1lLFxuICAgICAgICBsZW1iZWQ6IHNxbGl0ZV9sZW1iZWQuZ2V0TG9hZGFibGVQYXRoKCksXG4gICAgICAgIHZlYzogc3FsaXRlX3ZlYy5nZXRMb2FkYWJsZVBhdGgoKVxuICAgIH0pO1xuICAgIHNxbGl0ZV9sZW1iZWQubG9hZCg8YW55PnNxZGIuaW5uZXIpO1xuICAgIHNxbGl0ZV92ZWMubG9hZCg8YW55PnNxZGIuaW5uZXIpO1xuXG4gICAgYXdhaXQgc3FkYi5ydW4oYFxuICAgICAgICBJTlNFUlQgSU5UTyB0ZW1wLmxlbWJlZF9tb2RlbHMobmFtZSwgbW9kZWwpXG4gICAgICAgIHNlbGVjdCA/LCBsZW1iZWRfbW9kZWxfZnJvbV9maWxlKD8pO1xuICAgIGAsIFtcbiAgICAgICAgbGVtYmVkTW9kZWxOYW1lLFxuICAgICAgICBsZW1iZWRNb2RlbEZpbGVcbiAgICBdKTtcbn1cblxuYXdhaXQgc3FkYi5ydW4oJ1BSQUdNQSBqb3VybmFsX21vZGU9V0FMOycpO1xuXG4vLyBpZiAodHlwZW9mIHByb2Nlc3MuZW52LkFLX1BST0ZJTEUgPT09ICdzdHJpbmcnKSB7XG4vLyAgICAgU1EzUXVlcnlMb2coc3FkYi5pbm5lciwgcHJvY2Vzcy5lbnYuQUtfUFJPRklMRSk7XG4vLyB9XG5cbi8vIFRoaXMgdHJhY2VzIFNRTCBzdGF0ZW1lbnRzXG4vL1xuLy8gc3FkYi5pbm5lci5vbigndHJhY2UnLCBzcWwgPT4ge1xuLy8gICAgIGNvbnNvbGUubG9nKHNxbCk7XG4vLyB9KTtcbi8vIHNxZGIuaW5uZXIub24oJ2Vycm9yJywgZXJyID0+IHtcbi8vICAgICBjb25zb2xlLmVycm9yKGVycik7XG4vLyB9KTtcblxuc3FkYi5pbm5lci5vbignZXJyb3InLCBlcnIgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbn0pO1xuXG4vLyBQcm9maWxpbmcgU1FMIHF1ZXJpZXNcbi8vIFRoaXMgbWlnaHQgYmUgdXNlZnVsIGZvciBwZXJmb3JtYW5jZSBldmFsdWF0aW9uLlxuLy8gVGhlIG91dHB1dCBpcyBUU1Ygc2VwYXJhdGVkIGZpZWxkczpcbi8vICAgMS4gYmFzZTY0LWVuY29kZWQgU1FMXG4vLyAgICAgIFRoaXMgd2FzIGNob3NlbiB0byBwcmV2ZW50IG5ld2xpbmVzIGluIHRoaXMgZmllbGRcbi8vICAgICAgYW5kIHRvIGtlZXAgdGhlIGZvcm1hdCBzaW1wbGVcbi8vICAgMi4gQXBwcm94aW1hdGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBleGVjdXRlXG4vL1xuaWYgKHR5cGVvZiBwcm9jZXNzLmVudi5BS19QUk9GSUxFID09PSAnc3RyaW5nJykge1xuICAgIFNRM1F1ZXJ5TG9nKHNxZGIuaW5uZXIsIHByb2Nlc3MuZW52LkFLX1BST0ZJTEUpO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5leHBvcnQgZnVuY3Rpb24gbmV3U1EzRGF0YVN0b3JlKG5hbWU6IHN0cmluZylcbiAgICA6IFNRM0RhdGFTdG9yZVxue1xuICAgIC8vIGNvbnNvbGUubG9nKGBuZXdTUTNEYXRhU3RvcmUgJHtuYW1lfWApO1xuICAgIHJldHVybiBuZXcgU1EzRGF0YVN0b3JlKHNxZGIuaW5uZXIsIG5hbWUpO1xufVxuIl19