@unchainedshop/api 4.7.2 → 4.8.1

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.
Files changed (96) hide show
  1. package/lib/acl.js +1 -29
  2. package/lib/api-index.d.ts +0 -1
  3. package/lib/chat/generateImageHandler.js +5 -6
  4. package/lib/context.d.ts +0 -1
  5. package/lib/context.js +3 -8
  6. package/lib/events.d.ts +0 -2
  7. package/lib/events.js +0 -2
  8. package/lib/express/createMCPMiddleware.js +1 -1
  9. package/lib/express/index.d.ts +9 -6
  10. package/lib/express/index.js +125 -52
  11. package/lib/fastify/index.d.ts +9 -6
  12. package/lib/fastify/index.js +113 -51
  13. package/lib/fastify/mcpHandler.js +1 -1
  14. package/lib/loaders/buildTextMap.js +13 -15
  15. package/lib/mcp/tools/assortment/assortmentManagement.d.ts +2 -2
  16. package/lib/mcp/tools/assortment/assortmentManagement.js +2 -2
  17. package/lib/mcp/tools/assortment/handlers/getAssortment.js +1 -1
  18. package/lib/mcp/tools/assortment/schemas.d.ts +141 -322
  19. package/lib/mcp/tools/assortment/schemas.js +96 -179
  20. package/lib/mcp/tools/filter/filterManagement.d.ts +2 -2
  21. package/lib/mcp/tools/filter/filterManagement.js +2 -2
  22. package/lib/mcp/tools/filter/schemas.d.ts +75 -184
  23. package/lib/mcp/tools/filter/schemas.js +51 -87
  24. package/lib/mcp/tools/localization/getLocalizationsConfig.d.ts +1 -1
  25. package/lib/mcp/tools/localization/localizationManagement.d.ts +2 -2
  26. package/lib/mcp/tools/localization/localizationManagement.js +2 -2
  27. package/lib/mcp/tools/localization/schemas.d.ts +47 -144
  28. package/lib/mcp/tools/localization/schemas.js +36 -51
  29. package/lib/mcp/tools/order/handlers/getTopCustomers.d.ts +0 -2
  30. package/lib/mcp/tools/order/orderManagement.d.ts +2 -2
  31. package/lib/mcp/tools/order/orderManagement.js +2 -2
  32. package/lib/mcp/tools/order/schemas.d.ts +75 -184
  33. package/lib/mcp/tools/order/schemas.js +51 -113
  34. package/lib/mcp/tools/product/handlers/getProduct.js +1 -1
  35. package/lib/mcp/tools/product/productManagement.d.ts +2 -2
  36. package/lib/mcp/tools/product/productManagement.js +2 -2
  37. package/lib/mcp/tools/product/schemas.d.ts +317 -642
  38. package/lib/mcp/tools/product/schemas.js +191 -287
  39. package/lib/mcp/tools/provider/providerManagement.d.ts +2 -2
  40. package/lib/mcp/tools/provider/providerManagement.js +2 -2
  41. package/lib/mcp/tools/provider/schemas.d.ts +47 -142
  42. package/lib/mcp/tools/provider/schemas.js +32 -67
  43. package/lib/mcp/tools/quotation/handlers/getQuotation.d.ts +0 -2
  44. package/lib/mcp/tools/quotation/handlers/listQuotations.d.ts +0 -2
  45. package/lib/mcp/tools/quotation/handlers/makeQuotationProposal.d.ts +0 -2
  46. package/lib/mcp/tools/quotation/handlers/rejectQuotation.d.ts +0 -2
  47. package/lib/mcp/tools/quotation/handlers/verifyQuotation.d.ts +0 -2
  48. package/lib/mcp/tools/quotation/quotationManagement.d.ts +2 -2
  49. package/lib/mcp/tools/quotation/quotationManagement.js +2 -2
  50. package/lib/mcp/tools/quotation/schemas.d.ts +40 -111
  51. package/lib/mcp/tools/quotation/schemas.js +29 -54
  52. package/lib/mcp/tools/system/handlers/countEvents.d.ts +1 -8
  53. package/lib/mcp/tools/system/handlers/countWork.d.ts +1 -10
  54. package/lib/mcp/tools/system/handlers/countWork.js +0 -1
  55. package/lib/mcp/tools/system/handlers/index.d.ts +4 -4
  56. package/lib/mcp/tools/system/handlers/listEvents.d.ts +1 -12
  57. package/lib/mcp/tools/system/handlers/listWork.d.ts +1 -14
  58. package/lib/mcp/tools/system/handlers/listWork.js +0 -1
  59. package/lib/mcp/tools/system/schemas.d.ts +84 -179
  60. package/lib/mcp/tools/system/schemas.js +67 -188
  61. package/lib/mcp/tools/system/systemManagement.d.ts +1 -1
  62. package/lib/mcp/tools/system/systemManagement.js +1 -1
  63. package/lib/mcp/tools/users/handlers/addUserEmail.d.ts +0 -2
  64. package/lib/mcp/tools/users/handlers/createUser.d.ts +0 -2
  65. package/lib/mcp/tools/users/handlers/enrollUser.d.ts +0 -2
  66. package/lib/mcp/tools/users/handlers/getCurrentUser.d.ts +0 -2
  67. package/lib/mcp/tools/users/handlers/getUser.d.ts +0 -2
  68. package/lib/mcp/tools/users/handlers/listUsers.d.ts +0 -2
  69. package/lib/mcp/tools/users/handlers/setUserTags.d.ts +0 -2
  70. package/lib/mcp/tools/users/handlers/setUserUsername.d.ts +0 -2
  71. package/lib/mcp/tools/users/handlers/updateUser.d.ts +0 -2
  72. package/lib/mcp/tools/users/schemas.d.ts +163 -296
  73. package/lib/mcp/tools/users/schemas.js +71 -152
  74. package/lib/mcp/tools/users/usersManagement.d.ts +2 -2
  75. package/lib/mcp/tools/users/usersManagement.js +2 -2
  76. package/lib/mcp/utils/getNormalizedQuotationDetails.d.ts +0 -2
  77. package/lib/mcp/utils/getNormalizedUserDetails.d.ts +0 -2
  78. package/lib/mcp/utils/normalizeMediaUrl.js +1 -1
  79. package/lib/mcp/utils/sanitizeLocalizationEntityData.d.ts +1 -1
  80. package/lib/mcp/utils/sharedSchemas.d.ts +39 -28
  81. package/lib/mcp/utils/sharedSchemas.js +47 -28
  82. package/lib/mcp/utils/validateIsoCode.d.ts +1 -1
  83. package/lib/resolvers/mutations/accounts/changePassword.js +1 -4
  84. package/lib/resolvers/mutations/index.d.ts +6 -1
  85. package/lib/resolvers/mutations/index.js +12 -2
  86. package/lib/resolvers/mutations/orders/updateCart.js +1 -7
  87. package/lib/resolvers/queries/orders/orders.js +2 -2
  88. package/lib/resolvers/type/index.d.ts +1 -0
  89. package/lib/resolvers/type/order/order-delivery-pickup-types.d.ts +1 -0
  90. package/lib/resolvers/type/order/order-delivery-pickup-types.js +7 -0
  91. package/lib/roles/index.js +0 -1
  92. package/lib/roles/loggedIn.js +0 -1
  93. package/lib/schema/mutation.js +44 -6
  94. package/lib/schema/types/index.js +2 -2
  95. package/lib/schema/types/order/delivery.js +2 -0
  96. package/package.json +17 -8
