diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/auth_export/accounts.json b/tools-nodejs/vighnesh153-astro/firebase-seed/auth_export/accounts.json index 817b7bc5..e9b6a869 100644 --- a/tools-nodejs/vighnesh153-astro/firebase-seed/auth_export/accounts.json +++ b/tools-nodejs/vighnesh153-astro/firebase-seed/auth_export/accounts.json @@ -1 +1 @@ -{"kind":"identitytoolkit#DownloadAccountResponse","users":[{"localId":"ekAHm4gvpTBjoSmvINUnt638btaM","createdAt":"1734187406426","lastLoginAt":"1734882450193","displayName":"Vighnesh Raut","photoUrl":"https://i.imgur.com/npqtdBu.png","providerUserInfo":[{"providerId":"google.com","rawId":"5762999240917570257694699278672391745578","federatedId":"5762999240917570257694699278672391745578","displayName":"Vighnesh Raut","photoUrl":"https://i.imgur.com/npqtdBu.png","email":"vighnesh.raut13@gmail.com","screenName":"vighnesh153"}],"validSince":"1734881873","email":"vighnesh.raut13@gmail.com","emailVerified":true,"disabled":false,"lastRefreshAt":"2024-12-22T17:33:39.253Z"},{"localId":"iWtBCmoWRTXg6UTQCV7ncLJPxcNO","displayName":"Pikachu","photoUrl":"https://i.imgur.com/npqtdBu.png","screenName":"Pikachu","email":"pikachu@pokemon.com","emailVerified":true,"createdAt":"1734882413806","lastLoginAt":"1734882416118","providerUserInfo":[{"providerId":"google.com","rawId":"7759237076568892792428913761032108656749","federatedId":"7759237076568892792428913761032108656749","displayName":"Pikachu","photoUrl":"https://i.imgur.com/npqtdBu.png","email":"pikachu@pokemon.com","screenName":"Pikachu"}],"lastRefreshAt":"2024-12-22T15:46:56.118Z"}]} \ No newline at end of file +{"kind":"identitytoolkit#DownloadAccountResponse","users":[{"localId":"ekAHm4gvpTBjoSmvINUnt638btaM","createdAt":"1734187406426","lastLoginAt":"1734979688327","displayName":"Vighnesh Raut","photoUrl":"https://i.imgur.com/npqtdBu.png","providerUserInfo":[{"providerId":"google.com","rawId":"5762999240917570257694699278672391745578","federatedId":"5762999240917570257694699278672391745578","displayName":"Vighnesh Raut","photoUrl":"https://i.imgur.com/npqtdBu.png","email":"vighnesh.raut13@gmail.com","screenName":"vighnesh153"}],"validSince":"1735046053","email":"vighnesh.raut13@gmail.com","emailVerified":true,"disabled":false,"lastRefreshAt":"2024-12-24T13:16:43.826Z"},{"localId":"iWtBCmoWRTXg6UTQCV7ncLJPxcNO","createdAt":"1734882413806","lastLoginAt":"1734882416118","displayName":"Pikachu","photoUrl":"https://i.imgur.com/npqtdBu.png","providerUserInfo":[{"providerId":"google.com","rawId":"7759237076568892792428913761032108656749","federatedId":"7759237076568892792428913761032108656749","displayName":"Pikachu","photoUrl":"https://i.imgur.com/npqtdBu.png","email":"pikachu@pokemon.com","screenName":"Pikachu"}],"validSince":"1735046053","email":"pikachu@pokemon.com","emailVerified":true,"disabled":false}]} \ No newline at end of file diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/firestore_export/all_namespaces/all_kinds/all_namespaces_all_kinds.export_metadata b/tools-nodejs/vighnesh153-astro/firebase-seed/firestore_export/all_namespaces/all_kinds/all_namespaces_all_kinds.export_metadata index 55b20c13..5655c043 100644 Binary files a/tools-nodejs/vighnesh153-astro/firebase-seed/firestore_export/all_namespaces/all_kinds/all_namespaces_all_kinds.export_metadata and b/tools-nodejs/vighnesh153-astro/firebase-seed/firestore_export/all_namespaces/all_kinds/all_namespaces_all_kinds.export_metadata differ diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/firestore_export/all_namespaces/all_kinds/output-0 b/tools-nodejs/vighnesh153-astro/firebase-seed/firestore_export/all_namespaces/all_kinds/output-0 index a77ed694..22c494b9 100644 Binary files a/tools-nodejs/vighnesh153-astro/firebase-seed/firestore_export/all_namespaces/all_kinds/output-0 and b/tools-nodejs/vighnesh153-astro/firebase-seed/firestore_export/all_namespaces/all_kinds/output-0 differ diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/firestore_export/firestore_export.overall_export_metadata b/tools-nodejs/vighnesh153-astro/firebase-seed/firestore_export/firestore_export.overall_export_metadata index 99594bf9..eccfdd96 100644 Binary files a/tools-nodejs/vighnesh153-astro/firebase-seed/firestore_export/firestore_export.overall_export_metadata and b/tools-nodejs/vighnesh153-astro/firebase-seed/firestore_export/firestore_export.overall_export_metadata differ diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/1ad9e484-b6b8-4c3e-bd41-7f06165db660 b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/1ad9e484-b6b8-4c3e-bd41-7f06165db660 new file mode 100644 index 00000000..1227efef --- /dev/null +++ b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/1ad9e484-b6b8-4c3e-bd41-7f06165db660 @@ -0,0 +1,8 @@ +--boundary +Content-Type: application/json + +{"contentType":"text/plain"} +--boundary +Content-Type: text/plain + +--boundary-- diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/41310b2b-0e95-4ded-ae4b-ba36da17c2e4 b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/41310b2b-0e95-4ded-ae4b-ba36da17c2e4 new file mode 100644 index 00000000..9e126b07 Binary files /dev/null and b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/41310b2b-0e95-4ded-ae4b-ba36da17c2e4 differ diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/49383a59-dc53-4e42-9854-deba3b29ad4e b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/49383a59-dc53-4e42-9854-deba3b29ad4e new file mode 100644 index 00000000..f62421b9 Binary files /dev/null and b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/49383a59-dc53-4e42-9854-deba3b29ad4e differ diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/68018ce7-3d22-4465-99a7-ddf169426bb6 b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/68018ce7-3d22-4465-99a7-ddf169426bb6 new file mode 100644 index 00000000..c68fa58d Binary files /dev/null and b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/68018ce7-3d22-4465-99a7-ddf169426bb6 differ diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/7a16cbba-1a61-4531-aa40-b4a33ca6391f b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/7a16cbba-1a61-4531-aa40-b4a33ca6391f new file mode 100644 index 00000000..9a21b74a Binary files /dev/null and b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/7a16cbba-1a61-4531-aa40-b4a33ca6391f differ diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/8ddeaaff-0374-4630-a27e-6b7928eeb0df b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/8ddeaaff-0374-4630-a27e-6b7928eeb0df new file mode 100644 index 00000000..561326fc Binary files /dev/null and b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/8ddeaaff-0374-4630-a27e-6b7928eeb0df differ diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/9db80669-c564-4df6-bcfd-8c75a66ceb26 b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/9db80669-c564-4df6-bcfd-8c75a66ceb26 new file mode 100644 index 00000000..942cf43a Binary files /dev/null and b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/9db80669-c564-4df6-bcfd-8c75a66ceb26 differ diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/e13fc218-83c6-4e6e-92a7-bbc942c8327f b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/e13fc218-83c6-4e6e-92a7-bbc942c8327f new file mode 100644 index 00000000..fa364f92 Binary files /dev/null and b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/e13fc218-83c6-4e6e-92a7-bbc942c8327f differ diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/f9743563-0d19-4814-89a7-2e8cb3561bb5 b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/f9743563-0d19-4814-89a7-2e8cb3561bb5 new file mode 100644 index 00000000..e77e95a1 Binary files /dev/null and b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/f9743563-0d19-4814-89a7-2e8cb3561bb5 differ diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/fccf9690-3240-4020-bf1b-f1760587505e b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/fccf9690-3240-4020-bf1b-f1760587505e new file mode 100644 index 00000000..6359e503 Binary files /dev/null and b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/blobs/fccf9690-3240-4020-bf1b-f1760587505e differ diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/1ad9e484-b6b8-4c3e-bd41-7f06165db660.json b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/1ad9e484-b6b8-4c3e-bd41-7f06165db660.json new file mode 100644 index 00000000..57446d88 --- /dev/null +++ b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/1ad9e484-b6b8-4c3e-bd41-7f06165db660.json @@ -0,0 +1,15 @@ +{ + "name": "private_content/", + "bucket": "demo-vighnesh153-app.appspot.com", + "metageneration": 1, + "generation": 1734965083632, + "contentType": "application/octet-stream", + "storageClass": "STANDARD", + "downloadTokens": [], + "etag": "ihM3MT4PR3n8tM/lSFLMe8byZns", + "timeCreated": "2024-12-23T14:44:43.632Z", + "updated": "2024-12-23T14:44:43.632Z", + "size": 130, + "md5Hash": "iUpceipDkyQhwwUflucD5w==", + "crc32c": "3108464614" +} \ No newline at end of file diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/41310b2b-0e95-4ded-ae4b-ba36da17c2e4.json b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/41310b2b-0e95-4ded-ae4b-ba36da17c2e4.json new file mode 100644 index 00000000..f076982d --- /dev/null +++ b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/41310b2b-0e95-4ded-ae4b-ba36da17c2e4.json @@ -0,0 +1,19 @@ +{ + "name": "private_content/cute-gray-cat-kitten-looking-600nw-2386006989.webp", + "bucket": "demo-vighnesh153-app.appspot.com", + "metageneration": 1, + "generation": 1734972901036, + "contentType": "image/webp", + "storageClass": "STANDARD", + "contentDisposition": "inline", + "downloadTokens": [ + "51504da9-99c8-47e7-a735-3025ecd8bfb9" + ], + "etag": "jjYA4cA08jdkw864wXU+KsgDx7U", + "customMetadata": {}, + "timeCreated": "2024-12-23T16:55:01.036Z", + "updated": "2024-12-23T16:55:01.036Z", + "size": 44234, + "md5Hash": "t2mnbZvVpYDr8Pnk15P/ZA==", + "crc32c": "2173746191" +} \ No newline at end of file diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/49383a59-dc53-4e42-9854-deba3b29ad4e.json b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/49383a59-dc53-4e42-9854-deba3b29ad4e.json new file mode 100644 index 00000000..d051a6dd --- /dev/null +++ b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/49383a59-dc53-4e42-9854-deba3b29ad4e.json @@ -0,0 +1,19 @@ +{ + "name": "private_content/happy-labrador-dog-water-splashes-600nw-2470403137.webp", + "bucket": "demo-vighnesh153-app.appspot.com", + "metageneration": 1, + "generation": 1734972873209, + "contentType": "image/webp", + "storageClass": "STANDARD", + "contentDisposition": "inline", + "downloadTokens": [ + "a085943a-d91f-4273-994a-1ddad9152ac3" + ], + "etag": "mRDoId0vzZPncDZlhVqReRNQjek", + "customMetadata": {}, + "timeCreated": "2024-12-23T16:54:33.209Z", + "updated": "2024-12-23T16:54:33.209Z", + "size": 77390, + "md5Hash": "+LyrUtEgh70ouPvpY/8l1A==", + "crc32c": "3407295130" +} \ No newline at end of file diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/68018ce7-3d22-4465-99a7-ddf169426bb6.json b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/68018ce7-3d22-4465-99a7-ddf169426bb6.json new file mode 100644 index 00000000..0b0c3255 --- /dev/null +++ b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/68018ce7-3d22-4465-99a7-ddf169426bb6.json @@ -0,0 +1,19 @@ +{ + "name": "private_content/adorable-ragdoll-cat-beautiful-blue-600nw-1992318023.webp", + "bucket": "demo-vighnesh153-app.appspot.com", + "metageneration": 1, + "generation": 1734972901045, + "contentType": "image/webp", + "storageClass": "STANDARD", + "contentDisposition": "inline", + "downloadTokens": [ + "7a13b0ea-ee65-416a-9603-9077559a6be5" + ], + "etag": "gb9WQa5RHDOBJOGN7WUo2AjmN2Y", + "customMetadata": {}, + "timeCreated": "2024-12-23T16:55:01.045Z", + "updated": "2024-12-23T16:55:01.045Z", + "size": 38852, + "md5Hash": "EttE8U4lbuS+MMBAM8ZZGw==", + "crc32c": "2119935361" +} \ No newline at end of file diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/7a16cbba-1a61-4531-aa40-b4a33ca6391f.json b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/7a16cbba-1a61-4531-aa40-b4a33ca6391f.json new file mode 100644 index 00000000..b7ac5c36 --- /dev/null +++ b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/7a16cbba-1a61-4531-aa40-b4a33ca6391f.json @@ -0,0 +1,19 @@ +{ + "name": "private_content/sphynx-cat-naked-600nw-1058785700.webp", + "bucket": "demo-vighnesh153-app.appspot.com", + "metageneration": 1, + "generation": 1734972901040, + "contentType": "image/webp", + "storageClass": "STANDARD", + "contentDisposition": "inline", + "downloadTokens": [ + "391e7ff2-32b1-4172-806f-be6e662a07d8" + ], + "etag": "ZoDwFGER1WR1X3LV4m/gisIf8Dw", + "customMetadata": {}, + "timeCreated": "2024-12-23T16:55:01.040Z", + "updated": "2024-12-23T16:55:01.040Z", + "size": 33350, + "md5Hash": "84WCkhORK871LUYJbIi9Fw==", + "crc32c": "995158010" +} \ No newline at end of file diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/8ddeaaff-0374-4630-a27e-6b7928eeb0df.json b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/8ddeaaff-0374-4630-a27e-6b7928eeb0df.json new file mode 100644 index 00000000..a1fbb841 --- /dev/null +++ b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/8ddeaaff-0374-4630-a27e-6b7928eeb0df.json @@ -0,0 +1,19 @@ +{ + "name": "private_content/tabby-cat-169-ratio-600nw-44442067.webp", + "bucket": "demo-vighnesh153-app.appspot.com", + "metageneration": 1, + "generation": 1734972901042, + "contentType": "image/webp", + "storageClass": "STANDARD", + "contentDisposition": "inline", + "downloadTokens": [ + "7080bd8a-28ea-4471-975a-6c80a0d6c433" + ], + "etag": "Q/XEYDasm0Omie3tkx0wpPhfhU0", + "customMetadata": {}, + "timeCreated": "2024-12-23T16:55:01.042Z", + "updated": "2024-12-23T16:55:01.042Z", + "size": 36496, + "md5Hash": "sFPuKijTz2GDEA1OfRuJBQ==", + "crc32c": "764008526" +} \ No newline at end of file diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/9db80669-c564-4df6-bcfd-8c75a66ceb26.json b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/9db80669-c564-4df6-bcfd-8c75a66ceb26.json new file mode 100644 index 00000000..bf6a26c5 --- /dev/null +++ b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/9db80669-c564-4df6-bcfd-8c75a66ceb26.json @@ -0,0 +1,19 @@ +{ + "name": "private_content/happy-dog-running-blossoming-flower-600nw-2458562695.webp", + "bucket": "demo-vighnesh153-app.appspot.com", + "metageneration": 1, + "generation": 1734972868065, + "contentType": "image/webp", + "storageClass": "STANDARD", + "contentDisposition": "inline", + "downloadTokens": [ + "c632353e-eae1-4cd7-8324-93cb35fa1ad2" + ], + "etag": "Z/MIzl8lrMGKD346mUb71mK7DHo", + "customMetadata": {}, + "timeCreated": "2024-12-23T16:54:28.065Z", + "updated": "2024-12-23T16:54:28.065Z", + "size": 55358, + "md5Hash": "l0qwErxhQ9gs4kXKmK/DRQ==", + "crc32c": "1634826027" +} \ No newline at end of file diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/e13fc218-83c6-4e6e-92a7-bbc942c8327f.json b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/e13fc218-83c6-4e6e-92a7-bbc942c8327f.json new file mode 100644 index 00000000..4b9175b1 --- /dev/null +++ b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/e13fc218-83c6-4e6e-92a7-bbc942c8327f.json @@ -0,0 +1,19 @@ +{ + "name": "private_content/adult-fluffy-ragdoll-cat-outside-600nw-1467863648.webp", + "bucket": "demo-vighnesh153-app.appspot.com", + "metageneration": 1, + "generation": 1734972901047, + "contentType": "image/webp", + "storageClass": "STANDARD", + "contentDisposition": "inline", + "downloadTokens": [ + "9cb8ce7c-e820-4619-8502-fbb3cc4dc492" + ], + "etag": "6TqN9ijExE+tGLs3sz0qRsnfdJI", + "customMetadata": {}, + "timeCreated": "2024-12-23T16:55:01.047Z", + "updated": "2024-12-23T16:55:01.047Z", + "size": 53922, + "md5Hash": "92CXebKvweV9nBnZxfzTWA==", + "crc32c": "499067176" +} \ No newline at end of file diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/f9743563-0d19-4814-89a7-2e8cb3561bb5.json b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/f9743563-0d19-4814-89a7-2e8cb3561bb5.json new file mode 100644 index 00000000..bded2fb2 --- /dev/null +++ b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/f9743563-0d19-4814-89a7-2e8cb3561bb5.json @@ -0,0 +1,19 @@ +{ + "name": "private_content/young-cute-bengal-cat-sitting-600nw-2238825697.webp", + "bucket": "demo-vighnesh153-app.appspot.com", + "metageneration": 1, + "generation": 1734972901030, + "contentType": "image/webp", + "storageClass": "STANDARD", + "contentDisposition": "inline", + "downloadTokens": [ + "bce26425-9a90-4ccd-87c5-c936dedab26c" + ], + "etag": "XGnoPf8dxosbmKHIdlxKP941C4U", + "customMetadata": {}, + "timeCreated": "2024-12-23T16:55:01.030Z", + "updated": "2024-12-23T16:55:01.030Z", + "size": 42916, + "md5Hash": "IGjn5gEg6JV58QUZvGL/PA==", + "crc32c": "2725626091" +} \ No newline at end of file diff --git a/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/fccf9690-3240-4020-bf1b-f1760587505e.json b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/fccf9690-3240-4020-bf1b-f1760587505e.json new file mode 100644 index 00000000..b786aad7 --- /dev/null +++ b/tools-nodejs/vighnesh153-astro/firebase-seed/storage_export/metadata/fccf9690-3240-4020-bf1b-f1760587505e.json @@ -0,0 +1,19 @@ +{ + "name": "private_content/savannah-cat-beautiful-spotted-striped-600nw-589366805.webp", + "bucket": "demo-vighnesh153-app.appspot.com", + "metageneration": 1, + "generation": 1734972901023, + "contentType": "image/webp", + "storageClass": "STANDARD", + "contentDisposition": "inline", + "downloadTokens": [ + "43b67554-1b3e-403d-ab1e-9f4ecb55c41e" + ], + "etag": "hjuaot9+RQJogsdvZJZxs+devwI", + "customMetadata": {}, + "timeCreated": "2024-12-23T16:55:01.024Z", + "updated": "2024-12-23T16:55:01.024Z", + "size": 66148, + "md5Hash": "yxQMlJWFBENVTEK09AHr9g==", + "crc32c": "4282025506" +} \ No newline at end of file diff --git a/tools-nodejs/vighnesh153-astro/functions/package-lock.json b/tools-nodejs/vighnesh153-astro/functions/package-lock.json index 7f76b08e..84a86b67 100644 --- a/tools-nodejs/vighnesh153-astro/functions/package-lock.json +++ b/tools-nodejs/vighnesh153-astro/functions/package-lock.json @@ -6,6 +6,7 @@ "": { "name": "functions", "dependencies": { + "@vighnesh153/tools": "npm:@jsr/vighnesh153__tools@^0.1.17", "firebase-admin": "^13.0.1", "firebase-functions": "^6.1.1" }, @@ -254,6 +255,51 @@ "url": "https://opencollective.com/js-sdsl" } }, + "node_modules/@jsr/kitsonk__xhr": { + "version": "0.5.0", + "resolved": "https://npm.jsr.io/~/11/@jsr/kitsonk__xhr/0.5.0.tgz", + "integrity": "sha512-giFm8TmlEVuCtw+9E3qJ/zde/5YnCo62w2o62OnRQXf+fl0KxH5eEyqb3ielYPlczsj3uz+TTq265Altz8CjIg==", + "dependencies": { + "@jsr/std__media-types": "^1.0" + } + }, + "node_modules/@jsr/std__assert": { + "version": "1.0.10", + "resolved": "https://npm.jsr.io/~/11/@jsr/std__assert/1.0.10.tgz", + "integrity": "sha512-CtUmSFZCxOoyxwhCgaaksNW1Wnf++texZNyrwXC/p32Fm+3ciHgY8oXVsd/BtjoSy3ChB/XkMOu162tnFSkGaA==", + "dependencies": { + "@jsr/std__internal": "^1.0.5" + } + }, + "node_modules/@jsr/std__internal": { + "version": "1.0.5", + "resolved": "https://npm.jsr.io/~/11/@jsr/std__internal/1.0.5.tgz", + "integrity": "sha512-W2aN7UypJJ6EkfyXt5hBeIijBb8CmZk0jdjCzhOROr0SrXsXZ/V/9Qu1N0NxumFauPDAJz9NcP1mmZ9ZVSXwpQ==" + }, + "node_modules/@jsr/std__media-types": { + "version": "1.1.0", + "resolved": "https://npm.jsr.io/~/11/@jsr/std__media-types/1.1.0.tgz", + "integrity": "sha512-dHvaxHL7ENWnltgL653uo3KnKFse3ZbopZop2gqsT7yrscx7irZEClu5Cba7gMPPRk4Lg1FbriNcaBViM2RSBw==" + }, + "node_modules/@ngneat/falso": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@ngneat/falso/-/falso-7.2.0.tgz", + "integrity": "sha512-283EXBFd05kCbGuGSXgmvhCsQYEYzvD/eJaE7lxd05qRB0tgREvZX7TRlJ1KSp8nHxoK6Ws029G1Y30mt4IVAA==", + "license": "MIT", + "dependencies": { + "seedrandom": "3.0.5", + "uuid": "8.3.2" + } + }, + "node_modules/@ngneat/falso/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@opentelemetry/api": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", @@ -487,6 +533,18 @@ "license": "MIT", "optional": true }, + "node_modules/@vighnesh153/tools": { + "name": "@jsr/vighnesh153__tools", + "version": "0.1.17", + "resolved": "https://npm.jsr.io/~/11/@jsr/vighnesh153__tools/0.1.17.tgz", + "integrity": "sha512-hpxMACEb/3ZN2RkSJm8WXR4soclomxvsQW3Pir5iXNb4Sox+v06V9sMBr1wfvDYfNhBlzSwMplLXq4XMYf1irw==", + "dependencies": { + "@jsr/kitsonk__xhr": "^0.5.0", + "@jsr/std__assert": "1", + "@ngneat/falso": "^7.2.0", + "zod": "^3.23.8" + } + }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -2137,6 +2195,12 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, + "node_modules/seedrandom": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", + "license": "MIT" + }, "node_modules/send": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", @@ -2621,6 +2685,15 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zod": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", + "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } } } diff --git a/tools-nodejs/vighnesh153-astro/functions/package.json b/tools-nodejs/vighnesh153-astro/functions/package.json index 722fefaa..65c52a04 100644 --- a/tools-nodejs/vighnesh153-astro/functions/package.json +++ b/tools-nodejs/vighnesh153-astro/functions/package.json @@ -14,6 +14,7 @@ }, "main": "lib/functions/src/index.js", "dependencies": { + "@vighnesh153/tools": "npm:@jsr/vighnesh153__tools@^0.1.17", "firebase-admin": "^13.0.1", "firebase-functions": "^6.1.1" }, diff --git a/tools-nodejs/vighnesh153-astro/functions/src/get_private_content.ts b/tools-nodejs/vighnesh153-astro/functions/src/get_private_content.ts index 501f458d..53cc741a 100644 --- a/tools-nodejs/vighnesh153-astro/functions/src/get_private_content.ts +++ b/tools-nodejs/vighnesh153-astro/functions/src/get_private_content.ts @@ -49,11 +49,11 @@ async function createReadSignedUrl( internalPath: string, ): Promise { const file = storage.bucket().file(internalPath); - const expirationDate = new Date(Date.now() + 2 * dayInMs); + const expirationDate = new Date(Date.now() + dayInMs * 2); // https://github.com/firebase/firebase-tools/issues/3400#issuecomment-847916638 if (process.env.FUNCTIONS_EMULATOR) { - return file.publicUrl(); + return internalPath.startsWith("http") ? internalPath : file.publicUrl(); } try { @@ -61,6 +61,9 @@ async function createReadSignedUrl( version: "v4", action: "read", expires: expirationDate, + extensionHeaders: { + "cache-control": `max-age=${dayInMs * 365 / 1000}`, + }, }); return urls[0]; } catch (e) { diff --git a/tools-nodejs/vighnesh153-astro/website/src/components/ModalDialog.tsx b/tools-nodejs/vighnesh153-astro/website/src/components/ModalDialog.tsx new file mode 100644 index 00000000..17950490 --- /dev/null +++ b/tools-nodejs/vighnesh153-astro/website/src/components/ModalDialog.tsx @@ -0,0 +1,54 @@ +import { + createEffect, + createSignal, + type JSX, + type ParentProps, +} from "solid-js"; +import { Portal } from "solid-js/web"; + +export type ModalProps = { + open: boolean; + close: () => void; +}; + +export type UseModalDialogProps = { + initialOpen?: boolean; +}; + +export function useModalDialog(props: UseModalDialogProps = {}) { + const [open, setOpen] = createSignal(props.initialOpen ?? false); + + const toggleOpen = (value?: boolean) => { + if (value == undefined) { + setOpen((old) => !old); + } else { + setOpen(value); + } + }; + + return { + open, + close: () => toggleOpen(false), + toggleOpen, + }; +} + +export function ModalDialog(props: ParentProps): JSX.Element { + let dialogRef!: HTMLDialogElement; + + createEffect(() => { + if (props.open) { + dialogRef?.showModal(); + } else { + dialogRef?.close(); + } + }); + + return ( + + props.close()}> + {props.children} + + + ); +} diff --git a/tools-nodejs/vighnesh153-astro/website/src/components/private/private_cards_collection.tsx b/tools-nodejs/vighnesh153-astro/website/src/components/private/private_cards_collection.tsx index 8adc6710..9c23d2c7 100644 --- a/tools-nodejs/vighnesh153-astro/website/src/components/private/private_cards_collection.tsx +++ b/tools-nodejs/vighnesh153-astro/website/src/components/private/private_cards_collection.tsx @@ -1,37 +1,13 @@ -import { - createResource, - ErrorBoundary, - For, - type JSX, - Show, - Suspense, -} from "solid-js"; -import { useStore } from "@nanostores/solid"; +import { For, type JSX, Show } from "solid-js"; -import { classes } from "@/utils"; -import { loggedInUserId } from "@/store/auth.ts"; -import { - clearPrivateContentFromCache, - getPrivateContent, -} from "@/store/private_content"; -import { Button } from "../buttons"; +import { classes, internalLinks } from "@/utils"; +import { clearPrivateContentFromCache } from "@/store/private_content"; -const fetchPrivateContent = (userId: string | null) => - getPrivateContent(userId); +import { Button } from "@/components/buttons"; +import { usePrivateContent } from "./usePrivateContent"; -export function PrivateCardsCollectionWrapper(): JSX.Element { - return ( - Loading...

}> - Some error occurred while fetching data.

}> - -
-
- ); -} - -function PrivateCardsCollection(): JSX.Element { - const $loggedInUserId = useStore(loggedInUserId); - const [privateContent] = createResource($loggedInUserId, fetchPrivateContent); +export function PrivateCardsCollection(): JSX.Element { + const { privateContent } = usePrivateContent(); const hasItems = () => { const content = privateContent()?.data ?? null; @@ -47,14 +23,14 @@ function PrivateCardsCollection(): JSX.Element { return (
-
- -
- -

Failed to fetch content.

-
+ + Nothing to show...

}>
{(card) => ( - + )}
diff --git a/tools-nodejs/vighnesh153-astro/website/src/components/private/private_content_video_player.tsx b/tools-nodejs/vighnesh153-astro/website/src/components/private/private_content_video_player.tsx new file mode 100644 index 00000000..cb932e12 --- /dev/null +++ b/tools-nodejs/vighnesh153-astro/website/src/components/private/private_content_video_player.tsx @@ -0,0 +1,58 @@ +import { type JSX, Show } from "solid-js"; + +import { classes } from "@/utils"; +import { usePrivateContent } from "./usePrivateContent"; + +const seekSpeed = 5; // seconds + +export type PrivateContentProps = { + id: string; +}; + +export function PrivateContentVideoPlayer( + props: PrivateContentProps, +): JSX.Element { + let videoRef!: HTMLVideoElement; + const { privateContent } = usePrivateContent(); + + const item = () => + privateContent()?.data.find((it) => it.id === props.id) ?? null; + + return ( +
+ Content not found for given id...

} + > + +
+
+ ); +} diff --git a/tools-nodejs/vighnesh153-astro/website/src/components/private/private_content_wrapper.tsx b/tools-nodejs/vighnesh153-astro/website/src/components/private/private_content_wrapper.tsx new file mode 100644 index 00000000..6502a999 --- /dev/null +++ b/tools-nodejs/vighnesh153-astro/website/src/components/private/private_content_wrapper.tsx @@ -0,0 +1,30 @@ +import { + createSignal, + ErrorBoundary, + type JSX, + onMount, + Show, + Suspense, +} from "solid-js"; + +import { PrivateCardsCollection } from "./private_cards_collection.tsx"; +import { PrivateContentVideoPlayer } from "./private_content_video_player.tsx"; + +export function PrivateContentWrapper(): JSX.Element { + const [contentId, setContentId] = createSignal(null); + + onMount(() => { + const search = new URLSearchParams(location.search); + setContentId(search.get("contentId") ?? null); + }); + + return ( + Loading...

}> + Some error occurred while fetching data.

}> + }> + + +
+
+ ); +} diff --git a/tools-nodejs/vighnesh153-astro/website/src/components/private/usePrivateContent.ts b/tools-nodejs/vighnesh153-astro/website/src/components/private/usePrivateContent.ts new file mode 100644 index 00000000..4825cc5d --- /dev/null +++ b/tools-nodejs/vighnesh153-astro/website/src/components/private/usePrivateContent.ts @@ -0,0 +1,15 @@ +import { createResource } from "solid-js"; +import { useStore } from "@nanostores/solid"; + +import { loggedInUserId } from "@/store/auth"; +import { getPrivateContent } from "@/store/private_content"; + +const fetchPrivateContent = (userId: string | null) => + getPrivateContent(userId); + +export function usePrivateContent() { + const $loggedInUserId = useStore(loggedInUserId); + const [privateContent] = createResource($loggedInUserId, fetchPrivateContent); + + return { privateContent }; +} diff --git a/tools-nodejs/vighnesh153-astro/website/src/models/private_content.ts b/tools-nodejs/vighnesh153-astro/website/src/models/private_content.ts index 59d97be4..dbaec00c 100644 --- a/tools-nodejs/vighnesh153-astro/website/src/models/private_content.ts +++ b/tools-nodejs/vighnesh153-astro/website/src/models/private_content.ts @@ -1,12 +1,18 @@ import { z } from "zod"; +export const PrivateContentCard = z.object({ + id: z.string().min(1), + imageUrl: z.string().min(1), + videoUrl: z.string().min(1), + + // set internally + internalImagePath: z.string().optional(), + internalVideoPath: z.string().optional(), +}); + export const PrivateContent = z.object({ - data: z.object({ - internalImagePath: z.string().min(1), - internalVideoPath: z.string().min(1), - imageUrl: z.string().min(1), - videoUrl: z.string().min(1), - }).array(), + data: PrivateContentCard.array(), }); +export type PrivateContentCard = z.infer; export type PrivateContent = z.infer; diff --git a/tools-nodejs/vighnesh153-astro/website/src/pages/private.astro b/tools-nodejs/vighnesh153-astro/website/src/pages/private.astro index accba9bc..7ea4c835 100644 --- a/tools-nodejs/vighnesh153-astro/website/src/pages/private.astro +++ b/tools-nodejs/vighnesh153-astro/website/src/pages/private.astro @@ -1,10 +1,10 @@ --- import { classes, projectNavItems } from "@/utils/index.ts"; import ContentLayout from "@/layouts/ContentLayout.astro"; -import { PrivateCardsCollectionWrapper } from "@/components/private/private_cards_collection.tsx"; +import { PrivateContentWrapper } from "@/components/private/private_content_wrapper.tsx"; const title = "Vighnesh Raut | Private content"; -const description = `Graphics programming projects built with HTML Canvas API`; +const description = `A collection of private content.`; --- - +
diff --git a/tools-nodejs/vighnesh153-astro/website/src/utils/content/links.ts b/tools-nodejs/vighnesh153-astro/website/src/utils/content/links.ts index 380f7064..c1d295a5 100644 --- a/tools-nodejs/vighnesh153-astro/website/src/utils/content/links.ts +++ b/tools-nodejs/vighnesh153-astro/website/src/utils/content/links.ts @@ -92,4 +92,9 @@ export const internalLinks = { root: "/tools/calculators", }, }, + private: { + root: "/private", + buildPrivateContentLinkFromId: (contentId: string) => + `/private?contentId=${contentId}`, + }, };