diff --git a/packages/core/src/utils/has-require.ts b/packages/core/src/utils/has-require.ts new file mode 100644 index 000000000..b6e9acce9 --- /dev/null +++ b/packages/core/src/utils/has-require.ts @@ -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 . +*/ + +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) + ); +} diff --git a/packages/core/src/utils/random.ts b/packages/core/src/utils/random.ts index 5099af5d7..0cd8a3279 100644 --- a/packages/core/src/utils/random.ts +++ b/packages/core/src/utils/random.ts @@ -17,9 +17,12 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ +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); diff --git a/packages/core/src/utils/templates/html/index.ts b/packages/core/src/utils/templates/html/index.ts index cdc03f404..4ca20c9f5 100644 --- a/packages/core/src/utils/templates/html/index.ts +++ b/packages/core/src/utils/templates/html/index.ts @@ -18,6 +18,7 @@ along with this program. If not, see . */ 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) - ); -}