@faststore/api 3.44.0 → 3.45.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.
Files changed (110) hide show
  1. package/dist/cjs/package.json +1 -1
  2. package/dist/cjs/src/__generated__/schema.d.ts +742 -0
  3. package/dist/cjs/src/__generated__/schema.js +1 -0
  4. package/dist/cjs/src/__generated__/schema.js.map +1 -1
  5. package/dist/cjs/src/index.d.ts +5 -1
  6. package/dist/cjs/src/platforms/errors.d.ts +5 -1
  7. package/dist/cjs/src/platforms/errors.js +9 -1
  8. package/dist/cjs/src/platforms/errors.js.map +1 -1
  9. package/dist/cjs/src/platforms/vtex/clients/commerce/Contract.d.ts +7 -0
  10. package/dist/cjs/src/platforms/vtex/clients/commerce/Contract.js +3 -0
  11. package/dist/cjs/src/platforms/vtex/clients/commerce/Contract.js.map +1 -0
  12. package/dist/cjs/src/platforms/vtex/clients/commerce/index.d.ts +39 -1
  13. package/dist/cjs/src/platforms/vtex/clients/commerce/index.js +117 -4
  14. package/dist/cjs/src/platforms/vtex/clients/commerce/index.js.map +1 -1
  15. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Unit.d.ts +18 -0
  16. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Unit.js +3 -0
  17. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Unit.js.map +1 -0
  18. package/dist/cjs/src/platforms/vtex/clients/commerce/types/VtexId.d.ts +11 -0
  19. package/dist/cjs/src/platforms/vtex/clients/commerce/types/VtexId.js +3 -0
  20. package/dist/cjs/src/platforms/vtex/clients/commerce/types/VtexId.js.map +1 -0
  21. package/dist/cjs/src/platforms/vtex/clients/index.d.ts +35 -0
  22. package/dist/cjs/src/platforms/vtex/index.d.ts +6 -1
  23. package/dist/cjs/src/platforms/vtex/index.js +3 -0
  24. package/dist/cjs/src/platforms/vtex/index.js.map +1 -1
  25. package/dist/cjs/src/platforms/vtex/resolvers/cancelOrder.d.ts +3 -0
  26. package/dist/cjs/src/platforms/vtex/resolvers/cancelOrder.js +13 -0
  27. package/dist/cjs/src/platforms/vtex/resolvers/cancelOrder.js.map +1 -0
  28. package/dist/cjs/src/platforms/vtex/resolvers/mutation.d.ts +2 -1
  29. package/dist/cjs/src/platforms/vtex/resolvers/mutation.js +2 -0
  30. package/dist/cjs/src/platforms/vtex/resolvers/mutation.js.map +1 -1
  31. package/dist/cjs/src/platforms/vtex/resolvers/query.d.ts +3 -1
  32. package/dist/cjs/src/platforms/vtex/resolvers/query.js +28 -0
  33. package/dist/cjs/src/platforms/vtex/resolvers/query.js.map +1 -1
  34. package/dist/cjs/src/platforms/vtex/resolvers/userOrder.d.ts +7 -0
  35. package/dist/cjs/src/platforms/vtex/resolvers/userOrder.js +161 -0
  36. package/dist/cjs/src/platforms/vtex/resolvers/userOrder.js.map +1 -0
  37. package/dist/cjs/src/platforms/vtex/resolvers/validateSession.d.ts +1 -1
  38. package/dist/cjs/src/platforms/vtex/resolvers/validateSession.js +43 -7
  39. package/dist/cjs/src/platforms/vtex/resolvers/validateSession.js.map +1 -1
  40. package/dist/cjs/src/platforms/vtex/utils/cookies.d.ts +2 -0
  41. package/dist/cjs/src/platforms/vtex/utils/cookies.js +23 -1
  42. package/dist/cjs/src/platforms/vtex/utils/cookies.js.map +1 -1
  43. package/dist/cjs/src/typeDefs/mutation.graphql +4 -0
  44. package/dist/cjs/src/typeDefs/query.graphql +46 -0
  45. package/dist/cjs/src/typeDefs/session.graphql +16 -0
  46. package/dist/cjs/src/typeDefs/userOrder.graphql +714 -0
  47. package/dist/esm/package.json +1 -1
  48. package/dist/esm/src/__generated__/schema.d.ts +742 -0
  49. package/dist/esm/src/__generated__/schema.js +1 -0
  50. package/dist/esm/src/__generated__/schema.js.map +1 -1
  51. package/dist/esm/src/index.d.ts +5 -1
  52. package/dist/esm/src/platforms/errors.d.ts +5 -1
  53. package/dist/esm/src/platforms/errors.js +6 -0
  54. package/dist/esm/src/platforms/errors.js.map +1 -1
  55. package/dist/esm/src/platforms/vtex/clients/commerce/Contract.d.ts +7 -0
  56. package/dist/esm/src/platforms/vtex/clients/commerce/Contract.js +2 -0
  57. package/dist/esm/src/platforms/vtex/clients/commerce/Contract.js.map +1 -0
  58. package/dist/esm/src/platforms/vtex/clients/commerce/index.d.ts +39 -1
  59. package/dist/esm/src/platforms/vtex/clients/commerce/index.js +118 -5
  60. package/dist/esm/src/platforms/vtex/clients/commerce/index.js.map +1 -1
  61. package/dist/esm/src/platforms/vtex/clients/commerce/types/Unit.d.ts +18 -0
  62. package/dist/esm/src/platforms/vtex/clients/commerce/types/Unit.js +2 -0
  63. package/dist/esm/src/platforms/vtex/clients/commerce/types/Unit.js.map +1 -0
  64. package/dist/esm/src/platforms/vtex/clients/commerce/types/VtexId.d.ts +11 -0
  65. package/dist/esm/src/platforms/vtex/clients/commerce/types/VtexId.js +2 -0
  66. package/dist/esm/src/platforms/vtex/clients/commerce/types/VtexId.js.map +1 -0
  67. package/dist/esm/src/platforms/vtex/clients/index.d.ts +35 -0
  68. package/dist/esm/src/platforms/vtex/index.d.ts +6 -1
  69. package/dist/esm/src/platforms/vtex/index.js +3 -0
  70. package/dist/esm/src/platforms/vtex/index.js.map +1 -1
  71. package/dist/esm/src/platforms/vtex/resolvers/cancelOrder.d.ts +3 -0
  72. package/dist/esm/src/platforms/vtex/resolvers/cancelOrder.js +9 -0
  73. package/dist/esm/src/platforms/vtex/resolvers/cancelOrder.js.map +1 -0
  74. package/dist/esm/src/platforms/vtex/resolvers/mutation.d.ts +2 -1
  75. package/dist/esm/src/platforms/vtex/resolvers/mutation.js +2 -0
  76. package/dist/esm/src/platforms/vtex/resolvers/mutation.js.map +1 -1
  77. package/dist/esm/src/platforms/vtex/resolvers/query.d.ts +3 -1
  78. package/dist/esm/src/platforms/vtex/resolvers/query.js +29 -1
  79. package/dist/esm/src/platforms/vtex/resolvers/query.js.map +1 -1
  80. package/dist/esm/src/platforms/vtex/resolvers/userOrder.d.ts +7 -0
  81. package/dist/esm/src/platforms/vtex/resolvers/userOrder.js +158 -0
  82. package/dist/esm/src/platforms/vtex/resolvers/userOrder.js.map +1 -0
  83. package/dist/esm/src/platforms/vtex/resolvers/validateSession.d.ts +1 -1
  84. package/dist/esm/src/platforms/vtex/resolvers/validateSession.js +43 -7
  85. package/dist/esm/src/platforms/vtex/resolvers/validateSession.js.map +1 -1
  86. package/dist/esm/src/platforms/vtex/utils/cookies.d.ts +2 -0
  87. package/dist/esm/src/platforms/vtex/utils/cookies.js +20 -0
  88. package/dist/esm/src/platforms/vtex/utils/cookies.js.map +1 -1
  89. package/dist/esm/src/typeDefs/mutation.graphql +4 -0
  90. package/dist/esm/src/typeDefs/query.graphql +46 -0
  91. package/dist/esm/src/typeDefs/session.graphql +16 -0
  92. package/dist/esm/src/typeDefs/userOrder.graphql +714 -0
  93. package/package.json +2 -2
  94. package/src/__generated__/schema.ts +816 -0
  95. package/src/platforms/errors.ts +14 -1
  96. package/src/platforms/vtex/clients/commerce/Contract.ts +7 -0
  97. package/src/platforms/vtex/clients/commerce/index.ts +218 -8
  98. package/src/platforms/vtex/clients/commerce/types/Unit.ts +19 -0
  99. package/src/platforms/vtex/clients/commerce/types/VtexId.ts +11 -0
  100. package/src/platforms/vtex/index.ts +4 -0
  101. package/src/platforms/vtex/resolvers/cancelOrder.ts +20 -0
  102. package/src/platforms/vtex/resolvers/mutation.ts +2 -0
  103. package/src/platforms/vtex/resolvers/query.ts +57 -2
  104. package/src/platforms/vtex/resolvers/userOrder.ts +205 -0
  105. package/src/platforms/vtex/resolvers/validateSession.ts +53 -7
  106. package/src/platforms/vtex/utils/cookies.ts +25 -0
  107. package/src/typeDefs/mutation.graphql +4 -0
  108. package/src/typeDefs/query.graphql +46 -0
  109. package/src/typeDefs/session.graphql +16 -0
  110. package/src/typeDefs/userOrder.graphql +714 -0
