@unchainedshop/core-bookmarks 3.1.13 → 4.0.0-rc.10
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 +3 -3
- package/lib/module/configureBookmarksModule.d.ts.map +1 -1
- package/lib/module/configureBookmarksModule.js.map +1 -1
- package/package.json +4 -4
- package/src/module/configureBookmarksModule.ts +3 -3
- package/lib/db/BookmarksSchema.d.ts +0 -3
- package/lib/db/BookmarksSchema.d.ts.map +0 -1
- package/lib/db/BookmarksSchema.js +0 -9
- package/lib/db/BookmarksSchema.js.map +0 -1
- package/lib/service/bookmarkServices.d.ts +0 -3
- package/lib/service/bookmarkServices.d.ts.map +0 -1
- package/lib/service/bookmarkServices.js +0 -5
- package/lib/service/bookmarkServices.js.map +0 -1
- package/lib/service/migrateBookmarksService.d.ts +0 -3
- package/lib/service/migrateBookmarksService.d.ts.map +0 -1
- package/lib/service/migrateBookmarksService.js +0 -26
- package/lib/service/migrateBookmarksService.js.map +0 -1
|
@@ -6,10 +6,10 @@ export type Bookmark = {
|
|
|
6
6
|
meta?: any;
|
|
7
7
|
} & TimestampFields;
|
|
8
8
|
export declare const configureBookmarksModule: ({ db }: ModuleInput<Record<string, never>>) => Promise<{
|
|
9
|
-
findBookmarksByUserId: (userId: string) => Promise<
|
|
9
|
+
findBookmarksByUserId: (userId: string) => Promise<Bookmark[]>;
|
|
10
10
|
findBookmarkById: (bookmarkId: string) => Promise<Bookmark>;
|
|
11
|
-
findBookmarks: (query: mongodb.Filter<Bookmark>) => Promise<
|
|
12
|
-
replaceUserId: (fromUserId: string, toUserId: string, bookmarkIds?:
|
|
11
|
+
findBookmarks: (query: mongodb.Filter<Bookmark>) => Promise<Bookmark[]>;
|
|
12
|
+
replaceUserId: (fromUserId: string, toUserId: string, bookmarkIds?: string[]) => Promise<number>;
|
|
13
13
|
deleteByUserId: (userId: string) => Promise<number>;
|
|
14
14
|
deleteByProductId: (productId: string) => Promise<number>;
|
|
15
15
|
create: (doc: any) => Promise<string>;
|
|
@@ -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;AAEpB,eAAO,MAAM,wBAAwB,GAAU,QAAQ,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oCAO/C,MAAM,KAAG,OAAO,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,GAAU,QAAQ,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oCAO/C,MAAM,KAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;mCAE7B,MAAM,KAAG,OAAO,CAAC,QAAQ,CAAC;2BAIlC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;gCAK7D,MAAM,YACR,MAAM,gBACF,MAAM,EAAE,KACrB,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"}
|
|
@@ -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;AAS5F,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAAE,EAAE,EAAE,EAAsC,EAAE,EAAE;IAC3F,cAAc,CAAC,eAAe,CAAC,CAAC;IAEhC,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAEhD,OAAO;QACL,UAAU;QACV,qBAAqB,EAAE,KAAK,EAAE,MAAc,
|
|
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
|
+
"version": "4.0.0-rc.10",
|
|
4
4
|
"main": "lib/bookmarks-index.js",
|
|
5
5
|
"types": "lib/bookmarks-index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -31,11 +31,11 @@
|
|
|
31
31
|
},
|
|
32
32
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@unchainedshop/events": "^
|
|
35
|
-
"@unchainedshop/mongodb": "^
|
|
34
|
+
"@unchainedshop/events": "^4.0.0-rc.4",
|
|
35
|
+
"@unchainedshop/mongodb": "^4.0.0-rc.4"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@types/node": "^24.0.
|
|
38
|
+
"@types/node": "^24.0.13",
|
|
39
39
|
"tsx": "^4.20.3",
|
|
40
40
|
"typescript": "^5.8.3"
|
|
41
41
|
}
|
|
@@ -24,20 +24,20 @@ export const configureBookmarksModule = async ({ db }: ModuleInput<Record<string
|
|
|
24
24
|
|
|
25
25
|
return {
|
|
26
26
|
// Queries
|
|
27
|
-
findBookmarksByUserId: async (userId: string): Promise<
|
|
27
|
+
findBookmarksByUserId: async (userId: string): Promise<Bookmark[]> =>
|
|
28
28
|
Bookmarks.find({ userId }).toArray(),
|
|
29
29
|
findBookmarkById: async (bookmarkId: string): Promise<Bookmark> => {
|
|
30
30
|
const filter = generateDbFilterById(bookmarkId);
|
|
31
31
|
return Bookmarks.findOne(filter, {});
|
|
32
32
|
},
|
|
33
|
-
findBookmarks: async (query: mongodb.Filter<Bookmark>): Promise<
|
|
33
|
+
findBookmarks: async (query: mongodb.Filter<Bookmark>): Promise<Bookmark[]> =>
|
|
34
34
|
Bookmarks.find(query).toArray(),
|
|
35
35
|
|
|
36
36
|
// Mutations
|
|
37
37
|
replaceUserId: async (
|
|
38
38
|
fromUserId: string,
|
|
39
39
|
toUserId: string,
|
|
40
|
-
bookmarkIds?:
|
|
40
|
+
bookmarkIds?: string[],
|
|
41
41
|
): Promise<number> => {
|
|
42
42
|
const selector: mongodb.Filter<Bookmark> = { userId: fromUserId };
|
|
43
43
|
if (bookmarkIds) {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BookmarksSchema.d.ts","sourceRoot":"","sources":["../../src/db/BookmarksSchema.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,eAAO,MAAM,cAAc,cAQ1B,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Schemas } from '@unchainedshop/utils';
|
|
2
|
-
import SimpleSchema from 'simpl-schema';
|
|
3
|
-
export const BookmarkSchema = new SimpleSchema({
|
|
4
|
-
userId: { type: String, required: true },
|
|
5
|
-
productId: { type: String, required: true },
|
|
6
|
-
meta: { type: Object, blackbox: true, required: false },
|
|
7
|
-
...Schemas.timestampFields,
|
|
8
|
-
}, { requiredByDefault: false });
|
|
9
|
-
//# sourceMappingURL=BookmarksSchema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BookmarksSchema.js","sourceRoot":"","sources":["../../src/db/BookmarksSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,YAAY,CAC5C;IACE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACxC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC3C,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACvD,GAAG,OAAO,CAAC,eAAe;CAC3B,EACD,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAC7B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bookmarkServices.d.ts","sourceRoot":"","sources":["../../src/service/bookmarkServices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,eAAO,MAAM,gBAAgB,EAAE,gBAE9B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bookmarkServices.js","sourceRoot":"","sources":["../../src/service/bookmarkServices.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,gBAAgB,EAAE,uBAAuB;CAC1C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrateBookmarksService.d.ts","sourceRoot":"","sources":["../../src/service/migrateBookmarksService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAM5E,eAAO,MAAM,uBAAuB,EAAE,uBAuBrC,CAAC"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
const hashBookmark = (bookmark) => {
|
|
2
|
-
return `${bookmark.productId}:${bookmark.userId}:${JSON.stringify(bookmark.meta || {})}`;
|
|
3
|
-
};
|
|
4
|
-
export const migrateBookmarksService = async ({ fromUserId, toUserId, shouldMerge }, { modules }) => {
|
|
5
|
-
const fromBookmarks = await modules.bookmarks.findBookmarks({ userId: fromUserId });
|
|
6
|
-
if (!fromBookmarks) {
|
|
7
|
-
// No bookmarks no copy needed
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
if (!shouldMerge) {
|
|
11
|
-
await modules.bookmarks.deleteByUserId(toUserId);
|
|
12
|
-
await modules.bookmarks.replaceUserId(fromUserId, toUserId);
|
|
13
|
-
}
|
|
14
|
-
else {
|
|
15
|
-
const toBookmarks = await modules.bookmarks.findBookmarks({ userId: toUserId });
|
|
16
|
-
const toBookmarkHashes = toBookmarks.map(hashBookmark);
|
|
17
|
-
const newBookmarkIds = fromBookmarks
|
|
18
|
-
.filter((fromBookmark) => {
|
|
19
|
-
const hash = hashBookmark(fromBookmark);
|
|
20
|
-
return !toBookmarkHashes.includes(hash);
|
|
21
|
-
})
|
|
22
|
-
.map((bookmark) => bookmark._id);
|
|
23
|
-
await modules.bookmarks.replaceUserId(fromUserId, toUserId, newBookmarkIds);
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=migrateBookmarksService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrateBookmarksService.js","sourceRoot":"","sources":["../../src/service/migrateBookmarksService.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,EAAE;IAChC,OAAO,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;AAC3F,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAA4B,KAAK,EACnE,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,EACrC,EAAE,OAAO,EAAE,EACX,EAAE;IACF,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACpF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,8BAA8B;QAC9B,OAAO;IACT,CAAC;IACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChF,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,aAAa;aACjC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE;YACvB,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;YACxC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC,CAAC"}
|