@@ -4,7 +4,6 @@ import loginWithPassword from "./accounts/loginWithPassword.js";
4
4
  import loginWithWebAuthn from "./accounts/loginWithWebAuthn.js";
5
5
  import loginAsGuest from "./accounts/loginAsGuest.js";
6
6
  import logout from "./accounts/logout.js";
7
- import logoutAllSessions from "./accounts/logoutAllSessions.js";
8
7
  import impersonate from "./accounts/impersonate.js";
9
8
  import stopImpersonation from "./accounts/stopImpersonation.js";
10
9
  import changePassword from "./accounts/changePassword.js";
@@ -70,6 +69,8 @@ import updateCartItem from "./orders/updateCartItem.js";
70
69
  import removeCartItem from "./orders/removeCartItem.js";
71
70
  import removeCartDiscount from "./orders/removeCartDiscount.js";
72
71
  import removeOrder from "./orders/removeOrder.js";
72
+ import setOrderPaymentProvider from "./orders/setOrderPaymentProvider.js";
73
+ import setOrderDeliveryProvider from "./orders/setOrderDeliveryProvider.js";
73
74
  import confirmOrder from "./orders/confirmOrder.js";
74
75
  import payOrder from "./orders/payOrder.js";
75
76
  import deliverOrder from "./orders/deliverOrder.js";
