@unchainedshop/core-bookmarks 3.0.0-rc9 → 3.0.0
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/lib/module/configureBookmarksModule.d.ts +7 -8
- package/lib/module/configureBookmarksModule.d.ts.map +1 -1
- package/lib/module/configureBookmarksModule.js +1 -7
- package/lib/module/configureBookmarksModule.js.map +1 -1
- package/package.json +5 -5
- package/src/module/configureBookmarksModule.ts +17 -34
|
@@ -5,17 +5,16 @@ export type Bookmark = {
|
|
|
5
5
|
productId: string;
|
|
6
6
|
meta?: any;
|
|
7
7
|
} & TimestampFields;
|
|
8
|
-
export
|
|
9
|
-
create: (doc: Bookmark) => Promise<string | null>;
|
|
10
|
-
update: (_id: string, doc: mongodb.UpdateFilter<Bookmark> | Bookmark) => Promise<string>;
|
|
11
|
-
delete: (_id: string) => Promise<number>;
|
|
8
|
+
export declare const configureBookmarksModule: ({ db }: ModuleInput<Record<string, never>>) => Promise<{
|
|
12
9
|
findBookmarksByUserId: (userId: string) => Promise<Array<Bookmark>>;
|
|
13
10
|
findBookmarkById: (bookmarkId: string) => Promise<Bookmark>;
|
|
14
11
|
findBookmarks: (query: mongodb.Filter<Bookmark>) => Promise<Array<Bookmark>>;
|
|
15
12
|
replaceUserId: (fromUserId: string, toUserId: string, bookmarkIds?: Array<string>) => Promise<number>;
|
|
16
|
-
deleteByUserId: (
|
|
13
|
+
deleteByUserId: (userId: string) => Promise<number>;
|
|
17
14
|
deleteByProductId: (productId: string) => Promise<number>;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
create: (doc: any) => Promise<string>;
|
|
16
|
+
update: (bookmarkId: string, doc: Partial<Bookmark>) => Promise<string>;
|
|
17
|
+
delete: (bookmarkId: string) => Promise<number>;
|
|
18
|
+
}>;
|
|
19
|
+
export type BookmarksModule = Awaited<ReturnType<typeof configureBookmarksModule>>;
|
|
21
20
|
//# sourceMappingURL=configureBookmarksModule.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureBookmarksModule.d.ts","sourceRoot":"","sources":["../../src/module/configureBookmarksModule.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,OAAO,EACP,eAAe,EACf,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAKhC,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,GAAG,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"configureBookmarksModule.d.ts","sourceRoot":"","sources":["../../src/module/configureBookmarksModule.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,OAAO,EACP,eAAe,EACf,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAKhC,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,GAAG,eAAe,CAAC;AAEpB,eAAO,MAAM,wBAAwB,WAAkB,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oCAO/C,MAAM,KAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;mCAElC,MAAM,KAAG,OAAO,CAAC,QAAQ,CAAC;2BAIlC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gCAKlE,MAAM,YACR,MAAM,gBACF,KAAK,CAAC,MAAM,CAAC,KAC1B,OAAO,CAAC,MAAM,CAAC;6BAaa,MAAM;mCAMA,MAAM;;yBAehB,MAAM,OAAO,OAAO,CAAC,QAAQ,CAAC;yBAa9B,MAAM;EAMpC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { emit, registerEvents } from '@unchainedshop/events';
|
|
|
2
2
|
import { generateDbFilterById, generateDbObjectId, } from '@unchainedshop/mongodb';
|
|
3
3
|
import { BookmarksCollection } from '../db/BookmarksCollection.js';
|
|
4
4
|
const BOOKMARK_EVENTS = ['BOOKMARK_CREATE', 'BOOKMARK_UPDATE', 'BOOKMARK_REMOVE'];
|
|
5
|
-
export const configureBookmarksModule = async ({ db
|
|
5
|
+
export const configureBookmarksModule = async ({ db }) => {
|
|
6
6
|
registerEvents(BOOKMARK_EVENTS);
|
|
7
7
|
const Bookmarks = await BookmarksCollection(db);
|
|
8
8
|
return {
|
|
@@ -39,12 +39,6 @@ export const configureBookmarksModule = async ({ db, }) => {
|
|
|
39
39
|
await Promise.all(bookmarks.map(async (b) => emit('BOOKMARK_REMOVE', { bookmarkId: b._id })));
|
|
40
40
|
return result.deletedCount;
|
|
41
41
|
},
|
|
42
|
-
deleteByUserIdAndMeta: async ({ userId, meta }) => {
|
|
43
|
-
const bookmarks = await Bookmarks.find({ userId, meta }, { projection: { _id: true } }).toArray();
|
|
44
|
-
const result = await Bookmarks.deleteMany({ meta, userId });
|
|
45
|
-
await Promise.all(bookmarks.map(async (b) => emit('BOOKMARK_REMOVE', { bookmarkId: b._id })));
|
|
46
|
-
return result.deletedCount;
|
|
47
|
-
},
|
|
48
42
|
create: async (doc) => {
|
|
49
43
|
const { insertedId: bookmarkId } = await Bookmarks.insertOne({
|
|
50
44
|
_id: generateDbObjectId(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureBookmarksModule.js","sourceRoot":"","sources":["../../src/module/configureBookmarksModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EACL,oBAAoB,EACpB,kBAAkB,GAInB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,MAAM,eAAe,GAAa,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"configureBookmarksModule.js","sourceRoot":"","sources":["../../src/module/configureBookmarksModule.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/core-bookmarks",
|
|
3
|
-
"version": "3.0.0
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"main": "lib/bookmarks-index.js",
|
|
5
5
|
"types": "lib/bookmarks-index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -31,13 +31,13 @@
|
|
|
31
31
|
},
|
|
32
32
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@unchainedshop/events": "^3.0.0
|
|
35
|
-
"@unchainedshop/mongodb": "^3.0.0
|
|
34
|
+
"@unchainedshop/events": "^3.0.0",
|
|
35
|
+
"@unchainedshop/mongodb": "^3.0.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@types/node": "^22.10.
|
|
38
|
+
"@types/node": "^22.10.5",
|
|
39
39
|
"jest": "^29.7.0",
|
|
40
40
|
"ts-jest": "^29.2.5",
|
|
41
|
-
"typescript": "^5.7.
|
|
41
|
+
"typescript": "^5.7.3"
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -17,41 +17,28 @@ export type Bookmark = {
|
|
|
17
17
|
meta?: any;
|
|
18
18
|
} & TimestampFields;
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
* Module
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
export interface BookmarksModule {
|
|
25
|
-
create: (doc: Bookmark) => Promise<string | null>;
|
|
26
|
-
update: (_id: string, doc: mongodb.UpdateFilter<Bookmark> | Bookmark) => Promise<string>;
|
|
27
|
-
delete: (_id: string) => Promise<number>;
|
|
28
|
-
findBookmarksByUserId: (userId: string) => Promise<Array<Bookmark>>;
|
|
29
|
-
findBookmarkById: (bookmarkId: string) => Promise<Bookmark>;
|
|
30
|
-
findBookmarks: (query: mongodb.Filter<Bookmark>) => Promise<Array<Bookmark>>;
|
|
31
|
-
replaceUserId: (fromUserId: string, toUserId: string, bookmarkIds?: Array<string>) => Promise<number>;
|
|
32
|
-
deleteByUserId: (toUserId: string) => Promise<number>;
|
|
33
|
-
deleteByProductId: (productId: string) => Promise<number>;
|
|
34
|
-
deleteByUserIdAndMeta: (meta: any) => Promise<number>;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export const configureBookmarksModule = async ({
|
|
38
|
-
db,
|
|
39
|
-
}: ModuleInput<Record<string, never>>): Promise<BookmarksModule> => {
|
|
20
|
+
export const configureBookmarksModule = async ({ db }: ModuleInput<Record<string, never>>) => {
|
|
40
21
|
registerEvents(BOOKMARK_EVENTS);
|
|
41
22
|
|
|
42
23
|
const Bookmarks = await BookmarksCollection(db);
|
|
43
24
|
|
|
44
25
|
return {
|
|
45
26
|
// Queries
|
|
46
|
-
findBookmarksByUserId: async (userId) =>
|
|
47
|
-
|
|
27
|
+
findBookmarksByUserId: async (userId: string): Promise<Array<Bookmark>> =>
|
|
28
|
+
Bookmarks.find({ userId }).toArray(),
|
|
29
|
+
findBookmarkById: async (bookmarkId: string): Promise<Bookmark> => {
|
|
48
30
|
const filter = generateDbFilterById(bookmarkId);
|
|
49
31
|
return Bookmarks.findOne(filter, {});
|
|
50
32
|
},
|
|
51
|
-
findBookmarks: async (query) =>
|
|
33
|
+
findBookmarks: async (query: mongodb.Filter<Bookmark>): Promise<Array<Bookmark>> =>
|
|
34
|
+
Bookmarks.find(query).toArray(),
|
|
52
35
|
|
|
53
36
|
// Mutations
|
|
54
|
-
replaceUserId: async (
|
|
37
|
+
replaceUserId: async (
|
|
38
|
+
fromUserId: string,
|
|
39
|
+
toUserId: string,
|
|
40
|
+
bookmarkIds?: Array<string>,
|
|
41
|
+
): Promise<number> => {
|
|
55
42
|
const selector: mongodb.Filter<Bookmark> = { userId: fromUserId };
|
|
56
43
|
if (bookmarkIds) {
|
|
57
44
|
selector._id = { $in: bookmarkIds };
|
|
@@ -64,24 +51,18 @@ export const configureBookmarksModule = async ({
|
|
|
64
51
|
});
|
|
65
52
|
return result.upsertedCount;
|
|
66
53
|
},
|
|
67
|
-
deleteByUserId: async (userId) => {
|
|
54
|
+
deleteByUserId: async (userId: string) => {
|
|
68
55
|
const bookmarks = await Bookmarks.find({ userId }, { projection: { _id: true } }).toArray();
|
|
69
56
|
const result = await Bookmarks.deleteMany({ userId });
|
|
70
57
|
await Promise.all(bookmarks.map(async (b) => emit('BOOKMARK_REMOVE', { bookmarkId: b._id })));
|
|
71
58
|
return result.deletedCount;
|
|
72
59
|
},
|
|
73
|
-
deleteByProductId: async (productId) => {
|
|
60
|
+
deleteByProductId: async (productId: string) => {
|
|
74
61
|
const bookmarks = await Bookmarks.find({ productId }, { projection: { _id: true } }).toArray();
|
|
75
62
|
const result = await Bookmarks.deleteMany({ productId });
|
|
76
63
|
await Promise.all(bookmarks.map(async (b) => emit('BOOKMARK_REMOVE', { bookmarkId: b._id })));
|
|
77
64
|
return result.deletedCount;
|
|
78
65
|
},
|
|
79
|
-
deleteByUserIdAndMeta: async ({ userId, meta }) => {
|
|
80
|
-
const bookmarks = await Bookmarks.find({ userId, meta }, { projection: { _id: true } }).toArray();
|
|
81
|
-
const result = await Bookmarks.deleteMany({ meta, userId });
|
|
82
|
-
await Promise.all(bookmarks.map(async (b) => emit('BOOKMARK_REMOVE', { bookmarkId: b._id })));
|
|
83
|
-
return result.deletedCount;
|
|
84
|
-
},
|
|
85
66
|
create: async (doc) => {
|
|
86
67
|
const { insertedId: bookmarkId } = await Bookmarks.insertOne({
|
|
87
68
|
_id: generateDbObjectId(),
|
|
@@ -91,7 +72,7 @@ export const configureBookmarksModule = async ({
|
|
|
91
72
|
await emit('BOOKMARK_CREATE', { bookmarkId });
|
|
92
73
|
return bookmarkId;
|
|
93
74
|
},
|
|
94
|
-
update: async (bookmarkId, doc) => {
|
|
75
|
+
update: async (bookmarkId: string, doc: Partial<Bookmark>) => {
|
|
95
76
|
await Bookmarks.updateOne(
|
|
96
77
|
{ _id: bookmarkId },
|
|
97
78
|
{
|
|
@@ -104,10 +85,12 @@ export const configureBookmarksModule = async ({
|
|
|
104
85
|
await emit('BOOKMARK_UPDATE', { bookmarkId });
|
|
105
86
|
return bookmarkId;
|
|
106
87
|
},
|
|
107
|
-
delete: async (bookmarkId) => {
|
|
88
|
+
delete: async (bookmarkId: string) => {
|
|
108
89
|
const { deletedCount } = await Bookmarks.deleteOne({ _id: bookmarkId });
|
|
109
90
|
await emit('BOOKMARK_REMOVE', { bookmarkId });
|
|
110
91
|
return deletedCount;
|
|
111
92
|
},
|
|
112
93
|
};
|
|
113
94
|
};
|
|
95
|
+
|
|
96
|
+
export type BookmarksModule = Awaited<ReturnType<typeof configureBookmarksModule>>;
|