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)
- );
-}