@@ -133,6 +134,10 @@ import updateEnrollment from "./enrollments/updateEnrollment.js";
133
134
  import registerPaymentCredentials from "./payment/registerPaymentCredentials.js";
134
135
  import markPaymentCredentialsPreferred from "./payment/markPaymentCredentialsPreferred.js";
135
136
  import removePaymentCredentials from "./payment/removePaymentCredentials.js";
137
+ import updateOrderDeliveryShipping from "./orders/updateOrderDeliveryShipping.js";
138
+ import updateOrderDeliveryPickUp from "./orders/updateOrderDeliveryPickUp.js";
139
+ import updateOrderPaymentGeneric from "./orders/updateOrderPaymentGeneric.js";
140
+ import updateOrderPaymentInvoice from "./orders/updateOrderPaymentInvoice.js";
136
141
  import signPaymentProviderForCredentialRegistration from "./payment/signPaymentProviderForCredentialRegistration.js";
137
142
  import signPaymentProviderForCheckout from "./orders/signPaymentProviderForCheckout.js";
138
143
  import pageView from "./pageView.js";
@@ -152,7 +157,6 @@ import updateCartPaymentGeneric from "./orders/updateCartPaymentGeneric.js";
152
157
  import updateCartPaymentInvoice from "./orders/updateCartPaymentInvoice.js";
