@donotdev/firebase 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/shared/transform.js +1 -1
- package/dist/shared/utils.js +1 -1
- package/package.json +2 -2
package/dist/shared/transform.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{handleError as i}from"@donotdev/core
|
|
1
|
+
import{handleError as i}from"@donotdev/core";function s(e){return{seconds:Math.floor(e.getTime()/1e3),nanoseconds:e.getTime()%1e3*1e6,toDate:()=>new Date(e),toMillis:()=>e.getTime(),isEqual:r=>r.seconds===Math.floor(e.getTime()/1e3)&&r.nanoseconds===e.getTime()%1e3*1e6,valueOf:()=>`Timestamp(seconds=${Math.floor(e.getTime()/1e3)}, nanoseconds=${e.getTime()%1e3*1e6})`}}function c(e){try{if(typeof e=="string"){const r=new Date(e);if(isNaN(r.getTime()))throw i(new Error("Invalid date string format"),{context:{value:e}});return s(r)}if(e instanceof Date){if(isNaN(e.getTime()))throw i(new Error("Invalid Date object"),{context:{value:e}});return s(e)}throw i(new Error("Invalid date value type"),{context:{valueType:typeof e}})}catch(r){throw i(r,"Failed to convert to Timestamp")}}function l(e){try{if(e instanceof Date){if(isNaN(e.getTime()))throw i(new Error("Invalid Date object"),{context:{value:e}});return e.toISOString()}if(typeof e=="object"&&e!==null&&"toDate"in e&&typeof e.toDate=="function")return e.toDate().toISOString();if(typeof e=="string"){const r=new Date(e);if(isNaN(r.getTime()))throw i(new Error("Invalid date string format"),{context:{value:e}});return r.toISOString()}throw i(new Error("Invalid date value type"),{context:{valueType:typeof e}})}catch(r){throw i(r,"Failed to convert to ISO string")}}function y(e){return typeof e=="object"&&e!==null&&"toDate"in e&&typeof e.toDate=="function"&&"seconds"in e&&"nanoseconds"in e}function m(e){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/.test(e))return!1;const t=new Date(e);return!isNaN(t.getTime())}function u(e){if(!e)return e;if(Array.isArray(e))return e.map(r=>u(r));if(typeof e=="string"&&m(e))return new Date(e);if(typeof e=="object"&&e!==null){const r={};for(const[t,n]of Object.entries(e))r[t]=u(n);return r}return e}function f(e,r=!1){if(!e)return e;if(r&&typeof e=="object"&&e!==null&&"id"in e&&"ref"in e&&"data"in e&&typeof e.data=="function"){const t=e,n=t.data();return{id:t.id,...f(n)}}if(Array.isArray(e))return e.map(t=>f(t));if(y(e))return l(e);if(typeof e=="object"&&e!==null){const t={};for(const[n,o]of Object.entries(e))t[n]=f(o);return t}return e}function p(e,r=[]){if(!e)return e;if(Array.isArray(e))return e.map(t=>p(t,r));if(typeof e=="string"&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/.test(e))try{return c(e)}catch{return e}if(e instanceof Date)try{return c(e)}catch{return e}if(typeof e=="object"&&e!==null){const t={};for(const[n,o]of Object.entries(e))r.includes(n)||o!==void 0&&(t[n]=p(o,r));return t}return e}function D(e,r){const t={};for(const[n,o]of Object.entries(r)){if(!(n in e)){t[n]=o;continue}JSON.stringify(e[n])!==JSON.stringify(o)&&(t[n]=o)}return{...t,updatedAt:new Date().toISOString()}}export{u as convertISOStringsToDates,D as createFirestorePartialUpdate,s as createTimestamp,l as firestoreToISOString,y as isTimestamp,p as prepareForFirestore,c as toTimestamp,f as transformFirestoreData};
|
package/dist/shared/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{handleError as o}from"@donotdev/core
|
|
1
|
+
import{handleError as o}from"@donotdev/core";const s=typeof window<"u",n=e=>()=>{throw o(new Error(`Firebase Admin function '${e}' is not available in browser environments`),{userMessage:"This operation requires server-side Firebase access",context:{function:e}})},g=s?null:n("admin"),w=n("getAdminFirestore"),y=n("generateId");function h(e){const t=new AbortController;let r;return e?.timeout&&(r=setTimeout(()=>{t.abort(o(new Error("Request timeout exceeded"),{userMessage:"The operation timed out",context:{timeoutMs:e.timeout,abortKey:e.abortKey}}))},e.timeout)),e?.externalSignal&&e.externalSignal.addEventListener("abort",()=>{t.abort(e.externalSignal?.reason||"External abort")}),t.signal.addEventListener("abort",()=>{r!==void 0&&clearTimeout(r)}),t}function E(e,t){return o(e,{userMessage:t?`Error during ${t}`:void 0,context:{operation:t}})}async function v(e,t,r={}){const{retry:i=!1,maxRetries:l=3,retryDelay:d=300}=r;let a=0;for(;;)try{return await t()}catch(u){if(a++,b(u)&&i&&a<=l){const c=d*Math.pow(2,a-1);await new Promise(m=>setTimeout(m,c));continue}throw o(u,{userMessage:`Firebase operation "${e}" failed`,context:{operation:e,attempt:a,maxRetries:l,options:r}})}}function b(e){const t=["permission-denied","invalid-argument","already-exists","not-found","unauthenticated"];return e&&e.name==="DoNotDevError"&&t.includes(e.code)?!1:e&&e.code?["unavailable","deadline","cancel","network","timeout","internal","resource","exhausted"].some(i=>e.code.toLowerCase().includes(i)):!0}export{g as admin,h as createAbortController,v as executeFirebaseOperation,y as generateId,w as getAdminFirestore,E as handleFirebaseError};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@donotdev/firebase",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"valibot": "^1.2.0"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
|
-
"@donotdev/core": "^0.0.
|
|
32
|
+
"@donotdev/core": "^0.0.17",
|
|
33
33
|
"firebase": "^12.5.0",
|
|
34
34
|
"firebase-admin": "^13.6.0"
|
|
35
35
|
},
|