@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.
@@ -5,17 +5,16 @@ export type Bookmark = {
5
5
  productId: string;
6
6
  meta?: any;
7
7
  } & TimestampFields;
8
- export interface BookmarksModule {
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: (toUserId: string) => Promise<number>;
13
+ deleteByUserId: (userId: string) => Promise<number>;
17
14
  deleteByProductId: (productId: string) => Promise<number>;
18
- deleteByUserIdAndMeta: (meta: any) => Promise<number>;
19
- }
20
- export declare const configureBookmarksModule: ({ db, }: ModuleInput<Record<string, never>>) => Promise<BookmarksModule>;
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;AAMpB,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClD,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACzF,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,qBAAqB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5D,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7E,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtG,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,qBAAqB,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACvD;AAED,eAAO,MAAM,wBAAwB,YAElC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,KAAG,OAAO,CAAC,eAAe,CA0E9D,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":"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"}
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-rc9",
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-rc9",
35
- "@unchainedshop/mongodb": "^3.0.0-rc9"
34
+ "@unchainedshop/events": "^3.0.0",
35
+ "@unchainedshop/mongodb": "^3.0.0"
36
36
  },
37
37
  "devDependencies": {
38
- "@types/node": "^22.10.2",
38
+ "@types/node": "^22.10.5",
39
39
  "jest": "^29.7.0",
40
40
  "ts-jest": "^29.2.5",
41
- "typescript": "^5.7.2"
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) => Bookmarks.find({ userId }).toArray(),
47
- findBookmarkById: async (bookmarkId) => {
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) => Bookmarks.find(query).toArray(),
33
+ findBookmarks: async (query: mongodb.Filter<Bookmark>): Promise<Array<Bookmark>> =>
34
+ Bookmarks.find(query).toArray(),
52
35
 
53
36
  // Mutations
54
- replaceUserId: async (fromUserId, toUserId, bookmarkIds) => {
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>>;