153
158
  export default {
154
159
  logout: acl(actions.logout)(logout),
155
- logoutAllSessions: acl(actions.logoutAllSessions)(logoutAllSessions),
156
160
  loginAsGuest: acl(actions.loginAsGuest)(loginAsGuest),
157
161
  impersonate: acl(actions.impersonate)(impersonate),
158
162
  stopImpersonation: acl(actions.stopImpersonation)(stopImpersonation),
@@ -238,6 +242,12 @@ export default {
238
242
  updateCartDeliveryShipping: acl(actions.updateCart)(updateCartDeliveryShipping),
239
243
  updateCartPaymentGeneric: acl(actions.updateCart)(updateCartPaymentGeneric),
240
244
  updateCartPaymentInvoice: acl(actions.updateCart)(updateCartPaymentInvoice),
245
+ setOrderPaymentProvider: acl(actions.updateOrder)(setOrderPaymentProvider),
246
+ setOrderDeliveryProvider: acl(actions.updateOrder)(setOrderDeliveryProvider),
247
+ updateOrderDeliveryShipping: acl(actions.updateOrderDelivery)(updateOrderDeliveryShipping),
248
+ updateOrderDeliveryPickUp: acl(actions.updateOrderDelivery)(updateOrderDeliveryPickUp),
249
+ updateOrderPaymentGeneric: acl(actions.updateOrderPayment)(updateOrderPaymentGeneric),
250
+ updateOrderPaymentInvoice: acl(actions.updateOrderPayment)(updateOrderPaymentInvoice),
241
251
  removeOrder: acl(actions.updateOrder)(removeOrder),
242
252
  confirmOrder: acl(actions.markOrderConfirmed)(confirmOrder),
243
253
  rejectOrder: acl(actions.markOrderRejected)(rejectOrder),
@@ -1,15 +1,9 @@
1
1
  import { log } from '@unchainedshop/logger';
2
- import { InvalidIdError, OrderNotFoundError, OrderWrongStatusError } from "../../../errors.js";
2
+ import { OrderNotFoundError, OrderWrongStatusError } from "../../../errors.js";
3
3
  export default async function updateCart(root, params, context) {
4
4
  const { orderId, billingAddress, contact, paymentProviderId, deliveryProviderId, meta } = params;
5
5
  const { modules, services, userId, user } = context;
6
6
  log('mutation updateCart', { userId });
7
- if (orderId === '')
8
- throw new InvalidIdError({ orderId });
9
- if (paymentProviderId === '')
10
- throw new InvalidIdError({ paymentProviderId });
11
- if (deliveryProviderId === '')
12
- throw new InvalidIdError({ deliveryProviderId });
13
7
  const order = await services.orders.findOrInitCart({
14
8
  orderId,
15
9
  user: user,
@@ -2,8 +2,6 @@ import { log } from '@unchainedshop/logger';
2
2
  export default async function orders(root, params, { modules, userId }) {
3
3
  const { limit, offset, paymentProviderIds, deliveryProviderIds, ...restParams } = params;
4
4
  log(`query orders: ${limit} ${offset} ${restParams?.queryString || ''}`, { userId });
5
- const promises = [];
6
- await Promise.all(promises);
7
5
  const [orderPayments, orderDeliveries] = await Promise.all([
8
6
  paymentProviderIds?.length
9
7
  ? modules.orders.payments.findOrderPaymentsByProviderIds({ paymentProviderIds })
@@ -19,6 +17,8 @@ export default async function orders(root, params, { modules, userId }) {
19
17
  const deliveryIds = orderDeliveries.map((d) => d._id);
20
18
  return modules.orders.findOrders({
21
19
  ...restParams,
20
+ limit,
21
+ offset,
22
22
  paymentIds,
23
23
  deliveryIds,
24
24
  });
@@ -330,6 +330,7 @@ declare const types: {
330
330
  };
331
331
  OrderDeliveryPickUp: {
332
332
  activePickUpLocation(orderDelivery: import("@unchainedshop/core-orders").OrderDelivery, _: never, requestContext: import("../../context.ts").Context): Promise<import("@unchainedshop/core-delivery").DeliveryLocation | null>;
333
+ pickUpLocations(obj: import("@unchainedshop/core-orders").OrderDelivery, _: never, context: import("../../context.ts").Context): Promise<import("@unchainedshop/core-delivery").DeliveryLocation[]>;
333
334
  provider(obj: import("@unchainedshop/core-orders").OrderDelivery, _: never, { loaders }: import("../../context.ts").Context): Promise<import("@unchainedshop/core-delivery").DeliveryProvider>;
334
335
  status(obj: import("@unchainedshop/core-orders").OrderDelivery, _: never, { modules }: import("../../context.ts").Context): import("@unchainedshop/core-orders").OrderDeliveryStatus;
335
336
  discounts(obj: import("@unchainedshop/core-orders").OrderDelivery, _: never, { loaders }: import("../../context.ts").Context): Promise<{
@@ -2,6 +2,7 @@ import type { Context } from '../../../context.ts';
2
2
  import type { OrderDelivery } from '@unchainedshop/core-orders';
3
3
  export declare const OrderDeliveryPickUp: {
4
4
  activePickUpLocation(orderDelivery: OrderDelivery, _: never, requestContext: Context): Promise<import("@unchainedshop/core-delivery").DeliveryLocation | null>;
5
+ pickUpLocations(obj: OrderDelivery, _: never, context: Context): Promise<import("@unchainedshop/core-delivery").DeliveryLocation[]>;
5
6
  provider(obj: OrderDelivery, _: never, { loaders }: Context): Promise<import("@unchainedshop/core-delivery").DeliveryProvider>;
6
7
  status(obj: OrderDelivery, _: never, { modules }: Context): import("@unchainedshop/core-orders").OrderDeliveryStatus;
7
8
  discounts(obj: OrderDelivery, _: never, { loaders }: Context): Promise<{
@@ -8,6 +8,13 @@ export const OrderDeliveryPickUp = {
8
8
  const director = await DeliveryDirector.actions(provider, { orderDelivery: orderDelivery }, requestContext);
9
9
  return director.pickUpLocationById(orderPickUpLocationId);
10
10
  },
11
+ async pickUpLocations(obj, _, context) {
12
+ const provider = await context.loaders.deliveryProviderLoader.load({
13
+ deliveryProviderId: obj.deliveryProviderId,
14
+ });
15
+ const director = await DeliveryDirector.actions(provider, { orderDelivery: obj }, context);
16
+ return director.pickUpLocations();
17
+ },
11
18
  async provider(obj, _, { loaders }) {
12
19
  return loaders.deliveryProviderLoader.load({
13
20
  deliveryProviderId: obj.deliveryProviderId,
@@ -101,7 +101,6 @@ const actions = [
101
101
  'managePaymentCredentials',
102
102
  'bulkImport',
103
103
  'logout',
104
- 'logoutAllSessions',
105
104
  'loginAsGuest',
106
105
  'loginWithPassword',
107
106
  'loginWithWebAuthn',
@@ -172,5 +172,4 @@ export const loggedIn = (role, actions) => {
172
172
  role.allow(actions.downloadFile, isFileAccessible);
173
173
  role.allow(actions.uploadUserAvatar, canUpdateAvatar);
174
174
  role.allow(actions.uploadTempFile, canUpdateAvatar);
175
- role.allow(actions.logoutAllSessions, () => true);
176
175
  };
@@ -57,12 +57,6 @@ export default [
57
57
  """
58
58
  logout: SuccessResponse
59
59
 
60
- """
61
- Log the user out of all sessions by invalidating all JWT tokens.
62
- This increments the token version, making all existing tokens invalid.
63
- """
64
- logoutAllSessions: SuccessResponse
65
-
66
60
  """
67
61
  Impersonate a user
68
62
  """
@@ -227,6 +221,20 @@ export default [
227
221
  """
228
222
  terminateEnrollment(enrollmentId: ID!): Enrollment!
229
223
 
224
+ """
225
+ Change the delivery method/provider to an order. If the delivery provider
226
+ doesn’t exists new delivery provider will be created with the provided ID.
227
+ """
228
+ setOrderDeliveryProvider(orderId: ID!, deliveryProviderId: ID!): Order!
229
+ @deprecated(reason: "Use updateCart or updateCartDelivery* mutations instead")
230
+
231
+ """
232
+ Change the payment method/provider to an order. If the payment provider
233
+ doesn’t exists new payment provider will be created with the provided ID.
234
+ """
235
+ setOrderPaymentProvider(orderId: ID!, paymentProviderId: ID!): Order!
236
+ @deprecated(reason: "Use updateCart or updateCartPayment* mutations instead")
237
+
230
238
  """
231
239
  Update the cart by changing the delivery provider and using a shipping specific configuration
232
240
  """
@@ -257,6 +265,36 @@ export default [
257
265
  """
258
266
  updateCartPaymentGeneric(orderId: ID, paymentProviderId: ID!, meta: JSON): Order!
259
267
 
268
+ """
269
+ Update a Shipping Delivery Provider's specific configuration
270
+ """
271
+ updateOrderDeliveryShipping(
272
+ orderDeliveryId: ID!
273
+ address: AddressInput
274
+ meta: JSON
275
+ ): OrderDeliveryShipping! @deprecated(reason: "Use updateCartDeliveryShipping instead")
276
+
277
+ """
278
+ Update a Pick Up Delivery Provider's specific configuration
279
+ """
280
+ updateOrderDeliveryPickUp(
281
+ orderDeliveryId: ID!
282
+ orderPickUpLocationId: ID!
283
+ meta: JSON
284
+ ): OrderDeliveryPickUp! @deprecated(reason: "Use updateCartDeliveryPickUp instead")
285
+
286
+ """
287
+ Update an Invoice Payment Provider's specific configuration
288
+ """
289
+ updateOrderPaymentInvoice(orderPaymentId: ID!, meta: JSON): OrderPaymentInvoice!
290
+ @deprecated(reason: "Use updateCartPaymentInvoice instead")
291
+
292
+ """
293
+ Update a Generic Payment Provider's specific configuration
294
+ """
295
+ updateOrderPaymentGeneric(orderPaymentId: ID!, meta: JSON): OrderPaymentGeneric!
296
+ @deprecated(reason: "Use updateCartPaymentGeneric instead")
297
+
260
298
  """
261
299
  Remove an order while it's still open
262
300
  """
@@ -15,7 +15,7 @@ import price from "./price.js";
15
15
  import payment from "./payment.js";
16
16
  import shop from "./shop.js";
17
17
  import stock from "./stock.js";
18
- import common from "./common.js";
18
+ import types from "./types.js";
19
19
  import user from "./user.js";
20
20
  import warehousing from "./warehousing.js";
21
21
  import order from "./order/index.js";
@@ -46,7 +46,7 @@ export default [
46
46
  ...payment,
47
47
  ...shop,
48
48
  ...stock,
49
- ...common,
49
+ ...types,
50
50
  ...user,
51
51
  ...warehousing,
52
52
  ...product,
@@ -33,6 +33,8 @@ export default [
33
33
  delivered: DateTime
34
34
  fee: Price
35
35
  discounts: [OrderDeliveryDiscount!]
36
+ pickUpLocations: [PickUpLocation!]!
37
+ @deprecated(reason: "Use DeliveryProvider.pickupLocations instead")
36
38
  activePickUpLocation: PickUpLocation
37
39
  }
38
40
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@unchainedshop/api",
3
3
  "description": "GraphQL API layer for the Unchained Engine with Express/Fastify adapters and MCP server",
4
- "version": "4.7.2",
4
+ "version": "4.8.1",
5
5
  "main": "lib/api-index.js",
6
6
  "types": "lib/api-index.d.ts",
7
7
  "type": "module",
@@ -63,20 +63,22 @@
63
63
  "@ai-sdk/mcp": "^1",
64
64
  "@fastify/cookie": ">= 11 < 12",
65
65
  "@fastify/multipart": ">= 9 < 10",
66
+ "@fastify/session": ">= 11 < 12",
66
67
  "@fastify/static": ">= 9 < 10",
67
68
  "@modelcontextprotocol/sdk": ">= 1 < 2",
68
69
  "ai": ">= 6 < 7",
69
- "cookie-parser": ">= 1.4 < 2",
70
70
  "express": ">= 5 < 6",
71
+ "express-session": ">= 1.18 < 2",
71
72
  "fastify": ">= 5.2 < 6",
72
73
  "graphql-yoga": ">= 5.9 < 6",
73
- "multer": ">= 2 < 3"
74
+ "multer": ">= 2 < 3",
75
+ "passport": ">= 0.7 < 1"
74
76
  },
75
77
  "peerDependenciesMeta": {
76
78
  "graphql-yoga": {
77
79
  "optional": false
78
80
  },
79
- "cookie-parser": {
81
+ "express-session": {
80
82
  "optional": false
81
83
  },
82
84
  "@modelcontextprotocol/sdk": {
@@ -97,6 +99,9 @@
97
99
  "@fastify/multipart": {
98
100
  "optional": true
99
101
  },
102
+ "@fastify/session": {
103
+ "optional": true
104
+ },
100
105
  "@fastify/static": {
101
106
  "optional": true
102
107
  },
@@ -105,6 +110,9 @@
105
110
  },
106
111
  "multer": {
107
112
  "optional": true
113
+ },
114
+ "passport": {
115
+ "optional": true
108
116
  }
109
117
  },
110
118
  "dependencies": {
@@ -113,10 +121,9 @@
113
121
  "@unchainedshop/logger": "^4.6.0",
114
122
  "@unchainedshop/roles": "^4.6.0",
115
123
  "@unchainedshop/utils": "^4.6.0",
116
- "@whatwg-node/server": "^0.10.18",
117
124
  "dataloader": "^2.2.3",
125
+ "expiry-map": "^2.0.0",
118
126
  "graphql-scalars": "^1.24.2",
119
- "jose": "^6.0.10",
120
127
  "mime": ">= 4 < 5",
121
128
  "p-memoize": "^8.0.0",
122
129
  "zod": "^3.25.76 || ^4"
@@ -125,16 +132,18 @@
125
132
  "@ai-sdk/mcp": "^1.0.5",
126
133
  "@fastify/cookie": "^11.0.2",
127
134
  "@fastify/multipart": "^9.0.3",
135
+ "@fastify/session": "^11.1.0",
128
136
  "@fastify/static": "^9.0.0",
129
137
  "@modelcontextprotocol/sdk": "^1.15.1",
130
- "@types/cookie-parser": "^1.4.8",
131
138
  "@types/express": "^5.0.3",
139
+ "@types/express-session": "^1.18.2",
132
140
  "@types/node": "^25.0.0",
133
141
  "ai": "^6.0.14",
134
- "cookie-parser": "^1.4.7",
135
142
  "express": "^5.1.0",
143
+ "express-session": "^1.18.1",
136
144
  "fastify": "^5.4.0",
137
145
  "multer": "^2.0.1",
146
+ "passport": "^0.7.0",
138
147
  "typescript": "^5.8.3"
139
148
  }
140
149
  }