@@ -1,5 +1,6 @@
1
1
  import deepEquals from 'fast-deep-equal'
2
2
 
3
+ import { parse } from 'cookie'
3
4
  import type { Context } from '..'
4
5
  import type {
5
6
  MutationValidateSessionArgs,
@@ -7,6 +8,7 @@ import type {
7
8
  StoreSession,
8
9
  } from '../../../__generated__/schema'
9
10
  import ChannelMarshal from '../utils/channel'
11
+ import { parseJwt } from '../utils/cookies'
10
12
 
11
13
  async function getPreciseLocationData(
12
14
  clients: Context['clients'],
@@ -33,7 +35,7 @@ async function getPreciseLocationData(
33
35
  export const validateSession = async (
34
36
  _: any,
35
37
  { session: oldSession, search }: MutationValidateSessionArgs,
36
- { clients }: Context
38
+ { clients, headers, account }: Context
37
39
  ): Promise<StoreSession | null> => {
38
40
  const channel = ChannelMarshal.parse(oldSession.channel ?? '')
39
41
  const postalCode = String(oldSession.postalCode ?? '')
@@ -88,9 +90,38 @@ export const validateSession = async (
88
90
  utmiPart: params.get('utmi_pc') ?? oldMarketingData?.utmiPart ?? '',
89
91
  }
90
92
 
91
- const sessionData = await clients.commerce
92
- .session(params.toString())
93
- .catch(() => null)
93
+ const authCookie = parse(headers?.cookie ?? '')?.[
94
+ 'VtexIdclientAutCookie_' + account
95
+ ]
96
+ const jwt = parseJwt(authCookie)
97
+
98
+ const isRepresentative = jwt?.isRepresentative
99
+ const userId = jwt?.userId
100
+ const customerId = jwt?.customerId
101
+
102
+ const [sessionData, vtexid, unit, contract, user] = await Promise.all([
103
+ clients.commerce.session(params.toString()).catch(() => null),
104
+
105
+ isRepresentative
106
+ ? clients.commerce.vtexid.validate().catch(() => null)
107
+ : Promise.resolve(null),
108
+
109
+ isRepresentative
110
+ ? clients.commerce.units.getUnitByUserId({ userId }).catch(() => null)
111
+ : Promise.resolve(null),
112
+
113
+ isRepresentative
114
+ ? clients.commerce.masterData
115
+ .getContractById({ contractId: customerId })
116
+ .catch(() => null)
117
+ : Promise.resolve(null),
118
+
119
+ isRepresentative
120
+ ? clients.commerce.licenseManager
121
+ .getUserById({ userId })
122
+ .catch(() => null)
123
+ : Promise.resolve(null),
124
+ ])
94
125
 
95
126
  const profile = sessionData?.namespaces.profile ?? null
96
127
  const store = sessionData?.namespaces.store ?? null
@@ -123,9 +154,24 @@ export const validateSession = async (
123
154
  seller: seller?.id,
124
155
  hasOnlyDefaultSalesChannel: !store?.channel?.value,
125
156
  }),
126
- b2b: {
127
- customerId: authentication?.customerId?.value ?? '',
128
- },
157
+ b2b: isRepresentative
158
+ ? {
159
+ customerId:
160
+ authentication?.customerId?.value ??
161
+ vtexid?.customerId ??
162
+ customerId ??
163
+ '',
164
+ isRepresentative:
165
+ vtexid?.isRepresentative ?? isRepresentative ?? false,
166
+ unitName: unit?.name ?? vtexid?.unitName ?? '',
167
+ unitId: unit?.id ?? '',
168
+ isCorporate: contract?.isCorporate ?? false,
169
+ corporateName: contract?.corporateName ?? '',
170
+ firstName: contract?.firstName ?? '',
171
+ lastName: contract?.lastName ?? '',
172
+ userName: user?.name ?? '',
173
+ }
174
+ : null,
129
175
  marketingData,
130
176
  person: profile?.id
131
177
  ? {
@@ -1,3 +1,4 @@
1
+ import { parse } from 'cookie'
1
2
  import type { Context } from '../index'
2
3
 
3
4
  export interface ContextForCookies {
@@ -96,6 +97,23 @@ export const getWithCookie = (ctx: ContextForCookies) =>
96
97
  }
97
98
  }
98
99
 
100
+ export const getWithAutCookie = (ctx: ContextForCookies) => {
101
+ const withCookie = getWithCookie(ctx)
102
+
103
+ return function withAutCookie(forwardedHost: string, account: string) {
104
+ const headers: HeadersInit = withCookie({
105
+ 'content-type': 'application/json',
106
+ 'X-FORWARDED-HOST': forwardedHost,
107
+ })
108
+
109
+ const cookies = parse(ctx?.headers?.cookie ?? '')
110
+ const VtexIdclientAutCookie = cookies[`VtexIdclientAutCookie_${account}`]
111
+ headers['VtexIdclientAutCookie'] = VtexIdclientAutCookie
112
+
113
+ return headers
114
+ }
115
+ }
116
+
99
117
  /**
100
118
  * This function updates the cookie value based on its key
101
119
  *
@@ -124,3 +142,10 @@ export const updatesCookieValueByKey = (
124
142
  // add new storage cookie to the original list of cookies
125
143
  return `${existingCookies};${storageCookieKey}=${storageCookieValue}`
126
144
  }
145
+
146
+ export function parseJwt(token: string) {
147
+ if (!token) {
148
+ return null
149
+ }
150
+ return JSON.parse(Buffer.from(token.split('.')[1], 'base64').toString())
151
+ }
@@ -11,4 +11,8 @@ type Mutation {
11
11
  Subscribes a new person to the newsletter list.
12
12
  """
13
13
  subscribeToNewsletter(data: IPersonNewsletter!): PersonNewsletter
14
+ """
15
+ Cancels user order
16
+ """
17
+ cancelOrder(data: IUserOrderCancel!): UserOrderCancel
14
18
  }
@@ -367,6 +367,52 @@ type Query {
367
367
  term: String
368
368
  ): ProductCountResult
369
369
  @cacheControl(scope: "public", sMaxAge: 120, staleWhileRevalidate: 3600)
370
+
371
+ """
372
+ Returns information about the Details of an User Order.
373
+ """
374
+ userOrder(
375
+ """
376
+ Identifier for the order.
377
+ """
378
+ orderId: String!
379
+ ): UserOrder
380
+ @cacheControl(scope: "public", sMaxAge: 120, staleWhileRevalidate: 3600)
381
+
382
+ """
383
+ Returns information about the list of Orders that the User can view.
384
+ """
385
+ listUserOrders(
386
+ """
387
+ Page number of the list of orders.
388
+ """
389
+ page: Int
390
+ """
391
+ Quantity of items per page of the list of orders.
392
+ """
393
+ perPage: Int
394
+ """
395
+ Status of the list of orders.
396
+ """
397
+ status: [String]
398
+ """
399
+ Initial date of the list of orders.
400
+ """
401
+ dateInitial: String
402
+ """
403
+ Final date of the list of orders.
404
+ """
405
+ dateFinal: String
406
+ """
407
+ Text used to full text filter of the list of orders.
408
+ """
409
+ text: String
410
+ """
411
+ Client email used to filter of the list of orders.
412
+ """
413
+ clientEmail: String
414
+ ): UserOrderListResult
415
+ @cacheControl(scope: "public", sMaxAge: 120, staleWhileRevalidate: 3600)
370
416
  }
371
417
 
372
418
  """
@@ -186,10 +186,26 @@ type StoreSession {
186
186
 
187
187
  type StoreB2B {
188
188
  customerId: String!
189
+ isRepresentative: Boolean
190
+ unitName: String
191
+ unitId: String
192
+ isCorporate: Boolean
193
+ corporateName: String
194
+ firstName: String
195
+ lastName: String
196
+ userName: String
189
197
  }
190
198
 
191
199
  input IStoreB2B {
192
200
  customerId: String!
201
+ isRepresentative: Boolean
202
+ unitName: String
203
+ unitId: String
204
+ isCorporate: Boolean
205
+ corporateName: String
206
+ firstName: String
207
+ lastName: String
208
+ userName: String
193
209
  }
194
210
 
195
211
  """