diff --git a/.expo/prebuild/cached-packages.json b/.expo/prebuild/cached-packages.json new file mode 100644 index 0000000..d7e5d52 --- /dev/null +++ b/.expo/prebuild/cached-packages.json @@ -0,0 +1,4 @@ +{ + "dependencies": "c63a16a85154f1ea03750b1df53dcdee0200585f", + "devDependencies": "0a1ec1c6df1c9d5100926df058dd0824b1293819" +} diff --git a/AGENTS.md b/AGENTS.md index 1b04b96..6eede73 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -50,4 +50,4 @@ react-native. They are available in the common-ui as MyText, MyTextInput, MyTouc ## Important Notes - **Do not run build, compile, or migration commands** - These should be handled manually by developers - Avoid running `npm run build`, `tsc`, `drizzle-kit generate`, or similar compilation/migration commands -- Don't do anything with git. Don't do git add or git commit. That will be managed entirely by the user \ No newline at end of file +- Don't do anything with git. Don't do git add or git commit. That will be managed entirely by the user diff --git a/app.json b/app.json index c9e8c8a..7e6e43b 100644 --- a/app.json +++ b/app.json @@ -1,3 +1,7 @@ { - "expo": {} -} \ No newline at end of file + "expo": { + "ios": { + "bundleIdentifier": "com.mohammedshafiuddin54.meat-farmer-monorepo" + } + } +} diff --git a/apps/admin-ui/.expo/prebuild/cached-packages.json b/apps/admin-ui/.expo/prebuild/cached-packages.json index 7e9df5c..b9077fa 100644 --- a/apps/admin-ui/.expo/prebuild/cached-packages.json +++ b/apps/admin-ui/.expo/prebuild/cached-packages.json @@ -1,4 +1,4 @@ { - "dependencies": "091948e86692e0cce7744b6b0543448538c3125a", + "dependencies": "4650ceb7c30aaa4d5fd17b9577e186af7a84b50d", "devDependencies": "b3b38265f32b99a8299270a292f38ca26288d53d" } diff --git a/apps/admin-ui/app/(drawer)/dashboard/index.tsx b/apps/admin-ui/app/(drawer)/dashboard/index.tsx index e1e7d0d..d2598ab 100644 --- a/apps/admin-ui/app/(drawer)/dashboard/index.tsx +++ b/apps/admin-ui/app/(drawer)/dashboard/index.tsx @@ -18,6 +18,7 @@ interface MenuItem { iconBg?: string; badgeCount?: number; onPress?: () => void; + testID?: string; } interface MenuItemComponentProps { @@ -100,6 +101,7 @@ export default function Dashboard() { category: 'quick', iconColor: '#06B6D4', iconBg: '#CFFAFE', + testID: 'delivery-slots-menu-item', }, { title: 'Add Product', @@ -245,6 +247,8 @@ export default function Dashboard() { {quickActions.map((item) => ( item.onPress ? item.onPress() : router.push(item.route as any)} style={({ pressed }) => [ tw`bg-white rounded-xl p-3 shadow-sm border border-gray-100 items-center`, diff --git a/apps/admin-ui/app/(drawer)/slots/index.tsx b/apps/admin-ui/app/(drawer)/slots/index.tsx index a79f642..76bd7d5 100644 --- a/apps/admin-ui/app/(drawer)/slots/index.tsx +++ b/apps/admin-ui/app/(drawer)/slots/index.tsx @@ -275,6 +275,8 @@ export default function Slots() { {/* FAB for Add New Slot */} router.push('/slots/add' as any)} activeOpacity={0.95} style={{ position: 'absolute', bottom: 32, right: 24, zIndex: 100 }} diff --git a/apps/admin-ui/app/_layout.tsx b/apps/admin-ui/app/_layout.tsx index 4382da7..cc5a54d 100644 --- a/apps/admin-ui/app/_layout.tsx +++ b/apps/admin-ui/app/_layout.tsx @@ -11,10 +11,14 @@ export default function Layout() { - - - - + + + + diff --git a/apps/admin-ui/app/login.tsx b/apps/admin-ui/app/login.tsx index 4e5e098..4f55739 100644 --- a/apps/admin-ui/app/login.tsx +++ b/apps/admin-ui/app/login.tsx @@ -26,7 +26,6 @@ export default function LoginScreen() { } }; - console.log('from the login page') return ( @@ -52,6 +51,8 @@ export default function LoginScreen() { autoCapitalize="none" autoCorrect={false} style={{ marginBottom: 20 }} + testID="login-name-input" + accessibilityLabel="login-name-input" /> {loginError && ( @@ -84,8 +87,10 @@ export default function LoginScreen() { disabled={isLoggingIn} fullWidth style={{ marginBottom: 20 }} + testID="login-button" + accessibilityLabel="login-button" /> ); -} \ No newline at end of file +} diff --git a/apps/admin-ui/components/ProductsSelector.tsx b/apps/admin-ui/components/ProductsSelector.tsx index d944c50..6894032 100644 --- a/apps/admin-ui/components/ProductsSelector.tsx +++ b/apps/admin-ui/components/ProductsSelector.tsx @@ -147,6 +147,7 @@ export default function ProductsSelector({ {showGroups && groups.length > 0 && ( id.toString())} diff --git a/apps/admin-ui/components/SlotForm.tsx b/apps/admin-ui/components/SlotForm.tsx index 1654b06..d99a20d 100644 --- a/apps/admin-ui/components/SlotForm.tsx +++ b/apps/admin-ui/components/SlotForm.tsx @@ -148,12 +148,22 @@ export default function SlotForm({ Delivery Date & Time - setFieldValue('deliveryTime', value)} /> + setFieldValue('deliveryTime', value)} + /> Freeze Date & Time - setFieldValue('freezeTime', value)} /> + setFieldValue('freezeTime', value)} + /> @@ -220,6 +230,8 @@ export default function SlotForm({ handleSubmit()} disabled={isPending} style={tw`${isPending ? 'bg-pink2' : 'bg-pink1'} p-3 rounded-lg items-center mt-6 pb-4`} diff --git a/apps/admin-ui/src/trpc-client.ts b/apps/admin-ui/src/trpc-client.ts index de7535a..a3016f2 100644 --- a/apps/admin-ui/src/trpc-client.ts +++ b/apps/admin-ui/src/trpc-client.ts @@ -1,6 +1,6 @@ import { createTRPCProxyClient, httpBatchLink, TRPCClientError } from '@trpc/client'; import { createTRPCReact } from '@trpc/react-query'; -import {AppRouter} from '../../backend/src/trpc/router' +import { AppRouter } from '@backend/trpc/router' import { BASE_API_URL } from 'common-ui'; import { getJWT } from '@/hooks/useJWT'; import { FORCE_LOGOUT_EVENT } from 'common-ui/src/lib/const-strs'; diff --git a/apps/admin-ui/tsconfig.json b/apps/admin-ui/tsconfig.json index 95f05c9..fec5716 100755 --- a/apps/admin-ui/tsconfig.json +++ b/apps/admin-ui/tsconfig.json @@ -4,7 +4,11 @@ "strict": true, "paths": { "@/*": [ - "./*" + "./*", + "../backend/*" + ], + "@backend/*": [ + "../backend/src/*" ], "shared-types": ["../shared-types"], "common-ui": ["../../packages/ui"], diff --git a/apps/backend/assets/signed-url-cache.json b/apps/backend/assets/signed-url-cache.json index c0091eb..a64a31f 100644 --- a/apps/backend/assets/signed-url-cache.json +++ b/apps/backend/assets/signed-url-cache.json @@ -1 +1 @@ -{"originalToSigned":{"store-images/1770281046297.jpg":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1770281046297.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=1afe9039f361ce70fcc3a68de32993e58b756ab08bd9d87d6e3d34fbb4148328&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366337},"tags/1763835253683-c9c3e293-0bef-4c58-a976-dd49c050cd36.jpeg":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1763835253683-c9c3e293-0bef-4c58-a976-dd49c050cd36.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=fac0e97b2338016ba72643c42de92a5e9cf5f0bfcf11dd2aeecf5dc0d34171ba&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366455},"store-images/1770429593455.jpg":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1770429593455.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=19df483133aa5f52ec0dda46d8af54d599414a25267ff4ef42e0dd8d53ea556a&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366580},"product-images/1768640403001-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640403001-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=22ff3140d62afd7d78c1de47c43ea9561dc37c696ed942d6cda546daea56b4ba&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768653009851-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768653009851-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=1ea3a780cfb67a292d1913fb4730ab4ceb658b3a1353d61ccb7ec28c7881789d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768651774899-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768651774899-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=7eb5559007236039f2373e85a12ea3336bc84a12720c5dc7acd1e7da9fed02c0&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768646932088-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768646932088-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=b201180d952587fba2041db1ab7d248938ff471409bf637c3023351c3e8dec03&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768641635898-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768641635898-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=e3bfb85e5ef369bc869ffdb18ac16c92126f7f617030f0c88d23273f7ec6d7f4&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768658094891-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768658094891-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=55e090998386c164fb3d40d30bac108bb881fb817f581c9a0cb8c1195faceb14&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768638795991-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768638795991-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=62079d0123da0cc99538e01d256ecaec20a46bc7c490e70109c8dc6cb3497844&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768647119198-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768647119198-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=5ca6bf1cd13d0fcc0c1847e53d0f88a3e22b41580a2546db1606d10002f5a459&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768641988607-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768641988607-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=d3941a2d3b5b2d250bb2fbd8df1c0bf0299ab78f59d19b6a1bbfce96018e0a83&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768643354251-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768643354251-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=b7ca2eace445623b1da7f9b155fa5685615717df6471af7714c076c602eaee16&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768646744949-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768646744949-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=673533173e374a6057fb78654f49030ea0869861efc4d6fcc6568cb05bac999c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768646295695-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768646295695-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=87c8c3c9c2f583b7eafac0925082de94cdbafc996451df8e24131123375ac508&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768640645444-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640645444-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4bdcca828f2d81b9c56b0be7fd6ff14e2bbd4fd478c4895e3d6ae07bd7055dbf&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768653997561-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768653997561-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=dcac82b1d3508324583e14ce1cb7b9006ac3258980ef822340b5db59977921be&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768650709484-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768650709484-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=c78462779a019391cc2253f80cfab714d4c1466d830c81e471d67eb5c395b430&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768654475850-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768654475850-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=38e48c0c02ee28acea91ce06cd16df3293e600b62be43641717b54349b884d73&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768640009078-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640009078-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=e7346c6079cec1e9aa443ea24f74467689ad50b5eb2d4c13b36c4434ab748615&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768642455479-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768642455479-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=77ccb358f02eda1e341306a33377d8c4e31ab95b0eddbe64fe6cbbe1cc4eac05&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768650081183-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768650081183-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=830c4b84713bc3f0af5a2d36516fd1ca147b811c6e720a8cb512ba2e9e395eff&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768651334320-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768651334320-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=b1e4bfecc10abfd57fedf0ad0a0201225331fdc2c1dfad05cae9e5477145aa08&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768654740988-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768654740988-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=fdcf19b3c730401c98c312e926ace19a7a4a93826488c745f28e27151935c993&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768642724520-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768642724520-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=5353efc7f6d4e381e4a3cb5738155f654eb65aa7640f665b6c809e33df67f4eb&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768640936747-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640936747-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=34b70f89b1abf3c581118cc89effe858bd4214f6973378beb4efa54f80c23f24&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769576743718-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769576743718-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=a3aca0d129c327461fd6b2b1c163d3def4f202465e4ba6faf5da3b3a9f9f41a3&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768649454994-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768649454994-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=83865ab9ad30e2803ba642d948b5bc2731dc5901725eb72bd5464ec1c0732315&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768639705530-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639705530-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=ceef4980ddfef281c31aa271ac98f7137278ccea61e075531ba3e2899abd9aa7&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768639090932-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639090932-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=d536c5eee29ef13fa9a9c487b82bf2e7b794ba8c0916695ff60fbc4b4a0f6dae&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768718685357-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768718685357-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=fdbfe6176d4b0eecc0c8630ca8d1c04bc3822dcb887858a78a62ffbc99a4dfd2&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768649838027-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768649838027-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=41cc73d90b50bfdbd2550b624edf87108b232e3650be221fb97e337d155697a1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768652061701-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768652061701-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4efbeb16f23b5998f5fc3ecaa71c2eb44604522a5615aa8e13ce1946469681b4&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768643138910-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768643138910-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=15530ba2a02b75b4f0b082533ce9d53e1980b2fed50a0416cc4e3a577c8d1655&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1770212631435-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1770212631435-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=fbb426393c22d489aaa06634eb30b50d18eb100397c8009925a8c8236626ec71&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768832690994-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768832690994-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=ee6bce96cb9172d5eb6d128d70dfd71fdca8b0a98d02fc25c057e5f889883b7e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769149204037-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769149204037-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=55339163d26219cd2519d811d86e32c8a0e6d3ab34465d71564b59b818ee07b2&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769063467386-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769063467386-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=18d4d07579696d11ac2ed288ce806e575abdc52eabaed2adc5254c24695e97d0&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768817786453-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768817786453-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4c5c9750575d706bb03d57ec68e000848172c7c2f2b17624de9c9b2d838bf05e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768817786455-1":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768817786455-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=c50bc8f6ff6c5a63b163e2552d4572eff204ef421fc8cb4d6207dccb61f715bd&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769063660493-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769063660493-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=75f00f60ae50ade6842679a5865e933e2262d95351fdcfd23bee04177a6c894b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768834996932-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768834996932-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=19951d815bd36fa683ceaddbb1924b43b509caa5a40601d3eb019c0c97a75572&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1771411526889-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1771411526889-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=5a32126e04ff78965fceeec9b25a810a2a2f5165cbca646042aa726e51f3ec97&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768710760133-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768710760133-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=03c31becedffaa2849585bad814e3c2968342163c8385dd41142e3fd11bcbcc3&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768639707515-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639707515-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=7a5ecb2c24aa449e47fb73fd35142820703de74af5db24abb1b8061e8c437b32&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768713206145-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768713206145-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=3e43f4e1c6560a9b0137034788c355406393ed789422e511c097f473c5b930fd&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768639645423-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639645423-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=19cd20af98e25ea68f7a06a3e4a45a18bac0441f3c544f017038b45c9d6e216f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768822893380-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768822893380-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4dc3dcbbceecb7581b96d0b56d62c8d609c879d58f9400b59a162f969c65c47c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1766406273176-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1766406273176-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=ac106fe61ae85e1f81d770e65cea6e711a1ef0cb0ab5430969e0af30e22066c8&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1766406273178-1":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1766406273178-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=d4f546c91e24b6de7e764312953a4a7935270648fa96ae0237bebb55ed2dcdb1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768710099841-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768710099841-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=803decbec1c2ca16ca93f1d1649f7dd1f1405decf3bc743ccaccad55c08c6b01&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768710434326-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768710434326-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=c9f325ce1af6f6d9fb975a3f63386485a07ddf48f5cdd6a21aea6d56d9af934f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768639292540-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639292540-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=3bcfe4299a2827519117d0c86842dd9e6db7ea3c9deeb0dc86575e5d67ece4e1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768640233068-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640233068-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4242dc446b833310ddcb89c582828016e145f98b39396d707a82196b0f9f4904&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768713537512-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768713537512-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=71cce60b4e73bf010f116268ade2cceb0e71859d2bd2e7636c6ead10249a169f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1766636589779-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1766636589779-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=25ed7cedcbdab26129ad788de1a3e26bebef612fdc990bb6c1bc3f72b0733292&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768823985921-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768823985921-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=1a8d451f64098c76394b6d130d76ce355f6aa0e0e21a43b7af311863337803b4&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769241234003-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769241234003-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4a430d6dbf42d085f304e301f5462f848541ead11e588583532a938b97ba10ac&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768711261174-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768711261174-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=7911ac884fdb9abbb58b5f565bd821d7c0ce04bdb693caf95ef773c26751a7ed&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768726783083-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768726783083-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=05bb6a2de955559e877fd90d3cc5946ca43eabad442aa00b1b21817b929952d1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768712093829-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768712093829-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=c35b059a1d4d8adff0a4a68d1c756593a683f734affbf8840a72fcfcb58a99a6&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768727264220-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768727264220-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=c7a66902ee1bff1f9516a121f5a53409223ea4486bbc119e53fe2cb36a69c879&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768711919135-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768711919135-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4a5c195c92b3f4ac14ac833dd7903997557561fe711f0a0534ea1c8d6decfc22&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769356702593-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769356702593-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=0294dee84238e303590f6a8f1c62ce93e58f9a856042c74d59d860ced1d226d5&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769394457296-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769394457296-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=9762ceec436c4bb0b467827090a67e76182323a4c16e20227d0349d4659f6a15&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768709567040-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768709567040-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=b2d7d718e03cfb7128ae72c65b5ed07e831b059f65edba0a7267e23ad2a1eb39&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769396724595-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769396724595-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=beff46d37a490c876f8ce508451edbad12e464a020f221c15c616bbe52729894&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768713886512-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768713886512-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=f59babd14e553d9df7e81caca9c3fc81e0533670b539fdf775b66be4717741d7&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769397372526-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769397372526-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=85f1f67d8940353f933947d971d68869f9f82c38f3f8559e84d4d63176c44491&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769574792720-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769574792720-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=ce6694fa782c6a01602c29afd4461b59ec6042d01211e289fba8eb89ddc75617&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769398103853-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769398103853-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=e480bf672bde2550ad5257205ca9ff5aedd39d3519e49e440b2d7861010e7c7f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769351976737-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769351976737-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=fe15b2fe5151eabf845def222d934b026bc3ba94226d402cac008629da528be8&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768712490280-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768712490280-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=38436fad38a100ed16dde7d89311342ea9bed03b1844d42707317adb89342cb8&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769398710713-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769398710713-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=ed7dc21e8bc641ce14063597dcd96a0ee5598d6c2f5267029d3af9c16c8127b5&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769396046557-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769396046557-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4df8eb070918b867acd409055d1280fb99aa9317bf3c8cb78451e380bcf5e675&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769395184980-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769395184980-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=af279d603ad5e06c26639392608972be1470710045550630bd29bea4de6402d6&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769399617573-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769399617573-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=a688a5aa30ddac19532573578282ea6abc6e9a2ead4a7e3812dd79d6c63bc44c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769571810861-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769571810861-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=5ccb50ccfc1247a77ab0454184c9635468a27526f8bd3d5fb69dec977ccc5f93&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769577010969-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769577010969-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=c51836b98f61cccb559cc1c890907e20c73d8ffbba11082e1d649c6ce0937827&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769571978680-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769571978680-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=6c4e3d4d3f657170fd9e9831ffe3f50d372179ee98b63ee4db74270be26dfdef&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1771249922306-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1771249922306-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=1c5a2a4d98150e156e7ac00464bd842cab27aa545b68e60b4a7386393d6964bd&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1771647812442-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1771647812442-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=834aa795bad44671bb7a4dc6621563c55ee00cce066ea4cbf6e5cc45b97153cc&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768834170995-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768834170995-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=9f2802242259f4330df40a89fda28880e28cbc6ae48c5430762935ddba267dd1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1767636561867-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1767636561867-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=158daf212f8255c9a838a066674b680f6af437e1b98d4e0fa5a3e13ac7fdd8ad&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769151216776-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769151216776-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=1898e5394606a2393f354d3f2d41c659a9314a2078271d674b6f385a0811f8b4&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1767636171845-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1767636171845-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=f693aa231fe13f2ac04e3f4168413a8c8b3030b7ef9ece21afcaaf2c444c9528&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1770051959669-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1770051959669-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=0e47673cc13fa2fc996cbb3b8b6d640c9e4caa57a5367c06ff0fe8ab0385c5f9&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1770051810386-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1770051810386-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=d6804624376f8b27159dd56da1bc290ba3e56f488866828254c4be9b5d62075b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768475599800-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768475599800-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=0aea2472625965c4e464d54fb9780245955038beea492e872544b8d0b5672f62&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768390245969-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768390245969-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4691361cf32401e074053beb6bd8ac7b888c074a6abf52c97774dcd8b4a45e41&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768484106870-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768484106870-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=90bbbb25f4055b1f14e5393af00b4570f61388bca4fc6bb29d087c825aaee9ab&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1767637606890-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1767637606890-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=f3ff12d163a9d58e0aabb5b3f6c7ff738011206b3838fe6e31d765750e5e31b3&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768393778962-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768393778962-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=507e9100e921861a8a2f0da0dffe82beefa26f347ccd52d48f7b2cc38f95888d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769063336125-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769063336125-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=8e1dc36bfacf06d11f1e608299dfa7394647e52c0afbc01324cfca750583dfe4&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1767635527063-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1767635527063-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=605ee823795a36df29e6c4c9b6f265529b06369a3179168f81f782a4d56bae47&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768307047191-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768307047191-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=0758307523ffc725e04d412ec7bf04acf02998ab5c2352e1c488691de1afb8a8&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768539930897-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768539930897-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=3ba8d607be7e0de04682a774dd2523afa2988e7050d2e55ce17753a2db87a9e6&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768539930899-1":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768539930899-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=73779d31b73506ea79fe9a131c4ed0a8aaf876e47f299dd3bf054d217cbd804d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768397780093-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768397780093-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=dd0b96e3d0159e9a863efde0baa0d40535d77336b64e473adf913de5a78496ec&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768479562478-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768479562478-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=85ff0374e5145f291274286ada2adf3b5f90ff57c005047cbd1c230bb24787c5&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768413754684-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768413754684-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=acc54a5b75eea8b6da6a88d5f5b3b884a0f6d1838fc4ec4c3acbafdc36adb590&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768478127128-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768478127128-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=1961a5b79ac8bcd54d95dc2bb3c2d7bfe1c0fb37cce9e5a764ffec0dcaf3df09&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768478472220-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768478472220-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=452db93c01a8ef15ec6c3928c4eda349ebf9560b10d49042a97c5aedf71fe4dc&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768477813647-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768477813647-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=068775da0d0664f51c206e632da2203c63f0efc06f95925e12fb9d945c37d0f2&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1768477813648-1":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768477813648-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=ebe921e9ab353b7ec0f53bb72f5cd21d779aba2551766b61dd00cead94da69b5&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"product-images/1769356039418-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769356039418-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=ffd8869d991db6dbc77e4f85c5359131e9400cab2985e424dba2216c041aa7b3&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366780},"tags/1763835293899-43b3fbe1-9b5b-441c-b4d4-d1691c3f02f3.webp":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1763835293899-43b3fbe1-9b5b-441c-b4d4-d1691c3f02f3.webp?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=19163d99c28d9168460ae7acce81ee0704cb11363d423b80b0a768fa2ca46d03&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824366786},"tags/1768709725124-ebf421c5-ad52-49a9-b65c-1de008110b8a.png":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1768709725124-ebf421c5-ad52-49a9-b65c-1de008110b8a.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191347Z&X-Amz-Expires=259200&X-Amz-Signature=f49e81af96cd7e8b2479b16308843540de8a84abd741c9a6499247e967e1e77e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824367426},"tags/1770321659633-1763869265110-e22b6d94-dac9-499f-babb-1e944d90b01a.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260205%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260205T195535Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3D917db15bcc60cab7ac5cd5e49d85d13a960fe77b4a5e327dd449048870494cf9%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770321659633-1763869265110-e22b6d94-dac9-499f-babb-1e944d90b01a.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260205%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260205T195535Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253D917db15bcc60cab7ac5cd5e49d85d13a960fe77b4a5e327dd449048870494cf9%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191348Z&X-Amz-Expires=259200&X-Amz-Signature=9752ae6754548661e6c602cfb0875aa01f3f4abf790f99899840a98620f438f4&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824368652},"tags/1770323410499-1763869436182-bf82f7b4-a1f3-4113-985b-96311b7a910e.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260205%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260205T202804Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3Dea436390b277935d843cae6b5cfa62aeed5799cb4a962ab31a0be4b132ca4b30%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770323410499-1763869436182-bf82f7b4-a1f3-4113-985b-96311b7a910e.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260205%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260205T202804Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253Dea436390b277935d843cae6b5cfa62aeed5799cb4a962ab31a0be4b132ca4b30%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191349Z&X-Amz-Expires=259200&X-Amz-Signature=a01a73bb0535284e3206085dd02c5d2d85cfee33d786936d60ad3d0b5ac9b4ce&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824369468},"tags/1770323560823-fd0ec463-bed0-474e-aa14-dc6480ce36af.jpeg":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770323560823-fd0ec463-bed0-474e-aa14-dc6480ce36af.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191350Z&X-Amz-Expires=259200&X-Amz-Signature=6ee19f7224fa753b7b6d95b36385f4c4b8ac9ab946287828ae5276e21031e121&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824370107},"product-images/1769149707440-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769149707440-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191356Z&X-Amz-Expires=259200&X-Amz-Signature=829d1ace553b80c12ca0c1af158af7c5a9935ae8bdce7dd32c0ec4c97b062980&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824376846},"product-images/1769151844424-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769151844424-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191359Z&X-Amz-Expires=259200&X-Amz-Signature=bfd8ed947c20b20355e242b35ff767117adbf656be3d864a27c7bf5cb712eef4&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824379340},"product-images/1769353802270-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769353802270-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191401Z&X-Amz-Expires=259200&X-Amz-Signature=e329a998b308f5a426f853545e0889dd85c501591f0d9be90e50e2e2c3f946cc&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824381392},"product-images/1764500702143-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1764500702143-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191403Z&X-Amz-Expires=259200&X-Amz-Signature=a52f20c4901c80301abbe23d718c923f02a28f03b42370068594541d1a8ce046&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824383049},"product-images/1764500702144-1":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1764500702144-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191403Z&X-Amz-Expires=259200&X-Amz-Signature=bb7320a492a9a6edf0ff17cfc1e440af5c77797349b5f9e671300fe3b3ca8218&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824383049},"product-images/1769150471654-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769150471654-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191405Z&X-Amz-Expires=259200&X-Amz-Signature=ab20e1546cf02b25edf05cedfbb60c26e43b240b857b37b8a1ca9143b563b727&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824385699},"product-images/1769150471655-1":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769150471655-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191405Z&X-Amz-Expires=259200&X-Amz-Signature=a1c61968b958c6d1e2e8cb95c0b2b9b5de5f121dfe6ededd743af50664624935&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824385699},"product-images/1769571126092-0":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769571126092-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191407Z&X-Amz-Expires=259200&X-Amz-Signature=813ef83d697135fdfbcd485163ba5c5c55d73ab96db2070eb1cd1963151c98e2&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772824387845},"profile-images/1766160314135-1000000018.jpg":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/profile-images/1766160314135-1000000018.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260304%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260304T131847Z&X-Amz-Expires=259200&X-Amz-Signature=80f34e33b4b221089a4112daee9e78dfd248da67256af197b2d5cb1281cef630&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772889467117},"store-images/1766052073748.png":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1766052073748.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260304%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260304T131850Z&X-Amz-Expires=259200&X-Amz-Signature=0c5171b3f9c8b125df68ca2b6deae2caf0779b0f556200d52a40ece0e35e8ded&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772889470671},"store-images/1766051618139.png":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1766051618139.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260304%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260304T131850Z&X-Amz-Expires=259200&X-Amz-Signature=28ccd00f0782d5891077b2d65912c0f81b2bbb6db7eaa6d9aa8c198d78e2f51f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772889470671},"store-images/1766053828604.png":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1766053828604.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260304%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260304T131850Z&X-Amz-Expires=259200&X-Amz-Signature=88e8085143f3ba11a2f48ae86916f26a7e745c4fe932601e775147a7f40ba4d1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1772889470671}},"signedToOriginal":{"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1770281046297.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=1afe9039f361ce70fcc3a68de32993e58b756ab08bd9d87d6e3d34fbb4148328&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"store-images/1770281046297.jpg","expiresAt":1772824366337},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1763835253683-c9c3e293-0bef-4c58-a976-dd49c050cd36.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=fac0e97b2338016ba72643c42de92a5e9cf5f0bfcf11dd2aeecf5dc0d34171ba&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1763835253683-c9c3e293-0bef-4c58-a976-dd49c050cd36.jpeg","expiresAt":1772824366455},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1770429593455.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=19df483133aa5f52ec0dda46d8af54d599414a25267ff4ef42e0dd8d53ea556a&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"store-images/1770429593455.jpg","expiresAt":1772824366580},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640403001-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=22ff3140d62afd7d78c1de47c43ea9561dc37c696ed942d6cda546daea56b4ba&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768640403001-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768653009851-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=1ea3a780cfb67a292d1913fb4730ab4ceb658b3a1353d61ccb7ec28c7881789d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768653009851-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768651774899-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=7eb5559007236039f2373e85a12ea3336bc84a12720c5dc7acd1e7da9fed02c0&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768651774899-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768646932088-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=b201180d952587fba2041db1ab7d248938ff471409bf637c3023351c3e8dec03&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768646932088-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768641635898-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=e3bfb85e5ef369bc869ffdb18ac16c92126f7f617030f0c88d23273f7ec6d7f4&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768641635898-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768658094891-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=55e090998386c164fb3d40d30bac108bb881fb817f581c9a0cb8c1195faceb14&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768658094891-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768638795991-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=62079d0123da0cc99538e01d256ecaec20a46bc7c490e70109c8dc6cb3497844&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768638795991-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768647119198-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=5ca6bf1cd13d0fcc0c1847e53d0f88a3e22b41580a2546db1606d10002f5a459&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768647119198-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768641988607-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=d3941a2d3b5b2d250bb2fbd8df1c0bf0299ab78f59d19b6a1bbfce96018e0a83&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768641988607-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768643354251-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=b7ca2eace445623b1da7f9b155fa5685615717df6471af7714c076c602eaee16&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768643354251-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768646744949-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=673533173e374a6057fb78654f49030ea0869861efc4d6fcc6568cb05bac999c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768646744949-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768646295695-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=87c8c3c9c2f583b7eafac0925082de94cdbafc996451df8e24131123375ac508&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768646295695-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640645444-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4bdcca828f2d81b9c56b0be7fd6ff14e2bbd4fd478c4895e3d6ae07bd7055dbf&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768640645444-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768653997561-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=dcac82b1d3508324583e14ce1cb7b9006ac3258980ef822340b5db59977921be&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768653997561-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768650709484-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=c78462779a019391cc2253f80cfab714d4c1466d830c81e471d67eb5c395b430&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768650709484-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768654475850-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=38e48c0c02ee28acea91ce06cd16df3293e600b62be43641717b54349b884d73&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768654475850-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640009078-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=e7346c6079cec1e9aa443ea24f74467689ad50b5eb2d4c13b36c4434ab748615&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768640009078-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768642455479-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=77ccb358f02eda1e341306a33377d8c4e31ab95b0eddbe64fe6cbbe1cc4eac05&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768642455479-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768650081183-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=830c4b84713bc3f0af5a2d36516fd1ca147b811c6e720a8cb512ba2e9e395eff&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768650081183-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768651334320-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=b1e4bfecc10abfd57fedf0ad0a0201225331fdc2c1dfad05cae9e5477145aa08&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768651334320-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768654740988-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=fdcf19b3c730401c98c312e926ace19a7a4a93826488c745f28e27151935c993&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768654740988-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768642724520-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=5353efc7f6d4e381e4a3cb5738155f654eb65aa7640f665b6c809e33df67f4eb&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768642724520-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640936747-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=34b70f89b1abf3c581118cc89effe858bd4214f6973378beb4efa54f80c23f24&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768640936747-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769576743718-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=a3aca0d129c327461fd6b2b1c163d3def4f202465e4ba6faf5da3b3a9f9f41a3&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769576743718-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768649454994-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=83865ab9ad30e2803ba642d948b5bc2731dc5901725eb72bd5464ec1c0732315&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768649454994-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639705530-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=ceef4980ddfef281c31aa271ac98f7137278ccea61e075531ba3e2899abd9aa7&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768639705530-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639090932-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=d536c5eee29ef13fa9a9c487b82bf2e7b794ba8c0916695ff60fbc4b4a0f6dae&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768639090932-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768718685357-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=fdbfe6176d4b0eecc0c8630ca8d1c04bc3822dcb887858a78a62ffbc99a4dfd2&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768718685357-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768649838027-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=41cc73d90b50bfdbd2550b624edf87108b232e3650be221fb97e337d155697a1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768649838027-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768652061701-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4efbeb16f23b5998f5fc3ecaa71c2eb44604522a5615aa8e13ce1946469681b4&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768652061701-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768643138910-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=15530ba2a02b75b4f0b082533ce9d53e1980b2fed50a0416cc4e3a577c8d1655&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768643138910-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1770212631435-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=fbb426393c22d489aaa06634eb30b50d18eb100397c8009925a8c8236626ec71&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1770212631435-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768832690994-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=ee6bce96cb9172d5eb6d128d70dfd71fdca8b0a98d02fc25c057e5f889883b7e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768832690994-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769149204037-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=55339163d26219cd2519d811d86e32c8a0e6d3ab34465d71564b59b818ee07b2&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769149204037-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769063467386-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=18d4d07579696d11ac2ed288ce806e575abdc52eabaed2adc5254c24695e97d0&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769063467386-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768817786453-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4c5c9750575d706bb03d57ec68e000848172c7c2f2b17624de9c9b2d838bf05e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768817786453-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768817786455-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=c50bc8f6ff6c5a63b163e2552d4572eff204ef421fc8cb4d6207dccb61f715bd&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768817786455-1","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769063660493-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=75f00f60ae50ade6842679a5865e933e2262d95351fdcfd23bee04177a6c894b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769063660493-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768834996932-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=19951d815bd36fa683ceaddbb1924b43b509caa5a40601d3eb019c0c97a75572&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768834996932-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1771411526889-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=5a32126e04ff78965fceeec9b25a810a2a2f5165cbca646042aa726e51f3ec97&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1771411526889-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768710760133-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=03c31becedffaa2849585bad814e3c2968342163c8385dd41142e3fd11bcbcc3&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768710760133-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639707515-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=7a5ecb2c24aa449e47fb73fd35142820703de74af5db24abb1b8061e8c437b32&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768639707515-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768713206145-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=3e43f4e1c6560a9b0137034788c355406393ed789422e511c097f473c5b930fd&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768713206145-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639645423-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=19cd20af98e25ea68f7a06a3e4a45a18bac0441f3c544f017038b45c9d6e216f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768639645423-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768822893380-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4dc3dcbbceecb7581b96d0b56d62c8d609c879d58f9400b59a162f969c65c47c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768822893380-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1766406273176-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=ac106fe61ae85e1f81d770e65cea6e711a1ef0cb0ab5430969e0af30e22066c8&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1766406273176-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1766406273178-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=d4f546c91e24b6de7e764312953a4a7935270648fa96ae0237bebb55ed2dcdb1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1766406273178-1","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768710099841-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=803decbec1c2ca16ca93f1d1649f7dd1f1405decf3bc743ccaccad55c08c6b01&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768710099841-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768710434326-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=c9f325ce1af6f6d9fb975a3f63386485a07ddf48f5cdd6a21aea6d56d9af934f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768710434326-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768639292540-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=3bcfe4299a2827519117d0c86842dd9e6db7ea3c9deeb0dc86575e5d67ece4e1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768639292540-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768640233068-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4242dc446b833310ddcb89c582828016e145f98b39396d707a82196b0f9f4904&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768640233068-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768713537512-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=71cce60b4e73bf010f116268ade2cceb0e71859d2bd2e7636c6ead10249a169f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768713537512-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1766636589779-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=25ed7cedcbdab26129ad788de1a3e26bebef612fdc990bb6c1bc3f72b0733292&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1766636589779-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768823985921-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=1a8d451f64098c76394b6d130d76ce355f6aa0e0e21a43b7af311863337803b4&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768823985921-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769241234003-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4a430d6dbf42d085f304e301f5462f848541ead11e588583532a938b97ba10ac&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769241234003-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768711261174-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=7911ac884fdb9abbb58b5f565bd821d7c0ce04bdb693caf95ef773c26751a7ed&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768711261174-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768726783083-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=05bb6a2de955559e877fd90d3cc5946ca43eabad442aa00b1b21817b929952d1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768726783083-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768712093829-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=c35b059a1d4d8adff0a4a68d1c756593a683f734affbf8840a72fcfcb58a99a6&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768712093829-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768727264220-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=c7a66902ee1bff1f9516a121f5a53409223ea4486bbc119e53fe2cb36a69c879&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768727264220-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768711919135-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4a5c195c92b3f4ac14ac833dd7903997557561fe711f0a0534ea1c8d6decfc22&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768711919135-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769356702593-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=0294dee84238e303590f6a8f1c62ce93e58f9a856042c74d59d860ced1d226d5&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769356702593-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769394457296-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=9762ceec436c4bb0b467827090a67e76182323a4c16e20227d0349d4659f6a15&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769394457296-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768709567040-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=b2d7d718e03cfb7128ae72c65b5ed07e831b059f65edba0a7267e23ad2a1eb39&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768709567040-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769396724595-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=beff46d37a490c876f8ce508451edbad12e464a020f221c15c616bbe52729894&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769396724595-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768713886512-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=f59babd14e553d9df7e81caca9c3fc81e0533670b539fdf775b66be4717741d7&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768713886512-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769397372526-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=85f1f67d8940353f933947d971d68869f9f82c38f3f8559e84d4d63176c44491&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769397372526-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769574792720-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=ce6694fa782c6a01602c29afd4461b59ec6042d01211e289fba8eb89ddc75617&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769574792720-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769398103853-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=e480bf672bde2550ad5257205ca9ff5aedd39d3519e49e440b2d7861010e7c7f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769398103853-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769351976737-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=fe15b2fe5151eabf845def222d934b026bc3ba94226d402cac008629da528be8&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769351976737-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768712490280-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=38436fad38a100ed16dde7d89311342ea9bed03b1844d42707317adb89342cb8&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768712490280-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769398710713-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=ed7dc21e8bc641ce14063597dcd96a0ee5598d6c2f5267029d3af9c16c8127b5&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769398710713-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769396046557-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4df8eb070918b867acd409055d1280fb99aa9317bf3c8cb78451e380bcf5e675&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769396046557-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769395184980-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=af279d603ad5e06c26639392608972be1470710045550630bd29bea4de6402d6&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769395184980-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769399617573-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=a688a5aa30ddac19532573578282ea6abc6e9a2ead4a7e3812dd79d6c63bc44c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769399617573-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769571810861-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=5ccb50ccfc1247a77ab0454184c9635468a27526f8bd3d5fb69dec977ccc5f93&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769571810861-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769577010969-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=c51836b98f61cccb559cc1c890907e20c73d8ffbba11082e1d649c6ce0937827&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769577010969-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769571978680-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=6c4e3d4d3f657170fd9e9831ffe3f50d372179ee98b63ee4db74270be26dfdef&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769571978680-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1771249922306-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=1c5a2a4d98150e156e7ac00464bd842cab27aa545b68e60b4a7386393d6964bd&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1771249922306-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1771647812442-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=834aa795bad44671bb7a4dc6621563c55ee00cce066ea4cbf6e5cc45b97153cc&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1771647812442-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768834170995-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=9f2802242259f4330df40a89fda28880e28cbc6ae48c5430762935ddba267dd1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768834170995-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1767636561867-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=158daf212f8255c9a838a066674b680f6af437e1b98d4e0fa5a3e13ac7fdd8ad&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1767636561867-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769151216776-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=1898e5394606a2393f354d3f2d41c659a9314a2078271d674b6f385a0811f8b4&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769151216776-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1767636171845-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=f693aa231fe13f2ac04e3f4168413a8c8b3030b7ef9ece21afcaaf2c444c9528&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1767636171845-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1770051959669-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=0e47673cc13fa2fc996cbb3b8b6d640c9e4caa57a5367c06ff0fe8ab0385c5f9&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1770051959669-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1770051810386-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=d6804624376f8b27159dd56da1bc290ba3e56f488866828254c4be9b5d62075b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1770051810386-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768475599800-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=0aea2472625965c4e464d54fb9780245955038beea492e872544b8d0b5672f62&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768475599800-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768390245969-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=4691361cf32401e074053beb6bd8ac7b888c074a6abf52c97774dcd8b4a45e41&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768390245969-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768484106870-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=90bbbb25f4055b1f14e5393af00b4570f61388bca4fc6bb29d087c825aaee9ab&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768484106870-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1767637606890-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=f3ff12d163a9d58e0aabb5b3f6c7ff738011206b3838fe6e31d765750e5e31b3&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1767637606890-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768393778962-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=507e9100e921861a8a2f0da0dffe82beefa26f347ccd52d48f7b2cc38f95888d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768393778962-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769063336125-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=8e1dc36bfacf06d11f1e608299dfa7394647e52c0afbc01324cfca750583dfe4&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769063336125-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1767635527063-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=605ee823795a36df29e6c4c9b6f265529b06369a3179168f81f782a4d56bae47&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1767635527063-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768307047191-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=0758307523ffc725e04d412ec7bf04acf02998ab5c2352e1c488691de1afb8a8&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768307047191-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768539930897-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=3ba8d607be7e0de04682a774dd2523afa2988e7050d2e55ce17753a2db87a9e6&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768539930897-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768539930899-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=73779d31b73506ea79fe9a131c4ed0a8aaf876e47f299dd3bf054d217cbd804d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768539930899-1","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768397780093-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=dd0b96e3d0159e9a863efde0baa0d40535d77336b64e473adf913de5a78496ec&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768397780093-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768479562478-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=85ff0374e5145f291274286ada2adf3b5f90ff57c005047cbd1c230bb24787c5&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768479562478-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768413754684-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=acc54a5b75eea8b6da6a88d5f5b3b884a0f6d1838fc4ec4c3acbafdc36adb590&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768413754684-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768478127128-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=1961a5b79ac8bcd54d95dc2bb3c2d7bfe1c0fb37cce9e5a764ffec0dcaf3df09&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768478127128-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768478472220-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=452db93c01a8ef15ec6c3928c4eda349ebf9560b10d49042a97c5aedf71fe4dc&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768478472220-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768477813647-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=068775da0d0664f51c206e632da2203c63f0efc06f95925e12fb9d945c37d0f2&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768477813647-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1768477813648-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=ebe921e9ab353b7ec0f53bb72f5cd21d779aba2551766b61dd00cead94da69b5&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1768477813648-1","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769356039418-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=ffd8869d991db6dbc77e4f85c5359131e9400cab2985e424dba2216c041aa7b3&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769356039418-0","expiresAt":1772824366780},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1763835293899-43b3fbe1-9b5b-441c-b4d4-d1691c3f02f3.webp?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191346Z&X-Amz-Expires=259200&X-Amz-Signature=19163d99c28d9168460ae7acce81ee0704cb11363d423b80b0a768fa2ca46d03&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1763835293899-43b3fbe1-9b5b-441c-b4d4-d1691c3f02f3.webp","expiresAt":1772824366786},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1768709725124-ebf421c5-ad52-49a9-b65c-1de008110b8a.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191347Z&X-Amz-Expires=259200&X-Amz-Signature=f49e81af96cd7e8b2479b16308843540de8a84abd741c9a6499247e967e1e77e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1768709725124-ebf421c5-ad52-49a9-b65c-1de008110b8a.png","expiresAt":1772824367426},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770321659633-1763869265110-e22b6d94-dac9-499f-babb-1e944d90b01a.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260205%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260205T195535Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253D917db15bcc60cab7ac5cd5e49d85d13a960fe77b4a5e327dd449048870494cf9%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191348Z&X-Amz-Expires=259200&X-Amz-Signature=9752ae6754548661e6c602cfb0875aa01f3f4abf790f99899840a98620f438f4&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1770321659633-1763869265110-e22b6d94-dac9-499f-babb-1e944d90b01a.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260205%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260205T195535Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3D917db15bcc60cab7ac5cd5e49d85d13a960fe77b4a5e327dd449048870494cf9%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject","expiresAt":1772824368652},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770323410499-1763869436182-bf82f7b4-a1f3-4113-985b-96311b7a910e.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260205%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260205T202804Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253Dea436390b277935d843cae6b5cfa62aeed5799cb4a962ab31a0be4b132ca4b30%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191349Z&X-Amz-Expires=259200&X-Amz-Signature=a01a73bb0535284e3206085dd02c5d2d85cfee33d786936d60ad3d0b5ac9b4ce&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1770323410499-1763869436182-bf82f7b4-a1f3-4113-985b-96311b7a910e.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260205%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260205T202804Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3Dea436390b277935d843cae6b5cfa62aeed5799cb4a962ab31a0be4b132ca4b30%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject","expiresAt":1772824369468},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770323560823-fd0ec463-bed0-474e-aa14-dc6480ce36af.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191350Z&X-Amz-Expires=259200&X-Amz-Signature=6ee19f7224fa753b7b6d95b36385f4c4b8ac9ab946287828ae5276e21031e121&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1770323560823-fd0ec463-bed0-474e-aa14-dc6480ce36af.jpeg","expiresAt":1772824370107},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769149707440-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191356Z&X-Amz-Expires=259200&X-Amz-Signature=829d1ace553b80c12ca0c1af158af7c5a9935ae8bdce7dd32c0ec4c97b062980&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769149707440-0","expiresAt":1772824376846},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769151844424-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191359Z&X-Amz-Expires=259200&X-Amz-Signature=bfd8ed947c20b20355e242b35ff767117adbf656be3d864a27c7bf5cb712eef4&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769151844424-0","expiresAt":1772824379340},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769353802270-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191401Z&X-Amz-Expires=259200&X-Amz-Signature=e329a998b308f5a426f853545e0889dd85c501591f0d9be90e50e2e2c3f946cc&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769353802270-0","expiresAt":1772824381392},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1764500702143-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191403Z&X-Amz-Expires=259200&X-Amz-Signature=a52f20c4901c80301abbe23d718c923f02a28f03b42370068594541d1a8ce046&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1764500702143-0","expiresAt":1772824383049},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1764500702144-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191403Z&X-Amz-Expires=259200&X-Amz-Signature=bb7320a492a9a6edf0ff17cfc1e440af5c77797349b5f9e671300fe3b3ca8218&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1764500702144-1","expiresAt":1772824383049},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769150471654-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191405Z&X-Amz-Expires=259200&X-Amz-Signature=ab20e1546cf02b25edf05cedfbb60c26e43b240b857b37b8a1ca9143b563b727&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769150471654-0","expiresAt":1772824385699},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769150471655-1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191405Z&X-Amz-Expires=259200&X-Amz-Signature=a1c61968b958c6d1e2e8cb95c0b2b9b5de5f121dfe6ededd743af50664624935&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769150471655-1","expiresAt":1772824385699},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/product-images/1769571126092-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260303%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260303T191407Z&X-Amz-Expires=259200&X-Amz-Signature=813ef83d697135fdfbcd485163ba5c5c55d73ab96db2070eb1cd1963151c98e2&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"product-images/1769571126092-0","expiresAt":1772824387845},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/profile-images/1766160314135-1000000018.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260304%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260304T131847Z&X-Amz-Expires=259200&X-Amz-Signature=80f34e33b4b221089a4112daee9e78dfd248da67256af197b2d5cb1281cef630&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"profile-images/1766160314135-1000000018.jpg","expiresAt":1772889467117},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1766052073748.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260304%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260304T131850Z&X-Amz-Expires=259200&X-Amz-Signature=0c5171b3f9c8b125df68ca2b6deae2caf0779b0f556200d52a40ece0e35e8ded&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"store-images/1766052073748.png","expiresAt":1772889470671},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1766051618139.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260304%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260304T131850Z&X-Amz-Expires=259200&X-Amz-Signature=28ccd00f0782d5891077b2d65912c0f81b2bbb6db7eaa6d9aa8c198d78e2f51f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"store-images/1766051618139.png","expiresAt":1772889470671},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/store-images/1766053828604.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260304%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260304T131850Z&X-Amz-Expires=259200&X-Amz-Signature=88e8085143f3ba11a2f48ae86916f26a7e745c4fe932601e775147a7f40ba4d1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"store-images/1766053828604.png","expiresAt":1772889470671}}} \ No newline at end of file +{"originalToSigned":{"tags/1763835253683-c9c3e293-0bef-4c58-a976-dd49c050cd36.jpeg":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1763835253683-c9c3e293-0bef-4c58-a976-dd49c050cd36.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260307%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260307T105258Z&X-Amz-Expires=259200&X-Amz-Signature=a4e4226aa30b5f0fde27efca0f139c00df5d3e13d08b104c4aee12afda1f7498&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773139918864},"tags/1763835293899-43b3fbe1-9b5b-441c-b4d4-d1691c3f02f3.webp":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1763835293899-43b3fbe1-9b5b-441c-b4d4-d1691c3f02f3.webp?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260307%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260307T105259Z&X-Amz-Expires=259200&X-Amz-Signature=bf52ada07a10aef2f03249480efc7c918389e8711c31dec38c7bae4b922ddfd6&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773139919079},"tags/1768709725124-ebf421c5-ad52-49a9-b65c-1de008110b8a.png":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1768709725124-ebf421c5-ad52-49a9-b65c-1de008110b8a.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260307%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260307T105259Z&X-Amz-Expires=259200&X-Amz-Signature=3e175d60bbaba792d9dd5d60d4ebad6ad395e9f5f7a00f469e6d74dccec68d59&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773139919523},"tags/1770321659633-1763869265110-e22b6d94-dac9-499f-babb-1e944d90b01a.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260205%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260205T195535Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3D917db15bcc60cab7ac5cd5e49d85d13a960fe77b4a5e327dd449048870494cf9%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770321659633-1763869265110-e22b6d94-dac9-499f-babb-1e944d90b01a.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260205%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260205T195535Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253D917db15bcc60cab7ac5cd5e49d85d13a960fe77b4a5e327dd449048870494cf9%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260307%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260307T105259Z&X-Amz-Expires=259200&X-Amz-Signature=5cbc2e1c88c8df749d97c59dfec911cbacc58502fd38e97723ee3627e8934d6e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773139919790},"tags/1770323410499-1763869436182-bf82f7b4-a1f3-4113-985b-96311b7a910e.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260205%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260205T202804Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3Dea436390b277935d843cae6b5cfa62aeed5799cb4a962ab31a0be4b132ca4b30%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770323410499-1763869436182-bf82f7b4-a1f3-4113-985b-96311b7a910e.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260205%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260205T202804Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253Dea436390b277935d843cae6b5cfa62aeed5799cb4a962ab31a0be4b132ca4b30%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260307%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260307T105300Z&X-Amz-Expires=259200&X-Amz-Signature=aa8adbc434acc3f5c2b8f7a43d300a56df641e21ebefe30510b7e5edbac3e36f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773139920026},"tags/1770323560823-fd0ec463-bed0-474e-aa14-dc6480ce36af.jpeg":{"value":"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770323560823-fd0ec463-bed0-474e-aa14-dc6480ce36af.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260307%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260307T105300Z&X-Amz-Expires=259200&X-Amz-Signature=5064525b43e9119a4ec0c19ca134b84697a814c54121f4bca6d2b28582c2fe01&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject","expiresAt":1773139920248}},"signedToOriginal":{"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1763835253683-c9c3e293-0bef-4c58-a976-dd49c050cd36.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260307%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260307T105258Z&X-Amz-Expires=259200&X-Amz-Signature=a4e4226aa30b5f0fde27efca0f139c00df5d3e13d08b104c4aee12afda1f7498&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1763835253683-c9c3e293-0bef-4c58-a976-dd49c050cd36.jpeg","expiresAt":1773139918864},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1763835293899-43b3fbe1-9b5b-441c-b4d4-d1691c3f02f3.webp?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260307%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260307T105259Z&X-Amz-Expires=259200&X-Amz-Signature=bf52ada07a10aef2f03249480efc7c918389e8711c31dec38c7bae4b922ddfd6&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1763835293899-43b3fbe1-9b5b-441c-b4d4-d1691c3f02f3.webp","expiresAt":1773139919079},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1768709725124-ebf421c5-ad52-49a9-b65c-1de008110b8a.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260307%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260307T105259Z&X-Amz-Expires=259200&X-Amz-Signature=3e175d60bbaba792d9dd5d60d4ebad6ad395e9f5f7a00f469e6d74dccec68d59&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1768709725124-ebf421c5-ad52-49a9-b65c-1de008110b8a.png","expiresAt":1773139919523},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770321659633-1763869265110-e22b6d94-dac9-499f-babb-1e944d90b01a.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260205%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260205T195535Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253D917db15bcc60cab7ac5cd5e49d85d13a960fe77b4a5e327dd449048870494cf9%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260307%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260307T105259Z&X-Amz-Expires=259200&X-Amz-Signature=5cbc2e1c88c8df749d97c59dfec911cbacc58502fd38e97723ee3627e8934d6e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1770321659633-1763869265110-e22b6d94-dac9-499f-babb-1e944d90b01a.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260205%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260205T195535Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3D917db15bcc60cab7ac5cd5e49d85d13a960fe77b4a5e327dd449048870494cf9%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject","expiresAt":1773139919790},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770323410499-1763869436182-bf82f7b4-a1f3-4113-985b-96311b7a910e.jpeg%253FX-Amz-Algorithm%253DAWS4-HMAC-SHA256%2526X-Amz-Content-Sha256%253DUNSIGNED-PAYLOAD%2526X-Amz-Credential%253D8fab47503efb9547b50e4fb317e35cc7%25252F20260205%25252Fapac%25252Fs3%25252Faws4_request%2526X-Amz-Date%253D20260205T202804Z%2526X-Amz-Expires%253D259200%2526X-Amz-Signature%253Dea436390b277935d843cae6b5cfa62aeed5799cb4a962ab31a0be4b132ca4b30%2526X-Amz-SignedHeaders%253Dhost%2526x-amz-checksum-mode%253DENABLED%2526x-id%253DGetObject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260307%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260307T105300Z&X-Amz-Expires=259200&X-Amz-Signature=aa8adbc434acc3f5c2b8f7a43d300a56df641e21ebefe30510b7e5edbac3e36f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1770323410499-1763869436182-bf82f7b4-a1f3-4113-985b-96311b7a910e.jpeg%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3D8fab47503efb9547b50e4fb317e35cc7%252F20260205%252Fapac%252Fs3%252Faws4_request%26X-Amz-Date%3D20260205T202804Z%26X-Amz-Expires%3D259200%26X-Amz-Signature%3Dea436390b277935d843cae6b5cfa62aeed5799cb4a962ab31a0be4b132ca4b30%26X-Amz-SignedHeaders%3Dhost%26x-amz-checksum-mode%3DENABLED%26x-id%3DGetObject","expiresAt":1773139920026},"https://da9b1aa7c1951c23e2c0c3246ba68a58.r2.cloudflarestorage.com/meatfarmer/tags/1770323560823-fd0ec463-bed0-474e-aa14-dc6480ce36af.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=8fab47503efb9547b50e4fb317e35cc7%2F20260307%2Fapac%2Fs3%2Faws4_request&X-Amz-Date=20260307T105300Z&X-Amz-Expires=259200&X-Amz-Signature=5064525b43e9119a4ec0c19ca134b84697a814c54121f4bca6d2b28582c2fe01&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject":{"value":"tags/1770323560823-fd0ec463-bed0-474e-aa14-dc6480ce36af.jpeg","expiresAt":1773139920248}}} \ No newline at end of file diff --git a/apps/backend/index.ts b/apps/backend/index.ts index 5f695b3..b450036 100755 --- a/apps/backend/index.ts +++ b/apps/backend/index.ts @@ -5,19 +5,19 @@ import cors from "cors"; import multer from "multer"; import path from "path"; import fs from "fs"; -import { db } from './src/db/db_index'; -import { staffUsers, userDetails } from './src/db/schema'; +import { db } from '@/src/db/db_index'; +import { staffUsers, userDetails } from '@/src/db/schema'; import { eq } from 'drizzle-orm'; -import mainRouter from './src/main-router'; -import initFunc from './src/lib/init'; +import mainRouter from '@/src/main-router'; +import initFunc from '@/src/lib/init'; import { createExpressMiddleware } from '@trpc/server/adapters/express'; -import { appRouter } from './src/trpc/router'; +import { appRouter } from '@/src/trpc/router'; import { TRPCError } from '@trpc/server'; import jwt from 'jsonwebtoken' -import signedUrlCache from 'src/lib/signed-url-cache'; -import { seed } from 'src/db/seed'; -import './src/jobs/jobs-index'; -import { startAutomatedJobs } from './src/lib/automatedJobs'; +import signedUrlCache from '@/src/lib/signed-url-cache'; +import { seed } from '@/src/db/seed'; +import '@/src/jobs/jobs-index'; +import { startAutomatedJobs } from '@/src/lib/automatedJobs'; seed() initFunc() diff --git a/apps/backend/package.json b/apps/backend/package.json index 46c36d6..4d09b45 100755 --- a/apps/backend/package.json +++ b/apps/backend/package.json @@ -5,7 +5,7 @@ "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "migrate": "drizzle-kit generate:pg", - "build": "rimraf ./dist && tsc --project tsconfig.json", + "build": "rimraf ./dist && tsc --project tsconfig.json && tsc-alias -p tsconfig.json", "build2": "rimraf ./dist && tsc", "db:push": "drizzle-kit push:pg", "db:seed": "tsx src/db/seed.ts", @@ -55,6 +55,7 @@ "rimraf": "^6.1.2", "ts-node-dev": "^2.0.0", "tsx": "^4.20.5", + "tsc-alias": "^1.8.16", "typescript": "^5.9.2" } } diff --git a/apps/backend/src/admin-apis/av-router.ts b/apps/backend/src/apis/admin-apis/apis/av-router.ts similarity index 60% rename from apps/backend/src/admin-apis/av-router.ts rename to apps/backend/src/apis/admin-apis/apis/av-router.ts index b98e354..732e56f 100755 --- a/apps/backend/src/admin-apis/av-router.ts +++ b/apps/backend/src/apis/admin-apis/apis/av-router.ts @@ -1,7 +1,7 @@ import { Router } from "express"; -import { authenticateStaff } from "../middleware/staff-auth"; -import productRouter from "./product.router"; -import tagRouter from "./tag.router"; +import { authenticateStaff } from "@/src/middleware/staff-auth"; +import productRouter from "@/src/apis/admin-apis/apis/product.router" +import tagRouter from "@/src/apis/admin-apis/apis/tag.router" const router = Router(); diff --git a/apps/backend/src/admin-apis/product-tags.controller.ts b/apps/backend/src/apis/admin-apis/apis/product-tags.controller.ts similarity index 94% rename from apps/backend/src/admin-apis/product-tags.controller.ts rename to apps/backend/src/apis/admin-apis/apis/product-tags.controller.ts index 4466989..7b6a4fe 100644 --- a/apps/backend/src/admin-apis/product-tags.controller.ts +++ b/apps/backend/src/apis/admin-apis/apis/product-tags.controller.ts @@ -1,11 +1,11 @@ import { Request, Response } from "express"; -import { db } from "../db/db_index"; -import { productTagInfo } from "../db/schema"; +import { db } from "@/src/db/db_index"; +import { productTagInfo } from "@/src/db/schema"; import { eq } from "drizzle-orm"; -import { ApiError } from "../lib/api-error"; -import { imageUploadS3, generateSignedUrlFromS3Url } from "../lib/s3-client"; -import { deleteS3Image } from "../lib/delete-image"; -import { initializeAllStores } from '../stores/store-initializer'; +import { ApiError } from "@/src/lib/api-error"; +import { imageUploadS3, generateSignedUrlFromS3Url } from "@/src/lib/s3-client"; +import { deleteS3Image } from "@/src/lib/delete-image"; +import { initializeAllStores } from '@/src/stores/store-initializer'; /** * Create a new product tag diff --git a/apps/backend/src/admin-apis/product.controller.ts b/apps/backend/src/apis/admin-apis/apis/product.controller.ts similarity index 95% rename from apps/backend/src/admin-apis/product.controller.ts rename to apps/backend/src/apis/admin-apis/apis/product.controller.ts index 28c0c42..dcd3471 100644 --- a/apps/backend/src/admin-apis/product.controller.ts +++ b/apps/backend/src/apis/admin-apis/apis/product.controller.ts @@ -1,12 +1,12 @@ import { Request, Response } from "express"; -import { db } from "../db/db_index"; -import { productInfo, units, specialDeals, productTags } from "../db/schema"; +import { db } from "@/src/db/db_index"; +import { productInfo, units, specialDeals, productTags } from "@/src/db/schema"; import { eq, inArray } from "drizzle-orm"; -import { ApiError } from "../lib/api-error"; -import { imageUploadS3, getOriginalUrlFromSignedUrl } from "../lib/s3-client"; -import { deleteS3Image } from "../lib/delete-image"; -import type { SpecialDeal } from "../db/types"; -import { initializeAllStores } from '../stores/store-initializer'; +import { ApiError } from "@/src/lib/api-error"; +import { imageUploadS3, getOriginalUrlFromSignedUrl } from "@/src/lib/s3-client"; +import { deleteS3Image } from "@/src/lib/delete-image"; +import type { SpecialDeal } from "@/src/db/types"; +import { initializeAllStores } from '@/src/stores/store-initializer'; type CreateDeal = { quantity: number; diff --git a/apps/backend/src/admin-apis/product.router.ts b/apps/backend/src/apis/admin-apis/apis/product.router.ts similarity index 61% rename from apps/backend/src/admin-apis/product.router.ts rename to apps/backend/src/apis/admin-apis/apis/product.router.ts index faabd52..fe0bbd1 100644 --- a/apps/backend/src/admin-apis/product.router.ts +++ b/apps/backend/src/apis/admin-apis/apis/product.router.ts @@ -1,6 +1,6 @@ import { Router } from "express"; -import { createProduct, updateProduct } from "./product.controller"; -import uploadHandler from '../lib/upload-handler'; +import { createProduct, updateProduct } from "@/src/apis/admin-apis/apis/product.controller" +import uploadHandler from '@/src/lib/upload-handler'; const router = Router(); diff --git a/apps/backend/src/admin-apis/tag.router.ts b/apps/backend/src/apis/admin-apis/apis/tag.router.ts similarity index 76% rename from apps/backend/src/admin-apis/tag.router.ts rename to apps/backend/src/apis/admin-apis/apis/tag.router.ts index 171ce7f..dbcdb0d 100644 --- a/apps/backend/src/admin-apis/tag.router.ts +++ b/apps/backend/src/apis/admin-apis/apis/tag.router.ts @@ -1,6 +1,6 @@ import { Router } from "express"; -import { createTag, getAllTags, getTagById, updateTag, deleteTag } from "./product-tags.controller"; -import uploadHandler from '../lib/upload-handler'; +import { createTag, getAllTags, getTagById, updateTag, deleteTag } from "@/src/apis/admin-apis/apis/product-tags.controller" +import uploadHandler from '@/src/lib/upload-handler'; const router = Router(); diff --git a/apps/backend/src/apis/admin-apis/dataAccessors/demo.txt b/apps/backend/src/apis/admin-apis/dataAccessors/demo.txt new file mode 100644 index 0000000..e69de29 diff --git a/apps/backend/src/common-apis/common-product.controller.ts b/apps/backend/src/apis/common-apis/apis/common-product.controller.ts similarity index 96% rename from apps/backend/src/common-apis/common-product.controller.ts rename to apps/backend/src/apis/common-apis/apis/common-product.controller.ts index a9b7e7f..93bd682 100644 --- a/apps/backend/src/common-apis/common-product.controller.ts +++ b/apps/backend/src/apis/common-apis/apis/common-product.controller.ts @@ -1,8 +1,8 @@ import { eq, gt, and, sql, inArray } from "drizzle-orm"; import { Request, Response } from "express"; -import { db } from "../db/db_index"; -import { productInfo, units, productSlots, deliverySlotInfo, productTags } from "../db/schema"; -import { scaffoldAssetUrl } from "../lib/s3-client"; +import { db } from "@/src/db/db_index" +import { productInfo, units, productSlots, deliverySlotInfo, productTags } from "@/src/db/schema" +import { scaffoldAssetUrl } from "@/src/lib/s3-client" /** * Get next delivery date for a product diff --git a/apps/backend/src/common-apis/common-product.router.ts b/apps/backend/src/apis/common-apis/apis/common-product.router.ts similarity index 65% rename from apps/backend/src/common-apis/common-product.router.ts rename to apps/backend/src/apis/common-apis/apis/common-product.router.ts index 5d5b60c..90b7655 100644 --- a/apps/backend/src/common-apis/common-product.router.ts +++ b/apps/backend/src/apis/common-apis/apis/common-product.router.ts @@ -1,5 +1,5 @@ import { Router } from "express"; -import { getAllProductsSummary } from "./common-product.controller"; +import { getAllProductsSummary } from "@/src/apis/common-apis/apis/common-product.controller" const router = Router(); diff --git a/apps/backend/src/common-apis/common.router.ts b/apps/backend/src/apis/common-apis/apis/common.router.ts similarity index 66% rename from apps/backend/src/common-apis/common.router.ts rename to apps/backend/src/apis/common-apis/apis/common.router.ts index 7f5a9a9..7277d1f 100644 --- a/apps/backend/src/common-apis/common.router.ts +++ b/apps/backend/src/apis/common-apis/apis/common.router.ts @@ -1,5 +1,5 @@ import { Router } from "express"; -import commonProductsRouter from "./common-product.router"; +import commonProductsRouter from "@/src/apis/common-apis/apis/common-product.router" const router = Router(); diff --git a/apps/backend/src/apis/common-apis/dataAccessors/demo.txt b/apps/backend/src/apis/common-apis/dataAccessors/demo.txt new file mode 100644 index 0000000..e69de29 diff --git a/apps/backend/src/db/db_index.ts b/apps/backend/src/db/db_index.ts index 92cbfbb..05aebab 100755 --- a/apps/backend/src/db/db_index.ts +++ b/apps/backend/src/db/db_index.ts @@ -1,7 +1,7 @@ import { drizzle } from "drizzle-orm/node-postgres" import { migrate } from "drizzle-orm/node-postgres/migrator" import path from "path" -import * as schema from "./schema" +import * as schema from "@/src/db/schema" const db = drizzle({ connection: process.env.DATABASE_URL!, casing: "snake_case", schema: schema }) // const db = drizzle('postgresql://postgres:postgres@localhost:2345/pooler'); diff --git a/apps/backend/src/db/porter.ts b/apps/backend/src/db/porter.ts index 49165ea..4173d6f 100644 --- a/apps/backend/src/db/porter.ts +++ b/apps/backend/src/db/porter.ts @@ -2,13 +2,13 @@ * This was a one time script to change the composition of the signed urls */ -import { db } from './db_index'; +import { db } from '@/src/db/db_index' import { userDetails, productInfo, productTagInfo, complaints -} from './schema'; +} from '@/src/db/schema'; import { eq, not, isNull } from 'drizzle-orm'; const S3_DOMAIN = 'https://s3.sgp.io.cloud.ovh.net'; @@ -122,4 +122,4 @@ runMigration() .catch((error) => { console.error('Process failed:', error); process.exit(1); - }); \ No newline at end of file + }); diff --git a/apps/backend/src/db/seed.ts b/apps/backend/src/db/seed.ts index f844c73..f894534 100644 --- a/apps/backend/src/db/seed.ts +++ b/apps/backend/src/db/seed.ts @@ -1,8 +1,8 @@ -import { db } from "./db_index"; -import { units, productInfo, deliverySlotInfo, productSlots, keyValStore, staffRoles, staffPermissions, staffRolePermissions } from "./schema"; +import { db } from "@/src/db/db_index" +import { units, productInfo, deliverySlotInfo, productSlots, keyValStore, staffRoles, staffPermissions, staffRolePermissions } from "@/src/db/schema" import { eq } from "drizzle-orm"; -import { minOrderValue, deliveryCharge } from '../lib/env-exporter'; -import { CONST_KEYS } from '../lib/const-keys'; +import { minOrderValue, deliveryCharge } from '@/src/lib/env-exporter' +import { CONST_KEYS } from '@/src/lib/const-keys' export async function seed() { console.log("Seeding database..."); diff --git a/apps/backend/src/db/types.ts b/apps/backend/src/db/types.ts index 78c549f..64d42de 100755 --- a/apps/backend/src/db/types.ts +++ b/apps/backend/src/db/types.ts @@ -14,7 +14,7 @@ import type { productCategories, cartItems, coupons, -} from "./schema"; +} from "@/src/db/schema"; export type User = InferSelectModel; export type Address = InferSelectModel; @@ -44,4 +44,4 @@ export type OrderWithItems = Order & { export type CartItemWithProduct = CartItem & { product: ProductInfo; -}; \ No newline at end of file +}; diff --git a/apps/backend/src/jobs/jobs-index.ts b/apps/backend/src/jobs/jobs-index.ts index 1e64d68..107be6f 100644 --- a/apps/backend/src/jobs/jobs-index.ts +++ b/apps/backend/src/jobs/jobs-index.ts @@ -1,5 +1,5 @@ import * as cron from 'node-cron'; -import { checkPendingPayments, checkRefundStatuses } from './payment-status-checker'; +import { checkPendingPayments, checkRefundStatuses } from '@/src/jobs/payment-status-checker' const runCombinedJob = async () => { const start = Date.now(); diff --git a/apps/backend/src/jobs/payment-status-checker.ts b/apps/backend/src/jobs/payment-status-checker.ts index 35f49bf..7c6679b 100644 --- a/apps/backend/src/jobs/payment-status-checker.ts +++ b/apps/backend/src/jobs/payment-status-checker.ts @@ -1,8 +1,8 @@ import * as cron from 'node-cron'; -import { db } from '../db/db_index'; -import { payments, orders, deliverySlotInfo, refunds } from '../db/schema'; +import { db } from '@/src/db/db_index' +import { payments, orders, deliverySlotInfo, refunds } from '@/src/db/schema' import { eq, and, gt, isNotNull } from 'drizzle-orm'; -import { RazorpayPaymentService } from '../lib/payments-utils'; +import { RazorpayPaymentService } from '@/src/lib/payments-utils' interface PendingPaymentRecord { payment: typeof payments.$inferSelect; diff --git a/apps/backend/src/lib/automatedJobs.ts b/apps/backend/src/lib/automatedJobs.ts index a4ac8c9..3142afe 100644 --- a/apps/backend/src/lib/automatedJobs.ts +++ b/apps/backend/src/lib/automatedJobs.ts @@ -1,9 +1,9 @@ import * as cron from 'node-cron'; -import { db } from '../db/db_index'; -import { productInfo, keyValStore } from '../db/schema'; +import { db } from '@/src/db/db_index' +import { productInfo, keyValStore } from '@/src/db/schema' import { inArray, eq } from 'drizzle-orm'; -import { CONST_KEYS } from '../lib/const-keys'; -import { computeConstants } from '../lib/const-store'; +import { CONST_KEYS } from '@/src/lib/const-keys' +import { computeConstants } from '@/src/lib/const-store' const MUTTON_ITEMS = [ diff --git a/apps/backend/src/lib/axios.ts b/apps/backend/src/lib/axios.ts index 636e216..6db2de2 100755 --- a/apps/backend/src/lib/axios.ts +++ b/apps/backend/src/lib/axios.ts @@ -1,5 +1,5 @@ import axiosParent from "axios"; -import { phonePeBaseUrl } from "./env-exporter"; +import { phonePeBaseUrl } from "@/src/lib/env-exporter" export const phonepeAxios = axiosParent.create({ baseURL: phonePeBaseUrl, diff --git a/apps/backend/src/lib/const-store.ts b/apps/backend/src/lib/const-store.ts index 0221ada..c16609e 100644 --- a/apps/backend/src/lib/const-store.ts +++ b/apps/backend/src/lib/const-store.ts @@ -1,7 +1,7 @@ -import { db } from '../db/db_index'; -import { keyValStore } from '../db/schema'; -import redisClient from './redis-client'; -import { CONST_KEYS, CONST_KEYS_ARRAY, type ConstKey } from './const-keys'; +import { db } from '@/src/db/db_index' +import { keyValStore } from '@/src/db/schema' +import redisClient from '@/src/lib/redis-client' +import { CONST_KEYS, CONST_KEYS_ARRAY, type ConstKey } from '@/src/lib/const-keys' const CONST_REDIS_PREFIX = 'const:'; diff --git a/apps/backend/src/lib/delete-image.ts b/apps/backend/src/lib/delete-image.ts index 5289c45..dd6dfdd 100644 --- a/apps/backend/src/lib/delete-image.ts +++ b/apps/backend/src/lib/delete-image.ts @@ -1,7 +1,7 @@ import { eq } from "drizzle-orm"; -import { db } from "../db/db_index"; -import { deleteImageUtil, getOriginalUrlFromSignedUrl } from "./s3-client"; -import { s3Url } from "./env-exporter"; +import { db } from "@/src/db/db_index" +import { deleteImageUtil, getOriginalUrlFromSignedUrl } from "@/src/lib/s3-client" +import { s3Url } from "@/src/lib/env-exporter" function extractS3Key(url: string): string | null { try { diff --git a/apps/backend/src/lib/delete-orders.ts b/apps/backend/src/lib/delete-orders.ts index 57b6d34..4fb9516 100644 --- a/apps/backend/src/lib/delete-orders.ts +++ b/apps/backend/src/lib/delete-orders.ts @@ -1,5 +1,5 @@ -import { db } from '../db/db_index'; -import { orders, orderItems, orderStatus, payments, refunds, couponUsage, complaints } from '../db/schema'; +import { db } from '@/src/db/db_index' +import { orders, orderItems, orderStatus, payments, refunds, couponUsage, complaints } from '@/src/db/schema' import { eq, inArray } from 'drizzle-orm'; /** diff --git a/apps/backend/src/lib/event-queue.ts b/apps/backend/src/lib/event-queue.ts index 13e0d09..9d78222 100644 --- a/apps/backend/src/lib/event-queue.ts +++ b/apps/backend/src/lib/event-queue.ts @@ -1,4 +1,4 @@ -import redisClient from './redis-client'; +import redisClient from '@/src/lib/redis-client' export async function enqueue(queueName: string, eventData: any): Promise { try { diff --git a/apps/backend/src/lib/expo-service.ts b/apps/backend/src/lib/expo-service.ts index 1e87423..fbb784c 100755 --- a/apps/backend/src/lib/expo-service.ts +++ b/apps/backend/src/lib/expo-service.ts @@ -1,6 +1,6 @@ import { Expo } from "expo-server-sdk"; import { title } from "process"; -import { expoAccessToken } from "./env-exporter"; +import { expoAccessToken } from "@/src/lib/env-exporter" const expo = new Expo({ accessToken: expoAccessToken, diff --git a/apps/backend/src/lib/init.ts b/apps/backend/src/lib/init.ts index e5f9455..654b195 100755 --- a/apps/backend/src/lib/init.ts +++ b/apps/backend/src/lib/init.ts @@ -1,8 +1,8 @@ -import './notif-job'; -import { initializeAllStores } from '../stores/store-initializer'; -import { initializeUserNegativityStore } from '../stores/user-negativity-store'; -import { startOrderHandler, startCancellationHandler, publishOrder } from './post-order-handler'; -import { deleteOrders } from './delete-orders'; +import '@/src/lib/notif-job' +import { initializeAllStores } from '@/src/stores/store-initializer' +import { initializeUserNegativityStore } from '@/src/stores/user-negativity-store' +import { startOrderHandler, startCancellationHandler, publishOrder } from '@/src/lib/post-order-handler' +import { deleteOrders } from '@/src/lib/delete-orders' /** * Initialize all application services diff --git a/apps/backend/src/lib/notif-job.ts b/apps/backend/src/lib/notif-job.ts index f534843..c0c18f9 100644 --- a/apps/backend/src/lib/notif-job.ts +++ b/apps/backend/src/lib/notif-job.ts @@ -1,8 +1,8 @@ import { Queue, Worker } from 'bullmq'; import { Expo } from 'expo-server-sdk'; -import { redisUrl } from './env-exporter'; -import { db } from '../db/db_index'; -import { generateSignedUrlFromS3Url } from './s3-client'; +import { redisUrl } from '@/src/lib/env-exporter' +import { db } from '@/src/db/db_index' +import { generateSignedUrlFromS3Url } from '@/src/lib/s3-client' import { NOTIFS_QUEUE, ORDER_PLACED_MESSAGE, @@ -12,7 +12,7 @@ import { ORDER_DELIVERED_MESSAGE, ORDER_CANCELLED_MESSAGE, REFUND_INITIATED_MESSAGE -} from './const-strings'; +} from '@/src/lib/const-strings'; export const notificationQueue = new Queue(NOTIFS_QUEUE, { connection: { url: redisUrl }, diff --git a/apps/backend/src/lib/notif-service.ts b/apps/backend/src/lib/notif-service.ts index 2cb9480..ee1a0d5 100755 --- a/apps/backend/src/lib/notif-service.ts +++ b/apps/backend/src/lib/notif-service.ts @@ -1,6 +1,6 @@ -import { db } from "../db/db_index"; -import { sendPushNotificationsMany } from "./expo-service"; -// import { usersTable, notifCredsTable, notificationTable } from "../db/schema"; +import { db } from "@/src/db/db_index" +import { sendPushNotificationsMany } from "@/src/lib/expo-service" +// import { usersTable, notifCredsTable, notificationTable } from "@/src/db/schema"; import { eq, inArray } from "drizzle-orm"; // Core notification dispatch methods (renamed for clarity) @@ -244,4 +244,4 @@ export const sendNotifToSingleUser = dispatchUserNotification; /** * @deprecated Use notifyNewOffer() or other purpose-specific methods instead */ -export const sendNotifToManyUsers = dispatchBulkNotification; \ No newline at end of file +export const sendNotifToManyUsers = dispatchBulkNotification; diff --git a/apps/backend/src/lib/otp-utils.ts b/apps/backend/src/lib/otp-utils.ts index dc39b45..a35be03 100644 --- a/apps/backend/src/lib/otp-utils.ts +++ b/apps/backend/src/lib/otp-utils.ts @@ -1,5 +1,5 @@ -import { ApiError } from './api-error'; -import { otpSenderAuthToken } from './env-exporter'; +import { ApiError } from '@/src/lib/api-error' +import { otpSenderAuthToken } from '@/src/lib/env-exporter' const otpStore = new Map(); diff --git a/apps/backend/src/lib/payments-utils.ts b/apps/backend/src/lib/payments-utils.ts index 02e7791..e60a03d 100644 --- a/apps/backend/src/lib/payments-utils.ts +++ b/apps/backend/src/lib/payments-utils.ts @@ -1,7 +1,7 @@ import Razorpay from "razorpay"; -import { razorpayId, razorpaySecret } from "./env-exporter"; -import { db } from "../db/db_index"; -import { payments } from "../db/schema"; +import { razorpayId, razorpaySecret } from "@/src/lib/env-exporter" +import { db } from "@/src/db/db_index" +import { payments } from "@/src/db/schema" type Tx = Parameters[0]>[0]; diff --git a/apps/backend/src/lib/post-order-handler.ts b/apps/backend/src/lib/post-order-handler.ts index 6d5de59..62953fa 100644 --- a/apps/backend/src/lib/post-order-handler.ts +++ b/apps/backend/src/lib/post-order-handler.ts @@ -1,7 +1,7 @@ -import { db } from '../db/db_index'; -import { orders, orderStatus } from '../db/schema'; -import redisClient from './redis-client'; -import { sendTelegramMessage } from './telegram-service'; +import { db } from '@/src/db/db_index' +import { orders, orderStatus } from '@/src/db/schema' +import redisClient from '@/src/lib/redis-client' +import { sendTelegramMessage } from '@/src/lib/telegram-service' import { inArray, eq } from 'drizzle-orm'; const ORDER_CHANNEL = 'orders:placed'; diff --git a/apps/backend/src/lib/redis-client.ts b/apps/backend/src/lib/redis-client.ts index 87953e8..cb8f56e 100644 --- a/apps/backend/src/lib/redis-client.ts +++ b/apps/backend/src/lib/redis-client.ts @@ -1,5 +1,5 @@ import { createClient, RedisClientType } from 'redis'; -import { redisUrl } from './env-exporter'; +import { redisUrl } from '@/src/lib/env-exporter' class RedisClient { private client: RedisClientType; diff --git a/apps/backend/src/lib/roles-manager.ts b/apps/backend/src/lib/roles-manager.ts index bdb8057..7242bce 100755 --- a/apps/backend/src/lib/roles-manager.ts +++ b/apps/backend/src/lib/roles-manager.ts @@ -1,4 +1,4 @@ -import { db } from "../db/db_index"; +import { db } from "@/src/db/db_index" /** * Constants for role names to avoid hardcoding and typos diff --git a/apps/backend/src/lib/s3-client.ts b/apps/backend/src/lib/s3-client.ts index cfe933a..7862169 100755 --- a/apps/backend/src/lib/s3-client.ts +++ b/apps/backend/src/lib/s3-client.ts @@ -1,10 +1,10 @@ -// import { s3A, awsBucketName, awsRegion, awsSecretAccessKey } from "../lib/env-exporter" +// import { s3A, awsBucketName, awsRegion, awsSecretAccessKey } from "@/src/lib/env-exporter" import { DeleteObjectCommand, DeleteObjectsCommand, PutObjectCommand, S3Client, GetObjectCommand } from "@aws-sdk/client-s3" import { getSignedUrl } from "@aws-sdk/s3-request-presigner" -import signedUrlCache from "./signed-url-cache" -import { s3AccessKeyId, s3Region, s3Url, s3SecretAccessKey, s3BucketName, assetsDomain } from "./env-exporter"; -import { db } from "../db/db_index"; // Adjust path if needed -import { uploadUrlStatus } from "../db/schema"; +import signedUrlCache from "@/src/lib/signed-url-cache" +import { s3AccessKeyId, s3Region, s3Url, s3SecretAccessKey, s3BucketName, assetsDomain } from "@/src/lib/env-exporter" +import { db } from "@/src/db/db_index"; // Adjust path if needed +import { uploadUrlStatus } from "@/src/db/schema" import { and, eq } from 'drizzle-orm'; const s3Client = new S3Client({ diff --git a/apps/backend/src/lib/telegram-service.ts b/apps/backend/src/lib/telegram-service.ts index 957990f..a3a3e6f 100644 --- a/apps/backend/src/lib/telegram-service.ts +++ b/apps/backend/src/lib/telegram-service.ts @@ -1,5 +1,5 @@ import axios from 'axios'; -import { isDevMode, telegramBotToken, telegramChatIds } from './env-exporter'; +import { isDevMode, telegramBotToken, telegramChatIds } from '@/src/lib/env-exporter' const BOT_TOKEN = telegramBotToken; const CHAT_IDS = telegramChatIds; diff --git a/apps/backend/src/main-router.ts b/apps/backend/src/main-router.ts index c4df17f..25086e6 100755 --- a/apps/backend/src/main-router.ts +++ b/apps/backend/src/main-router.ts @@ -1,11 +1,11 @@ import { Router, Request, Response, NextFunction } from "express"; -import avRouter from "./admin-apis/av-router"; -import { ApiError } from "./lib/api-error"; -import v1Router from "./v1-router"; -import testController from "./test-controller"; -import { authenticateUser } from "./middleware/auth.middleware"; -import { raiseComplaint } from "./uv-apis/user-rest.controller"; -import uploadHandler from "./lib/upload-handler"; +import avRouter from "@/src/apis/admin-apis/apis/av-router" +import { ApiError } from "@/src/lib/api-error" +import v1Router from "@/src/v1-router" +import testController from "@/src/test-controller" +import { authenticateUser } from "@/src/middleware/auth.middleware" +import { raiseComplaint } from "@/src/uv-apis/user-rest.controller" +import uploadHandler from "@/src/lib/upload-handler" const router = Router(); diff --git a/apps/backend/src/middleware/auth.middleware.ts b/apps/backend/src/middleware/auth.middleware.ts index 3ff1de4..1e381bb 100644 --- a/apps/backend/src/middleware/auth.middleware.ts +++ b/apps/backend/src/middleware/auth.middleware.ts @@ -1,9 +1,9 @@ import { Request, Response, NextFunction } from 'express'; import jwt from 'jsonwebtoken'; -import { db } from '../db/db_index'; -import { staffUsers, userDetails } from '../db/schema'; +import { db } from '@/src/db/db_index' +import { staffUsers, userDetails } from '@/src/db/schema' import { eq } from 'drizzle-orm'; -import { ApiError } from '../lib/api-error'; +import { ApiError } from '@/src/lib/api-error' interface AuthenticatedRequest extends Request { user?: { diff --git a/apps/backend/src/middleware/auth.ts b/apps/backend/src/middleware/auth.ts index d7a091f..a1a4f3a 100755 --- a/apps/backend/src/middleware/auth.ts +++ b/apps/backend/src/middleware/auth.ts @@ -1,6 +1,6 @@ import { Request, Response, NextFunction } from 'express'; import jwt from 'jsonwebtoken'; -import { ApiError } from '../lib/api-error'; +import { ApiError } from '@/src/lib/api-error' // Extend the Request interface to include user property declare global { diff --git a/apps/backend/src/middleware/staff-auth.ts b/apps/backend/src/middleware/staff-auth.ts index 471b172..2215f5d 100644 --- a/apps/backend/src/middleware/staff-auth.ts +++ b/apps/backend/src/middleware/staff-auth.ts @@ -1,9 +1,9 @@ import { Request, Response, NextFunction } from 'express'; import jwt from 'jsonwebtoken'; -import { db } from '../db/db_index'; -import { staffUsers } from '../db/schema'; +import { db } from '@/src/db/db_index' +import { staffUsers } from '@/src/db/schema' import { eq } from 'drizzle-orm'; -import { ApiError } from '../lib/api-error'; +import { ApiError } from '@/src/lib/api-error' // Extend Request interface to include staffUser declare global { diff --git a/apps/backend/src/services/user/order-service.ts b/apps/backend/src/services/user/order-service.ts index 22a54c9..8b2df28 100644 --- a/apps/backend/src/services/user/order-service.ts +++ b/apps/backend/src/services/user/order-service.ts @@ -1,4 +1,4 @@ -import { db } from '../../db/db_index' +import { db } from '@/src/db/db_index' import { orders, orderItems, @@ -13,7 +13,7 @@ import { refunds, units, userDetails, -} from '../../db/schema' +} from '@/src/db/schema' import { eq, and, inArray, desc, gte } from 'drizzle-orm' // ============ User/Auth Queries ============ diff --git a/apps/backend/src/services/user/product-service.ts b/apps/backend/src/services/user/product-service.ts index 77f62fa..0f214d9 100644 --- a/apps/backend/src/services/user/product-service.ts +++ b/apps/backend/src/services/user/product-service.ts @@ -1,5 +1,5 @@ -import { db } from '../../db/db_index' -import { productInfo, units, productSlots, deliverySlotInfo, specialDeals, storeInfo, productReviews, users } from '../../db/schema' +import { db } from '@/src/db/db_index' +import { productInfo, units, productSlots, deliverySlotInfo, specialDeals, storeInfo, productReviews, users } from '@/src/db/schema' import { eq, and, gt, sql, desc } from 'drizzle-orm' /** diff --git a/apps/backend/src/stores/banner-store.ts b/apps/backend/src/stores/banner-store.ts index 3d13523..7fbd6f1 100644 --- a/apps/backend/src/stores/banner-store.ts +++ b/apps/backend/src/stores/banner-store.ts @@ -1,9 +1,13 @@ -// import redisClient from './redis-client'; -import redisClient from 'src/lib/redis-client'; -import { db } from '../db/db_index'; -import { homeBanners } from '../db/schema'; +// import redisClient from '@/src/stores/redis-client'; +import redisClient from '@/src/lib/redis-client'; +import { db } from '@/src/db/db_index' +import { homeBanners } from '@/src/db/schema' import { isNotNull, asc } from 'drizzle-orm'; -import { scaffoldAssetUrl } from 'src/lib/s3-client'; +import { scaffoldAssetUrl } from '@/src/lib/s3-client'; + + + + // Banner Type (matches getBanners return) interface Banner { diff --git a/apps/backend/src/stores/product-store.ts b/apps/backend/src/stores/product-store.ts index 6f845f4..d4cf3a2 100644 --- a/apps/backend/src/stores/product-store.ts +++ b/apps/backend/src/stores/product-store.ts @@ -1,9 +1,9 @@ -// import redisClient from './redis-client'; -import redisClient from 'src/lib/redis-client'; -import { db } from '../db/db_index'; -import { productInfo, units, productSlots, deliverySlotInfo, specialDeals, storeInfo, productTags, productTagInfo } from '../db/schema'; +// import redisClient from '@/src/stores/redis-client'; +import redisClient from '@/src/lib/redis-client'; +import { db } from '@/src/db/db_index' +import { productInfo, units, productSlots, deliverySlotInfo, specialDeals, storeInfo, productTags, productTagInfo } from '@/src/db/schema' import { eq, and, gt, sql } from 'drizzle-orm'; -import { generateSignedUrlsFromS3Urls, scaffoldAssetUrl } from 'src/lib/s3-client'; +import { generateSignedUrlsFromS3Urls, scaffoldAssetUrl } from '@/src/lib/s3-client'; // Uniform Product Type (matches getProductDetails return) interface Product { diff --git a/apps/backend/src/stores/product-tag-store.ts b/apps/backend/src/stores/product-tag-store.ts index 33a7d72..f6a3175 100644 --- a/apps/backend/src/stores/product-tag-store.ts +++ b/apps/backend/src/stores/product-tag-store.ts @@ -1,9 +1,9 @@ -// import redisClient from './redis-client'; -import redisClient from 'src/lib/redis-client'; -import { db } from '../db/db_index'; -import { productTagInfo, productTags } from '../db/schema'; +// import redisClient from '@/src/stores/redis-client'; +import redisClient from '@/src/lib/redis-client'; +import { db } from '@/src/db/db_index' +import { productTagInfo, productTags } from '@/src/db/schema' import { eq, inArray } from 'drizzle-orm'; -import { generateSignedUrlFromS3Url } from 'src/lib/s3-client'; +import { generateSignedUrlFromS3Url } from '@/src/lib/s3-client'; // Tag Type (matches getDashboardTags return) interface Tag { @@ -168,4 +168,4 @@ export async function getTagsByStoreId(storeId: number): Promise { console.error(`Error getting tags for store ${storeId}:`, error); return []; } -} \ No newline at end of file +} diff --git a/apps/backend/src/stores/slot-store.ts b/apps/backend/src/stores/slot-store.ts index 36e897c..3a3ed68 100644 --- a/apps/backend/src/stores/slot-store.ts +++ b/apps/backend/src/stores/slot-store.ts @@ -1,8 +1,8 @@ -import redisClient from 'src/lib/redis-client'; -import { db } from '../db/db_index'; -import { deliverySlotInfo, productSlots, productInfo, units } from '../db/schema'; +import redisClient from '@/src/lib/redis-client'; +import { db } from '@/src/db/db_index' +import { deliverySlotInfo, productSlots, productInfo, units } from '@/src/db/schema' import { eq, and, gt, asc } from 'drizzle-orm'; -import { generateSignedUrlsFromS3Urls, scaffoldAssetUrl } from 'src/lib/s3-client'; +import { generateSignedUrlsFromS3Urls, scaffoldAssetUrl } from '@/src/lib/s3-client'; import dayjs from 'dayjs'; // Define the structure for slot with products diff --git a/apps/backend/src/stores/store-initializer.ts b/apps/backend/src/stores/store-initializer.ts index 19210c0..bb414f8 100644 --- a/apps/backend/src/stores/store-initializer.ts +++ b/apps/backend/src/stores/store-initializer.ts @@ -1,9 +1,9 @@ -import roleManager from '../lib/roles-manager'; -import { computeConstants } from '../lib/const-store'; -import { initializeProducts } from './product-store'; -import { initializeProductTagStore } from './product-tag-store'; -import { initializeSlotStore } from './slot-store'; -import { initializeBannerStore } from './banner-store'; +import roleManager from '@/src/lib/roles-manager' +import { computeConstants } from '@/src/lib/const-store' +import { initializeProducts } from '@/src/stores/product-store' +import { initializeProductTagStore } from '@/src/stores/product-tag-store' +import { initializeSlotStore } from '@/src/stores/slot-store' +import { initializeBannerStore } from '@/src/stores/banner-store' /** * Initialize all application stores diff --git a/apps/backend/src/stores/user-negativity-store.ts b/apps/backend/src/stores/user-negativity-store.ts index d1285b7..d518435 100644 --- a/apps/backend/src/stores/user-negativity-store.ts +++ b/apps/backend/src/stores/user-negativity-store.ts @@ -1,6 +1,6 @@ -import redisClient from 'src/lib/redis-client'; -import { db } from '../db/db_index'; -import { userIncidents } from '../db/schema'; +import redisClient from '@/src/lib/redis-client'; +import { db } from '@/src/db/db_index' +import { userIncidents } from '@/src/db/schema' import { eq, sum } from 'drizzle-orm'; export async function initializeUserNegativityStore(): Promise { diff --git a/apps/backend/src/trpc/admin-apis/admin-trpc-index.ts b/apps/backend/src/trpc/admin-apis/admin-trpc-index.ts deleted file mode 100644 index a2e0571..0000000 --- a/apps/backend/src/trpc/admin-apis/admin-trpc-index.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { router } from '../trpc-index'; -import { complaintRouter } from './complaint'; -import { couponRouter } from './coupon'; -import { cancelledOrdersRouter } from './cancelled-orders'; -import { orderRouter } from './order'; -import { vendorSnippetsRouter } from './vendor-snippets'; -import { slotsRouter } from './slots'; -import { productRouter } from './product'; -import { staffUserRouter } from './staff-user'; -import { storeRouter } from './store'; -import { adminPaymentsRouter } from './payments'; -import addressRouter from './address'; -import { bannerRouter } from './banner'; -import { userRouter } from './user'; -import { constRouter } from './const'; - -export const adminRouter = router({ - complaint: complaintRouter, - coupon: couponRouter, - cancelledOrders: cancelledOrdersRouter, - order: orderRouter, - vendorSnippets: vendorSnippetsRouter, - slots: slotsRouter, - product: productRouter, - staffUser: staffUserRouter, - store: storeRouter, - payments: adminPaymentsRouter, - address: addressRouter, - banner: bannerRouter, - user: userRouter, - const: constRouter, -}); - -export type AdminRouter = typeof adminRouter; \ No newline at end of file diff --git a/apps/backend/src/trpc/admin-apis/address.ts b/apps/backend/src/trpc/apis/admin-apis/apis/address.ts similarity index 86% rename from apps/backend/src/trpc/admin-apis/address.ts rename to apps/backend/src/trpc/apis/admin-apis/apis/address.ts index 32f753a..019b895 100644 --- a/apps/backend/src/trpc/admin-apis/address.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/address.ts @@ -1,8 +1,8 @@ import { z } from 'zod'; -import { addressZones, addressAreas } from '../../db/schema'; +import { addressZones, addressAreas } from '@/src/db/schema' import { eq, desc } from 'drizzle-orm'; -import { db } from '../../db/db_index'; -import { router,protectedProcedure } from '../trpc-index'; +import { db } from '@/src/db/db_index' +import { router,protectedProcedure } from '@/src/trpc/trpc-index' const addressRouter = router({ getZones: protectedProcedure.query(async () => { diff --git a/apps/backend/src/trpc/apis/admin-apis/apis/admin-trpc-index.ts b/apps/backend/src/trpc/apis/admin-apis/apis/admin-trpc-index.ts new file mode 100644 index 0000000..3af0292 --- /dev/null +++ b/apps/backend/src/trpc/apis/admin-apis/apis/admin-trpc-index.ts @@ -0,0 +1,35 @@ +// import { router } from '@/src/trpc/trpc-index'; +import { router } from '@/src/trpc/trpc-index' +import { complaintRouter } from '@/src/trpc/apis/admin-apis/apis/complaint' +import { couponRouter } from '@/src/trpc/apis/admin-apis/apis/coupon' +import { cancelledOrdersRouter } from '@/src/trpc/apis/admin-apis/apis/cancelled-orders' +import { orderRouter } from '@/src/trpc/apis/admin-apis/apis/order' +import { vendorSnippetsRouter } from '@/src/trpc/apis/admin-apis/apis/vendor-snippets' +import { slotsRouter } from '@/src/trpc/apis/admin-apis/apis/slots' +import { productRouter } from '@/src/trpc/apis/admin-apis/apis/product' +import { staffUserRouter } from '@/src/trpc/apis/admin-apis/apis/staff-user' +import { storeRouter } from '@/src/trpc/apis/admin-apis/apis/store' +import { adminPaymentsRouter } from '@/src/trpc/apis/admin-apis/apis/payments' +import addressRouter from '@/src/trpc/apis/admin-apis/apis/address' +import { bannerRouter } from '@/src/trpc/apis/admin-apis/apis/banner' +import { userRouter } from '@/src/trpc/apis/admin-apis/apis/user' +import { constRouter } from '@/src/trpc/apis/admin-apis/apis/const' + +export const adminRouter = router({ + complaint: complaintRouter, + coupon: couponRouter, + cancelledOrders: cancelledOrdersRouter, + order: orderRouter, + vendorSnippets: vendorSnippetsRouter, + slots: slotsRouter, + product: productRouter, + staffUser: staffUserRouter, + store: storeRouter, + payments: adminPaymentsRouter, + address: addressRouter, + banner: bannerRouter, + user: userRouter, + const: constRouter, +}); + +export type AdminRouter = typeof adminRouter; diff --git a/apps/backend/src/trpc/admin-apis/banner.ts b/apps/backend/src/trpc/apis/admin-apis/apis/banner.ts similarity index 94% rename from apps/backend/src/trpc/admin-apis/banner.ts rename to apps/backend/src/trpc/apis/admin-apis/apis/banner.ts index 4850ebc..f812430 100644 --- a/apps/backend/src/trpc/admin-apis/banner.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/banner.ts @@ -1,11 +1,11 @@ import { z } from 'zod'; -import { db } from '../../db/db_index'; -import { homeBanners } from '../../db/schema'; +import { db } from '@/src/db/db_index' +import { homeBanners } from '@/src/db/schema' import { eq, and, desc, sql } from 'drizzle-orm'; -import { protectedProcedure, router } from '../trpc-index'; -import { extractKeyFromPresignedUrl, generateSignedUrlFromS3Url } from '../../lib/s3-client'; -import { ApiError } from 'src/lib/api-error'; -import { initializeAllStores } from '../../stores/store-initializer'; +import { protectedProcedure, router } from '@/src/trpc/trpc-index' +import { extractKeyFromPresignedUrl, generateSignedUrlFromS3Url } from '@/src/lib/s3-client' +import { ApiError } from '@/src/lib/api-error'; +import { initializeAllStores } from '@/src/stores/store-initializer' export const bannerRouter = router({ // Get all banners @@ -171,4 +171,4 @@ export const bannerRouter = router({ return { success: true }; }), -}); \ No newline at end of file +}); diff --git a/apps/backend/src/trpc/admin-apis/cancelled-orders.ts b/apps/backend/src/trpc/apis/admin-apis/apis/cancelled-orders.ts similarity index 97% rename from apps/backend/src/trpc/admin-apis/cancelled-orders.ts rename to apps/backend/src/trpc/apis/admin-apis/apis/cancelled-orders.ts index 99bcbfd..14c0b26 100644 --- a/apps/backend/src/trpc/admin-apis/cancelled-orders.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/cancelled-orders.ts @@ -1,7 +1,7 @@ -import { router, protectedProcedure } from '../trpc-index'; +import { router, protectedProcedure } from '@/src/trpc/trpc-index' import { z } from 'zod'; -import { db } from '../../db/db_index'; -import { orders, orderStatus, users, addresses, orderItems, productInfo, units, refunds } from '../../db/schema'; +import { db } from '@/src/db/db_index' +import { orders, orderStatus, users, addresses, orderItems, productInfo, units, refunds } from '@/src/db/schema' import { eq, desc } from 'drizzle-orm'; const updateCancellationReviewSchema = z.object({ diff --git a/apps/backend/src/trpc/admin-apis/complaint.ts b/apps/backend/src/trpc/apis/admin-apis/apis/complaint.ts similarity index 91% rename from apps/backend/src/trpc/admin-apis/complaint.ts rename to apps/backend/src/trpc/apis/admin-apis/apis/complaint.ts index ee3fde4..17d65d4 100644 --- a/apps/backend/src/trpc/admin-apis/complaint.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/complaint.ts @@ -1,9 +1,9 @@ -import { router, protectedProcedure } from '../trpc-index'; +import { router, protectedProcedure } from '@/src/trpc/trpc-index' import { z } from 'zod'; -import { db } from '../../db/db_index'; -import { complaints, users } from '../../db/schema'; +import { db } from '@/src/db/db_index' +import { complaints, users } from '@/src/db/schema' import { eq, desc, lt, and } from 'drizzle-orm'; -import { generateSignedUrlsFromS3Urls } from '../../lib/s3-client'; +import { generateSignedUrlsFromS3Urls } from '@/src/lib/s3-client' export const complaintRouter = router({ getAll: protectedProcedure diff --git a/apps/backend/src/trpc/admin-apis/const.ts b/apps/backend/src/trpc/apis/admin-apis/apis/const.ts similarity index 84% rename from apps/backend/src/trpc/admin-apis/const.ts rename to apps/backend/src/trpc/apis/admin-apis/apis/const.ts index b9f60b4..a426087 100644 --- a/apps/backend/src/trpc/admin-apis/const.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/const.ts @@ -1,9 +1,9 @@ -import { router, protectedProcedure } from '../trpc-index'; +import { router, protectedProcedure } from '@/src/trpc/trpc-index' import { z } from 'zod'; -import { db } from '../../db/db_index'; -import { keyValStore } from '../../db/schema'; -import { computeConstants } from '../../lib/const-store'; -import { CONST_KEYS } from '../../lib/const-keys'; +import { db } from '@/src/db/db_index' +import { keyValStore } from '@/src/db/schema' +import { computeConstants } from '@/src/lib/const-store' +import { CONST_KEYS } from '@/src/lib/const-keys' export const constRouter = router({ getConstants: protectedProcedure diff --git a/apps/backend/src/trpc/admin-apis/coupon.ts b/apps/backend/src/trpc/apis/admin-apis/apis/coupon.ts similarity index 99% rename from apps/backend/src/trpc/admin-apis/coupon.ts rename to apps/backend/src/trpc/apis/admin-apis/apis/coupon.ts index d659fde..4eb3017 100644 --- a/apps/backend/src/trpc/admin-apis/coupon.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/coupon.ts @@ -1,7 +1,7 @@ -import { router, protectedProcedure } from '../trpc-index'; +import { router, protectedProcedure } from '@/src/trpc/trpc-index' import { z } from 'zod'; -import { db } from '../../db/db_index'; -import { coupons, users, staffUsers, orders, couponApplicableUsers, couponApplicableProducts, orderStatus, reservedCoupons } from '../../db/schema'; +import { db } from '@/src/db/db_index' +import { coupons, users, staffUsers, orders, couponApplicableUsers, couponApplicableProducts, orderStatus, reservedCoupons } from '@/src/db/schema' import { eq, and, like, or, inArray, lt } from 'drizzle-orm'; import dayjs from 'dayjs'; diff --git a/apps/backend/src/trpc/admin-apis/order.ts b/apps/backend/src/trpc/apis/admin-apis/apis/order.ts similarity index 98% rename from apps/backend/src/trpc/admin-apis/order.ts rename to apps/backend/src/trpc/apis/admin-apis/apis/order.ts index ba7e1f1..875018e 100644 --- a/apps/backend/src/trpc/admin-apis/order.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/order.ts @@ -1,6 +1,6 @@ -import { router, protectedProcedure } from "../trpc-index"; +import { router, protectedProcedure } from "@/src/trpc/trpc-index" import { z } from "zod"; -import { db } from "../../db/db_index"; +import { db } from "@/src/db/db_index" import { orders, orderItems, @@ -10,17 +10,17 @@ import { refunds, coupons, couponUsage, -} from "../../db/schema"; +} from "@/src/db/schema"; import { eq, and, gte, lt, desc, SQL, inArray } from "drizzle-orm"; import dayjs from "dayjs"; import utc from "dayjs/plugin/utc"; -import { ApiError } from "../../lib/api-error"; +import { ApiError } from "@/src/lib/api-error" import { sendOrderPackagedNotification, sendOrderDeliveredNotification, -} from "../../lib/notif-job"; -import { publishCancellation } from "../../lib/post-order-handler"; -import { getMultipleUserNegativityScores } from "../../stores/user-negativity-store"; +} from "@/src/lib/notif-job"; +import { publishCancellation } from "@/src/lib/post-order-handler" +import { getMultipleUserNegativityScores } from "@/src/stores/user-negativity-store" const updateOrderNotesSchema = z.object({ orderId: z.number(), diff --git a/apps/backend/src/trpc/admin-apis/payments.ts b/apps/backend/src/trpc/apis/admin-apis/apis/payments.ts similarity index 94% rename from apps/backend/src/trpc/admin-apis/payments.ts rename to apps/backend/src/trpc/apis/admin-apis/apis/payments.ts index 23ca16e..51de5fb 100644 --- a/apps/backend/src/trpc/admin-apis/payments.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/payments.ts @@ -1,15 +1,15 @@ -import { router, protectedProcedure } from "../trpc-index"; +import { router, protectedProcedure } from "@/src/trpc/trpc-index" import { z } from "zod"; -import { db } from "../../db/db_index"; +import { db } from "@/src/db/db_index" import { orders, orderStatus, payments, refunds, -} from "../../db/schema"; +} from "@/src/db/schema"; import { and, eq } from "drizzle-orm"; -import { ApiError } from "../../lib/api-error"; -import { RazorpayPaymentService } from "../../lib/payments-utils"; +import { ApiError } from "@/src/lib/api-error" +import { RazorpayPaymentService } from "@/src/lib/payments-utils" const initiateRefundSchema = z .object({ diff --git a/apps/backend/src/trpc/admin-apis/product.ts b/apps/backend/src/trpc/apis/admin-apis/apis/product.ts similarity index 96% rename from apps/backend/src/trpc/admin-apis/product.ts rename to apps/backend/src/trpc/apis/admin-apis/apis/product.ts index 93d87e0..df77159 100644 --- a/apps/backend/src/trpc/admin-apis/product.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/product.ts @@ -1,13 +1,13 @@ -import { router, protectedProcedure } from '../trpc-index'; +import { router, protectedProcedure } from '@/src/trpc/trpc-index' import { z } from 'zod'; -import { db } from '../../db/db_index'; -import { productInfo, units, specialDeals, productSlots, productTags, productReviews, users, productGroupInfo, productGroupMembership } from '../../db/schema'; +import { db } from '@/src/db/db_index' +import { productInfo, units, specialDeals, productSlots, productTags, productReviews, users, productGroupInfo, productGroupMembership } from '@/src/db/schema' import { eq, and, inArray, desc, sql } from 'drizzle-orm'; -import { ApiError } from '../../lib/api-error'; -import { imageUploadS3, generateSignedUrlsFromS3Urls, getOriginalUrlFromSignedUrl, claimUploadUrl } from '../../lib/s3-client'; -import { deleteS3Image } from '../../lib/delete-image'; -import type { SpecialDeal } from '../../db/types'; -import { initializeAllStores } from '../../stores/store-initializer'; +import { ApiError } from '@/src/lib/api-error' +import { imageUploadS3, generateSignedUrlsFromS3Urls, getOriginalUrlFromSignedUrl, claimUploadUrl } from '@/src/lib/s3-client' +import { deleteS3Image } from '@/src/lib/delete-image' +import type { SpecialDeal } from '@/src/db/types' +import { initializeAllStores } from '@/src/stores/store-initializer' type CreateDeal = { quantity: number; @@ -335,7 +335,7 @@ export const productRouter = router({ // Claim upload URLs if (uploadUrls && uploadUrls.length > 0) { - // const { claimUploadUrl } = await import('../../lib/s3-client'); + // const { claimUploadUrl } = await import('@/src/lib/s3-client'); await Promise.all(uploadUrls.map(url => claimUploadUrl(url))); } @@ -531,4 +531,4 @@ export const productRouter = router({ updatedCount: updates.length, }; }), - }); \ No newline at end of file + }); diff --git a/apps/backend/src/trpc/admin-apis/slots.ts b/apps/backend/src/trpc/apis/admin-apis/apis/slots.ts similarity index 97% rename from apps/backend/src/trpc/admin-apis/slots.ts rename to apps/backend/src/trpc/apis/admin-apis/apis/slots.ts index 4f35401..4e9ef18 100644 --- a/apps/backend/src/trpc/admin-apis/slots.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/slots.ts @@ -1,14 +1,14 @@ -import { router, protectedProcedure } from "../trpc-index"; +import { router, protectedProcedure } from "@/src/trpc/trpc-index" import { TRPCError } from "@trpc/server"; import { z } from "zod"; -import { db } from "../../db/db_index"; -import { deliverySlotInfo, productSlots, productInfo, vendorSnippets, productGroupInfo } from "../../db/schema"; +import { db } from "@/src/db/db_index" +import { deliverySlotInfo, productSlots, productInfo, vendorSnippets, productGroupInfo } from "@/src/db/schema" import { eq, inArray, and, desc } from "drizzle-orm"; -import { ApiError } from "../../lib/api-error"; -import { appUrl } from "../../lib/env-exporter"; -import redisClient from "../../lib/redis-client"; -import { getSlotSequenceKey } from "../../lib/redisKeyGetters"; -import { initializeAllStores } from '../../stores/store-initializer'; +import { ApiError } from "@/src/lib/api-error" +import { appUrl } from "@/src/lib/env-exporter" +import redisClient from "@/src/lib/redis-client" +import { getSlotSequenceKey } from "@/src/lib/redisKeyGetters" +import { initializeAllStores } from '@/src/stores/store-initializer' interface CachedDeliverySequence { [userId: string]: number[]; diff --git a/apps/backend/src/trpc/admin-apis/staff-user.ts b/apps/backend/src/trpc/apis/admin-apis/apis/staff-user.ts similarity index 97% rename from apps/backend/src/trpc/admin-apis/staff-user.ts rename to apps/backend/src/trpc/apis/admin-apis/apis/staff-user.ts index c1d0bfd..0a62c21 100644 --- a/apps/backend/src/trpc/admin-apis/staff-user.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/staff-user.ts @@ -1,11 +1,11 @@ -import { router, publicProcedure, protectedProcedure } from '../trpc-index'; +import { router, publicProcedure, protectedProcedure } from '@/src/trpc/trpc-index' import { z } from 'zod'; -import { db } from '../../db/db_index'; -import { staffUsers, staffRoles, users, userDetails, orders } from '../../db/schema'; +import { db } from '@/src/db/db_index' +import { staffUsers, staffRoles, users, userDetails, orders } from '@/src/db/schema' import { eq, or, ilike, and, lt, desc } from 'drizzle-orm'; import bcrypt from 'bcryptjs'; import jwt from 'jsonwebtoken'; -import { ApiError } from '../../lib/api-error'; +import { ApiError } from '@/src/lib/api-error' export const staffUserRouter = router({ login: publicProcedure diff --git a/apps/backend/src/trpc/admin-apis/store.ts b/apps/backend/src/trpc/apis/admin-apis/apis/store.ts similarity index 94% rename from apps/backend/src/trpc/admin-apis/store.ts rename to apps/backend/src/trpc/apis/admin-apis/apis/store.ts index 61f7a3a..6d1cee2 100644 --- a/apps/backend/src/trpc/admin-apis/store.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/store.ts @@ -1,12 +1,12 @@ -import { router, protectedProcedure } from '../trpc-index'; +import { router, protectedProcedure } from '@/src/trpc/trpc-index' import { z } from 'zod'; -import { db } from '../../db/db_index'; -import { storeInfo, productInfo } from '../../db/schema'; +import { db } from '@/src/db/db_index' +import { storeInfo, productInfo } from '@/src/db/schema' import { eq, inArray } from 'drizzle-orm'; -import { ApiError } from '../../lib/api-error'; - import { extractKeyFromPresignedUrl, deleteImageUtil, generateSignedUrlFromS3Url } from '../../lib/s3-client'; +import { ApiError } from '@/src/lib/api-error' + import { extractKeyFromPresignedUrl, deleteImageUtil, generateSignedUrlFromS3Url } from '@/src/lib/s3-client' import { getSignedUrl } from '@aws-sdk/s3-request-presigner'; -import { initializeAllStores } from '../../stores/store-initializer'; +import { initializeAllStores } from '@/src/stores/store-initializer' export const storeRouter = router({ getStores: protectedProcedure diff --git a/apps/backend/src/trpc/admin-apis/user.ts b/apps/backend/src/trpc/apis/admin-apis/apis/user.ts similarity index 97% rename from apps/backend/src/trpc/admin-apis/user.ts rename to apps/backend/src/trpc/apis/admin-apis/apis/user.ts index 77141ce..2b176b2 100644 --- a/apps/backend/src/trpc/admin-apis/user.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/user.ts @@ -1,11 +1,11 @@ -import { protectedProcedure } from '../trpc-index'; +import { protectedProcedure } from '@/src/trpc/trpc-index'; import { z } from 'zod'; -import { db } from '../../db/db_index'; -import { users, complaints, orders, orderItems, notifCreds, unloggedUserTokens, userDetails, userIncidents } from '../../db/schema'; +import { db } from '@/src/db/db_index'; +import { users, complaints, orders, orderItems, notifCreds, unloggedUserTokens, userDetails, userIncidents } from '@/src/db/schema'; import { eq, sql, desc, asc, count, max, inArray } from 'drizzle-orm'; -import { ApiError } from '../../lib/api-error'; -import { notificationQueue } from '../../lib/notif-job'; -import { recomputeUserNegativityScore } from '../../stores/user-negativity-store'; +import { ApiError } from '@/src/lib/api-error'; +import { notificationQueue } from '@/src/lib/notif-job'; +import { recomputeUserNegativityScore } from '@/src/stores/user-negativity-store'; async function createUserByMobile(mobile: string): Promise { // Clean mobile number (remove non-digits) @@ -212,7 +212,7 @@ export const userRouter = { let orderStatuses: { orderId: number; isDelivered: boolean; isCancelled: boolean }[] = []; if (orderIds.length > 0) { - const { orderStatus } = await import('../../db/schema'); + const { orderStatus } = await import('@/src/db/schema'); orderStatuses = await db .select({ orderId: orderStatus.orderId, diff --git a/apps/backend/src/trpc/admin-apis/vendor-snippets.ts b/apps/backend/src/trpc/apis/admin-apis/apis/vendor-snippets.ts similarity index 98% rename from apps/backend/src/trpc/admin-apis/vendor-snippets.ts rename to apps/backend/src/trpc/apis/admin-apis/apis/vendor-snippets.ts index 80fe66f..4a307d3 100644 --- a/apps/backend/src/trpc/admin-apis/vendor-snippets.ts +++ b/apps/backend/src/trpc/apis/admin-apis/apis/vendor-snippets.ts @@ -1,10 +1,10 @@ -import { router, publicProcedure, protectedProcedure } from '../trpc-index'; +import { router, publicProcedure, protectedProcedure } from '@/src/trpc/trpc-index' import { z } from 'zod'; import dayjs from 'dayjs'; -import { db } from '../../db/db_index'; -import { vendorSnippets, deliverySlotInfo, productInfo, orders, orderItems, users, orderStatus } from '../../db/schema'; +import { db } from '@/src/db/db_index' +import { vendorSnippets, deliverySlotInfo, productInfo, orders, orderItems, users, orderStatus } from '@/src/db/schema' import { eq, and, inArray, isNotNull, gt, sql, asc, ne } from 'drizzle-orm'; -import { appUrl } from '../../lib/env-exporter'; +import { appUrl } from '@/src/lib/env-exporter' const createSnippetSchema = z.object({ snippetCode: z.string().min(1, "Snippet code is required"), diff --git a/apps/backend/src/trpc/apis/admin-apis/dataAccessors/demo.txt b/apps/backend/src/trpc/apis/admin-apis/dataAccessors/demo.txt new file mode 100644 index 0000000..e69de29 diff --git a/apps/backend/src/trpc/common-apis/common-trpc-index.ts b/apps/backend/src/trpc/apis/common-apis/common-trpc-index.ts similarity index 88% rename from apps/backend/src/trpc/common-apis/common-trpc-index.ts rename to apps/backend/src/trpc/apis/common-apis/common-trpc-index.ts index 5891ab6..5be1569 100644 --- a/apps/backend/src/trpc/common-apis/common-trpc-index.ts +++ b/apps/backend/src/trpc/apis/common-apis/common-trpc-index.ts @@ -1,14 +1,14 @@ -import { router, publicProcedure, protectedProcedure } from '../trpc-index'; -import { commonRouter } from './common'; -import { db } from '../../db/db_index'; -import { keyValStore, productInfo, storeInfo } from '../../db/schema'; +import { router, publicProcedure, protectedProcedure } from '@/src/trpc/trpc-index' +import { commonRouter } from '@/src/trpc/apis/common-apis/common' +import { db } from '@/src/db/db_index' +import { keyValStore, productInfo, storeInfo } from '@/src/db/schema' import * as turf from '@turf/turf'; import { z } from 'zod'; -import { mbnrGeoJson } from '../../lib/mbnr-geojson'; -import { generateUploadUrl } from '../../lib/s3-client'; -import { ApiError } from '../../lib/api-error'; -import { getAllConstValues } from '../../lib/const-store'; -import { CONST_KEYS } from '../../lib/const-keys'; +import { mbnrGeoJson } from '@/src/lib/mbnr-geojson' +import { generateUploadUrl } from '@/src/lib/s3-client' +import { ApiError } from '@/src/lib/api-error' +import { getAllConstValues } from '@/src/lib/const-store' +import { CONST_KEYS } from '@/src/lib/const-keys' const polygon = turf.polygon(mbnrGeoJson.features[0].geometry.coordinates); diff --git a/apps/backend/src/trpc/common-apis/common.ts b/apps/backend/src/trpc/apis/common-apis/common.ts similarity index 92% rename from apps/backend/src/trpc/common-apis/common.ts rename to apps/backend/src/trpc/apis/common-apis/common.ts index f7650a7..9b63dd3 100644 --- a/apps/backend/src/trpc/common-apis/common.ts +++ b/apps/backend/src/trpc/apis/common-apis/common.ts @@ -1,11 +1,11 @@ -import { router, publicProcedure } from '../trpc-index'; -import { db } from '../../db/db_index'; -import { productInfo, units, productSlots, deliverySlotInfo, storeInfo, productTags, productTagInfo } from '../../db/schema'; +import { router, publicProcedure } from '@/src/trpc/trpc-index' +import { db } from '@/src/db/db_index' +import { productInfo, units, productSlots, deliverySlotInfo, storeInfo, productTags, productTagInfo } from '@/src/db/schema' import { eq, gt, and, sql, inArray } from 'drizzle-orm'; -import { generateSignedUrlsFromS3Urls, generateSignedUrlFromS3Url } from '../../lib/s3-client'; +import { generateSignedUrlsFromS3Urls, generateSignedUrlFromS3Url } from '@/src/lib/s3-client' import { z } from 'zod'; -import { getAllProducts as getAllProductsFromCache } from '../../stores/product-store'; -import { getDashboardTags as getDashboardTagsFromCache } from '../../stores/product-tag-store'; +import { getAllProducts as getAllProductsFromCache } from '@/src/stores/product-store' +import { getDashboardTags as getDashboardTagsFromCache } from '@/src/stores/product-tag-store' import Fuse from 'fuse.js'; export const getNextDeliveryDate = async (productId: number): Promise => { diff --git a/apps/backend/src/trpc/user-apis/address.ts b/apps/backend/src/trpc/apis/user-apis/apis/address.ts similarity index 97% rename from apps/backend/src/trpc/user-apis/address.ts rename to apps/backend/src/trpc/apis/user-apis/apis/address.ts index f45c02f..0022c7e 100644 --- a/apps/backend/src/trpc/user-apis/address.ts +++ b/apps/backend/src/trpc/apis/user-apis/apis/address.ts @@ -1,10 +1,10 @@ -import { router, protectedProcedure } from '../trpc-index'; +import { router, protectedProcedure } from '@/src/trpc/trpc-index'; import { z } from 'zod'; -import { db } from '../../db/db_index'; -import { addresses, orders, orderStatus, deliverySlotInfo } from '../../db/schema'; +import { db } from '@/src/db/db_index'; +import { addresses, orders, orderStatus, deliverySlotInfo } from '@/src/db/schema'; import { eq, and, gte } from 'drizzle-orm'; import dayjs from 'dayjs'; -import { extractCoordsFromRedirectUrl } from '../../lib/license-util'; +import { extractCoordsFromRedirectUrl } from '@/src/lib/license-util'; export const addressRouter = router({ getDefaultAddress: protectedProcedure @@ -191,4 +191,4 @@ export const addressRouter = router({ return { success: true, message: 'Address deleted successfully' }; }), -}); \ No newline at end of file +}); diff --git a/apps/backend/src/trpc/user-apis/auth.ts b/apps/backend/src/trpc/apis/user-apis/apis/auth.ts similarity index 96% rename from apps/backend/src/trpc/user-apis/auth.ts rename to apps/backend/src/trpc/apis/user-apis/apis/auth.ts index 2a0dc62..56e9a3c 100644 --- a/apps/backend/src/trpc/user-apis/auth.ts +++ b/apps/backend/src/trpc/apis/user-apis/apis/auth.ts @@ -1,20 +1,20 @@ -import { router, publicProcedure, protectedProcedure } from '../trpc-index'; +import { router, publicProcedure, protectedProcedure } from '@/src/trpc/trpc-index'; import { z } from 'zod'; import bcrypt from 'bcryptjs'; import jwt from 'jsonwebtoken'; import { eq } from 'drizzle-orm'; -import { db } from '../../db/db_index'; +import { db } from '@/src/db/db_index'; import { users, userCreds, userDetails, addresses, cartItems, complaints, couponApplicableUsers, couponUsage, notifCreds, notifications, orderItems, orderStatus, orders, payments, refunds, productReviews, reservedCoupons -} from '../../db/schema'; -import { generateSignedUrlFromS3Url } from '../../lib/s3-client'; -import { ApiError } from '../../lib/api-error'; -import catchAsync from '../../lib/catch-async'; -import { jwtSecret } from 'src/lib/env-exporter'; -import { sendOtp, verifyOtpUtil, getOtpCreds } from '../../lib/otp-utils'; +} from '@/src/db/schema'; +import { generateSignedUrlFromS3Url } from '@/src/lib/s3-client'; +import { ApiError } from '@/src/lib/api-error'; +import catchAsync from '@/src/lib/catch-async'; +import { jwtSecret } from '@/src/lib/env-exporter'; +import { sendOtp, verifyOtpUtil, getOtpCreds } from '@/src/lib/otp-utils'; interface LoginRequest { identifier: string; // email or mobile @@ -444,4 +444,4 @@ export const authRouter = router({ return { success: true, message: 'Account deleted successfully' }; }), -}); \ No newline at end of file +}); diff --git a/apps/backend/src/trpc/user-apis/banners.ts b/apps/backend/src/trpc/apis/user-apis/apis/banners.ts similarity index 82% rename from apps/backend/src/trpc/user-apis/banners.ts rename to apps/backend/src/trpc/apis/user-apis/apis/banners.ts index 9123859..6f4a53b 100644 --- a/apps/backend/src/trpc/user-apis/banners.ts +++ b/apps/backend/src/trpc/apis/user-apis/apis/banners.ts @@ -1,7 +1,7 @@ -import { db } from '../../db/db_index'; -import { homeBanners } from '../../db/schema'; -import { publicProcedure, router } from '../trpc-index'; -import { generateSignedUrlFromS3Url } from '../../lib/s3-client'; +import { db } from '@/src/db/db_index'; +import { homeBanners } from '@/src/db/schema'; +import { publicProcedure, router } from '@/src/trpc/trpc-index'; +import { generateSignedUrlFromS3Url } from '@/src/lib/s3-client'; import { isNotNull, asc } from 'drizzle-orm'; export const bannerRouter = router({ @@ -35,4 +35,4 @@ export const bannerRouter = router({ banners: bannersWithSignedUrls, }; }), -}); \ No newline at end of file +}); diff --git a/apps/backend/src/trpc/user-apis/cart.ts b/apps/backend/src/trpc/apis/user-apis/apis/cart.ts similarity index 96% rename from apps/backend/src/trpc/user-apis/cart.ts rename to apps/backend/src/trpc/apis/user-apis/apis/cart.ts index 196097b..a2495bc 100644 --- a/apps/backend/src/trpc/user-apis/cart.ts +++ b/apps/backend/src/trpc/apis/user-apis/apis/cart.ts @@ -1,11 +1,11 @@ -import { router, protectedProcedure, publicProcedure } from '../trpc-index'; +import { router, protectedProcedure, publicProcedure } from '@/src/trpc/trpc-index'; import { z } from 'zod'; -import { db } from '../../db/db_index'; -import { cartItems, productInfo, units, productSlots, deliverySlotInfo } from '../../db/schema'; +import { db } from '@/src/db/db_index'; +import { cartItems, productInfo, units, productSlots, deliverySlotInfo } from '@/src/db/schema'; import { eq, and, sql, inArray, gt } from 'drizzle-orm'; -import { ApiError } from '../../lib/api-error'; -import { generateSignedUrlsFromS3Urls, scaffoldAssetUrl } from '../../lib/s3-client'; -import { getProductSlots, getMultipleProductsSlots } from '../../stores/slot-store'; +import { ApiError } from '@/src/lib/api-error'; +import { generateSignedUrlsFromS3Urls, scaffoldAssetUrl } from '@/src/lib/s3-client'; +import { getProductSlots, getMultipleProductsSlots } from '@/src/stores/slot-store'; interface CartResponse { items: any[]; diff --git a/apps/backend/src/trpc/user-apis/complaint.ts b/apps/backend/src/trpc/apis/user-apis/apis/complaint.ts similarity index 91% rename from apps/backend/src/trpc/user-apis/complaint.ts rename to apps/backend/src/trpc/apis/user-apis/apis/complaint.ts index 284d748..08dae54 100644 --- a/apps/backend/src/trpc/user-apis/complaint.ts +++ b/apps/backend/src/trpc/apis/user-apis/apis/complaint.ts @@ -1,7 +1,7 @@ -import { router, protectedProcedure } from '../trpc-index'; +import { router, protectedProcedure } from '@/src/trpc/trpc-index'; import { z } from 'zod'; -import { db } from '../../db/db_index'; -import { complaints } from '../../db/schema'; +import { db } from '@/src/db/db_index'; +import { complaints } from '@/src/db/schema'; import { eq } from 'drizzle-orm'; export const complaintRouter = router({ @@ -60,4 +60,4 @@ export const complaintRouter = router({ return { success: true, message: 'Complaint raised successfully' }; }), -}); \ No newline at end of file +}); diff --git a/apps/backend/src/trpc/user-apis/coupon.ts b/apps/backend/src/trpc/apis/user-apis/apis/coupon.ts similarity index 97% rename from apps/backend/src/trpc/user-apis/coupon.ts rename to apps/backend/src/trpc/apis/user-apis/apis/coupon.ts index d3a5555..6eab804 100644 --- a/apps/backend/src/trpc/user-apis/coupon.ts +++ b/apps/backend/src/trpc/apis/user-apis/apis/coupon.ts @@ -1,11 +1,11 @@ -import { router, protectedProcedure } from '../trpc-index'; +import { router, protectedProcedure } from '@/src/trpc/trpc-index'; import { z } from 'zod'; -import { db } from '../../db/db_index'; -import { coupons, couponUsage, couponApplicableUsers, reservedCoupons, couponApplicableProducts } from '../../db/schema'; +import { db } from '@/src/db/db_index'; +import { coupons, couponUsage, couponApplicableUsers, reservedCoupons, couponApplicableProducts } from '@/src/db/schema'; import { eq, and, or, gt, isNull, sql } from 'drizzle-orm'; -import { ApiError } from 'src/lib/api-error'; +import { ApiError } from '@/src/lib/api-error'; -import { users } from '../../db/schema'; +import { users } from '@/src/db/schema'; type CouponWithRelations = typeof coupons.$inferSelect & { applicableUsers: (typeof couponApplicableUsers.$inferSelect & { user: typeof users.$inferSelect })[]; @@ -293,4 +293,4 @@ export const userCouponRouter = router({ return { success: true, coupon: couponResult }; }), -}); \ No newline at end of file +}); diff --git a/apps/backend/src/trpc/user-apis/file-upload.ts b/apps/backend/src/trpc/apis/user-apis/apis/file-upload.ts similarity index 87% rename from apps/backend/src/trpc/user-apis/file-upload.ts rename to apps/backend/src/trpc/apis/user-apis/apis/file-upload.ts index 1a94223..bacf1f7 100644 --- a/apps/backend/src/trpc/user-apis/file-upload.ts +++ b/apps/backend/src/trpc/apis/user-apis/apis/file-upload.ts @@ -1,7 +1,7 @@ -import { router, protectedProcedure } from '../trpc-index'; +import { router, protectedProcedure } from '@/src/trpc/trpc-index'; import { z } from 'zod'; -import { generateUploadUrl } from '../../lib/s3-client'; -import { ApiError } from '../../lib/api-error'; +import { generateUploadUrl } from '@/src/lib/s3-client'; +import { ApiError } from '@/src/lib/api-error'; export const fileUploadRouter = router({ generateUploadUrls: protectedProcedure @@ -52,4 +52,4 @@ export const fileUploadRouter = router({ }), }); -export type FileUploadRouter = typeof fileUploadRouter; \ No newline at end of file +export type FileUploadRouter = typeof fileUploadRouter; diff --git a/apps/backend/src/trpc/user-apis/order.ts b/apps/backend/src/trpc/apis/user-apis/apis/order.ts similarity index 97% rename from apps/backend/src/trpc/user-apis/order.ts rename to apps/backend/src/trpc/apis/user-apis/apis/order.ts index 3a4c5c1..8118683 100644 --- a/apps/backend/src/trpc/user-apis/order.ts +++ b/apps/backend/src/trpc/apis/user-apis/apis/order.ts @@ -1,6 +1,6 @@ -import { router, protectedProcedure } from "../trpc-index"; +import { router, protectedProcedure } from "@/src/trpc/trpc-index"; import { z } from "zod"; -import { db } from "../../db/db_index"; +import { db } from "@/src/db/db_index"; import { orders, orderItems, @@ -15,19 +15,19 @@ import { refunds, units, userDetails, -} from "../../db/schema"; +} from "@/src/db/schema"; import { eq, and, inArray, desc, gte, lte } from "drizzle-orm"; -import { scaffoldAssetUrl } from "../../lib/s3-client"; -import { ApiError } from "../../lib/api-error"; +import { scaffoldAssetUrl } from "@/src/lib/s3-client"; +import { ApiError } from "@/src/lib/api-error"; import { sendOrderPlacedNotification, sendOrderCancelledNotification, -} from "../../lib/notif-job"; -import { RazorpayPaymentService } from "../../lib/payments-utils"; -import { getNextDeliveryDate } from "../common-apis/common"; -import { CONST_KEYS, getConstant, getConstants } from "../../lib/const-store"; -import { publishFormattedOrder, publishCancellation } from "../../lib/post-order-handler"; -import { getSlotById } from "../../stores/slot-store"; +} from "@/src/lib/notif-job"; +import { RazorpayPaymentService } from "@/src/lib/payments-utils"; +import { getNextDeliveryDate } from "@/src/trpc/apis/common-apis/common"; +import { CONST_KEYS, getConstant, getConstants } from "@/src/lib/const-store"; +import { publishFormattedOrder, publishCancellation } from "@/src/lib/post-order-handler"; +import { getSlotById } from "@/src/stores/slot-store"; const validateAndGetCoupon = async ( diff --git a/apps/backend/src/trpc/user-apis/payments.ts b/apps/backend/src/trpc/apis/user-apis/apis/payments.ts similarity index 91% rename from apps/backend/src/trpc/user-apis/payments.ts rename to apps/backend/src/trpc/apis/user-apis/apis/payments.ts index 851f232..0adb0bd 100644 --- a/apps/backend/src/trpc/user-apis/payments.ts +++ b/apps/backend/src/trpc/apis/user-apis/apis/payments.ts @@ -1,14 +1,14 @@ -import { router, protectedProcedure } from '../trpc-index'; +import { router, protectedProcedure } from '@/src/trpc/trpc-index'; import { z } from 'zod'; -import { db } from '../../db/db_index'; -import { orders, payments, orderStatus } from '../../db/schema'; +import { db } from '@/src/db/db_index'; +import { orders, payments, orderStatus } from '@/src/db/schema'; import { eq } from 'drizzle-orm'; -import { ApiError } from '../../lib/api-error'; +import { ApiError } from '@/src/lib/api-error'; import crypto from 'crypto'; -import { razorpayId, razorpaySecret } from "../../lib/env-exporter"; -import { DiskPersistedSet } from "src/lib/disk-persisted-set"; -import { RazorpayPaymentService } from "../../lib/payments-utils"; +import { razorpayId, razorpaySecret } from "@/src/lib/env-exporter"; +import { DiskPersistedSet } from "@/src/lib/disk-persisted-set"; +import { RazorpayPaymentService } from "@/src/lib/payments-utils"; @@ -156,4 +156,3 @@ export const paymentRouter = router({ }), }); - diff --git a/apps/backend/src/trpc/user-apis/product.ts b/apps/backend/src/trpc/apis/user-apis/apis/product.ts similarity index 96% rename from apps/backend/src/trpc/user-apis/product.ts rename to apps/backend/src/trpc/apis/user-apis/apis/product.ts index 88dc63f..51ec140 100644 --- a/apps/backend/src/trpc/user-apis/product.ts +++ b/apps/backend/src/trpc/apis/user-apis/apis/product.ts @@ -1,11 +1,11 @@ -import { router, publicProcedure, protectedProcedure } from '../trpc-index'; +import { router, publicProcedure, protectedProcedure } from '@/src/trpc/trpc-index'; import { z } from 'zod'; -import { db } from '../../db/db_index'; -import { productInfo, units, productSlots, deliverySlotInfo, specialDeals, storeInfo, productTagInfo, productTags, productReviews, users } from '../../db/schema'; -import { claimUploadUrl, extractKeyFromPresignedUrl, scaffoldAssetUrl } from '../../lib/s3-client'; -import { ApiError } from '../../lib/api-error'; +import { db } from '@/src/db/db_index'; +import { productInfo, units, productSlots, deliverySlotInfo, specialDeals, storeInfo, productTagInfo, productTags, productReviews, users } from '@/src/db/schema'; +import { claimUploadUrl, extractKeyFromPresignedUrl, scaffoldAssetUrl } from '@/src/lib/s3-client'; +import { ApiError } from '@/src/lib/api-error'; import { eq, and, gt, sql, inArray, desc } from 'drizzle-orm'; -import { getProductById as getProductByIdFromCache, getAllProducts as getAllProductsFromCache } from '../../stores/product-store'; +import { getProductById as getProductByIdFromCache, getAllProducts as getAllProductsFromCache } from '@/src/stores/product-store'; import dayjs from 'dayjs'; // Uniform Product Type diff --git a/apps/backend/src/trpc/user-apis/slots.ts b/apps/backend/src/trpc/apis/user-apis/apis/slots.ts similarity index 92% rename from apps/backend/src/trpc/user-apis/slots.ts rename to apps/backend/src/trpc/apis/user-apis/apis/slots.ts index 5aa857a..9fdd268 100644 --- a/apps/backend/src/trpc/user-apis/slots.ts +++ b/apps/backend/src/trpc/apis/user-apis/apis/slots.ts @@ -1,14 +1,14 @@ -import { router, publicProcedure } from "../trpc-index"; +import { router, publicProcedure } from "@/src/trpc/trpc-index"; import { z } from "zod"; -import { db } from "../../db/db_index"; +import { db } from "@/src/db/db_index"; import { deliverySlotInfo, productSlots, productInfo, units, -} from "../../db/schema"; +} from "@/src/db/schema"; import { eq, and, gt, asc } from "drizzle-orm"; -import { getAllSlots as getAllSlotsFromCache, getSlotById as getSlotByIdFromCache } from "../../stores/slot-store"; +import { getAllSlots as getAllSlotsFromCache, getSlotById as getSlotByIdFromCache } from "@/src/stores/slot-store"; import dayjs from 'dayjs'; // Helper method to get formatted slot data by ID diff --git a/apps/backend/src/trpc/user-apis/stores.ts b/apps/backend/src/trpc/apis/user-apis/apis/stores.ts similarity index 94% rename from apps/backend/src/trpc/user-apis/stores.ts rename to apps/backend/src/trpc/apis/user-apis/apis/stores.ts index 3f51787..a2989aa 100644 --- a/apps/backend/src/trpc/user-apis/stores.ts +++ b/apps/backend/src/trpc/apis/user-apis/apis/stores.ts @@ -1,10 +1,10 @@ -import { router, publicProcedure } from '../trpc-index'; +import { router, publicProcedure } from '@/src/trpc/trpc-index'; import { z } from 'zod'; -import { db } from '../../db/db_index'; -import { storeInfo, productInfo, units } from '../../db/schema'; +import { db } from '@/src/db/db_index'; +import { storeInfo, productInfo, units } from '@/src/db/schema'; import { eq, and, sql } from 'drizzle-orm'; -import { scaffoldAssetUrl } from '../../lib/s3-client'; -import { ApiError } from '../../lib/api-error'; +import { scaffoldAssetUrl } from '@/src/lib/s3-client'; +import { ApiError } from '@/src/lib/api-error'; export const storesRouter = router({ getStores: publicProcedure diff --git a/apps/backend/src/trpc/user-apis/tags.ts b/apps/backend/src/trpc/apis/user-apis/apis/tags.ts similarity index 77% rename from apps/backend/src/trpc/user-apis/tags.ts rename to apps/backend/src/trpc/apis/user-apis/apis/tags.ts index 5bbbd46..d21b229 100644 --- a/apps/backend/src/trpc/user-apis/tags.ts +++ b/apps/backend/src/trpc/apis/user-apis/apis/tags.ts @@ -1,7 +1,7 @@ -import { router, publicProcedure } from '../trpc-index'; +import { router, publicProcedure } from '@/src/trpc/trpc-index'; import { z } from 'zod'; -import { getTagsByStoreId } from '../../stores/product-tag-store'; -import { ApiError } from '../../lib/api-error'; +import { getTagsByStoreId } from '@/src/stores/product-tag-store'; +import { ApiError } from '@/src/lib/api-error'; export const tagsRouter = router({ getTagsByStore: publicProcedure diff --git a/apps/backend/src/trpc/apis/user-apis/apis/user-trpc-index.ts b/apps/backend/src/trpc/apis/user-apis/apis/user-trpc-index.ts new file mode 100644 index 0000000..52e6531 --- /dev/null +++ b/apps/backend/src/trpc/apis/user-apis/apis/user-trpc-index.ts @@ -0,0 +1,34 @@ +import { router } from '@/src/trpc/trpc-index'; +import { addressRouter } from '@/src/trpc/apis/user-apis/apis/address'; +import { authRouter } from '@/src/trpc/apis/user-apis/apis/auth'; +import { bannerRouter } from '@/src/trpc/apis/user-apis/apis/banners'; +import { cartRouter } from '@/src/trpc/apis/user-apis/apis/cart'; +import { complaintRouter } from '@/src/trpc/apis/user-apis/apis/complaint'; +import { orderRouter } from '@/src/trpc/apis/user-apis/apis/order'; +import { productRouter } from '@/src/trpc/apis/user-apis/apis/product'; +import { slotsRouter } from '@/src/trpc/apis/user-apis/apis/slots'; +import { userRouter as userDataRouter } from '@/src/trpc/apis/user-apis/apis/user'; +import { userCouponRouter } from '@/src/trpc/apis/user-apis/apis/coupon'; +import { paymentRouter } from '@/src/trpc/apis/user-apis/apis/payments'; +import { storesRouter } from '@/src/trpc/apis/user-apis/apis/stores'; +import { fileUploadRouter } from '@/src/trpc/apis/user-apis/apis/file-upload'; +import { tagsRouter } from '@/src/trpc/apis/user-apis/apis/tags'; + +export const userRouter = router({ + address: addressRouter, + auth: authRouter, + banner: bannerRouter, + cart: cartRouter, + complaint: complaintRouter, + order: orderRouter, + product: productRouter, + slots: slotsRouter, + user: userDataRouter, + coupon: userCouponRouter, + payment: paymentRouter, + stores: storesRouter, + fileUpload: fileUploadRouter, + tags: tagsRouter, +}); + +export type UserRouter = typeof userRouter; diff --git a/apps/backend/src/trpc/user-apis/user.ts b/apps/backend/src/trpc/apis/user-apis/apis/user.ts similarity index 93% rename from apps/backend/src/trpc/user-apis/user.ts rename to apps/backend/src/trpc/apis/user-apis/apis/user.ts index c53a0e2..730c1af 100644 --- a/apps/backend/src/trpc/user-apis/user.ts +++ b/apps/backend/src/trpc/apis/user-apis/apis/user.ts @@ -1,12 +1,12 @@ -import { router, protectedProcedure, publicProcedure } from '../trpc-index'; +import { router, protectedProcedure, publicProcedure } from '@/src/trpc/trpc-index'; import jwt from 'jsonwebtoken'; import { eq, and } from 'drizzle-orm'; import { z } from 'zod'; -import { db } from '../../db/db_index'; -import { users, userDetails, userCreds, notifCreds, unloggedUserTokens } from '../../db/schema'; -import { ApiError } from '../../lib/api-error'; -import { jwtSecret } from 'src/lib/env-exporter'; -import { generateSignedUrlFromS3Url } from '../../lib/s3-client'; +import { db } from '@/src/db/db_index'; +import { users, userDetails, userCreds, notifCreds, unloggedUserTokens } from '@/src/db/schema'; +import { ApiError } from '@/src/lib/api-error'; +import { jwtSecret } from '@/src/lib/env-exporter'; +import { generateSignedUrlFromS3Url } from '@/src/lib/s3-client'; interface AuthResponse { token: string; @@ -167,4 +167,4 @@ export const userRouter = router({ return { success: true }; }), -}); \ No newline at end of file +}); diff --git a/apps/backend/src/trpc/apis/user-apis/dataAccessors/demo.txt b/apps/backend/src/trpc/apis/user-apis/dataAccessors/demo.txt new file mode 100644 index 0000000..e69de29 diff --git a/apps/backend/src/trpc/router.ts b/apps/backend/src/trpc/router.ts index e6471b5..6d357ee 100644 --- a/apps/backend/src/trpc/router.ts +++ b/apps/backend/src/trpc/router.ts @@ -1,8 +1,8 @@ -import { router, publicProcedure } from './trpc-index'; +import { router, publicProcedure } from '@/src/trpc/trpc-index' import { z } from 'zod'; -import { adminRouter } from './admin-apis/admin-trpc-index'; -import { userRouter } from './user-apis/user-trpc-index'; -import { commonApiRouter } from './common-apis/common-trpc-index'; +import { adminRouter } from '@/src/trpc/apis/admin-apis/apis/admin-trpc-index' +import { userRouter } from '@/src/trpc/apis/user-apis/apis/user-trpc-index' +import { commonApiRouter } from '@/src/trpc/apis/common-apis/common-trpc-index' // Create the main app router export const appRouter = router({ diff --git a/apps/backend/src/trpc/user-apis/user-trpc-index.ts b/apps/backend/src/trpc/user-apis/user-trpc-index.ts deleted file mode 100644 index 2d9d41d..0000000 --- a/apps/backend/src/trpc/user-apis/user-trpc-index.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { router } from '../trpc-index'; -import { addressRouter } from './address'; -import { authRouter } from './auth'; -import { bannerRouter } from './banners'; -import { cartRouter } from './cart'; -import { complaintRouter } from './complaint'; -import { orderRouter } from './order'; -import { productRouter } from './product'; -import { slotsRouter } from './slots'; -import { userRouter as userDataRouter } from './user'; -import { userCouponRouter } from './coupon'; -import { paymentRouter } from './payments'; -import { storesRouter } from './stores'; -import { fileUploadRouter } from './file-upload'; -import { tagsRouter } from './tags'; - -export const userRouter = router({ - address: addressRouter, - auth: authRouter, - banner: bannerRouter, - cart: cartRouter, - complaint: complaintRouter, - order: orderRouter, - product: productRouter, - slots: slotsRouter, - user: userDataRouter, - coupon: userCouponRouter, - payment: paymentRouter, - stores: storesRouter, - fileUpload: fileUploadRouter, - tags: tagsRouter, -}); - -export type UserRouter = typeof userRouter; \ No newline at end of file diff --git a/apps/backend/src/uv-apis/auth.controller.ts b/apps/backend/src/uv-apis/auth.controller.ts index 6bb54f9..8cdc9c0 100644 --- a/apps/backend/src/uv-apis/auth.controller.ts +++ b/apps/backend/src/uv-apis/auth.controller.ts @@ -2,13 +2,13 @@ import { Request, Response, NextFunction } from 'express'; import bcrypt from 'bcryptjs'; import jwt from 'jsonwebtoken'; import { eq } from 'drizzle-orm'; -import { db } from '../db/db_index'; -import { users, userCreds, userDetails } from '../db/schema'; -import { ApiError } from '../lib/api-error'; -import catchAsync from '../lib/catch-async'; -import { jwtSecret } from 'src/lib/env-exporter'; -import uploadHandler from '../lib/upload-handler'; -import { imageUploadS3, generateSignedUrlFromS3Url } from '../lib/s3-client'; +import { db } from '@/src/db/db_index' +import { users, userCreds, userDetails } from '@/src/db/schema' +import { ApiError } from '@/src/lib/api-error' +import catchAsync from '@/src/lib/catch-async' +import { jwtSecret } from '@/src/lib/env-exporter'; +import uploadHandler from '@/src/lib/upload-handler' +import { imageUploadS3, generateSignedUrlFromS3Url } from '@/src/lib/s3-client' interface RegisterRequest { name: string; @@ -318,4 +318,4 @@ export const updateProfile = catchAsync(async (req: Request, res: Response, next success: true, data: response, }); -}); \ No newline at end of file +}); diff --git a/apps/backend/src/uv-apis/auth.router.ts b/apps/backend/src/uv-apis/auth.router.ts index 829e5cd..63ceff5 100644 --- a/apps/backend/src/uv-apis/auth.router.ts +++ b/apps/backend/src/uv-apis/auth.router.ts @@ -1,7 +1,7 @@ import { Router } from 'express'; -import { register, updateProfile } from './auth.controller'; -import { verifyToken } from '../middleware/auth'; -import uploadHandler from '../lib/upload-handler'; +import { register, updateProfile } from '@/src/uv-apis/auth.controller' +import { verifyToken } from '@/src/middleware/auth' +import uploadHandler from '@/src/lib/upload-handler' const router = Router(); diff --git a/apps/backend/src/uv-apis/user-rest.controller.ts b/apps/backend/src/uv-apis/user-rest.controller.ts index c4e08c2..8fd02a1 100644 --- a/apps/backend/src/uv-apis/user-rest.controller.ts +++ b/apps/backend/src/uv-apis/user-rest.controller.ts @@ -1,9 +1,9 @@ import { Request, Response, NextFunction } from 'express'; -import { db } from '../db/db_index'; -import { complaints } from '../db/schema'; -import { ApiError } from '../lib/api-error'; -import catchAsync from '../lib/catch-async'; -import { imageUploadS3 } from '../lib/s3-client'; +import { db } from '@/src/db/db_index' +import { complaints } from '@/src/db/schema' +import { ApiError } from '@/src/lib/api-error' +import catchAsync from '@/src/lib/catch-async' +import { imageUploadS3 } from '@/src/lib/s3-client' interface RaiseComplaintRequest { orderId?: string; diff --git a/apps/backend/src/uv-apis/uv-router.ts b/apps/backend/src/uv-apis/uv-router.ts index 28a71fe..e205b76 100644 --- a/apps/backend/src/uv-apis/uv-router.ts +++ b/apps/backend/src/uv-apis/uv-router.ts @@ -1,7 +1,7 @@ import { Router } from "express"; -import authRouter from "./auth.router"; -import { raiseComplaint } from "./user-rest.controller"; -import uploadHandler from "src/lib/upload-handler"; +import authRouter from "@/src/uv-apis/auth.router" +import { raiseComplaint } from "@/src/uv-apis/user-rest.controller" +import uploadHandler from "@/src/lib/upload-handler"; const router = Router(); @@ -9,4 +9,4 @@ router.use("/auth", authRouter); router.use("/complaints/raise", uploadHandler.array('images'),raiseComplaint) const uvRouter = router; -export default uvRouter; \ No newline at end of file +export default uvRouter; diff --git a/apps/backend/src/v1-router.ts b/apps/backend/src/v1-router.ts index 8af0e58..91a2e71 100644 --- a/apps/backend/src/v1-router.ts +++ b/apps/backend/src/v1-router.ts @@ -1,7 +1,7 @@ import { Router } from "express"; - import avRouter from "./admin-apis/av-router"; - import commonRouter from "./common-apis/common.router"; - import uvRouter from "./uv-apis/uv-router"; + import avRouter from "@/src/apis/admin-apis/apis/av-router" + import commonRouter from "@/src/apis/common-apis/apis/common.router" + import uvRouter from "@/src/uv-apis/uv-router" const router = Router(); diff --git a/apps/backend/tsconfig.json b/apps/backend/tsconfig.json index d0a05d6..d522745 100755 --- a/apps/backend/tsconfig.json +++ b/apps/backend/tsconfig.json @@ -27,7 +27,7 @@ /* Modules */ "module": "commonjs", - "baseUrl": ".", + // "baseUrl": ".", "paths": { "@/*": ["./*"], "shared-types": ["../shared-types"], @@ -118,3 +118,4 @@ }, "include": ["src", "types", "index.ts", "../shared-types"] } + diff --git a/apps/user-ui/app/(drawer)/(tabs)/home/index.tsx b/apps/user-ui/app/(drawer)/(tabs)/home/index.tsx index ac7860a..d378136 100755 --- a/apps/user-ui/app/(drawer)/(tabs)/home/index.tsx +++ b/apps/user-ui/app/(drawer)/(tabs)/home/index.tsx @@ -109,6 +109,7 @@ const SlotCard = memo(({ slot }: SlotCardProps) => { return ( - + - + diff --git a/apps/user-ui/components/SlotSpecificView.tsx b/apps/user-ui/components/SlotSpecificView.tsx index 02db3a7..a363983 100644 --- a/apps/user-ui/components/SlotSpecificView.tsx +++ b/apps/user-ui/components/SlotSpecificView.tsx @@ -407,7 +407,7 @@ export function SlotProducts({ slotId:slotIdParent, storeId:storeIdParent, baseU : slotQuery.data.products; return ( - + false + +prepare_react_native_project! + +target 'meatfarmermonorepo' do + use_expo_modules! + + if ENV['EXPO_USE_COMMUNITY_AUTOLINKING'] == '1' + config_command = ['node', '-e', "process.argv=['', '', 'config'];require('@react-native-community/cli').run()"]; + else + config_command = [ + 'npx', + 'expo-modules-autolinking', + 'react-native-config', + '--json', + '--platform', + 'ios' + ] + end + + config = use_native_modules!(config_command) + + use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks'] + use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS'] + + use_react_native!( + :path => config[:reactNativePath], + :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes', + # An absolute path to your application root. + :app_path => "#{Pod::Config.instance.installation_root}/..", + :privacy_file_aggregation_enabled => podfile_properties['apple.privacyManifestAggregationEnabled'] != 'false', + ) + + post_install do |installer| + react_native_post_install( + installer, + config[:reactNativePath], + :mac_catalyst_enabled => false, + :ccache_enabled => podfile_properties['apple.ccacheEnabled'] == 'true', + ) + + # This is necessary for Xcode 14, because it signs resource bundles by default + # when building for devices. + installer.target_installation_results.pod_target_installation_results + .each do |pod_name, target_installation_result| + target_installation_result.resource_bundle_targets.each do |resource_bundle_target| + resource_bundle_target.build_configurations.each do |config| + config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' + end + end + end + end +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 0000000..c223241 --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,2324 @@ +PODS: + - AppAuth (2.0.0): + - AppAuth/Core (= 2.0.0) + - AppAuth/ExternalUserAgent (= 2.0.0) + - AppAuth/Core (2.0.0) + - AppAuth/ExternalUserAgent (2.0.0): + - AppAuth/Core + - AppCheckCore (11.2.0): + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/UserDefaults (~> 8.0) + - PromisesObjC (~> 2.4) + - boost (1.84.0) + - DoubleConversion (1.1.6) + - EASClient (0.14.4): + - ExpoModulesCore + - EXApplication (6.1.5): + - ExpoModulesCore + - EXConstants (17.1.8): + - ExpoModulesCore + - EXImageLoader (5.1.0): + - ExpoModulesCore + - React-Core + - EXJSONUtils (0.15.0) + - EXManifests (0.16.6): + - ExpoModulesCore + - EXNotifications (0.31.4): + - ExpoModulesCore + - Expo (53.0.25): + - DoubleConversion + - ExpoModulesCore + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTAppDelegate + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactAppDependencyProvider + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - ExpoAdapterGoogleSignIn (16.0.0): + - ExpoModulesCore + - GoogleSignIn (~> 9.0) + - React-Core + - ExpoAsset (11.1.7): + - ExpoModulesCore + - ExpoBlur (14.1.5): + - ExpoModulesCore + - ExpoCrypto (14.1.5): + - ExpoModulesCore + - ExpoDevice (7.1.4): + - ExpoModulesCore + - ExpoDocumentPicker (13.1.6): + - ExpoModulesCore + - ExpoFileSystem (18.1.11): + - ExpoModulesCore + - ExpoFont (13.3.2): + - ExpoModulesCore + - ExpoHaptics (14.1.4): + - ExpoModulesCore + - ExpoHead (5.1.10): + - ExpoModulesCore + - ExpoImage (2.4.1): + - ExpoModulesCore + - libavif/libdav1d + - SDWebImage (~> 5.21.0) + - SDWebImageAVIFCoder (~> 0.11.0) + - SDWebImageSVGCoder (~> 1.7.0) + - SDWebImageWebPCoder (~> 0.14.6) + - ExpoImagePicker (16.1.4): + - ExpoModulesCore + - ExpoKeepAwake (14.1.4): + - ExpoModulesCore + - ExpoLinearGradient (14.1.5): + - ExpoModulesCore + - ExpoLinking (7.1.7): + - ExpoModulesCore + - ExpoLocation (18.1.6): + - ExpoModulesCore + - ExpoModulesCore (2.5.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-jsinspector + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - ExpoSecureStore (14.2.4): + - ExpoModulesCore + - ExpoSplashScreen (0.30.10): + - ExpoModulesCore + - ExpoSymbols (0.4.5): + - ExpoModulesCore + - ExpoSystemUI (5.0.11): + - ExpoModulesCore + - ExpoWebBrowser (14.2.0): + - ExpoModulesCore + - EXStructuredHeaders (4.1.0) + - EXUpdates (0.28.17): + - DoubleConversion + - EASClient + - EXManifests + - ExpoModulesCore + - EXStructuredHeaders + - EXUpdatesInterface + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - ReachabilitySwift + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - EXUpdatesInterface (1.1.0): + - ExpoModulesCore + - fast_float (6.1.4) + - FBLazyVector (0.79.6) + - fmt (11.0.2) + - glog (0.3.5) + - GoogleSignIn (9.0.0): + - AppAuth (~> 2.0) + - AppCheckCore (~> 11.0) + - GTMAppAuth (~> 5.0) + - GTMSessionFetcher/Core (~> 3.3) + - GoogleUtilities/Environment (8.1.0): + - GoogleUtilities/Privacy + - GoogleUtilities/Logger (8.1.0): + - GoogleUtilities/Environment + - GoogleUtilities/Privacy + - GoogleUtilities/Privacy (8.1.0) + - GoogleUtilities/UserDefaults (8.1.0): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy + - GTMAppAuth (5.0.0): + - AppAuth/Core (~> 2.0) + - GTMSessionFetcher/Core (< 4.0, >= 3.3) + - GTMSessionFetcher/Core (3.5.0) + - hermes-engine (0.79.6): + - hermes-engine/Pre-built (= 0.79.6) + - hermes-engine/Pre-built (0.79.6) + - libavif/core (0.11.1) + - libavif/libdav1d (0.11.1): + - libavif/core + - libdav1d (>= 0.6.0) + - libdav1d (1.2.0) + - libwebp (1.5.0): + - libwebp/demux (= 1.5.0) + - libwebp/mux (= 1.5.0) + - libwebp/sharpyuv (= 1.5.0) + - libwebp/webp (= 1.5.0) + - libwebp/demux (1.5.0): + - libwebp/webp + - libwebp/mux (1.5.0): + - libwebp/demux + - libwebp/sharpyuv (1.5.0) + - libwebp/webp (1.5.0): + - libwebp/sharpyuv + - PromisesObjC (2.4.0) + - RCT-Folly (2024.11.18.00): + - boost + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - RCT-Folly/Default (= 2024.11.18.00) + - RCT-Folly/Default (2024.11.18.00): + - boost + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - RCT-Folly/Fabric (2024.11.18.00): + - boost + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - RCTDeprecation (0.79.6) + - RCTRequired (0.79.6) + - RCTTypeSafety (0.79.6): + - FBLazyVector (= 0.79.6) + - RCTRequired (= 0.79.6) + - React-Core (= 0.79.6) + - ReachabilitySwift (5.2.4) + - React (0.79.6): + - React-Core (= 0.79.6) + - React-Core/DevSupport (= 0.79.6) + - React-Core/RCTWebSocket (= 0.79.6) + - React-RCTActionSheet (= 0.79.6) + - React-RCTAnimation (= 0.79.6) + - React-RCTBlob (= 0.79.6) + - React-RCTImage (= 0.79.6) + - React-RCTLinking (= 0.79.6) + - React-RCTNetwork (= 0.79.6) + - React-RCTSettings (= 0.79.6) + - React-RCTText (= 0.79.6) + - React-RCTVibration (= 0.79.6) + - React-callinvoker (0.79.6) + - React-Core (0.79.6): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default (= 0.79.6) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/CoreModulesHeaders (0.79.6): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/Default (0.79.6): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/DevSupport (0.79.6): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default (= 0.79.6) + - React-Core/RCTWebSocket (= 0.79.6) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTActionSheetHeaders (0.79.6): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTAnimationHeaders (0.79.6): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTBlobHeaders (0.79.6): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTImageHeaders (0.79.6): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTLinkingHeaders (0.79.6): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTNetworkHeaders (0.79.6): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTSettingsHeaders (0.79.6): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTTextHeaders (0.79.6): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTVibrationHeaders (0.79.6): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-Core/RCTWebSocket (0.79.6): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTDeprecation + - React-Core/Default (= 0.79.6) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.1) + - Yoga + - React-CoreModules (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - RCT-Folly (= 2024.11.18.00) + - RCTTypeSafety (= 0.79.6) + - React-Core/CoreModulesHeaders (= 0.79.6) + - React-jsi (= 0.79.6) + - React-jsinspector + - React-jsinspectortracing + - React-NativeModulesApple + - React-RCTBlob + - React-RCTFBReactNativeSpec + - React-RCTImage (= 0.79.6) + - ReactCommon + - SocketRocket (= 0.7.1) + - React-cxxreact (0.79.6): + - boost + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - React-callinvoker (= 0.79.6) + - React-debug (= 0.79.6) + - React-jsi (= 0.79.6) + - React-jsinspector + - React-jsinspectortracing + - React-logger (= 0.79.6) + - React-perflogger (= 0.79.6) + - React-runtimeexecutor (= 0.79.6) + - React-timing (= 0.79.6) + - React-debug (0.79.6) + - React-defaultsnativemodule (0.79.6): + - hermes-engine + - RCT-Folly + - React-domnativemodule + - React-featureflagsnativemodule + - React-hermes + - React-idlecallbacksnativemodule + - React-jsi + - React-jsiexecutor + - React-microtasksnativemodule + - React-RCTFBReactNativeSpec + - React-domnativemodule (0.79.6): + - hermes-engine + - RCT-Folly + - React-Fabric + - React-FabricComponents + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec + - ReactCommon/turbomodule/core + - Yoga + - React-Fabric (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/animations (= 0.79.6) + - React-Fabric/attributedstring (= 0.79.6) + - React-Fabric/componentregistry (= 0.79.6) + - React-Fabric/componentregistrynative (= 0.79.6) + - React-Fabric/components (= 0.79.6) + - React-Fabric/consistency (= 0.79.6) + - React-Fabric/core (= 0.79.6) + - React-Fabric/dom (= 0.79.6) + - React-Fabric/imagemanager (= 0.79.6) + - React-Fabric/leakchecker (= 0.79.6) + - React-Fabric/mounting (= 0.79.6) + - React-Fabric/observers (= 0.79.6) + - React-Fabric/scheduler (= 0.79.6) + - React-Fabric/telemetry (= 0.79.6) + - React-Fabric/templateprocessor (= 0.79.6) + - React-Fabric/uimanager (= 0.79.6) + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/animations (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/attributedstring (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/componentregistry (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/componentregistrynative (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/components/legacyviewmanagerinterop (= 0.79.6) + - React-Fabric/components/root (= 0.79.6) + - React-Fabric/components/scrollview (= 0.79.6) + - React-Fabric/components/view (= 0.79.6) + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/legacyviewmanagerinterop (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/root (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/scrollview (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/view (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-renderercss + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-Fabric/consistency (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/core (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/dom (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/imagemanager (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/leakchecker (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/mounting (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/observers (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/observers/events (= 0.79.6) + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/observers/events (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/scheduler (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/observers/events + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-performancetimeline + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/telemetry (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/templateprocessor (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/uimanager (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/uimanager/consistency (= 0.79.6) + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererconsistency + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/uimanager/consistency (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererconsistency + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-FabricComponents (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-FabricComponents/components (= 0.79.6) + - React-FabricComponents/textlayoutmanager (= 0.79.6) + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-FabricComponents/components/inputaccessory (= 0.79.6) + - React-FabricComponents/components/iostextinput (= 0.79.6) + - React-FabricComponents/components/modal (= 0.79.6) + - React-FabricComponents/components/rncore (= 0.79.6) + - React-FabricComponents/components/safeareaview (= 0.79.6) + - React-FabricComponents/components/scrollview (= 0.79.6) + - React-FabricComponents/components/text (= 0.79.6) + - React-FabricComponents/components/textinput (= 0.79.6) + - React-FabricComponents/components/unimplementedview (= 0.79.6) + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/inputaccessory (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/iostextinput (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/modal (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/rncore (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/safeareaview (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/scrollview (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/text (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/textinput (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/unimplementedview (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/textlayoutmanager (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-FabricImage (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired (= 0.79.6) + - RCTTypeSafety (= 0.79.6) + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-jsiexecutor (= 0.79.6) + - React-logger + - React-rendererdebug + - React-utils + - ReactCommon + - Yoga + - React-featureflags (0.79.6): + - RCT-Folly (= 2024.11.18.00) + - React-featureflagsnativemodule (0.79.6): + - hermes-engine + - RCT-Folly + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec + - ReactCommon/turbomodule/core + - React-graphics (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - React-hermes + - React-jsi + - React-jsiexecutor + - React-utils + - React-hermes (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - React-cxxreact (= 0.79.6) + - React-jsi + - React-jsiexecutor (= 0.79.6) + - React-jsinspector + - React-jsinspectortracing + - React-perflogger (= 0.79.6) + - React-runtimeexecutor + - React-idlecallbacksnativemodule (0.79.6): + - glog + - hermes-engine + - RCT-Folly + - React-hermes + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec + - React-runtimescheduler + - ReactCommon/turbomodule/core + - React-ImageManager (0.79.6): + - glog + - RCT-Folly/Fabric + - React-Core/Default + - React-debug + - React-Fabric + - React-graphics + - React-rendererdebug + - React-utils + - React-jserrorhandler (0.79.6): + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - React-cxxreact + - React-debug + - React-featureflags + - React-jsi + - ReactCommon/turbomodule/bridging + - React-jsi (0.79.6): + - boost + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - React-jsiexecutor (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - React-cxxreact (= 0.79.6) + - React-jsi (= 0.79.6) + - React-jsinspector + - React-jsinspectortracing + - React-perflogger (= 0.79.6) + - React-jsinspector (0.79.6): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly + - React-featureflags + - React-jsi + - React-jsinspectortracing + - React-perflogger (= 0.79.6) + - React-runtimeexecutor (= 0.79.6) + - React-jsinspectortracing (0.79.6): + - RCT-Folly + - React-oscompat + - React-jsitooling (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - RCT-Folly (= 2024.11.18.00) + - React-cxxreact (= 0.79.6) + - React-jsi (= 0.79.6) + - React-jsinspector + - React-jsinspectortracing + - React-jsitracing (0.79.6): + - React-jsi + - React-logger (0.79.6): + - glog + - React-Mapbuffer (0.79.6): + - glog + - React-debug + - React-microtasksnativemodule (0.79.6): + - hermes-engine + - RCT-Folly + - React-hermes + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec + - ReactCommon/turbomodule/core + - React-NativeModulesApple (0.79.6): + - glog + - hermes-engine + - React-callinvoker + - React-Core + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsinspector + - React-runtimeexecutor + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - React-oscompat (0.79.6) + - React-perflogger (0.79.6): + - DoubleConversion + - RCT-Folly (= 2024.11.18.00) + - React-performancetimeline (0.79.6): + - RCT-Folly (= 2024.11.18.00) + - React-cxxreact + - React-featureflags + - React-jsinspectortracing + - React-perflogger + - React-timing + - React-RCTActionSheet (0.79.6): + - React-Core/RCTActionSheetHeaders (= 0.79.6) + - React-RCTAnimation (0.79.6): + - RCT-Folly (= 2024.11.18.00) + - RCTTypeSafety + - React-Core/RCTAnimationHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - ReactCommon + - React-RCTAppDelegate (0.79.6): + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-CoreModules + - React-debug + - React-defaultsnativemodule + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-jsitooling + - React-NativeModulesApple + - React-RCTFabric + - React-RCTFBReactNativeSpec + - React-RCTImage + - React-RCTNetwork + - React-RCTRuntime + - React-rendererdebug + - React-RuntimeApple + - React-RuntimeCore + - React-runtimescheduler + - React-utils + - ReactCommon + - React-RCTBlob (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - React-Core/RCTBlobHeaders + - React-Core/RCTWebSocket + - React-jsi + - React-jsinspector + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - React-RCTNetwork + - ReactCommon + - React-RCTFabric (0.79.6): + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - React-Core + - React-debug + - React-Fabric + - React-FabricComponents + - React-FabricImage + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-jsinspector + - React-jsinspectortracing + - React-performancetimeline + - React-RCTAnimation + - React-RCTImage + - React-RCTText + - React-rendererconsistency + - React-renderercss + - React-rendererdebug + - React-runtimescheduler + - React-utils + - Yoga + - React-RCTFBReactNativeSpec (0.79.6): + - hermes-engine + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - React-hermes + - React-jsi + - React-jsiexecutor + - React-NativeModulesApple + - ReactCommon + - React-RCTImage (0.79.6): + - RCT-Folly (= 2024.11.18.00) + - RCTTypeSafety + - React-Core/RCTImageHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - React-RCTNetwork + - ReactCommon + - React-RCTLinking (0.79.6): + - React-Core/RCTLinkingHeaders (= 0.79.6) + - React-jsi (= 0.79.6) + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - ReactCommon + - ReactCommon/turbomodule/core (= 0.79.6) + - React-RCTNetwork (0.79.6): + - RCT-Folly (= 2024.11.18.00) + - RCTTypeSafety + - React-Core/RCTNetworkHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - ReactCommon + - React-RCTRuntime (0.79.6): + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - React-Core + - React-hermes + - React-jsi + - React-jsinspector + - React-jsinspectortracing + - React-jsitooling + - React-RuntimeApple + - React-RuntimeCore + - React-RuntimeHermes + - React-RCTSettings (0.79.6): + - RCT-Folly (= 2024.11.18.00) + - RCTTypeSafety + - React-Core/RCTSettingsHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - ReactCommon + - React-RCTText (0.79.6): + - React-Core/RCTTextHeaders (= 0.79.6) + - Yoga + - React-RCTVibration (0.79.6): + - RCT-Folly (= 2024.11.18.00) + - React-Core/RCTVibrationHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTFBReactNativeSpec + - ReactCommon + - React-rendererconsistency (0.79.6) + - React-renderercss (0.79.6): + - React-debug + - React-utils + - React-rendererdebug (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - RCT-Folly (= 2024.11.18.00) + - React-debug + - React-rncore (0.79.6) + - React-RuntimeApple (0.79.6): + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - React-callinvoker + - React-Core/Default + - React-CoreModules + - React-cxxreact + - React-featureflags + - React-jserrorhandler + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-Mapbuffer + - React-NativeModulesApple + - React-RCTFabric + - React-RCTFBReactNativeSpec + - React-RuntimeCore + - React-runtimeexecutor + - React-RuntimeHermes + - React-runtimescheduler + - React-utils + - React-RuntimeCore (0.79.6): + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - React-cxxreact + - React-Fabric + - React-featureflags + - React-hermes + - React-jserrorhandler + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-jsitooling + - React-performancetimeline + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - React-runtimeexecutor (0.79.6): + - React-jsi (= 0.79.6) + - React-RuntimeHermes (0.79.6): + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - React-featureflags + - React-hermes + - React-jsi + - React-jsinspector + - React-jsinspectortracing + - React-jsitooling + - React-jsitracing + - React-RuntimeCore + - React-utils + - React-runtimescheduler (0.79.6): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - React-callinvoker + - React-cxxreact + - React-debug + - React-featureflags + - React-hermes + - React-jsi + - React-jsinspectortracing + - React-performancetimeline + - React-rendererconsistency + - React-rendererdebug + - React-runtimeexecutor + - React-timing + - React-utils + - React-timing (0.79.6) + - React-utils (0.79.6): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - React-debug + - React-hermes + - React-jsi (= 0.79.6) + - ReactAppDependencyProvider (0.79.6): + - ReactCodegen + - ReactCodegen (0.79.6): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-FabricImage + - React-featureflags + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-NativeModulesApple + - React-RCTAppDelegate + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - ReactCommon (0.79.6): + - ReactCommon/turbomodule (= 0.79.6) + - ReactCommon/turbomodule (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - React-callinvoker (= 0.79.6) + - React-cxxreact (= 0.79.6) + - React-jsi (= 0.79.6) + - React-logger (= 0.79.6) + - React-perflogger (= 0.79.6) + - ReactCommon/turbomodule/bridging (= 0.79.6) + - ReactCommon/turbomodule/core (= 0.79.6) + - ReactCommon/turbomodule/bridging (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - React-callinvoker (= 0.79.6) + - React-cxxreact (= 0.79.6) + - React-jsi (= 0.79.6) + - React-logger (= 0.79.6) + - React-perflogger (= 0.79.6) + - ReactCommon/turbomodule/core (0.79.6): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - React-callinvoker (= 0.79.6) + - React-cxxreact (= 0.79.6) + - React-debug (= 0.79.6) + - React-featureflags (= 0.79.6) + - React-jsi (= 0.79.6) + - React-logger (= 0.79.6) + - React-perflogger (= 0.79.6) + - React-utils (= 0.79.6) + - SDWebImage (5.21.1): + - SDWebImage/Core (= 5.21.1) + - SDWebImage/Core (5.21.1) + - SDWebImageAVIFCoder (0.11.0): + - libavif/core (>= 0.11.0) + - SDWebImage (~> 5.10) + - SDWebImageSVGCoder (1.7.0): + - SDWebImage/Core (~> 5.6) + - SDWebImageWebPCoder (0.14.6): + - libwebp (~> 1.0) + - SDWebImage/Core (~> 5.17) + - SocketRocket (0.7.1) + - Yoga (0.0.0) + +DEPENDENCIES: + - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) + - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) + - EASClient (from `../node_modules/expo-eas-client/ios`) + - EXApplication (from `../node_modules/expo-application/ios`) + - EXConstants (from `../node_modules/expo-constants/ios`) + - EXImageLoader (from `../node_modules/expo-image-loader/ios`) + - EXJSONUtils (from `../node_modules/expo-json-utils/ios`) + - EXManifests (from `../node_modules/expo-manifests/ios`) + - EXNotifications (from `../node_modules/expo-notifications/ios`) + - Expo (from `../node_modules/expo`) + - "ExpoAdapterGoogleSignIn (from `../node_modules/@react-native-google-signin/google-signin/expo/ios`)" + - ExpoAsset (from `../node_modules/expo-asset/ios`) + - ExpoBlur (from `../node_modules/expo-blur/ios`) + - ExpoCrypto (from `../node_modules/expo-crypto/ios`) + - ExpoDevice (from `../node_modules/expo-device/ios`) + - ExpoDocumentPicker (from `../node_modules/expo-document-picker/ios`) + - ExpoFileSystem (from `../node_modules/expo-file-system/ios`) + - ExpoFont (from `../node_modules/expo-font/ios`) + - ExpoHaptics (from `../node_modules/expo-haptics/ios`) + - ExpoHead (from `../node_modules/expo-router/ios`) + - ExpoImage (from `../node_modules/expo-image/ios`) + - ExpoImagePicker (from `../node_modules/expo-image-picker/ios`) + - ExpoKeepAwake (from `../node_modules/expo-keep-awake/ios`) + - ExpoLinearGradient (from `../node_modules/expo-linear-gradient/ios`) + - ExpoLinking (from `../node_modules/expo-linking/ios`) + - ExpoLocation (from `../node_modules/expo-location/ios`) + - ExpoModulesCore (from `../node_modules/expo-modules-core`) + - ExpoSecureStore (from `../node_modules/expo-secure-store/ios`) + - ExpoSplashScreen (from `../node_modules/expo-splash-screen/ios`) + - ExpoSymbols (from `../node_modules/expo-symbols/ios`) + - ExpoSystemUI (from `../node_modules/expo-system-ui/ios`) + - ExpoWebBrowser (from `../node_modules/expo-web-browser/ios`) + - EXStructuredHeaders (from `../node_modules/expo-structured-headers/ios`) + - EXUpdates (from `../node_modules/expo-updates/ios`) + - EXUpdatesInterface (from `../node_modules/expo-updates-interface/ios`) + - fast_float (from `../node_modules/react-native/third-party-podspecs/fast_float.podspec`) + - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) + - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`) + - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) + - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) + - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) + - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) + - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) + - RCTRequired (from `../node_modules/react-native/Libraries/Required`) + - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) + - React (from `../node_modules/react-native/`) + - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) + - React-Core (from `../node_modules/react-native/`) + - React-Core/RCTWebSocket (from `../node_modules/react-native/`) + - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) + - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) + - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) + - React-defaultsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/defaults`) + - React-domnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/dom`) + - React-Fabric (from `../node_modules/react-native/ReactCommon`) + - React-FabricComponents (from `../node_modules/react-native/ReactCommon`) + - React-FabricImage (from `../node_modules/react-native/ReactCommon`) + - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`) + - React-featureflagsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/featureflags`) + - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`) + - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) + - React-idlecallbacksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`) + - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) + - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`) + - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) + - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) + - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`) + - React-jsinspectortracing (from `../node_modules/react-native/ReactCommon/jsinspector-modern/tracing`) + - React-jsitooling (from `../node_modules/react-native/ReactCommon/jsitooling`) + - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`) + - React-logger (from `../node_modules/react-native/ReactCommon/logger`) + - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) + - React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`) + - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) + - React-oscompat (from `../node_modules/react-native/ReactCommon/oscompat`) + - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) + - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`) + - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) + - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) + - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) + - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) + - React-RCTFabric (from `../node_modules/react-native/React`) + - React-RCTFBReactNativeSpec (from `../node_modules/react-native/React`) + - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) + - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) + - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) + - React-RCTRuntime (from `../node_modules/react-native/React/Runtime`) + - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) + - React-RCTText (from `../node_modules/react-native/Libraries/Text`) + - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) + - React-rendererconsistency (from `../node_modules/react-native/ReactCommon/react/renderer/consistency`) + - React-renderercss (from `../node_modules/react-native/ReactCommon/react/renderer/css`) + - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) + - React-rncore (from `../node_modules/react-native/ReactCommon`) + - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`) + - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`) + - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) + - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`) + - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) + - React-timing (from `../node_modules/react-native/ReactCommon/react/timing`) + - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) + - ReactAppDependencyProvider (from `build/generated/ios`) + - ReactCodegen (from `build/generated/ios`) + - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) + - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) + +SPEC REPOS: + trunk: + - AppAuth + - AppCheckCore + - GoogleSignIn + - GoogleUtilities + - GTMAppAuth + - GTMSessionFetcher + - libavif + - libdav1d + - libwebp + - PromisesObjC + - ReachabilitySwift + - SDWebImage + - SDWebImageAVIFCoder + - SDWebImageSVGCoder + - SDWebImageWebPCoder + - SocketRocket + +EXTERNAL SOURCES: + boost: + :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" + DoubleConversion: + :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" + EASClient: + :path: "../node_modules/expo-eas-client/ios" + EXApplication: + :path: "../node_modules/expo-application/ios" + EXConstants: + :path: "../node_modules/expo-constants/ios" + EXImageLoader: + :path: "../node_modules/expo-image-loader/ios" + EXJSONUtils: + :path: "../node_modules/expo-json-utils/ios" + EXManifests: + :path: "../node_modules/expo-manifests/ios" + EXNotifications: + :path: "../node_modules/expo-notifications/ios" + Expo: + :path: "../node_modules/expo" + ExpoAdapterGoogleSignIn: + :path: "../node_modules/@react-native-google-signin/google-signin/expo/ios" + ExpoAsset: + :path: "../node_modules/expo-asset/ios" + ExpoBlur: + :path: "../node_modules/expo-blur/ios" + ExpoCrypto: + :path: "../node_modules/expo-crypto/ios" + ExpoDevice: + :path: "../node_modules/expo-device/ios" + ExpoDocumentPicker: + :path: "../node_modules/expo-document-picker/ios" + ExpoFileSystem: + :path: "../node_modules/expo-file-system/ios" + ExpoFont: + :path: "../node_modules/expo-font/ios" + ExpoHaptics: + :path: "../node_modules/expo-haptics/ios" + ExpoHead: + :path: "../node_modules/expo-router/ios" + ExpoImage: + :path: "../node_modules/expo-image/ios" + ExpoImagePicker: + :path: "../node_modules/expo-image-picker/ios" + ExpoKeepAwake: + :path: "../node_modules/expo-keep-awake/ios" + ExpoLinearGradient: + :path: "../node_modules/expo-linear-gradient/ios" + ExpoLinking: + :path: "../node_modules/expo-linking/ios" + ExpoLocation: + :path: "../node_modules/expo-location/ios" + ExpoModulesCore: + :path: "../node_modules/expo-modules-core" + ExpoSecureStore: + :path: "../node_modules/expo-secure-store/ios" + ExpoSplashScreen: + :path: "../node_modules/expo-splash-screen/ios" + ExpoSymbols: + :path: "../node_modules/expo-symbols/ios" + ExpoSystemUI: + :path: "../node_modules/expo-system-ui/ios" + ExpoWebBrowser: + :path: "../node_modules/expo-web-browser/ios" + EXStructuredHeaders: + :path: "../node_modules/expo-structured-headers/ios" + EXUpdates: + :path: "../node_modules/expo-updates/ios" + EXUpdatesInterface: + :path: "../node_modules/expo-updates-interface/ios" + fast_float: + :podspec: "../node_modules/react-native/third-party-podspecs/fast_float.podspec" + FBLazyVector: + :path: "../node_modules/react-native/Libraries/FBLazyVector" + fmt: + :podspec: "../node_modules/react-native/third-party-podspecs/fmt.podspec" + glog: + :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" + hermes-engine: + :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" + :tag: hermes-2025-06-04-RNv0.79.3-7f9a871eefeb2c3852365ee80f0b6733ec12ac3b + RCT-Folly: + :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" + RCTDeprecation: + :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" + RCTRequired: + :path: "../node_modules/react-native/Libraries/Required" + RCTTypeSafety: + :path: "../node_modules/react-native/Libraries/TypeSafety" + React: + :path: "../node_modules/react-native/" + React-callinvoker: + :path: "../node_modules/react-native/ReactCommon/callinvoker" + React-Core: + :path: "../node_modules/react-native/" + React-CoreModules: + :path: "../node_modules/react-native/React/CoreModules" + React-cxxreact: + :path: "../node_modules/react-native/ReactCommon/cxxreact" + React-debug: + :path: "../node_modules/react-native/ReactCommon/react/debug" + React-defaultsnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/defaults" + React-domnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/dom" + React-Fabric: + :path: "../node_modules/react-native/ReactCommon" + React-FabricComponents: + :path: "../node_modules/react-native/ReactCommon" + React-FabricImage: + :path: "../node_modules/react-native/ReactCommon" + React-featureflags: + :path: "../node_modules/react-native/ReactCommon/react/featureflags" + React-featureflagsnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/featureflags" + React-graphics: + :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics" + React-hermes: + :path: "../node_modules/react-native/ReactCommon/hermes" + React-idlecallbacksnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks" + React-ImageManager: + :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" + React-jserrorhandler: + :path: "../node_modules/react-native/ReactCommon/jserrorhandler" + React-jsi: + :path: "../node_modules/react-native/ReactCommon/jsi" + React-jsiexecutor: + :path: "../node_modules/react-native/ReactCommon/jsiexecutor" + React-jsinspector: + :path: "../node_modules/react-native/ReactCommon/jsinspector-modern" + React-jsinspectortracing: + :path: "../node_modules/react-native/ReactCommon/jsinspector-modern/tracing" + React-jsitooling: + :path: "../node_modules/react-native/ReactCommon/jsitooling" + React-jsitracing: + :path: "../node_modules/react-native/ReactCommon/hermes/executor/" + React-logger: + :path: "../node_modules/react-native/ReactCommon/logger" + React-Mapbuffer: + :path: "../node_modules/react-native/ReactCommon" + React-microtasksnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks" + React-NativeModulesApple: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" + React-oscompat: + :path: "../node_modules/react-native/ReactCommon/oscompat" + React-perflogger: + :path: "../node_modules/react-native/ReactCommon/reactperflogger" + React-performancetimeline: + :path: "../node_modules/react-native/ReactCommon/react/performance/timeline" + React-RCTActionSheet: + :path: "../node_modules/react-native/Libraries/ActionSheetIOS" + React-RCTAnimation: + :path: "../node_modules/react-native/Libraries/NativeAnimation" + React-RCTAppDelegate: + :path: "../node_modules/react-native/Libraries/AppDelegate" + React-RCTBlob: + :path: "../node_modules/react-native/Libraries/Blob" + React-RCTFabric: + :path: "../node_modules/react-native/React" + React-RCTFBReactNativeSpec: + :path: "../node_modules/react-native/React" + React-RCTImage: + :path: "../node_modules/react-native/Libraries/Image" + React-RCTLinking: + :path: "../node_modules/react-native/Libraries/LinkingIOS" + React-RCTNetwork: + :path: "../node_modules/react-native/Libraries/Network" + React-RCTRuntime: + :path: "../node_modules/react-native/React/Runtime" + React-RCTSettings: + :path: "../node_modules/react-native/Libraries/Settings" + React-RCTText: + :path: "../node_modules/react-native/Libraries/Text" + React-RCTVibration: + :path: "../node_modules/react-native/Libraries/Vibration" + React-rendererconsistency: + :path: "../node_modules/react-native/ReactCommon/react/renderer/consistency" + React-renderercss: + :path: "../node_modules/react-native/ReactCommon/react/renderer/css" + React-rendererdebug: + :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" + React-rncore: + :path: "../node_modules/react-native/ReactCommon" + React-RuntimeApple: + :path: "../node_modules/react-native/ReactCommon/react/runtime/platform/ios" + React-RuntimeCore: + :path: "../node_modules/react-native/ReactCommon/react/runtime" + React-runtimeexecutor: + :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" + React-RuntimeHermes: + :path: "../node_modules/react-native/ReactCommon/react/runtime" + React-runtimescheduler: + :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" + React-timing: + :path: "../node_modules/react-native/ReactCommon/react/timing" + React-utils: + :path: "../node_modules/react-native/ReactCommon/react/utils" + ReactAppDependencyProvider: + :path: build/generated/ios + ReactCodegen: + :path: build/generated/ios + ReactCommon: + :path: "../node_modules/react-native/ReactCommon" + Yoga: + :path: "../node_modules/react-native/ReactCommon/yoga" + +SPEC CHECKSUMS: + AppAuth: 1c1a8afa7e12f2ec3a294d9882dfa5ab7d3cb063 + AppCheckCore: cc8fd0a3a230ddd401f326489c99990b013f0c4f + boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 + DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb + EASClient: fe396f88189ce51edd819abe12df16c99e98bcd2 + EXApplication: 1e06972201838375ca1ec1ba34d586a98a5dc718 + EXConstants: d3d551cb154718f5161c4247304e96aa59f6cca7 + EXImageLoader: 4d3d3284141f1a45006cc4d0844061c182daf7ee + EXJSONUtils: 1d3e4590438c3ee593684186007028a14b3686cd + EXManifests: 691a779b04e4f2c96da46fb9bef4f86174fefcb5 + EXNotifications: be5e949edf1d60b70e77178b81aa505298fadd07 + Expo: a9aaba7e05fb1445c5605b2b1be1904efa2aaaff + ExpoAdapterGoogleSignIn: 5965ec283d2c0f53c483c4e2080ea055a881dfe9 + ExpoAsset: ef06e880126c375f580d4923fdd1cdf4ee6ee7d6 + ExpoBlur: 3c8885b9bf9eef4309041ec87adec48b5f1986a9 + ExpoCrypto: a9f1d75baeea6ef8b03c1660621585196c382e85 + ExpoDevice: 7082f03af1c588333ef1417d5aa8287081d94b24 + ExpoDocumentPicker: b263a279685b6640b8c8bc70d71c83067aeaae55 + ExpoFileSystem: 7f92f7be2f5c5ed40a7c9efc8fa30821181d9d63 + ExpoFont: cf508bc2e6b70871e05386d71cab927c8524cc8e + ExpoHaptics: 0ff6e0d83cd891178a306e548da1450249d54500 + ExpoHead: f85951372332180434f1aae973f6e3c94fccbed4 + ExpoImage: b0b4a838c62bb9d5438bb475cccc85619a5f59dc + ExpoImagePicker: 0963da31800c906e01c03e25d7c849f16ebf02a2 + ExpoKeepAwake: bf0811570c8da182bfb879169437d4de298376e7 + ExpoLinearGradient: 7734c8059972fcf691fb4330bcdf3390960a152d + ExpoLinking: d5c183998ca6ada66ff45e407e0f965b398a8902 + ExpoLocation: a43df2ff15f2fae9504b23a77060e7cd16b3e326 + ExpoModulesCore: 00a1b5c73248465bd0b93f59f8538c4573dac579 + ExpoSecureStore: 3f1b632d6d40bcc62b4983ef9199cd079592a50a + ExpoSplashScreen: 0ad5acac1b5d2953c6e00d4319f16d616f70d4dd + ExpoSymbols: c5612a90fb9179cdaebcd19bea9d8c69e5d3b859 + ExpoSystemUI: 433a971503b99020318518ed30a58204288bab2d + ExpoWebBrowser: dc39a88485f007e61a3dff05d6a75f22ab4a2e92 + EXStructuredHeaders: 32bec6771c2db18c4cd47cecae530d1d06cdf972 + EXUpdates: 004cca5223d04b5a0702b5712fbd5d9318024d47 + EXUpdatesInterface: 7ff005b7af94ee63fa452ea7bb95d7a8ff40277a + fast_float: 06eeec4fe712a76acc9376682e4808b05ce978b6 + FBLazyVector: 07309209b7b914451b8f822544a18e2a0a85afff + fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd + glog: 5683914934d5b6e4240e497e0f4a3b42d1854183 + GoogleSignIn: c7f09cfbc85a1abf69187be091997c317cc33b77 + GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 + GTMAppAuth: 217a876b249c3c585a54fd6f73e6b58c4f5c4238 + GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 + hermes-engine: 44bb6fe76a6eb400d3a992e2d0b21946ae999fa9 + libavif: 84bbb62fb232c3018d6f1bab79beea87e35de7b7 + libdav1d: 23581a4d8ec811ff171ed5e2e05cd27bad64c39f + libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 + PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 + RCT-Folly: e78785aa9ba2ed998ea4151e314036f6c49e6d82 + RCTDeprecation: 9bc64754b40b86fa5e32f293ab3ea8eea2248339 + RCTRequired: ee36c1ce9a5e65a3f629c13f38a85308eb8eebda + RCTTypeSafety: 7c0b654b92ef732fffc2a3992a02d10dc8f94bfd + ReachabilitySwift: 32793e867593cfc1177f5d16491e3a197d2fccda + React: bc28da5a227fa5e7b43e7ed68061f34740d4c880 + React-callinvoker: b78b18b44bc2c6634f7e594ad4fd206e624d41e3 + React-Core: 790dbe4191ce86ac1f45fb883f20d3b1d3cd9c17 + React-CoreModules: ee0b89806b53e36ccd02e5bf2f5743a902d7bf4b + React-cxxreact: 58b3e3e5242d59e0f4d1f8995a08c63a046db793 + React-debug: 1b32edb3610b3d4b9e864735d69c4d62d990626a + React-defaultsnativemodule: 69581e337102405a41d9fcd69e744af1a2ad749d + React-domnativemodule: 6923696d9fcc650c86c433da3259100f51ccb42b + React-Fabric: 920a0cdaffff29b9594c72b32b473b59cac91646 + React-FabricComponents: 640047a26d0583ed29a47f4e3366ae2834ec9b0c + React-FabricImage: 5e1a24378d80292ecd3d5ea61b647b7bca1cb723 + React-featureflags: f1e4a1a2c5cb631c59f24b1ae819466f40af2b87 + React-featureflagsnativemodule: 9f816b65e3e34147926638860bb840b3521bccda + React-graphics: 2511996f601a82b010bdff6727796de1c36c7b52 + React-hermes: 35f643c32d754a1b2b53cad842f23cfaa99f8d8f + React-idlecallbacksnativemodule: 2c5995a960001a809d41ee137e8fa5ed7832a24e + React-ImageManager: 4b728f466be07fe93835ec2eabd5b5a9c599eaf4 + React-jserrorhandler: f5718c89f923da34ab08737e4e6158baf51bb59b + React-jsi: 6a616bbcb9d9120a026b725ecce4f35f98f09ba1 + React-jsiexecutor: 57d3e09d0f1d3768ac5e2939995943d39bb9654f + React-jsinspector: 52941cbf108af39b69937626acc05aa5a7c8865e + React-jsinspectortracing: ba5099d65fbbcab3f3784762665efa5bce7c56a9 + React-jsitooling: db1d148e43965fa061664f250db24a12aba75f4c + React-jsitracing: 9a758dc710bdc5a479f5f977305d6819a0329cfb + React-logger: 1426d04b594a2e68b0ac2add21d45422d06397a3 + React-Mapbuffer: 70a29536f84ddffca4a91097651d2b8f194f7c67 + React-microtasksnativemodule: ff05e894231c44c21135d1d23a82b87656d98eeb + React-NativeModulesApple: d94850b316446b0c39a82eb278d6efaa1a634055 + React-oscompat: 56b4766e96b06843a3af49a6763ef40992e720aa + React-perflogger: 8fe9ec5f9ddbab1b8906c1aec159aa946e0ba041 + React-performancetimeline: 5759074986ec30b429c8392390dd4b662c65d801 + React-RCTActionSheet: 5eeca393823ffd882b0345e3237d79f886f45f39 + React-RCTAnimation: 8682725461a95efc7e14733a8c39395ca4919325 + React-RCTAppDelegate: c62b4b4edef06862ecd0338b38120e949618521c + React-RCTBlob: eea4f351d8ab91228bc520643c5c9d58ee399361 + React-RCTFabric: 715dd242313db6b659667d29962fd8242f119bac + React-RCTFBReactNativeSpec: 7974dac2a57ac00b7fec2c004ba1bb5e510b169e + React-RCTImage: 22fe53e2d833e6686b9ca87fb7d2d9cdaf642e32 + React-RCTLinking: 03282f3e8d12602a1ba8cf0805576c8b24da6c37 + React-RCTNetwork: e1abf95b6f01437abaf650a287093f34d1e2ee42 + React-RCTRuntime: 1ba02e904c795e01f0700004b848b2af1b9cb403 + React-RCTSettings: ed75f2bbce6a1827afc359df54bfcb931d5f1a8c + React-RCTText: 1c3233668a4b3df7180b630d55fdca54b54afa5e + React-RCTVibration: 71215147f2651948e303698e1b7397f7f72143a7 + React-rendererconsistency: 8e23097806742469937ecf8f3c401776b506f668 + React-renderercss: 8fa4bab51bf46d6925e9a1146d5f07000d9a7a34 + React-rendererdebug: 1eecc52d788acbf1d811804fe3c3db13cacda365 + React-rncore: ee835a70f528b2f08328eab8ad01a895b42ea62a + React-RuntimeApple: 32eb3ae01e58942c93670ae4c69f3aa317ac1f87 + React-RuntimeCore: 96f2ebad51fd037ff97e49e859fb821d123c3485 + React-runtimeexecutor: 86f4ae22d81c71b192f245140734caf657351e2c + React-RuntimeHermes: c1e92515c0cce33caea3255841cca5c6e4cbf784 + React-runtimescheduler: d33446b8b3e2889abb065c94651fe1645988a24c + React-timing: 9d2043040066c5b287ebc74d36f714ec0ba3eab9 + React-utils: dbd11170fa16d415eed989d75428af6fda5b712a + ReactAppDependencyProvider: ae0be24eb18014a031b4b220cb3973d07c3cbaf8 + ReactCodegen: 06cf663b23a161f42a2e14087269753f422885c0 + ReactCommon: 44c86ec3ace664c0f33b7a2ac89aced8304ef25e + SDWebImage: f29024626962457f3470184232766516dee8dfea + SDWebImageAVIFCoder: 00310d246aab3232ce77f1d8f0076f8c4b021d90 + SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c + SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380 + SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 + Yoga: dc7c21200195acacb62fa920c588e7c2106de45e + +PODFILE CHECKSUM: b990e6c13064be75856e8524f3491ead4c163c17 + +COCOAPODS: 1.16.2 diff --git a/ios/Podfile.properties.json b/ios/Podfile.properties.json new file mode 100644 index 0000000..de9f7b7 --- /dev/null +++ b/ios/Podfile.properties.json @@ -0,0 +1,4 @@ +{ + "expo.jsEngine": "hermes", + "EX_DEV_CLIENT_NETWORK_INSPECTOR": "true" +} diff --git a/ios/meatfarmermonorepo.xcodeproj/project.pbxproj b/ios/meatfarmermonorepo.xcodeproj/project.pbxproj new file mode 100644 index 0000000..bf04a8a --- /dev/null +++ b/ios/meatfarmermonorepo.xcodeproj/project.pbxproj @@ -0,0 +1,567 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 2C4FDEE95846910CE44B063B /* libPods-meatfarmermonorepo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 37BA16CD265ED7F72409550D /* libPods-meatfarmermonorepo.a */; }; + 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; + BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; }; + D20664F10ED8090F4983CFB0 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EB8BC3528ACACFE6A3CFB5D /* ExpoModulesProvider.swift */; }; + E5B462C85E4DB34FCCD3D04E /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = F66C424AA0E1347CF8253669 /* PrivacyInfo.xcprivacy */; }; + F11748422D0307B40044C1D9 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F11748412D0307B40044C1D9 /* AppDelegate.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 13B07F961A680F5B00A75B9A /* meatfarmermonorepo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = meatfarmermonorepo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = meatfarmermonorepo/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = meatfarmermonorepo/Info.plist; sourceTree = ""; }; + 338F04D2CAE7495C1D7CD233 /* Pods-meatfarmermonorepo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-meatfarmermonorepo.debug.xcconfig"; path = "Target Support Files/Pods-meatfarmermonorepo/Pods-meatfarmermonorepo.debug.xcconfig"; sourceTree = ""; }; + 37BA16CD265ED7F72409550D /* libPods-meatfarmermonorepo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-meatfarmermonorepo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3EB8BC3528ACACFE6A3CFB5D /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-meatfarmermonorepo/ExpoModulesProvider.swift"; sourceTree = ""; }; + 533CB49887DAADE200BAF1EB /* Pods-meatfarmermonorepo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-meatfarmermonorepo.release.xcconfig"; path = "Target Support Files/Pods-meatfarmermonorepo/Pods-meatfarmermonorepo.release.xcconfig"; sourceTree = ""; }; + AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = meatfarmermonorepo/SplashScreen.storyboard; sourceTree = ""; }; + BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; }; + ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; + F11748412D0307B40044C1D9 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = meatfarmermonorepo/AppDelegate.swift; sourceTree = ""; }; + F11748442D0722820044C1D9 /* meatfarmermonorepo-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "meatfarmermonorepo-Bridging-Header.h"; path = "meatfarmermonorepo/meatfarmermonorepo-Bridging-Header.h"; sourceTree = ""; }; + F66C424AA0E1347CF8253669 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = meatfarmermonorepo/PrivacyInfo.xcprivacy; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2C4FDEE95846910CE44B063B /* libPods-meatfarmermonorepo.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 13B07FAE1A68108700A75B9A /* meatfarmermonorepo */ = { + isa = PBXGroup; + children = ( + F11748412D0307B40044C1D9 /* AppDelegate.swift */, + F11748442D0722820044C1D9 /* meatfarmermonorepo-Bridging-Header.h */, + BB2F792B24A3F905000567C9 /* Supporting */, + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 13B07FB61A68108700A75B9A /* Info.plist */, + AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */, + F66C424AA0E1347CF8253669 /* PrivacyInfo.xcprivacy */, + ); + name = meatfarmermonorepo; + sourceTree = ""; + }; + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + isa = PBXGroup; + children = ( + ED297162215061F000B7C4FE /* JavaScriptCore.framework */, + 37BA16CD265ED7F72409550D /* libPods-meatfarmermonorepo.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 3742C5BD2E66753B5F39026B /* ExpoModulesProviders */ = { + isa = PBXGroup; + children = ( + 4DACB6B6CCC8B1A8CBF98D1D /* meatfarmermonorepo */, + ); + name = ExpoModulesProviders; + sourceTree = ""; + }; + 4DACB6B6CCC8B1A8CBF98D1D /* meatfarmermonorepo */ = { + isa = PBXGroup; + children = ( + 3EB8BC3528ACACFE6A3CFB5D /* ExpoModulesProvider.swift */, + ); + name = meatfarmermonorepo; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + ); + name = Libraries; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 13B07FAE1A68108700A75B9A /* meatfarmermonorepo */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 83CBBA001A601CBA00E9B192 /* Products */, + 2D16E6871FA4F8E400B85C8A /* Frameworks */, + D7B1D84C142A04E96F6A3A3D /* Pods */, + 3742C5BD2E66753B5F39026B /* ExpoModulesProviders */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* meatfarmermonorepo.app */, + ); + name = Products; + sourceTree = ""; + }; + BB2F792B24A3F905000567C9 /* Supporting */ = { + isa = PBXGroup; + children = ( + BB2F792C24A3F905000567C9 /* Expo.plist */, + ); + name = Supporting; + path = meatfarmermonorepo/Supporting; + sourceTree = ""; + }; + D7B1D84C142A04E96F6A3A3D /* Pods */ = { + isa = PBXGroup; + children = ( + 338F04D2CAE7495C1D7CD233 /* Pods-meatfarmermonorepo.debug.xcconfig */, + 533CB49887DAADE200BAF1EB /* Pods-meatfarmermonorepo.release.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 13B07F861A680F5B00A75B9A /* meatfarmermonorepo */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "meatfarmermonorepo" */; + buildPhases = ( + 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */, + 5BC667EA2551B13AA89D9A66 /* [Expo] Configure project */, + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */, + DAF2E4EA15761DC5FE4C4A8B /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = meatfarmermonorepo; + productName = meatfarmermonorepo; + productReference = 13B07F961A680F5B00A75B9A /* meatfarmermonorepo.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1130; + TargetAttributes = { + 13B07F861A680F5B00A75B9A = { + LastSwiftMigration = 1250; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "meatfarmermonorepo" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* meatfarmermonorepo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BB2F792D24A3F905000567C9 /* Expo.plist in Resources */, + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */, + E5B462C85E4DB34FCCD3D04E /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\"$PROJECT_DIR\"/..\n\nif [[ \"$CONFIGURATION\" = *Debug* ]]; then\n export SKIP_BUNDLING=1\nfi\nif [[ -z \"$ENTRY_FILE\" ]]; then\n # Set the entry JS file using the bundler's entry resolution.\n export ENTRY_FILE=\"$(\"$NODE_BINARY\" -e \"require('expo/scripts/resolveAppEntry')\" \"$PROJECT_ROOT\" ios absolute | tail -n 1)\"\nfi\n\nif [[ -z \"$CLI_PATH\" ]]; then\n # Use Expo CLI\n export CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })\")\"\nfi\nif [[ -z \"$BUNDLE_COMMAND\" ]]; then\n # Default Expo CLI command for bundling\n export BUNDLE_COMMAND=\"export:embed\"\nfi\n\n# Source .xcode.env.updates if it exists to allow\n# SKIP_BUNDLING to be unset if needed\nif [[ -f \"$PODS_ROOT/../.xcode.env.updates\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.updates\"\nfi\n# Source local changes to allow overrides\n# if needed\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\"`\n\n"; + }; + 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-meatfarmermonorepo-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 5BC667EA2551B13AA89D9A66 /* [Expo] Configure project */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "[Expo] Configure project"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-meatfarmermonorepo/expo-configure-project.sh\"\n"; + }; + 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-meatfarmermonorepo/Pods-meatfarmermonorepo-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/AppAuth/AppAuthCore_Privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/EXApplication/ExpoApplication_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/ExpoConstants_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/EXNotifications/ExpoNotifications_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/EXUpdates/EXUpdates.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/ExpoDevice/ExpoDevice_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/ExpoFileSystem/ExpoFileSystem_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/ExpoSystemUI/ExpoSystemUI_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/GTMAppAuth/GTMAppAuth_Privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher_Core_Privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/GoogleSignIn/GoogleSignIn.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities_Privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises_Privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/RCT-Folly/RCT-Folly_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift/ReachabilitySwift.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/React-Core_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact/React-cxxreact_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/boost/boost_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/glog/glog_privacy.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AppAuthCore_Privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoApplication_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoConstants_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoNotifications_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXUpdates.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoDevice_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoFileSystem_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoSystemUI_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GTMAppAuth_Privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GTMSessionFetcher_Core_Privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleSignIn.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleUtilities_Privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FBLPromises_Privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCT-Folly_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ReachabilitySwift.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/React-Core_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/React-cxxreact_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SDWebImage.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/boost_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/glog_privacy.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-meatfarmermonorepo/Pods-meatfarmermonorepo-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + DAF2E4EA15761DC5FE4C4A8B /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-meatfarmermonorepo/Pods-meatfarmermonorepo-frameworks.sh", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-meatfarmermonorepo/Pods-meatfarmermonorepo-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F11748422D0307B40044C1D9 /* AppDelegate.swift in Sources */, + D20664F10ED8090F4983CFB0 /* ExpoModulesProvider.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 338F04D2CAE7495C1D7CD233 /* Pods-meatfarmermonorepo.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = meatfarmermonorepo/meatfarmermonorepo.entitlements; + CURRENT_PROJECT_VERSION = 1; + ENABLE_BITCODE = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "FB_SONARKIT_ENABLED=1", + ); + INFOPLIST_FILE = meatfarmermonorepo/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; + PRODUCT_BUNDLE_IDENTIFIER = "com.mohammedshafiuddin54.meat-farmer-monorepo"; + PRODUCT_NAME = meatfarmermonorepo; + SWIFT_OBJC_BRIDGING_HEADER = "meatfarmermonorepo/meatfarmermonorepo-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 533CB49887DAADE200BAF1EB /* Pods-meatfarmermonorepo.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = meatfarmermonorepo/meatfarmermonorepo.entitlements; + CURRENT_PROJECT_VERSION = 1; + INFOPLIST_FILE = meatfarmermonorepo/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; + PRODUCT_BUNDLE_IDENTIFIER = "com.mohammedshafiuddin54.meat-farmer-monorepo"; + PRODUCT_NAME = meatfarmermonorepo; + SWIFT_OBJC_BRIDGING_HEADER = "meatfarmermonorepo/meatfarmermonorepo-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); + LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = ( + "$(inherited)", + " ", + ); + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG"; + USE_HERMES = true; + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); + LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ( + "$(inherited)", + " ", + ); + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; + SDKROOT = iphoneos; + USE_HERMES = true; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "meatfarmermonorepo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "meatfarmermonorepo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/ios/meatfarmermonorepo.xcodeproj/xcshareddata/xcschemes/meatfarmermonorepo.xcscheme b/ios/meatfarmermonorepo.xcodeproj/xcshareddata/xcschemes/meatfarmermonorepo.xcscheme new file mode 100644 index 0000000..0efc0b2 --- /dev/null +++ b/ios/meatfarmermonorepo.xcodeproj/xcshareddata/xcschemes/meatfarmermonorepo.xcscheme @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/meatfarmermonorepo.xcworkspace/contents.xcworkspacedata b/ios/meatfarmermonorepo.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..84e0859 --- /dev/null +++ b/ios/meatfarmermonorepo.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ios/meatfarmermonorepo/AppDelegate.swift b/ios/meatfarmermonorepo/AppDelegate.swift new file mode 100644 index 0000000..a7887e1 --- /dev/null +++ b/ios/meatfarmermonorepo/AppDelegate.swift @@ -0,0 +1,70 @@ +import Expo +import React +import ReactAppDependencyProvider + +@UIApplicationMain +public class AppDelegate: ExpoAppDelegate { + var window: UIWindow? + + var reactNativeDelegate: ExpoReactNativeFactoryDelegate? + var reactNativeFactory: RCTReactNativeFactory? + + public override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil + ) -> Bool { + let delegate = ReactNativeDelegate() + let factory = ExpoReactNativeFactory(delegate: delegate) + delegate.dependencyProvider = RCTAppDependencyProvider() + + reactNativeDelegate = delegate + reactNativeFactory = factory + bindReactNativeFactory(factory) + +#if os(iOS) || os(tvOS) + window = UIWindow(frame: UIScreen.main.bounds) + factory.startReactNative( + withModuleName: "main", + in: window, + launchOptions: launchOptions) +#endif + + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } + + // Linking API + public override func application( + _ app: UIApplication, + open url: URL, + options: [UIApplication.OpenURLOptionsKey: Any] = [:] + ) -> Bool { + return super.application(app, open: url, options: options) || RCTLinkingManager.application(app, open: url, options: options) + } + + // Universal Links + public override func application( + _ application: UIApplication, + continue userActivity: NSUserActivity, + restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void + ) -> Bool { + let result = RCTLinkingManager.application(application, continue: userActivity, restorationHandler: restorationHandler) + return super.application(application, continue: userActivity, restorationHandler: restorationHandler) || result + } +} + +class ReactNativeDelegate: ExpoReactNativeFactoryDelegate { + // Extension point for config-plugins + + override func sourceURL(for bridge: RCTBridge) -> URL? { + // needed to return the correct URL for expo-dev-client. + bridge.bundleURL ?? bundleURL() + } + + override func bundleURL() -> URL? { +#if DEBUG + return RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: ".expo/.virtual-metro-entry") +#else + return Bundle.main.url(forResource: "main", withExtension: "jsbundle") +#endif + } +} diff --git a/ios/meatfarmermonorepo/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png b/ios/meatfarmermonorepo/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png new file mode 100644 index 0000000..ac881f6 Binary files /dev/null and b/ios/meatfarmermonorepo/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png differ diff --git a/ios/meatfarmermonorepo/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/meatfarmermonorepo/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..90d8d4c --- /dev/null +++ b/ios/meatfarmermonorepo/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,14 @@ +{ + "images": [ + { + "filename": "App-Icon-1024x1024@1x.png", + "idiom": "universal", + "platform": "ios", + "size": "1024x1024" + } + ], + "info": { + "version": 1, + "author": "expo" + } +} \ No newline at end of file diff --git a/ios/meatfarmermonorepo/Images.xcassets/Contents.json b/ios/meatfarmermonorepo/Images.xcassets/Contents.json new file mode 100644 index 0000000..ed285c2 --- /dev/null +++ b/ios/meatfarmermonorepo/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "expo" + } +} diff --git a/ios/meatfarmermonorepo/Images.xcassets/SplashScreenBackground.colorset/Contents.json b/ios/meatfarmermonorepo/Images.xcassets/SplashScreenBackground.colorset/Contents.json new file mode 100644 index 0000000..15f02ab --- /dev/null +++ b/ios/meatfarmermonorepo/Images.xcassets/SplashScreenBackground.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors": [ + { + "color": { + "components": { + "alpha": "1.000", + "blue": "1.00000000000000", + "green": "1.00000000000000", + "red": "1.00000000000000" + }, + "color-space": "srgb" + }, + "idiom": "universal" + } + ], + "info": { + "version": 1, + "author": "expo" + } +} \ No newline at end of file diff --git a/ios/meatfarmermonorepo/Info.plist b/ios/meatfarmermonorepo/Info.plist new file mode 100644 index 0000000..8982020 --- /dev/null +++ b/ios/meatfarmermonorepo/Info.plist @@ -0,0 +1,75 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + meat-farmer-monorepo + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleURLSchemes + + com.mohammedshafiuddin54.meat-farmer-monorepo + + + + CFBundleURLSchemes + + exp+meat-farmer-monorepo + + + + CFBundleVersion + 1 + LSMinimumSystemVersion + 12.0 + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + NSAllowsLocalNetworking + + + UILaunchStoryboardName + SplashScreen + UIRequiredDeviceCapabilities + + arm64 + + UIRequiresFullScreen + + UIStatusBarStyle + UIStatusBarStyleDefault + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIUserInterfaceStyle + Light + UIViewControllerBasedStatusBarAppearance + + + \ No newline at end of file diff --git a/ios/meatfarmermonorepo/PrivacyInfo.xcprivacy b/ios/meatfarmermonorepo/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..f184652 --- /dev/null +++ b/ios/meatfarmermonorepo/PrivacyInfo.xcprivacy @@ -0,0 +1,49 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + 0A2A.1 + 3B52.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + C56D.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategorySystemBootTime + NSPrivacyAccessedAPITypeReasons + + 35F9.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryDiskSpace + NSPrivacyAccessedAPITypeReasons + + E174.1 + 85F4.1 + + + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/ios/meatfarmermonorepo/SplashScreen.storyboard b/ios/meatfarmermonorepo/SplashScreen.storyboard new file mode 100644 index 0000000..81f3d72 --- /dev/null +++ b/ios/meatfarmermonorepo/SplashScreen.storyboard @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ios/meatfarmermonorepo/Supporting/Expo.plist b/ios/meatfarmermonorepo/Supporting/Expo.plist new file mode 100644 index 0000000..750be02 --- /dev/null +++ b/ios/meatfarmermonorepo/Supporting/Expo.plist @@ -0,0 +1,12 @@ + + + + + EXUpdatesCheckOnLaunch + ALWAYS + EXUpdatesEnabled + + EXUpdatesLaunchWaitMs + 0 + + \ No newline at end of file diff --git a/ios/meatfarmermonorepo/meatfarmermonorepo-Bridging-Header.h b/ios/meatfarmermonorepo/meatfarmermonorepo-Bridging-Header.h new file mode 100644 index 0000000..8361941 --- /dev/null +++ b/ios/meatfarmermonorepo/meatfarmermonorepo-Bridging-Header.h @@ -0,0 +1,3 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// diff --git a/ios/meatfarmermonorepo/meatfarmermonorepo.entitlements b/ios/meatfarmermonorepo/meatfarmermonorepo.entitlements new file mode 100644 index 0000000..f683276 --- /dev/null +++ b/ios/meatfarmermonorepo/meatfarmermonorepo.entitlements @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 2acecc7..64a526b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,12 +19,14 @@ "admin-ui": "^1.0.0", "backend": "^1.0.0", "canvas-confetti": "^1.9.4", + "drizzle-orm": "^0.45.1", "expo": "~53.0.22", "expo-auth-session": "~6.2.1", "expo-crypto": "~14.1.5", "expo-server-sdk": "^5.0.0", "expo-web-browser": "~14.2.0", "node-cron": "^4.2.1", + "pg": "^8.20.0", "react": "19.0.0", "react-native": "0.79.6", "three": "^0.182.0", @@ -192,10 +194,136 @@ "drizzle-kit": "^0.31.4", "rimraf": "^6.1.2", "ts-node-dev": "^2.0.0", + "tsc-alias": "^1.8.16", "tsx": "^4.20.5", "typescript": "^5.9.2" } }, + "apps/backend/node_modules/drizzle-orm": { + "version": "0.44.7", + "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.44.7.tgz", + "integrity": "sha512-quIpnYznjU9lHshEOAYLoZ9s3jweleHlZIAWR/jX9gAWNg/JhQ1wj0KGRf7/Zm+obRrYd9GjPVJg790QY9N5AQ==", + "license": "Apache-2.0", + "peerDependencies": { + "@aws-sdk/client-rds-data": ">=3", + "@cloudflare/workers-types": ">=4", + "@electric-sql/pglite": ">=0.2.0", + "@libsql/client": ">=0.10.0", + "@libsql/client-wasm": ">=0.10.0", + "@neondatabase/serverless": ">=0.10.0", + "@op-engineering/op-sqlite": ">=2", + "@opentelemetry/api": "^1.4.1", + "@planetscale/database": ">=1.13", + "@prisma/client": "*", + "@tidbcloud/serverless": "*", + "@types/better-sqlite3": "*", + "@types/pg": "*", + "@types/sql.js": "*", + "@upstash/redis": ">=1.34.7", + "@vercel/postgres": ">=0.8.0", + "@xata.io/client": "*", + "better-sqlite3": ">=7", + "bun-types": "*", + "expo-sqlite": ">=14.0.0", + "gel": ">=2", + "knex": "*", + "kysely": "*", + "mysql2": ">=2", + "pg": ">=8", + "postgres": ">=3", + "sql.js": ">=1", + "sqlite3": ">=5" + }, + "peerDependenciesMeta": { + "@aws-sdk/client-rds-data": { + "optional": true + }, + "@cloudflare/workers-types": { + "optional": true + }, + "@electric-sql/pglite": { + "optional": true + }, + "@libsql/client": { + "optional": true + }, + "@libsql/client-wasm": { + "optional": true + }, + "@neondatabase/serverless": { + "optional": true + }, + "@op-engineering/op-sqlite": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@prisma/client": { + "optional": true + }, + "@tidbcloud/serverless": { + "optional": true + }, + "@types/better-sqlite3": { + "optional": true + }, + "@types/pg": { + "optional": true + }, + "@types/sql.js": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/postgres": { + "optional": true + }, + "@xata.io/client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "bun-types": { + "optional": true + }, + "expo-sqlite": { + "optional": true + }, + "gel": { + "optional": true + }, + "knex": { + "optional": true + }, + "kysely": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "pg": { + "optional": true + }, + "postgres": { + "optional": true + }, + "prisma": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + } + } + }, "apps/backend/node_modules/expo-server-sdk": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/expo-server-sdk/-/expo-server-sdk-4.0.0.tgz", @@ -11216,6 +11344,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/array.prototype.findlast": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", @@ -13257,6 +13395,19 @@ "node": ">=0.3.1" } }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", @@ -13399,9 +13550,9 @@ } }, "node_modules/drizzle-orm": { - "version": "0.44.7", - "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.44.7.tgz", - "integrity": "sha512-quIpnYznjU9lHshEOAYLoZ9s3jweleHlZIAWR/jX9gAWNg/JhQ1wj0KGRf7/Zm+obRrYd9GjPVJg790QY9N5AQ==", + "version": "0.45.1", + "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.45.1.tgz", + "integrity": "sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==", "license": "Apache-2.0", "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", @@ -16254,6 +16405,37 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/glsl-noise": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/glsl-noise/-/glsl-noise-0.0.0.tgz", @@ -19035,6 +19217,20 @@ "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==", "license": "MIT" }, + "node_modules/mylas": { + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/mylas/-/mylas-2.1.14.tgz", + "integrity": "sha512-BzQguy9W9NJgoVn2mRWzbFrFWWztGCcng2QI9+41frfk+Athwgx3qhqhvStz7ExeUUu7Kzw427sNzHpEZNINog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/raouldeheer" + } + }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -19759,6 +19955,16 @@ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "license": "MIT" }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/pbf": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.3.0.tgz", @@ -19773,14 +19979,14 @@ } }, "node_modules/pg": { - "version": "8.16.3", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz", - "integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", + "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", "license": "MIT", "dependencies": { - "pg-connection-string": "^2.9.1", - "pg-pool": "^3.10.1", - "pg-protocol": "^1.10.3", + "pg-connection-string": "^2.12.0", + "pg-pool": "^3.13.0", + "pg-protocol": "^1.13.0", "pg-types": "2.2.0", "pgpass": "1.0.5" }, @@ -19788,7 +19994,7 @@ "node": ">= 16.0.0" }, "optionalDependencies": { - "pg-cloudflare": "^1.2.7" + "pg-cloudflare": "^1.3.0" }, "peerDependencies": { "pg-native": ">=3.0.1" @@ -19800,16 +20006,16 @@ } }, "node_modules/pg-cloudflare": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.7.tgz", - "integrity": "sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.3.0.tgz", + "integrity": "sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==", "license": "MIT", "optional": true }, "node_modules/pg-connection-string": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.1.tgz", - "integrity": "sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.12.0.tgz", + "integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==", "license": "MIT" }, "node_modules/pg-int8": { @@ -19822,18 +20028,18 @@ } }, "node_modules/pg-pool": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.1.tgz", - "integrity": "sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.13.0.tgz", + "integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==", "license": "MIT", "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz", - "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz", + "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==", "license": "MIT" }, "node_modules/pg-sdk-node": { @@ -19911,6 +20117,19 @@ "node": ">= 6" } }, + "node_modules/plimit-lit": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/plimit-lit/-/plimit-lit-1.6.1.tgz", + "integrity": "sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "queue-lit": "^1.5.1" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/plist": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", @@ -20523,6 +20742,16 @@ "inherits": "~2.0.3" } }, + "node_modules/queue-lit": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/queue-lit/-/queue-lit-1.5.2.tgz", + "integrity": "sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -23432,6 +23661,38 @@ "dev": true, "license": "MIT" }, + "node_modules/tsc-alias": { + "version": "1.8.16", + "resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.8.16.tgz", + "integrity": "sha512-QjCyu55NFyRSBAl6+MTFwplpFcnm2Pq01rR/uxfqJoLMm6X3O14KEGtaSDZpJYaE1bJBGDjD0eSuiIWPe2T58g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.3", + "commander": "^9.0.0", + "get-tsconfig": "^4.10.0", + "globby": "^11.0.4", + "mylas": "^2.1.9", + "normalize-path": "^3.0.0", + "plimit-lit": "^1.2.6" + }, + "bin": { + "tsc-alias": "dist/bin/index.js" + }, + "engines": { + "node": ">=16.20.2" + } + }, + "node_modules/tsc-alias/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || >=14" + } + }, "node_modules/tsconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", diff --git a/package.json b/package.json index ba2d3da..569f52f 100644 --- a/package.json +++ b/package.json @@ -36,12 +36,14 @@ "admin-ui": "^1.0.0", "backend": "^1.0.0", "canvas-confetti": "^1.9.4", + "drizzle-orm": "^0.45.1", "expo": "~53.0.22", "expo-auth-session": "~6.2.1", "expo-crypto": "~14.1.5", "expo-server-sdk": "^5.0.0", "expo-web-browser": "~14.2.0", "node-cron": "^4.2.1", + "pg": "^8.20.0", "react": "19.0.0", "react-native": "0.79.6", "three": "^0.182.0", diff --git a/packages/ui/index.ts b/packages/ui/index.ts index cb5abc5..97adb39 100755 --- a/packages/ui/index.ts +++ b/packages/ui/index.ts @@ -64,8 +64,9 @@ const isDevMode = Constants.executionEnvironment !== "standalone"; // const BASE_API_URL = 'http://10.0.2.2:4000'; // const BASE_API_URL = 'http://192.168.100.101:4000'; // const BASE_API_URL = 'http://192.168.1.5:4000'; -let BASE_API_URL = "https://mf.freshyo.in"; -// let BASE_API_URL = 'http://192.168.100.104:4000'; +// let BASE_API_URL = "https://mf.freshyo.in"; +let BASE_API_URL = "https://freshyo.technocracy.ovh"; +// let BASE_API_URL = 'http://192.168.100.104:4000'; // let BASE_API_URL = 'http://192.168.29.176:4000'; // if(isDevMode) { diff --git a/packages/ui/src/components/bottom-dropdown.tsx b/packages/ui/src/components/bottom-dropdown.tsx index 16a80c1..3d70e14 100644 --- a/packages/ui/src/components/bottom-dropdown.tsx +++ b/packages/ui/src/components/bottom-dropdown.tsx @@ -31,6 +31,7 @@ interface BottomDropdownProps { displayText: string; }>; onSearch?: (query: string) => void; + testID?: string; } const BottomDropdown: React.FC = ({ @@ -47,6 +48,7 @@ const BottomDropdown: React.FC = ({ className, triggerComponent, onSearch, + testID, }) => { const { theme } = useTheme(); const [isOpen, setIsOpen] = useState(false); @@ -141,6 +143,8 @@ const BottomDropdown: React.FC = ({ }) ) : ( = ({ {onSearch && ( = ({ {multiple && ( diff --git a/packages/ui/src/components/button.tsx b/packages/ui/src/components/button.tsx index ee535eb..c4ecad5 100755 --- a/packages/ui/src/components/button.tsx +++ b/packages/ui/src/components/button.tsx @@ -48,6 +48,7 @@ function MyButton({ return ( void; showLabels?: boolean; // Optional prop to control label visibility timeOnly?: boolean; // Optional prop to show only time picker + testID?: string; // Optional prop for testing (time only mode) + dateTestID?: string; // Optional prop for date picker testing + timeTestID?: string; // Optional prop for time picker testing } type Mode = "date" | "time" | "datetime"; function DateTimePickerMod(props: Props) { - const { value, setValue, showLabels = true, timeOnly = false } = props; + const { value, setValue, showLabels = true, timeOnly = false, testID, dateTestID, timeTestID } = props; const [show, setShow] = useState(false); const [mode, setMode] = useState("date"); @@ -62,7 +65,7 @@ function DateTimePickerMod(props: Props) { return ( {timeOnly ? ( - + {showLabels && Select Time} @@ -81,6 +84,8 @@ function DateTimePickerMod(props: Props) { ) : ( @@ -96,6 +101,8 @@ function DateTimePickerMod(props: Props) { diff --git a/packages/ui/src/components/textinput.tsx b/packages/ui/src/components/textinput.tsx index e88381c..fe67dcb 100755 --- a/packages/ui/src/components/textinput.tsx +++ b/packages/ui/src/components/textinput.tsx @@ -39,6 +39,7 @@ const MyTextInput: React.FC = ({ )} = ({ ); }; -export default MyTextInput; \ No newline at end of file +export default MyTextInput; diff --git a/progress.md b/progress.md index 45370f9..d3aedda 100644 --- a/progress.md +++ b/progress.md @@ -180,4 +180,4 @@ - **React Query** handles all API state management with proper loading/error states - **Vendor Snippets**: Relations definitions are critical for Drizzle ORM queries - always define relations for foreign key relationships - **tRPC Usage**: Use `trpc` for React hooks and `trpcClient` for direct API calls outside components -- **Focus Callbacks**: Implemented for automatic data refresh when screens regain focus \ No newline at end of file +- **Focus Callbacks**: Implemented for automatic data refresh when screens regain focus diff --git a/test/index.js b/test/index.js new file mode 100644 index 0000000..fc6077b --- /dev/null +++ b/test/index.js @@ -0,0 +1,168 @@ +import { remote } from 'webdriverio' + + +const driver = await remote({ + hostname: 'localhost', + port: 4723, + path: "/", + capabilities: { + platformName: "Android", + "appium:automationName": "UiAutomator2", + "appium:deviceName": "Android Emulator", + "appium:app": "/Users/mohammedshafiuddin/WebDev/freshyo/apps/admin-ui/android/app/build/outputs/apk/debug/app-debug.apk" + } +}) + +// Conditional login - only if login screen is present +try { + const loginInput = await driver.$('~login-name-input'); + await loginInput.waitForDisplayed({ timeout: 5000 }); + + // Login screen exists - perform login + console.log('Login screen found, performing login...'); + + // Enter username + await loginInput.click(); + await loginInput.setValue('admin1'); + + // Enter password + const passwordInput = await driver.$('~login-password-input'); + await passwordInput.click(); + await passwordInput.setValue('admin12345'); + + // Click login button + const loginButton = await driver.$('~login-button'); + await loginButton.click(); + + // Wait for dashboard to load + console.log('Waiting for dashboard...'); + await driver.$('~delivery-slots-menu-item').waitForDisplayed({ timeout: 10000 }); + console.log('Dashboard loaded!'); +} catch (e) { + // Login screen not found - already logged in or different screen + console.log('Login screen not found, continuing...'); +} + +// Navigate to Delivery Slots +console.log('Navigating to Delivery Slots...'); +const deliverySlotsMenu = await driver.$('~delivery-slots-menu-item'); +await deliverySlotsMenu.waitForDisplayed({ timeout: 5000 }); +await deliverySlotsMenu.click(); + +// Wait for slots page and click FAB +console.log('Waiting for slots page...'); +const addSlotFab = await driver.$('~add-slot-fab'); +await addSlotFab.waitForDisplayed({ timeout: 20000 }); +await addSlotFab.click(); + +// Wait for slot form +console.log('Waiting for slot form...'); +await driver.$('~delivery-time-picker').waitForDisplayed({ timeout: 5000 }); + +// Calculate target times +const now = new Date(); +const targetDeliveryTime = new Date(now.getTime() + 2 * 60 * 60 * 1000); // 2 hours from now +const targetFreezeTime = new Date(now.getTime() + 1 * 60 * 60 * 1000 + 45 * 60 * 1000); // 1hr 45min from now + +const deliveryHour = targetDeliveryTime.getHours(); +const deliveryMinute = targetDeliveryTime.getMinutes(); +const freezeHour = targetFreezeTime.getHours(); +const freezeMinute = targetFreezeTime.getMinutes(); + +console.log(`Target delivery time: ${deliveryHour}:${deliveryMinute.toString().padStart(2, '0')}`); +console.log(`Target freeze time: ${freezeHour}:${freezeMinute.toString().padStart(2, '0')}`); + +// Set delivery time +console.log('Setting delivery time...'); +const deliveryTimePicker = await driver.$('~delivery-time-picker'); +await deliveryTimePicker.click(); + +// Wait for time picker dialog +await driver.pause(1000); + +try { + // Find hour field and set it + const hourField = await driver.$('android=new UiSelector().resourceId("android:id/hour")'); + await hourField.clearValue(); + await hourField.setValue(deliveryHour.toString()); + + // Find minute field and set it + const minuteField = await driver.$('android=new UiSelector().resourceId("android:id/minute")'); + await minuteField.clearValue(); + await minuteField.setValue(deliveryMinute.toString().padStart(2, '0')); + + // Click OK button + const okButton = await driver.$('android=new UiSelector().resourceId("android:id/button1")'); + await okButton.click(); + console.log('Delivery time set successfully'); +} catch (e) { + console.log('Could not interact with time picker, using back button...'); + await driver.back(); +} + +// Set freeze time +console.log('Setting freeze time...'); +const freezeTimePicker = await driver.$('~freeze-time-picker'); +await freezeTimePicker.click(); + +// Wait for time picker dialog +await driver.pause(1000); + +try { + // Find hour field and set it + const freezeHourField = await driver.$('android=new UiSelector().resourceId("android:id/hour")'); + await freezeHourField.clearValue(); + await freezeHourField.setValue(freezeHour.toString()); + + // Find minute field and set it + const freezeMinuteField = await driver.$('android=new UiSelector().resourceId("android:id/minute")'); + await freezeMinuteField.clearValue(); + await freezeMinuteField.setValue(freezeMinute.toString().padStart(2, '0')); + + // Click OK button + const freezeOkButton = await driver.$('android=new UiSelector().resourceId("android:id/button1")'); + await freezeOkButton.click(); + console.log('Freeze time set successfully'); +} catch (e) { + console.log('Could not interact with time picker, using back button...'); + await driver.back(); +} + +// Select product group "All mutton items" +console.log('Selecting product group...'); +const productGroupsDropdown = await driver.$('~product-groups-dropdown'); +await productGroupsDropdown.click(); + +// Wait for dropdown and select "All mutton items" +await driver.pause(2000); + +// Try to find and tap "All mutton items" option +try { + const muttonOption = await driver.$('android=new UiSelector().textContains("All mutton items")'); + await muttonOption.waitForDisplayed({ timeout: 5000 }); + await muttonOption.click(); + console.log('Selected "All mutton items" group'); +} catch (e) { + console.log('Could not find "All mutton items" option, continuing...'); +} + +// Tap Done to close dropdown +const doneButton = await driver.$('~product-groups-dropdown-done'); +if (await doneButton.isDisplayed()) { + await doneButton.click(); +} + +// Create slot +console.log('Creating slot...'); +const createSlotButton = await driver.$('~create-slot-button'); +await createSlotButton.waitForDisplayed({ timeout: 5000 }); +await createSlotButton.click(); + +// Wait for slot creation +console.log('Waiting for slot creation...'); +await driver.pause(5000); + +console.log('Slot creation test completed!'); + +// Keep the session open for verification or close it +// await driver.deleteSession(); diff --git a/test/package-lock.json b/test/package-lock.json new file mode 100644 index 0000000..1d1e8aa --- /dev/null +++ b/test/package-lock.json @@ -0,0 +1,2859 @@ +{ + "name": "test", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "test", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "webdriverio": "^9.24.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@promptbook/utils": { + "version": "0.69.5", + "resolved": "https://registry.npmjs.org/@promptbook/utils/-/utils-0.69.5.tgz", + "integrity": "sha512-xm5Ti/Hp3o4xHrsK9Yy3MS6KbDxYbq485hDsFvxqaNA7equHLPdo8H8faTitTeb14QCDfLW4iwCxdVYu5sn6YQ==", + "funding": [ + { + "type": "individual", + "url": "https://buymeacoffee.com/hejny" + }, + { + "type": "github", + "url": "https://github.com/webgptorg/promptbook/blob/main/README.md#%EF%B8%8F-contributing" + } + ], + "license": "CC-BY-4.0", + "dependencies": { + "spacetrim": "0.11.59" + } + }, + "node_modules/@puppeteer/browsers": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.0.tgz", + "integrity": "sha512-46BZJYJjc/WwmKjsvDFykHtXrtomsCIrwYQPOP7VfMJoZY2bsDF9oROBABR3paDjDcmkUye1Pb1BqdcdiipaWA==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.4.3", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.5.0", + "semver": "^7.7.4", + "tar-fs": "^3.1.1", + "yargs": "^17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.19.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.37.tgz", + "integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", + "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", + "license": "MIT" + }, + "node_modules/@types/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/which/-/which-2.0.2.tgz", + "integrity": "sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@wdio/config": { + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.24.0.tgz", + "integrity": "sha512-rcHu0eG16rSEmHL0sEKDcr/vYFmGhQ5GOlmlx54r+1sgh6sf136q+kth4169s16XqviWGW3LjZbUfpTK29pGtw==", + "license": "MIT", + "dependencies": { + "@wdio/logger": "9.18.0", + "@wdio/types": "9.24.0", + "@wdio/utils": "9.24.0", + "deepmerge-ts": "^7.0.3", + "glob": "^10.2.2", + "import-meta-resolve": "^4.0.0", + "jiti": "^2.6.1" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/logger": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz", + "integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==", + "license": "MIT", + "dependencies": { + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "safe-regex2": "^5.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/protocols": { + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.24.0.tgz", + "integrity": "sha512-ozQKYddBLT4TRvU9J+fGrhVUtx3iDAe+KNCJcTDMFMxNSdDMR2xFQdNp8HLHypspk58oXTYCvz6ZYjySthhqsw==", + "license": "MIT" + }, + "node_modules/@wdio/repl": { + "version": "9.16.2", + "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.16.2.tgz", + "integrity": "sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==", + "license": "MIT", + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/types": { + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.24.0.tgz", + "integrity": "sha512-PYYunNl8Uq1r8YMJAK6ReRy/V/XIrCSyj5cpCtR5EqCL6heETOORFj7gt4uPnzidfgbtMBcCru0LgjjlMiH1UQ==", + "license": "MIT", + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/utils": { + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.24.0.tgz", + "integrity": "sha512-6WhtzC5SNCGRBTkaObX6A07Ofnnyyf+TQH/d/fuhZRqvBknrP4AMMZF+PFxGl1fwdySWdBn+gV2QLE+52Byowg==", + "license": "MIT", + "dependencies": { + "@puppeteer/browsers": "^2.2.0", + "@wdio/logger": "9.18.0", + "@wdio/types": "9.24.0", + "decamelize": "^6.0.0", + "deepmerge-ts": "^7.0.3", + "edgedriver": "^6.1.2", + "geckodriver": "^6.1.0", + "get-port": "^7.0.0", + "import-meta-resolve": "^4.0.0", + "locate-app": "^2.2.24", + "mitt": "^3.0.1", + "safaridriver": "^1.0.0", + "split2": "^4.2.0", + "wait-port": "^1.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@zip.js/zip.js": { + "version": "2.8.23", + "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.8.23.tgz", + "integrity": "sha512-RB+RLnxPJFPrGvQ9rgO+4JOcsob6lD32OcF0QE0yg24oeW9q8KnTTNlugcDaIveEcCbclobJcZP+fLQ++sH0bw==", + "license": "BSD-3-Clause", + "engines": { + "bun": ">=0.7.0", + "deno": ">=1.0.0", + "node": ">=18.0.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/archiver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.2", + "async": "^3.2.4", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "license": "MIT", + "dependencies": { + "glob": "^10.0.0", + "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/b4a": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz", + "integrity": "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==", + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } + }, + "node_modules/bare-fs": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.5.tgz", + "integrity": "sha512-XvwYM6VZqKoqDll8BmSww5luA5eflDzY0uEFfBJtFKe4PAAtxBjU3YIxzIBzhyaEQBy1VXEQBto4cpN5RZJw+w==", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-os": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.7.1.tgz", + "integrity": "sha512-ebvMaS5BgZKmJlvuWh14dg9rbUI84QeV3WlWn6Ph6lFI8jJoh7ADtVTyD2c93euwbe+zgi0DVrl4YmqXeM9aIA==", + "license": "Apache-2.0", + "engines": { + "bare": ">=1.14.0" + } + }, + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "license": "Apache-2.0", + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.8.0.tgz", + "integrity": "sha512-reUN0M2sHRqCdG4lUK3Fw8w98eeUIZHL5c3H7Mbhk2yVBL+oofgaIp0ieLfD5QXwPCypBpmEEKU2WZKzbAk8GA==", + "license": "Apache-2.0", + "dependencies": { + "streamx": "^2.21.0", + "teex": "^1.0.1" + }, + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/bare-url": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", + "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", + "license": "Apache-2.0", + "dependencies": { + "bare-path": "^3.0.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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" + }, + "node_modules/basic-ftp": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.0.tgz", + "integrity": "sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "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-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cheerio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz", + "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "encoding-sniffer": "^0.2.1", + "htmlparser2": "^10.1.0", + "parse5": "^7.3.0", + "parse5-htmlparser2-tree-adapter": "^7.1.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^7.19.0", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=20.18.1" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/compress-commons": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-shorthand-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.2.tgz", + "integrity": "sha512-C2AugXIpRGQTxaCW0N7n5jD/p5irUmCrwl03TrnMFBHDbdq44CFWR2zO7rK9xPN4Eo3pUxC4vQzQgbIpzrD1PQ==", + "license": "MIT" + }, + "node_modules/css-value": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/css-value/-/css-value-0.0.1.tgz", + "integrity": "sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q==" + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.1.tgz", + "integrity": "sha512-G7Cqgaelq68XHJNGlZ7lrNQyhZGsFqpwtGFexqUv4IQdjKoSYF7ipZ9UuTJZUSQXFj/XaoBLuEVIVqr8EJngEQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deepmerge-ts": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz", + "integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "license": "MIT", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/edge-paths": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-3.0.5.tgz", + "integrity": "sha512-sB7vSrDnFa4ezWQk9nZ/n0FdpdUuC6R1EOrlU3DL+bovcNFK28rqu2emmAUjujYEJTWIgQGqgVVWUZXMnc8iWg==", + "license": "MIT", + "dependencies": { + "@types/which": "^2.0.1", + "which": "^2.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/shirshak55" + } + }, + "node_modules/edge-paths/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/edge-paths/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/edgedriver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-6.3.0.tgz", + "integrity": "sha512-ggEQL+oEyIcM4nP2QC3AtCQ04o4kDNefRM3hja0odvlPSnsaxiruMxEZ93v3gDCKWYW6BXUr51PPradb+3nffw==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@wdio/logger": "^9.18.0", + "@zip.js/zip.js": "^2.8.11", + "decamelize": "^6.0.1", + "edge-paths": "^3.0.5", + "fast-xml-parser": "^5.3.3", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "which": "^6.0.0" + }, + "bin": { + "edgedriver": "bin/edgedriver.js" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/encoding-sniffer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, + "node_modules/fast-xml-builder": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.0.0.tgz", + "integrity": "sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/fast-xml-parser": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.4.2.tgz", + "integrity": "sha512-pw/6pIl4k0CSpElPEJhDppLzaixDEuWui2CUQQBH/ECDf7+y6YwA4Gf7Tyb0Rfe4DIMuZipYj4AEL0nACKglvQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "fast-xml-builder": "^1.0.0", + "strnum": "^2.1.2" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/geckodriver": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz", + "integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@wdio/logger": "^9.18.0", + "@zip.js/zip.js": "^2.8.11", + "decamelize": "^6.0.1", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "modern-tar": "^0.7.2" + }, + "bin": { + "geckodriver": "bin/geckodriver.js" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-port": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz", + "integrity": "sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-uri": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", + "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", + "license": "MIT", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/htmlfy": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.8.1.tgz", + "integrity": "sha512-xWROBw9+MEGwxpotll0h672KCaLrKKiCYzsyN8ZgL9cQbVumFnyvsk2JqiB9ELAV1GLj1GG/jxZUjV9OZZi/yQ==", + "license": "MIT" + }, + "node_modules/htmlparser2": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "entities": "^7.0.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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": "BSD-3-Clause" + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=20" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/locate-app": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.5.0.tgz", + "integrity": "sha512-xIqbzPMBYArJRmPGUZD9CzV9wOqmVtQnaAn3wrj3s6WYW0bQvPI7x+sPYUGmDTYMHefVK//zc6HEYZ1qnxIK+Q==", + "funding": [ + { + "type": "individual", + "url": "https://buymeacoffee.com/hejny" + }, + { + "type": "github", + "url": "https://github.com/hejny/locate-app/blob/main/README.md#%EF%B8%8F-contributing" + } + ], + "license": "Apache-2.0", + "dependencies": { + "@promptbook/utils": "0.69.5", + "type-fest": "4.26.0", + "userhome": "1.0.1" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" + }, + "node_modules/lodash.zip": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", + "integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==", + "license": "MIT" + }, + "node_modules/loglevel": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", + "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/loglevel-plugin-prefix": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", + "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" + }, + "node_modules/modern-tar": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/modern-tar/-/modern-tar-0.7.5.tgz", + "integrity": "sha512-YTefgdpKKFgoTDbEUqXqgUJct2OG6/4hs4XWLsxcHkDLj/x/V8WmKIRppPnXP5feQ7d1vuYWSp3qKkxfwaFaxA==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/pac-proxy-agent": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "license": "MIT", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "license": "MIT" + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proxy-agent": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.6", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.1.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/query-selector-shadow-dom": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz", + "integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==", + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resq": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz", + "integrity": "sha512-G10EBz+zAAy3zUd/CDoBbXRL6ia9kOo3xRHrMDsHljI0GDkhYlyjwoCx5+3eCC4swi1uCoZQhskuJkj7Gp57Bw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^2.0.1" + } + }, + "node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/rgb2hex": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.2.5.tgz", + "integrity": "sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==", + "license": "MIT" + }, + "node_modules/safaridriver": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safaridriver/-/safaridriver-1.0.1.tgz", + "integrity": "sha512-jkg4434cYgtrIF2AeY/X0Wmd2W73cK5qIEFE3hDrrQenJH/2SDJIXGvPAigfvQTcE9+H31zkiNHbUqcihEiMRA==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + }, + "node_modules/safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ret": "~0.5.0" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-error": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-12.0.0.tgz", + "integrity": "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==", + "license": "MIT", + "dependencies": { + "type-fest": "^4.31.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "license": "MIT", + "dependencies": { + "ip-address": "^10.0.1", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spacetrim": { + "version": "0.11.59", + "resolved": "https://registry.npmjs.org/spacetrim/-/spacetrim-0.11.59.tgz", + "integrity": "sha512-lLYsktklSRKprreOm7NXReW8YiX2VBjbgmXYEziOoGf/qsJqAEACaDvoTtUOycwjpaSh+bT8eu0KrJn7UNxiCg==", + "funding": [ + { + "type": "individual", + "url": "https://buymeacoffee.com/hejny" + }, + { + "type": "github", + "url": "https://github.com/hejny/spacetrim/blob/main/README.md#%EF%B8%8F-contributing" + } + ], + "license": "Apache-2.0" + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/streamx": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "license": "MIT", + "dependencies": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strnum": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.0.tgz", + "integrity": "sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar-fs": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.2.tgz", + "integrity": "sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" + } + }, + "node_modules/tar-stream": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.8.tgz", + "integrity": "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==", + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "bare-fs": "^4.5.5", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" + } + }, + "node_modules/text-decoder": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", + "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.0.tgz", + "integrity": "sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/undici": { + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.22.0.tgz", + "integrity": "sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==", + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/urlpattern-polyfill": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz", + "integrity": "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==", + "license": "MIT" + }, + "node_modules/userhome": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/userhome/-/userhome-1.0.1.tgz", + "integrity": "sha512-5cnLm4gseXjAclKowC4IjByaGsjtAoV6PrOQOljplNB54ReUYJP8HdAFq2muHinSDAh09PPX/uXDPfdxRHvuSA==", + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/wait-port": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/wait-port/-/wait-port-1.1.0.tgz", + "integrity": "sha512-3e04qkoN3LxTMLakdqeWth8nih8usyg+sf1Bgdf9wwUkp05iuK1eSY/QpLvscT/+F/gA89+LpUmmgBtesbqI2Q==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "commander": "^9.3.0", + "debug": "^4.3.4" + }, + "bin": { + "wait-port": "bin/wait-port.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/wait-port/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wait-port/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/webdriver": { + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.24.0.tgz", + "integrity": "sha512-2R31Ey83NzMsafkl4hdFq6GlIBvOODQMkueLjeRqYAITu3QCYiq9oqBdnWA6CdePuV4dbKlYsKRX0mwMiPclDA==", + "license": "MIT", + "dependencies": { + "@types/node": "^20.1.0", + "@types/ws": "^8.5.3", + "@wdio/config": "9.24.0", + "@wdio/logger": "9.18.0", + "@wdio/protocols": "9.24.0", + "@wdio/types": "9.24.0", + "@wdio/utils": "9.24.0", + "deepmerge-ts": "^7.0.3", + "https-proxy-agent": "^7.0.6", + "undici": "^6.21.3", + "ws": "^8.8.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/webdriver/node_modules/undici": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", + "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", + "license": "MIT", + "engines": { + "node": ">=18.17" + } + }, + "node_modules/webdriverio": { + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.24.0.tgz", + "integrity": "sha512-LTJt6Z/iDM0ne/4ytd3BykoPv9CuJ+CAILOzlwFeMGn4Mj02i4Bk2Rg9o/jeJ89f52hnv4OPmNjD0e8nzWAy5g==", + "license": "MIT", + "dependencies": { + "@types/node": "^20.11.30", + "@types/sinonjs__fake-timers": "^8.1.5", + "@wdio/config": "9.24.0", + "@wdio/logger": "9.18.0", + "@wdio/protocols": "9.24.0", + "@wdio/repl": "9.16.2", + "@wdio/types": "9.24.0", + "@wdio/utils": "9.24.0", + "archiver": "^7.0.1", + "aria-query": "^5.3.0", + "cheerio": "^1.0.0-rc.12", + "css-shorthand-properties": "^1.1.1", + "css-value": "^0.0.1", + "grapheme-splitter": "^1.0.4", + "htmlfy": "^0.8.1", + "is-plain-obj": "^4.1.0", + "jszip": "^3.10.1", + "lodash.clonedeep": "^4.5.0", + "lodash.zip": "^4.2.0", + "query-selector-shadow-dom": "^1.0.1", + "resq": "^1.11.0", + "rgb2hex": "0.2.5", + "serialize-error": "^12.0.0", + "urlpattern-polyfill": "^10.0.0", + "webdriver": "9.24.0" + }, + "engines": { + "node": ">=18.20.0" + }, + "peerDependencies": { + "puppeteer-core": ">=22.x || <=24.x" + }, + "peerDependenciesMeta": { + "puppeteer-core": { + "optional": true + } + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/which": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "license": "ISC", + "dependencies": { + "isexe": "^4.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yauzl/node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/zip-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + } + } +} diff --git a/test/package.json b/test/package.json new file mode 100644 index 0000000..55e580b --- /dev/null +++ b/test/package.json @@ -0,0 +1,15 @@ +{ + "name": "test", + "version": "1.0.0", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "description": "", + "dependencies": { + "webdriverio": "^9.24.0" + } +}