zod required strict mode, which is why creating this "@/new" package was a prereq.
This commit is contained in:
Manav Rathi 2024-06-02 15:58:50 +05:30
parent 3f3a63d8da
commit f663c436cb
No known key found for this signature in database
4 changed files with 35 additions and 12 deletions

View File

@ -154,6 +154,19 @@ It is more lower level than Next, but the bells and whistles it doesn't have are
the bells and whistles (and the accompanying complexity) that we don't need in the bells and whistles (and the accompanying complexity) that we don't need in
some cases. some cases.
## General
- [comlink](https://github.com/GoogleChromeLabs/comlink) provides a minimal
layer on top of Web Workers to make them more easier to use.
- [idb](https://github.com/jakearchibald/idb) provides a promise API over the
browser-native IndexedDB APIs.
> For more details about IDB and its role, see [storage.md](storage.md).
- [zod](https://github.com/colinhacks/zod) is used for runtime typechecking
(e.g. verifying that API responses match the expected TypeScript shape).
## Media ## Media
- [jszip](https://github.com/Stuk/jszip) is used for reading zip files in - [jszip](https://github.com/Stuk/jszip) is used for reading zip files in
@ -167,16 +180,6 @@ some cases.
- [heic-convert](https://github.com/catdad-experiments/heic-convert) is used - [heic-convert](https://github.com/catdad-experiments/heic-convert) is used
for converting HEIC files (which browsers don't natively support) into JPEG. for converting HEIC files (which browsers don't natively support) into JPEG.
## General
- [comlink](https://github.com/GoogleChromeLabs/comlink) provides a minimal
layer on top of Web Workers to make them more easier to use.
- [idb](https://github.com/jakearchibald/idb) provides a promise API over the
browser-native IndexedDB APIs.
> For more details about IDB and its role, see [storage.md](storage.md).
## Photos app specific ## Photos app specific
- [react-dropzone](https://github.com/react-dropzone/react-dropzone/) is a - [react-dropzone](https://github.com/react-dropzone/react-dropzone/) is a

View File

@ -5,7 +5,8 @@
"dependencies": { "dependencies": {
"@/next": "*", "@/next": "*",
"@/utils": "*", "@/utils": "*",
"@ente/shared": "*" "@ente/shared": "*",
"zod": "^3.23.8"
}, },
"devDependencies": {} "devDependencies": {}
} }

View File

@ -2,6 +2,7 @@ import log from "@/next/log";
import { ensure } from "@/utils/ensure"; import { ensure } from "@/utils/ensure";
import { apiOrigin } from "@ente/shared/network/api"; import { apiOrigin } from "@ente/shared/network/api";
import { getToken } from "@ente/shared/storage/localStorage/helpers"; import { getToken } from "@ente/shared/storage/localStorage/helpers";
import { z } from "zod";
let _fetchTimeout: ReturnType<typeof setTimeout> | undefined; let _fetchTimeout: ReturnType<typeof setTimeout> | undefined;
let _haveFetched = false; let _haveFetched = false;
@ -64,6 +65,19 @@ const remoteFeatureFlags = () => {
return JSON.parse(s); return JSON.parse(s);
}; };
const FeatureFlags = z.object({
internalUser: z
.boolean()
.nullish()
.transform((v) => (v === null ? undefined : v)),
betaUser: z
.boolean()
.nullish()
.transform((v) => (v === null ? undefined : v)),
});
type FeatureFlags =
const remoteFeatureFlagsFetchingIfNeeded = async () => { const remoteFeatureFlagsFetchingIfNeeded = async () => {
let ff = await remoteFeatureFlags(); let ff = await remoteFeatureFlags();
if (!ff) { if (!ff) {

View File

@ -3355,7 +3355,7 @@ libsodium-wrappers@0.7.9:
dependencies: dependencies:
libsodium "^0.7.0" libsodium "^0.7.0"
libsodium@0.7.9, libsodium@^0.7.0: libsodium@^0.7.0:
version "0.7.9" version "0.7.9"
resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.9.tgz#4bb7bcbf662ddd920d8795c227ae25bbbfa3821b" resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.9.tgz#4bb7bcbf662ddd920d8795c227ae25bbbfa3821b"
integrity sha512-gfeADtR4D/CM0oRUviKBViMGXZDgnFdMKMzHsvBdqLBHd9ySi6EtYnmuhHVDDYgYpAO8eU8hEY+F8vIUAPh08A== integrity sha512-gfeADtR4D/CM0oRUviKBViMGXZDgnFdMKMzHsvBdqLBHd9ySi6EtYnmuhHVDDYgYpAO8eU8hEY+F8vIUAPh08A==
@ -4992,6 +4992,11 @@ yup@^1.4:
toposort "^2.0.2" toposort "^2.0.2"
type-fest "^2.19.0" type-fest "^2.19.0"
zod@^3.23.8:
version "3.23.8"
resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d"
integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==
zxcvbn@^4.4.2: zxcvbn@^4.4.2:
version "4.4.2" version "4.4.2"
resolved "https://registry.yarnpkg.com/zxcvbn/-/zxcvbn-4.4.2.tgz#28ec17cf09743edcab056ddd8b1b06262cc73c30" resolved "https://registry.yarnpkg.com/zxcvbn/-/zxcvbn-4.4.2.tgz#28ec17cf09743edcab056ddd8b1b06262cc73c30"