@cravery/firebase 0.0.37 → 0.0.38
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/converters/equipment/content.d.ts.map +1 -1
- package/dist/converters/equipment/content.js.map +1 -1
- package/dist/converters/equipment/meta.d.ts.map +1 -1
- package/dist/converters/equipment/meta.js.map +1 -1
- package/dist/converters/ingredients/content.d.ts.map +1 -1
- package/dist/converters/ingredients/content.js.map +1 -1
- package/dist/converters/ingredients/meta.d.ts.map +1 -1
- package/dist/converters/ingredients/meta.js.map +1 -1
- package/dist/converters/ingredients/user.d.ts.map +1 -1
- package/dist/converters/ingredients/user.js.map +1 -1
- package/package.json +33 -33
- package/src/converters/equipment/content.ts +18 -17
- package/src/converters/equipment/index.ts +3 -3
- package/src/converters/equipment/meta.ts +37 -36
- package/src/converters/equipment/user.ts +36 -36
- package/src/converters/ingredients/content.ts +18 -17
- package/src/converters/ingredients/index.ts +3 -3
- package/src/converters/ingredients/meta.ts +37 -36
- package/src/converters/ingredients/user.ts +40 -38
- package/src/converters/recipes/comment.ts +36 -36
- package/src/converters/recipes/content.ts +17 -17
- package/src/converters/recipes/index.ts +3 -3
- package/src/converters/recipes/meta.ts +36 -36
- package/src/converters/reports/index.ts +2 -2
- package/src/converters/reports/report.ts +36 -36
- package/src/converters/reports/update.ts +36 -36
- package/src/converters/settings/index.ts +1 -1
- package/src/converters/settings/settings.ts +36 -36
- package/src/converters/subscriptions/index.ts +1 -1
- package/src/converters/subscriptions/subscription.ts +85 -85
- package/src/converters/users/bookmark.ts +36 -36
- package/src/converters/users/index.ts +3 -3
- package/src/converters/users/profile.ts +36 -36
- package/src/converters/users/user.ts +36 -36
- package/src/lib/index.ts +2 -2
- package/src/lib/strip-undefined.ts +32 -32
- package/src/lib/timestamp.ts +44 -44
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
import {
|
|
2
|
-
FirestoreDataConverter,
|
|
3
|
-
QueryDocumentSnapshot,
|
|
4
|
-
DocumentData,
|
|
5
|
-
} from "firebase-admin/firestore";
|
|
6
|
-
import type { User } from "@cravery/core";
|
|
7
|
-
import {
|
|
8
|
-
toTimestamp,
|
|
9
|
-
toOptionalTimestamp,
|
|
10
|
-
toFirestoreTimestamp,
|
|
11
|
-
toOptionalFirestoreTimestamp,
|
|
12
|
-
stripUndefined,
|
|
13
|
-
} from "../../lib";
|
|
14
|
-
|
|
15
|
-
export const userConverter: FirestoreDataConverter<User> = {
|
|
16
|
-
toFirestore(user: User): DocumentData {
|
|
17
|
-
const { id, createdAt, updatedAt, deletedAt, ...rest } = user;
|
|
18
|
-
return stripUndefined({
|
|
19
|
-
...rest,
|
|
20
|
-
createdAt: toFirestoreTimestamp(createdAt),
|
|
21
|
-
updatedAt: toFirestoreTimestamp(updatedAt),
|
|
22
|
-
deletedAt: toOptionalFirestoreTimestamp(deletedAt),
|
|
23
|
-
});
|
|
24
|
-
},
|
|
25
|
-
|
|
26
|
-
fromFirestore(snapshot: QueryDocumentSnapshot): User {
|
|
27
|
-
const { createdAt, updatedAt, deletedAt, ...rest } = snapshot.data();
|
|
28
|
-
return {
|
|
29
|
-
...rest,
|
|
30
|
-
id: snapshot.id,
|
|
31
|
-
createdAt: toTimestamp(createdAt),
|
|
32
|
-
updatedAt: toTimestamp(updatedAt),
|
|
33
|
-
deletedAt: toOptionalTimestamp(deletedAt),
|
|
34
|
-
} as User;
|
|
35
|
-
},
|
|
36
|
-
};
|
|
1
|
+
import {
|
|
2
|
+
FirestoreDataConverter,
|
|
3
|
+
QueryDocumentSnapshot,
|
|
4
|
+
DocumentData,
|
|
5
|
+
} from "firebase-admin/firestore";
|
|
6
|
+
import type { User } from "@cravery/core";
|
|
7
|
+
import {
|
|
8
|
+
toTimestamp,
|
|
9
|
+
toOptionalTimestamp,
|
|
10
|
+
toFirestoreTimestamp,
|
|
11
|
+
toOptionalFirestoreTimestamp,
|
|
12
|
+
stripUndefined,
|
|
13
|
+
} from "../../lib";
|
|
14
|
+
|
|
15
|
+
export const userConverter: FirestoreDataConverter<User> = {
|
|
16
|
+
toFirestore(user: User): DocumentData {
|
|
17
|
+
const { id, createdAt, updatedAt, deletedAt, ...rest } = user;
|
|
18
|
+
return stripUndefined({
|
|
19
|
+
...rest,
|
|
20
|
+
createdAt: toFirestoreTimestamp(createdAt),
|
|
21
|
+
updatedAt: toFirestoreTimestamp(updatedAt),
|
|
22
|
+
deletedAt: toOptionalFirestoreTimestamp(deletedAt),
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
|
|
26
|
+
fromFirestore(snapshot: QueryDocumentSnapshot): User {
|
|
27
|
+
const { createdAt, updatedAt, deletedAt, ...rest } = snapshot.data();
|
|
28
|
+
return {
|
|
29
|
+
...rest,
|
|
30
|
+
id: snapshot.id,
|
|
31
|
+
createdAt: toTimestamp(createdAt),
|
|
32
|
+
updatedAt: toTimestamp(updatedAt),
|
|
33
|
+
deletedAt: toOptionalTimestamp(deletedAt),
|
|
34
|
+
} as User;
|
|
35
|
+
},
|
|
36
|
+
};
|
package/src/lib/index.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from "./strip-undefined";
|
|
2
|
-
export * from "./timestamp";
|
|
1
|
+
export * from "./strip-undefined";
|
|
2
|
+
export * from "./timestamp";
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Recursively removes undefined values from an object or array.
|
|
3
|
-
* This is necessary because Firestore rejects undefined values.
|
|
4
|
-
*
|
|
5
|
-
* @param obj - The object or array to clean
|
|
6
|
-
* @returns A new object/array with undefined values removed
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* stripUndefined({ a: 1, b: undefined, c: { d: undefined, e: 2 } })
|
|
10
|
-
* // Returns: { a: 1, c: { e: 2 } }
|
|
11
|
-
*/
|
|
12
|
-
export function stripUndefined<T>(obj: T): T {
|
|
13
|
-
if (obj === null || obj === undefined) {
|
|
14
|
-
return obj;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
if (Array.isArray(obj)) {
|
|
18
|
-
return obj.map((item) => stripUndefined(item)) as T;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
if (typeof obj === "object") {
|
|
22
|
-
const cleaned: any = {};
|
|
23
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
24
|
-
if (value !== undefined) {
|
|
25
|
-
cleaned[key] = stripUndefined(value);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return cleaned as T;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
return obj;
|
|
32
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Recursively removes undefined values from an object or array.
|
|
3
|
+
* This is necessary because Firestore rejects undefined values.
|
|
4
|
+
*
|
|
5
|
+
* @param obj - The object or array to clean
|
|
6
|
+
* @returns A new object/array with undefined values removed
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* stripUndefined({ a: 1, b: undefined, c: { d: undefined, e: 2 } })
|
|
10
|
+
* // Returns: { a: 1, c: { e: 2 } }
|
|
11
|
+
*/
|
|
12
|
+
export function stripUndefined<T>(obj: T): T {
|
|
13
|
+
if (obj === null || obj === undefined) {
|
|
14
|
+
return obj;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (Array.isArray(obj)) {
|
|
18
|
+
return obj.map((item) => stripUndefined(item)) as T;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (typeof obj === "object") {
|
|
22
|
+
const cleaned: any = {};
|
|
23
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
24
|
+
if (value !== undefined) {
|
|
25
|
+
cleaned[key] = stripUndefined(value);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return cleaned as T;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return obj;
|
|
32
|
+
}
|
package/src/lib/timestamp.ts
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import { Timestamp as FirestoreTimestamp } from "firebase-admin/firestore";
|
|
2
|
-
import type { Timestamp } from "@cravery/core";
|
|
3
|
-
|
|
4
|
-
function getTimestampValues(ts: unknown): {
|
|
5
|
-
seconds: number;
|
|
6
|
-
nanoseconds: number;
|
|
7
|
-
} {
|
|
8
|
-
const obj = ts as any;
|
|
9
|
-
return {
|
|
10
|
-
seconds: obj.seconds ?? obj._seconds,
|
|
11
|
-
nanoseconds: obj.nanoseconds ?? obj._nanoseconds,
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export function toTimestamp(timestamp: FirestoreTimestamp): Timestamp {
|
|
16
|
-
const { seconds, nanoseconds } = getTimestampValues(timestamp);
|
|
17
|
-
return { seconds, nanoseconds };
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export function toOptionalTimestamp(
|
|
21
|
-
timestamp?: FirestoreTimestamp,
|
|
22
|
-
): Timestamp | undefined {
|
|
23
|
-
return timestamp ? toTimestamp(timestamp) : undefined;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export function toFirestoreTimestamp(
|
|
27
|
-
ts: Timestamp | FirestoreTimestamp | null | undefined,
|
|
28
|
-
): FirestoreTimestamp | null | undefined {
|
|
29
|
-
if (!ts) return ts;
|
|
30
|
-
const { seconds, nanoseconds } = getTimestampValues(ts);
|
|
31
|
-
return new FirestoreTimestamp(seconds, nanoseconds);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export function toOptionalFirestoreTimestamp(
|
|
35
|
-
ts: Timestamp | FirestoreTimestamp | null | undefined,
|
|
36
|
-
): FirestoreTimestamp | null {
|
|
37
|
-
if (!ts) return null;
|
|
38
|
-
const { seconds, nanoseconds } = getTimestampValues(ts);
|
|
39
|
-
return new FirestoreTimestamp(seconds, nanoseconds);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export function fromTimestamp(timestamp: Timestamp): FirestoreTimestamp {
|
|
43
|
-
return new FirestoreTimestamp(timestamp.seconds, timestamp.nanoseconds);
|
|
44
|
-
}
|
|
1
|
+
import { Timestamp as FirestoreTimestamp } from "firebase-admin/firestore";
|
|
2
|
+
import type { Timestamp } from "@cravery/core";
|
|
3
|
+
|
|
4
|
+
function getTimestampValues(ts: unknown): {
|
|
5
|
+
seconds: number;
|
|
6
|
+
nanoseconds: number;
|
|
7
|
+
} {
|
|
8
|
+
const obj = ts as any;
|
|
9
|
+
return {
|
|
10
|
+
seconds: obj.seconds ?? obj._seconds,
|
|
11
|
+
nanoseconds: obj.nanoseconds ?? obj._nanoseconds,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function toTimestamp(timestamp: FirestoreTimestamp): Timestamp {
|
|
16
|
+
const { seconds, nanoseconds } = getTimestampValues(timestamp);
|
|
17
|
+
return { seconds, nanoseconds };
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function toOptionalTimestamp(
|
|
21
|
+
timestamp?: FirestoreTimestamp,
|
|
22
|
+
): Timestamp | undefined {
|
|
23
|
+
return timestamp ? toTimestamp(timestamp) : undefined;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function toFirestoreTimestamp(
|
|
27
|
+
ts: Timestamp | FirestoreTimestamp | null | undefined,
|
|
28
|
+
): FirestoreTimestamp | null | undefined {
|
|
29
|
+
if (!ts) return ts;
|
|
30
|
+
const { seconds, nanoseconds } = getTimestampValues(ts);
|
|
31
|
+
return new FirestoreTimestamp(seconds, nanoseconds);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function toOptionalFirestoreTimestamp(
|
|
35
|
+
ts: Timestamp | FirestoreTimestamp | null | undefined,
|
|
36
|
+
): FirestoreTimestamp | null {
|
|
37
|
+
if (!ts) return null;
|
|
38
|
+
const { seconds, nanoseconds } = getTimestampValues(ts);
|
|
39
|
+
return new FirestoreTimestamp(seconds, nanoseconds);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function fromTimestamp(timestamp: Timestamp): FirestoreTimestamp {
|
|
43
|
+
return new FirestoreTimestamp(timestamp.seconds, timestamp.nanoseconds);
|
|
44
|
+
}
|