diff --git a/apps/monograph/app/utils/env.ts b/apps/monograph/app/utils/env.ts index e6cd1db92..6c19ec228 100644 --- a/apps/monograph/app/utils/env.ts +++ b/apps/monograph/app/utils/env.ts @@ -17,8 +17,6 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { readFileSync } from "node:fs"; - const p = "process" in globalThis ? globalThis.process : ({ env: {} } as any); export const API_HOST = import.meta.env.API_HOST || p.env.API_HOST || `https://api.notesnook.com`; @@ -28,23 +26,3 @@ export const PUBLIC_URL = `http://localhost:${import.meta.env.PORT || p.env.PORT || 5173}`; export const COMPATIBILITY_VERSION = 1; export const INSTANCE_NAME = p.env.INSTANCE_NAME || "default"; - -export function readSecrets( - names: T[] -): Record { - const result: Record = {} as Record< - T, - string | undefined - >; - for (const name of names) result[name] = readSecret(name); - return result; -} - -export function readSecret(name: string): string | undefined { - const value = process.env[name]; - if (value) return value; - const file = process.env[`${name}_FILE`]; - if (file) { - return readFileSync(file, "utf-8"); - } -} diff --git a/apps/monograph/app/utils/secrets.ts b/apps/monograph/app/utils/secrets.ts new file mode 100644 index 000000000..b86f490cc --- /dev/null +++ b/apps/monograph/app/utils/secrets.ts @@ -0,0 +1,40 @@ +/* +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 . +*/ + +import { readFileSync } from "node:fs"; + +export function readSecrets( + names: T[] +): Record { + const result: Record = {} as Record< + T, + string | undefined + >; + for (const name of names) result[name] = readSecret(name); + return result; +} + +export function readSecret(name: string): string | undefined { + const value = process.env[name]; + if (value) return value; + const file = process.env[`${name}_FILE`]; + if (file) { + return readFileSync(file, "utf-8"); + } +} diff --git a/apps/monograph/app/utils/storage/kv.ts b/apps/monograph/app/utils/storage/kv.ts index 4dcc4c707..d97dd957e 100644 --- a/apps/monograph/app/utils/storage/kv.ts +++ b/apps/monograph/app/utils/storage/kv.ts @@ -18,7 +18,7 @@ along with this program. If not, see . */ import WorkersKVREST from "@sagi.io/workers-kv"; -import { readSecrets } from "../env"; +import { readSecrets } from "../secrets"; const env = readSecrets([ "CLOUDFLARE_ACCOUNT_ID", diff --git a/apps/monograph/package-lock.json b/apps/monograph/package-lock.json index d0567ae38..858fe1c70 100644 --- a/apps/monograph/package-lock.json +++ b/apps/monograph/package-lock.json @@ -26,6 +26,7 @@ "@sagi.io/workers-kv": "^0.0.14", "@theme-ui/components": "^0.16.2", "@theme-ui/core": "^0.16.2", + "buffer": "^6.0.3", "canvas-hypertxt": "^1.0.3", "comlink": "^4.4.1", "date-fns": "^4.1.0", @@ -2946,6 +2947,22 @@ "@styled-system/css": "^5.1.5" } }, + "node_modules/@theme-ui/color-modes": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@theme-ui/color-modes/-/color-modes-0.16.2.tgz", + "integrity": "sha512-jWEWx53lxNgWCT38i/kwLV2rsvJz8lVZgi5oImnVwYba9VejXD23q1ckbNFJHosQ8KKXY87ht0KPC6BQFIiHtQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@theme-ui/core": "^0.16.2", + "@theme-ui/css": "^0.16.2", + "deepmerge": "^4.2.2" + }, + "peerDependencies": { + "@emotion/react": "^11.11.1", + "react": ">=18" + } + }, "node_modules/@theme-ui/components": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@theme-ui/components/-/components-0.16.2.tgz", @@ -2991,6 +3008,22 @@ "@emotion/react": "^11.11.1" } }, + "node_modules/@theme-ui/theme-provider": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@theme-ui/theme-provider/-/theme-provider-0.16.2.tgz", + "integrity": "sha512-LRnVevODcGqO0JyLJ3wht+PV3ZoZcJ7XXLJAJWDoGeII4vZcPQKwVy4Lpz/juHsZppQxKcB3U+sQDGBnP25irQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@theme-ui/color-modes": "^0.16.2", + "@theme-ui/core": "^0.16.2", + "@theme-ui/css": "^0.16.2" + }, + "peerDependencies": { + "@emotion/react": "^11.11.1", + "react": ">=18" + } + }, "node_modules/@types/acorn": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", @@ -3120,14 +3153,14 @@ "version": "15.7.13", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@types/react": { "version": "18.3.10", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.10.tgz", "integrity": "sha512-02sAAlBnP39JgXwkAq3PeU9DVaaGpZyF3MGcC0MKgQVkZor5IiiDAipVaxQHtDJAmO4GIy/rVBy/LzVj76Cyqg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -3505,7 +3538,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -3756,6 +3788,30 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/buffer-from": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", @@ -5827,7 +5883,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, "funding": [ { "type": "github", @@ -12213,7 +12268,7 @@ "version": "3.23.8", "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", - "dev": true, + "devOptional": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/apps/monograph/package.json b/apps/monograph/package.json index 8a6192cdd..d5cc64771 100644 --- a/apps/monograph/package.json +++ b/apps/monograph/package.json @@ -30,6 +30,7 @@ "@sagi.io/workers-kv": "^0.0.14", "@theme-ui/components": "^0.16.2", "@theme-ui/core": "^0.16.2", + "buffer": "^6.0.3", "canvas-hypertxt": "^1.0.3", "comlink": "^4.4.1", "date-fns": "^4.1.0",