core: fix Crypto is not supported on this platform. error during tests

This commit is contained in:
Abdullah Atta
2023-12-23 17:06:07 +05:00
parent a847bd2774
commit dd1cfe6fff
3 changed files with 33 additions and 11 deletions

View File

@@ -0,0 +1,27 @@
/*
This file is part of the Notesnook project (https://notesnook.com/)
Copyright (C) 2023 Streetwriters (Private) Limited
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
export function hasRequire() {
return (
typeof require === "function" &&
// eslint-disable-next-line no-undef, @typescript-eslint/ban-ts-comment
// @ts-ignore
(typeof IS_DESKTOP_APP === "undefined" || !IS_DESKTOP_APP)
);
}

View File

@@ -17,9 +17,12 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { hasRequire } from "./has-require";
export function randomBytes(size: number): Buffer {
if (!globalThis.crypto || !crypto)
throw new Error("Crypto is not supported on this platform.");
const crypto =
globalThis.crypto || (hasRequire() ? require("node:crypto") : null);
if (!crypto) throw new Error("Crypto is not supported on this platform.");
if ("randomBytes" in crypto && typeof crypto.randomBytes === "function")
return crypto.randomBytes(size);

View File

@@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { TemplateData } from "..";
import { hasRequire } from "../../has-require";
import { parseHTML } from "../../html-parser";
import { template } from "./template";
@@ -112,12 +113,3 @@ async function preprocessHTML(templateData: TemplateData) {
templateData.content = doc.body.innerHTML;
return templateData;
}
function hasRequire() {
return (
typeof require === "function" &&
// eslint-disable-next-line no-undef, @typescript-eslint/ban-ts-comment
// @ts-ignore
(typeof IS_DESKTOP_APP === "undefined" || !IS_DESKTOP_APP)
);
}