@unchainedshop/api 2.0.0-beta6 → 2.0.0-beta8

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 (271) hide show
  1. package/lib/api-index.d.ts +4 -7
  2. package/lib/api-index.js +24 -14
  3. package/lib/api-index.js.map +1 -1
  4. package/lib/context.d.ts +0 -1
  5. package/lib/context.js +0 -11
  6. package/lib/context.js.map +1 -1
  7. package/lib/createGraphQLServer.d.ts +2 -2
  8. package/lib/createGraphQLServer.js +12 -53
  9. package/lib/createGraphQLServer.js.map +1 -1
  10. package/lib/errors.js +8 -3
  11. package/lib/errors.js.map +1 -1
  12. package/lib/express/createApolloMiddleware.d.ts +4 -0
  13. package/lib/express/createApolloMiddleware.js +34 -0
  14. package/lib/express/createApolloMiddleware.js.map +1 -0
  15. package/lib/express/createBulkImportMiddleware.d.ts +2 -0
  16. package/lib/express/createBulkImportMiddleware.js +79 -0
  17. package/lib/express/createBulkImportMiddleware.js.map +1 -0
  18. package/lib/express/createERCMetadataMiddleware.d.ts +3 -0
  19. package/lib/express/createERCMetadataMiddleware.js +56 -0
  20. package/lib/express/createERCMetadataMiddleware.js.map +1 -0
  21. package/lib/express/createSingleSignOnMiddleware.d.ts +6 -0
  22. package/lib/express/createSingleSignOnMiddleware.js +71 -0
  23. package/lib/express/createSingleSignOnMiddleware.js.map +1 -0
  24. package/lib/express/index.d.ts +6 -0
  25. package/lib/express/index.js +27 -0
  26. package/lib/express/index.js.map +1 -0
  27. package/lib/loaders/index.js +50 -0
  28. package/lib/loaders/index.js.map +1 -1
  29. package/lib/resolvers/index.js +1 -1
  30. package/lib/resolvers/index.js.map +1 -1
  31. package/lib/resolvers/mutations/accounts/changePassword.d.ts +0 -2
  32. package/lib/resolvers/mutations/accounts/changePassword.js +2 -2
  33. package/lib/resolvers/mutations/accounts/changePassword.js.map +1 -1
  34. package/lib/resolvers/mutations/accounts/createUser.js +2 -2
  35. package/lib/resolvers/mutations/accounts/createUser.js.map +1 -1
  36. package/lib/resolvers/mutations/accounts/enrollUser.js +1 -1
  37. package/lib/resolvers/mutations/accounts/enrollUser.js.map +1 -1
  38. package/lib/resolvers/mutations/accounts/loginWithPassword.d.ts +0 -1
  39. package/lib/resolvers/mutations/accounts/loginWithPassword.js +3 -3
  40. package/lib/resolvers/mutations/accounts/loginWithPassword.js.map +1 -1
  41. package/lib/resolvers/mutations/accounts/resetPassword.d.ts +0 -1
  42. package/lib/resolvers/mutations/accounts/resetPassword.js +1 -1
  43. package/lib/resolvers/mutations/accounts/resetPassword.js.map +1 -1
  44. package/lib/resolvers/mutations/accounts/setPassword.d.ts +0 -1
  45. package/lib/resolvers/mutations/accounts/setPassword.js +1 -1
  46. package/lib/resolvers/mutations/accounts/setPassword.js.map +1 -1
  47. package/lib/resolvers/mutations/assortments/removeAssortment.js +1 -1
  48. package/lib/resolvers/mutations/assortments/removeAssortment.js.map +1 -1
  49. package/lib/resolvers/mutations/assortments/removeAssortmentFilter.js +1 -1
  50. package/lib/resolvers/mutations/assortments/removeAssortmentFilter.js.map +1 -1
  51. package/lib/resolvers/mutations/assortments/removeAssortmentLink.js +1 -1
  52. package/lib/resolvers/mutations/assortments/removeAssortmentLink.js.map +1 -1
  53. package/lib/resolvers/mutations/assortments/removeAssortmentProduct.js +1 -1
  54. package/lib/resolvers/mutations/assortments/removeAssortmentProduct.js.map +1 -1
  55. package/lib/resolvers/mutations/enrollments/updateEnrollment.d.ts +1 -1
  56. package/lib/resolvers/mutations/filters/removeFilter.js +1 -1
  57. package/lib/resolvers/mutations/filters/removeFilter.js.map +1 -1
  58. package/lib/resolvers/mutations/filters/updateFilter.js +2 -1
  59. package/lib/resolvers/mutations/filters/updateFilter.js.map +1 -1
  60. package/lib/resolvers/mutations/index.d.ts +1 -1
  61. package/lib/resolvers/mutations/pageView.d.ts +1 -1
  62. package/lib/resolvers/mutations/pageView.js +2 -2
  63. package/lib/resolvers/mutations/pageView.js.map +1 -1
  64. package/lib/resolvers/mutations/products/removeProduct.d.ts +1 -1
  65. package/lib/resolvers/mutations/products/removeProduct.js +5 -8
  66. package/lib/resolvers/mutations/products/removeProduct.js.map +1 -1
  67. package/lib/resolvers/queries/products/product.js +1 -1
  68. package/lib/resolvers/queries/products/productCatalogPrices.d.ts +1 -1
  69. package/lib/resolvers/queries/products/productCatalogPrices.js +5 -2
  70. package/lib/resolvers/queries/products/productCatalogPrices.js.map +1 -1
  71. package/lib/resolvers/queries/products/products.js +1 -1
  72. package/lib/resolvers/queries/products/products.js.map +1 -1
  73. package/lib/resolvers/scalars/LowerCaseString.d.ts +1 -1
  74. package/lib/resolvers/scalars/index.d.ts +1 -1
  75. package/lib/resolvers/type/assortment/assortment-filter-types.d.ts +2 -2
  76. package/lib/resolvers/type/assortment/assortment-filter-types.js +13 -6
  77. package/lib/resolvers/type/assortment/assortment-filter-types.js.map +1 -1
  78. package/lib/resolvers/type/assortment/assortment-link-types.d.ts +2 -2
  79. package/lib/resolvers/type/assortment/assortment-link-types.js +14 -6
  80. package/lib/resolvers/type/assortment/assortment-link-types.js.map +1 -1
  81. package/lib/resolvers/type/assortment/assortment-media-types.d.ts +1 -1
  82. package/lib/resolvers/type/assortment/assortment-path-link-types.d.ts +1 -4
  83. package/lib/resolvers/type/assortment/assortment-path-link-types.js +0 -7
  84. package/lib/resolvers/type/assortment/assortment-path-link-types.js.map +1 -1
  85. package/lib/resolvers/type/assortment/assortment-product-types.d.ts +2 -2
  86. package/lib/resolvers/type/assortment/assortment-product-types.js +14 -6
  87. package/lib/resolvers/type/assortment/assortment-product-types.js.map +1 -1
  88. package/lib/resolvers/type/assortment/assortment-types.d.ts +1 -1
  89. package/lib/resolvers/type/bookmark-types.d.ts +1 -1
  90. package/lib/resolvers/type/bookmark-types.js +6 -2
  91. package/lib/resolvers/type/bookmark-types.js.map +1 -1
  92. package/lib/resolvers/type/country-types.d.ts +1 -1
  93. package/lib/resolvers/type/delivery-provider-types.d.ts +1 -1
  94. package/lib/resolvers/type/enrollment/enrollment-delivery-types.d.ts +2 -2
  95. package/lib/resolvers/type/enrollment/enrollment-payment-types.d.ts +2 -2
  96. package/lib/resolvers/type/enrollment/enrollment-period-types.d.ts +2 -2
  97. package/lib/resolvers/type/enrollment/enrollment-plan-tyes.d.ts +2 -2
  98. package/lib/resolvers/type/enrollment/enrollment-plan-tyes.js +6 -2
  99. package/lib/resolvers/type/enrollment/enrollment-plan-tyes.js.map +1 -1
  100. package/lib/resolvers/type/enrollment/enrollment-types.d.ts +2 -2
  101. package/lib/resolvers/type/event-types.d.ts +1 -1
  102. package/lib/resolvers/type/filter/filter-option-types.d.ts +2 -2
  103. package/lib/resolvers/type/filter/filter-types.d.ts +2 -2
  104. package/lib/resolvers/type/order/order-delivery-discount-types.d.ts +1 -1
  105. package/lib/resolvers/type/order/order-delivery-pickup-types.d.ts +1 -1
  106. package/lib/resolvers/type/order/order-delivery-shipping-types.d.ts +1 -1
  107. package/lib/resolvers/type/order/order-discount-types.d.ts +1 -1
  108. package/lib/resolvers/type/order/order-global-discount-types.d.ts +1 -1
  109. package/lib/resolvers/type/order/order-item-discount-types.d.ts +1 -1
  110. package/lib/resolvers/type/order/order-item-types.d.ts +1 -1
  111. package/lib/resolvers/type/order/order-item-types.js +13 -6
  112. package/lib/resolvers/type/order/order-item-types.js.map +1 -1
  113. package/lib/resolvers/type/order/order-payment-card-types.d.ts +1 -1
  114. package/lib/resolvers/type/order/order-payment-discount-types.d.ts +1 -1
  115. package/lib/resolvers/type/order/order-payment-generic-types.d.ts +1 -1
  116. package/lib/resolvers/type/order/order-payment-invoice-types.d.ts +1 -1
  117. package/lib/resolvers/type/order/order-types.d.ts +1 -1
  118. package/lib/resolvers/type/price-types.d.ts +1 -1
  119. package/lib/resolvers/type/product/product-bundle-item-types.js +4 -2
  120. package/lib/resolvers/type/product/product-bundle-item-types.js.map +1 -1
  121. package/lib/resolvers/type/product/product-discount.d.ts +1 -1
  122. package/lib/resolvers/type/product/product-review-types.d.ts +1 -1
  123. package/lib/resolvers/type/product/product-review-types.js +6 -2
  124. package/lib/resolvers/type/product/product-review-types.js.map +1 -1
  125. package/lib/resolvers/type/product/product-tokenized-types.js +1 -0
  126. package/lib/resolvers/type/product/product-tokenized-types.js.map +1 -1
  127. package/lib/resolvers/type/product/product-variation-assignment-types.js +4 -2
  128. package/lib/resolvers/type/product/product-variation-assignment-types.js.map +1 -1
  129. package/lib/resolvers/type/quotation-types.d.ts +2 -2
  130. package/lib/resolvers/type/quotation-types.js +7 -3
  131. package/lib/resolvers/type/quotation-types.js.map +1 -1
  132. package/lib/resolvers/type/shop-types.d.ts +1 -1
  133. package/lib/resolvers/type/token-types.d.ts +1 -1
  134. package/lib/resolvers/type/user-types.d.ts +1 -3
  135. package/lib/resolvers/type/user-types.js +0 -12
  136. package/lib/resolvers/type/user-types.js.map +1 -1
  137. package/lib/resolvers/type/webauthn-credentials-types.d.ts +1 -1
  138. package/lib/resolvers/type/work-types.d.ts +1 -1
  139. package/lib/schema/{types/log.d.ts → directives.d.ts} +0 -0
  140. package/lib/schema/directives.js +15 -0
  141. package/lib/schema/directives.js.map +1 -0
  142. package/lib/schema/index.js +2 -1
  143. package/lib/schema/index.js.map +1 -1
  144. package/lib/schema/inputTypes.js +0 -15
  145. package/lib/schema/inputTypes.js.map +1 -1
  146. package/lib/schema/mutation.js +4 -23
  147. package/lib/schema/mutation.js.map +1 -1
  148. package/lib/schema/query.js +28 -10
  149. package/lib/schema/query.js.map +1 -1
  150. package/lib/schema/types/assortment.js +9 -10
  151. package/lib/schema/types/assortment.js.map +1 -1
  152. package/lib/schema/types/color.js +1 -1
  153. package/lib/schema/types/country.js +1 -1
  154. package/lib/schema/types/currency.js +1 -1
  155. package/lib/schema/types/delivery.js +3 -2
  156. package/lib/schema/types/delivery.js.map +1 -1
  157. package/lib/schema/types/dimensions.js +1 -1
  158. package/lib/schema/types/discount.js +1 -1
  159. package/lib/schema/types/dispatch.js +1 -0
  160. package/lib/schema/types/dispatch.js.map +1 -1
  161. package/lib/schema/types/filter.js +5 -8
  162. package/lib/schema/types/filter.js.map +1 -1
  163. package/lib/schema/types/geo-position.js +1 -1
  164. package/lib/schema/types/language.js +1 -1
  165. package/lib/schema/types/media.js +1 -1
  166. package/lib/schema/types/payment.js +3 -3
  167. package/lib/schema/types/price.js +2 -2
  168. package/lib/schema/types/product/bundle-product.js +2 -3
  169. package/lib/schema/types/product/bundle-product.js.map +1 -1
  170. package/lib/schema/types/product/configurable-product.js +7 -7
  171. package/lib/schema/types/product/plan-product.js +4 -3
  172. package/lib/schema/types/product/plan-product.js.map +1 -1
  173. package/lib/schema/types/product/product.js +11 -11
  174. package/lib/schema/types/product/simple-product.js +5 -4
  175. package/lib/schema/types/product/simple-product.js.map +1 -1
  176. package/lib/schema/types/product/tokenized-product.js +6 -3
  177. package/lib/schema/types/product/tokenized-product.js.map +1 -1
  178. package/lib/schema/types/search.js +3 -8
  179. package/lib/schema/types/search.js.map +1 -1
  180. package/lib/schema/types/shop.js +2 -2
  181. package/lib/schema/types/stock.js +1 -0
  182. package/lib/schema/types/stock.js.map +1 -1
  183. package/lib/schema/types/types.js +1 -1
  184. package/lib/schema/types/user.js +1 -3
  185. package/lib/schema/types/user.js.map +1 -1
  186. package/lib/schema/types/warehousing.js +3 -3
  187. package/package.json +31 -19
  188. package/src/api-index.ts +25 -29
  189. package/src/context.ts +0 -19
  190. package/src/createGraphQLServer.ts +11 -56
  191. package/src/errors.ts +8 -3
  192. package/src/express/createApolloMiddleware.ts +40 -0
  193. package/src/express/createBulkImportMiddleware.ts +90 -0
  194. package/src/express/createERCMetadataMiddleware.ts +72 -0
  195. package/src/express/createSingleSignOnMiddleware.ts +83 -0
  196. package/src/express/index.ts +48 -0
  197. package/src/loaders/index.ts +63 -3
  198. package/src/resolvers/index.ts +1 -1
  199. package/src/resolvers/mutations/accounts/changePassword.ts +2 -4
  200. package/src/resolvers/mutations/accounts/createUser.ts +2 -2
  201. package/src/resolvers/mutations/accounts/enrollUser.ts +1 -1
  202. package/src/resolvers/mutations/accounts/loginWithPassword.ts +3 -4
  203. package/src/resolvers/mutations/accounts/resetPassword.ts +2 -2
  204. package/src/resolvers/mutations/accounts/setPassword.ts +2 -2
  205. package/src/resolvers/mutations/assortments/removeAssortment.ts +1 -1
  206. package/src/resolvers/mutations/assortments/removeAssortmentFilter.ts +1 -1
  207. package/src/resolvers/mutations/assortments/removeAssortmentLink.ts +1 -1
  208. package/src/resolvers/mutations/assortments/removeAssortmentProduct.ts +1 -1
  209. package/src/resolvers/mutations/filters/removeFilter.ts +1 -1
  210. package/src/resolvers/mutations/filters/updateFilter.ts +3 -1
  211. package/src/resolvers/mutations/pageView.ts +2 -2
  212. package/src/resolvers/mutations/products/removeProduct.ts +6 -8
  213. package/src/resolvers/queries/products/product.ts +1 -1
  214. package/src/resolvers/queries/products/productCatalogPrices.ts +5 -2
  215. package/src/resolvers/queries/products/products.ts +1 -1
  216. package/src/resolvers/type/assortment/assortment-filter-types.ts +11 -6
  217. package/src/resolvers/type/assortment/assortment-link-types.ts +12 -6
  218. package/src/resolvers/type/assortment/assortment-path-link-types.ts +0 -11
  219. package/src/resolvers/type/assortment/assortment-product-types.ts +12 -6
  220. package/src/resolvers/type/bookmark-types.ts +7 -2
  221. package/src/resolvers/type/enrollment/enrollment-plan-tyes.ts +6 -2
  222. package/src/resolvers/type/order/order-item-types.ts +13 -6
  223. package/src/resolvers/type/product/product-bundle-item-types.ts +4 -2
  224. package/src/resolvers/type/product/product-review-types.ts +6 -2
  225. package/src/resolvers/type/product/product-tokenized-types.ts +1 -0
  226. package/src/resolvers/type/product/product-variation-assignment-types.ts +4 -2
  227. package/src/resolvers/type/quotation-types.ts +6 -3
  228. package/src/resolvers/type/user-types.ts +0 -15
  229. package/src/schema/directives.js +14 -0
  230. package/src/schema/index.js +2 -1
  231. package/src/schema/inputTypes.js +0 -15
  232. package/src/schema/mutation.js +4 -23
  233. package/src/schema/query.js +28 -10
  234. package/src/schema/types/assortment.js +9 -10
  235. package/src/schema/types/color.js +1 -1
  236. package/src/schema/types/country.js +1 -1
  237. package/src/schema/types/currency.js +1 -1
  238. package/src/schema/types/delivery.js +3 -2
  239. package/src/schema/types/dimensions.js +1 -1
  240. package/src/schema/types/discount.js +1 -1
  241. package/src/schema/types/dispatch.js +1 -0
  242. package/src/schema/types/filter.js +5 -8
  243. package/src/schema/types/geo-position.js +1 -1
  244. package/src/schema/types/language.js +1 -1
  245. package/src/schema/types/media.js +1 -1
  246. package/src/schema/types/payment.js +3 -3
  247. package/src/schema/types/price.js +2 -2
  248. package/src/schema/types/product/bundle-product.js +2 -3
  249. package/src/schema/types/product/configurable-product.js +7 -7
  250. package/src/schema/types/product/plan-product.js +4 -3
  251. package/src/schema/types/product/product.js +11 -11
  252. package/src/schema/types/product/simple-product.js +5 -4
  253. package/src/schema/types/product/tokenized-product.js +6 -3
  254. package/src/schema/types/search.js +3 -8
  255. package/src/schema/types/shop.js +2 -2
  256. package/src/schema/types/stock.js +1 -0
  257. package/src/schema/types/types.js +1 -1
  258. package/src/schema/types/user.js +1 -3
  259. package/src/schema/types/warehousing.js +3 -3
  260. package/tsconfig.json +1 -0
  261. package/lib/createBulkImportServer.d.ts +0 -2
  262. package/lib/createBulkImportServer.js +0 -81
  263. package/lib/createBulkImportServer.js.map +0 -1
  264. package/lib/createERCMetadataServer.d.ts +0 -2
  265. package/lib/createERCMetadataServer.js +0 -59
  266. package/lib/createERCMetadataServer.js.map +0 -1
  267. package/lib/schema/types/log.js +0 -16
  268. package/lib/schema/types/log.js.map +0 -1
  269. package/src/createBulkImportServer.ts +0 -95
  270. package/src/createERCMetadataServer.ts +0 -78
  271. package/src/schema/types/log.js +0 -15
@@ -12,7 +12,7 @@ export default [
12
12
  MILLIMETERS
13
13
  }
14
14
 
15
- type Dimensions {
15
+ type Dimensions @cacheControl(maxAge: 180) {
16
16
  weight(unit: MassUnit = KILOGRAM): Float
17
17
  length(unit: LengthUnit = METERS): Float
18
18
  width(unit: LengthUnit = METERS): Float
@@ -1,6 +1,6 @@
1
1
  export default [
2
2
  /* GraphQL */ `
3
- type DiscountInterface {
3
+ type DiscountInterface @cacheControl(maxAge: 180) {
4
4
  _id: ID!
5
5
  label: String
6
6
  version: String
@@ -1,3 +1,4 @@
1
+ // TODO: Cache?
1
2
  export default [
2
3
  /* GraphQL */ `
3
4
  type Dispatch {
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../../src/schema/types/dispatch.js"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;;GAQb;CACF,CAAC"}
1
+ {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../../src/schema/types/dispatch.js"],"names":[],"mappings":"AAAA,eAAe;AACf,eAAe;IACb,aAAa,CAAC;;;;;;;;GAQb;CACF,CAAC"}
@@ -22,20 +22,20 @@ export default [
22
22
  RANGE
23
23
  }
24
24
 
25
- type FilterTexts {
25
+ type FilterTexts @cacheControl(maxAge: 180) {
26
26
  _id: ID!
27
27
  locale: String
28
28
  title: String
29
29
  subtitle: String
30
30
  }
31
31
 
32
- type FilterOption {
32
+ type FilterOption @cacheControl(maxAge: 180) {
33
33
  _id: ID!
34
34
  texts(forceLocale: String): FilterTexts
35
35
  value: String
36
36
  }
37
37
 
38
- type Filter {
38
+ type Filter @cacheControl(maxAge: 180) {
39
39
  _id: ID!
40
40
  updated: DateTime
41
41
  created: DateTime
@@ -46,17 +46,14 @@ export default [
46
46
  options: [FilterOption!]
47
47
  }
48
48
 
49
- type LoadedFilterOption {
50
- filteredProducts: Int! @deprecated(reason: "Renamed, use the filteredProductsCount field")
49
+ type LoadedFilterOption @cacheControl(maxAge: 180) {
51
50
  filteredProductsCount: Int!
52
51
  definition: FilterOption!
53
52
  isSelected: Boolean
54
53
  }
55
54
 
56
- type LoadedFilter {
57
- examinedProducts: Int! @deprecated(reason: "Renamed, use the productsCount field")
55
+ type LoadedFilter @cacheControl(maxAge: 180) {
58
56
  productsCount: Int!
59
- filteredProducts: Int! @deprecated(reason: "Renamed, use the filteredProductsCount field")
60
57
  filteredProductsCount: Int!
61
58
  definition: Filter!
62
59
  isSelected: Boolean
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/schema/types/filter.js"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+Db;CACF,CAAC"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/schema/types/filter.js"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4Db;CACF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export default [
2
2
  /* GraphQL */ `
3
- type GeoPosition {
3
+ type GeoPosition @cacheControl(maxAge: 180) {
4
4
  latitude: Float!
5
5
  longitude: Float!
6
6
  altitute: Float
@@ -1,6 +1,6 @@
1
1
  export default [
2
2
  /* GraphQL */ `
3
- type Language {
3
+ type Language @cacheControl(maxAge: 180) {
4
4
  _id: ID!
5
5
  """
6
6
  ISO 639-1 alpha-2 https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
@@ -1,6 +1,6 @@
1
1
  export default [
2
2
  /* GraphQL */ `
3
- type Media {
3
+ type Media @cacheControl(maxAge: 180) {
4
4
  _id: ID!
5
5
  name: String!
6
6
  type: String!
@@ -1,6 +1,6 @@
1
1
  export default [
2
2
  /* GraphQL */ `
3
- type PaymentInterface {
3
+ type PaymentInterface @cacheControl(maxAge: 180) {
4
4
  _id: ID!
5
5
  label: String
6
6
  version: String
@@ -30,7 +30,7 @@ export default [
30
30
  WRONG_CREDENTIALS
31
31
  }
32
32
 
33
- type PaymentCredentials {
33
+ type PaymentCredentials @cacheControl(maxAge: 0, scope: PRIVATE) {
34
34
  _id: ID!
35
35
  user: User!
36
36
  paymentProvider: PaymentProvider!
@@ -40,7 +40,7 @@ export default [
40
40
  isPreferred: Boolean!
41
41
  }
42
42
 
43
- type PaymentProvider {
43
+ type PaymentProvider @cacheControl(maxAge: 60) {
44
44
  _id: ID!
45
45
  created: DateTime
46
46
  updated: DateTime
@@ -1,6 +1,6 @@
1
1
  export default [
2
2
  /* GraphQL */ `
3
- type Price {
3
+ type Price @cacheControl(maxAge: 60) {
4
4
  _id: ID!
5
5
  isTaxable: Boolean!
6
6
  isNetPrice: Boolean!
@@ -8,7 +8,7 @@ export default [
8
8
  currency: String!
9
9
  }
10
10
 
11
- type PriceRange {
11
+ type PriceRange @cacheControl(maxAge: 60) {
12
12
  _id: ID!
13
13
  minPrice: Price!
14
14
  maxPrice: Price!
@@ -3,7 +3,7 @@ export default [
3
3
  """
4
4
  A Bundle product consists of multiple configured products
5
5
  """
6
- type BundleProduct implements Product {
6
+ type BundleProduct implements Product @cacheControl(maxAge: 180) {
7
7
  _id: ID!
8
8
  sequence: Int!
9
9
  status: ProductStatus!
@@ -20,7 +20,6 @@ export default [
20
20
  sort: [SortOptionInput!]
21
21
  queryString: String
22
22
  ): [ProductReview!]!
23
-
24
23
  assortmentPaths: [ProductAssortmentPath!]!
25
24
  siblings(
26
25
  assortmentId: ID
@@ -30,7 +29,7 @@ export default [
30
29
  ): [Product!]!
31
30
  }
32
31
 
33
- type ProductBundleItem {
32
+ type ProductBundleItem @cacheControl(maxAge: 180) {
34
33
  product: Product!
35
34
  quantity: Int!
36
35
  configuration: [ProductConfigurationParameter!]
@@ -1 +1 @@
1
- {"version":3,"file":"bundle-product.js","sourceRoot":"","sources":["../../../../src/schema/types/product/bundle-product.js"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCb;CACF,CAAC"}
1
+ {"version":3,"file":"bundle-product.js","sourceRoot":"","sources":["../../../../src/schema/types/product/bundle-product.js"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCb;CACF,CAAC"}
@@ -12,20 +12,20 @@ export default [
12
12
  TEXT
13
13
  }
14
14
 
15
- type ProductVariationTexts {
15
+ type ProductVariationTexts @cacheControl(maxAge: 180) {
16
16
  _id: ID!
17
17
  locale: String
18
18
  title: String
19
19
  subtitle: String
20
20
  }
21
21
 
22
- type ProductVariationOption {
22
+ type ProductVariationOption @cacheControl(maxAge: 180) {
23
23
  _id: ID!
24
24
  texts(forceLocale: String): ProductVariationTexts
25
25
  value: String
26
26
  }
27
27
 
28
- type ProductVariation {
28
+ type ProductVariation @cacheControl(maxAge: 180) {
29
29
  _id: ID!
30
30
  texts(forceLocale: String): ProductVariationTexts
31
31
  type: ProductVariationType
@@ -36,7 +36,7 @@ export default [
36
36
  """
37
37
  Key Value Combination
38
38
  """
39
- type ProductVariationAssignmentVector {
39
+ type ProductVariationAssignmentVector @cacheControl(maxAge: 180) {
40
40
  _id: ID!
41
41
  variation: ProductVariation
42
42
  option: ProductVariationOption
@@ -45,7 +45,7 @@ export default [
45
45
  """
46
46
  Key Value Combination to Product Assignment
47
47
  """
48
- type ProductVariationAssignment {
48
+ type ProductVariationAssignment @cacheControl(maxAge: 180) {
49
49
  _id: ID!
50
50
 
51
51
  """
@@ -62,7 +62,7 @@ export default [
62
62
  """
63
63
  Configurable Product (Proxy)
64
64
  """
65
- type ConfigurableProduct implements Product {
65
+ type ConfigurableProduct implements Product @cacheControl(maxAge: 180) {
66
66
  _id: ID!
67
67
  sequence: Int!
68
68
  status: ProductStatus!
@@ -97,7 +97,7 @@ export default [
97
97
  includeInactive: Boolean = false
98
98
  currency: String
99
99
  useNetPrice: Boolean = false
100
- ): PriceRange
100
+ ): PriceRange @cacheControl(scope: PRIVATE)
101
101
 
102
102
  """
103
103
  Reduced list of possible products by key/value combinations
@@ -13,7 +13,7 @@ export default [
13
13
  METERED
14
14
  }
15
15
 
16
- type ProductPlanConfiguration {
16
+ type ProductPlanConfiguration @cacheControl(maxAge: 180) {
17
17
  usageCalculationType: ProductPlanUsageCalculationType!
18
18
  billingInterval: ProductPlanConfigurationInterval!
19
19
  billingIntervalCount: Int
@@ -32,7 +32,7 @@ export default [
32
32
  """
33
33
  Plan (Virtual Product that somebody can enroll to)
34
34
  """
35
- type PlanProduct implements Product {
35
+ type PlanProduct implements Product @cacheControl(maxAge: 180) {
36
36
  _id: ID!
37
37
  sequence: Int!
38
38
  status: ProductStatus!
@@ -45,7 +45,8 @@ export default [
45
45
  catalogPrice(quantity: Int = 1, currency: String): Price
46
46
  leveledCatalogPrices(currency: String): [PriceLevel!]!
47
47
  simulatedPrice(currency: String, useNetPrice: Boolean = false, quantity: Int = 1): Price
48
- simulatedDiscounts(quantity: Int = 1): [ProductDiscount!]
48
+ @cacheControl(scope: PRIVATE)
49
+ simulatedDiscounts(quantity: Int = 1): [ProductDiscount!] @cacheControl(scope: PRIVATE)
49
50
  assortmentPaths(forceLocale: String): [ProductAssortmentPath!]!
50
51
  siblings(
51
52
  assortmentId: ID
@@ -1 +1 @@
1
- {"version":3,"file":"plan-product.js","sourceRoot":"","sources":["../../../../src/schema/types/product/plan-product.js"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEb;CACF,CAAC"}
1
+ {"version":3,"file":"plan-product.js","sourceRoot":"","sources":["../../../../src/schema/types/product/plan-product.js"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEb;CACF,CAAC"}
@@ -17,20 +17,20 @@ export default [
17
17
  DELETED
18
18
  }
19
19
 
20
- type ProductDiscount {
20
+ type ProductDiscount @cacheControl(maxAge: 0) {
21
21
  _id: ID!
22
22
  interface: DiscountInterface
23
23
  total: Price!
24
24
  }
25
25
 
26
- type ProductMediaTexts {
26
+ type ProductMediaTexts @cacheControl(maxAge: 180) {
27
27
  _id: ID!
28
28
  locale: String
29
29
  title: String
30
30
  subtitle: String
31
31
  }
32
32
 
33
- type ProductMedia {
33
+ type ProductMedia @cacheControl(maxAge: 180) {
34
34
  _id: ID!
35
35
  tags: [LowerCaseString!]
36
36
  file: Media!
@@ -38,7 +38,7 @@ export default [
38
38
  texts(forceLocale: String): ProductMediaTexts
39
39
  }
40
40
 
41
- type ProductTexts {
41
+ type ProductTexts @cacheControl(maxAge: 180) {
42
42
  _id: ID!
43
43
  locale: String
44
44
  slug: String
@@ -53,7 +53,7 @@ export default [
53
53
  """
54
54
  Abstract Product
55
55
  """
56
- interface Product {
56
+ interface Product @cacheControl(maxAge: 180) {
57
57
  _id: ID!
58
58
  sequence: Int!
59
59
  status: ProductStatus!
@@ -81,12 +81,12 @@ export default [
81
81
  """
82
82
  Directed assortment to product paths (breadcrumbs)
83
83
  """
84
- type ProductAssortmentPath {
84
+ type ProductAssortmentPath @cacheControl(maxAge: 180) {
85
85
  assortmentProduct: AssortmentProduct!
86
86
  links: [AssortmentPathLink!]!
87
87
  }
88
88
 
89
- type ProductReview {
89
+ type ProductReview @cacheControl(maxAge: 60) {
90
90
  _id: ID!
91
91
  created: DateTime
92
92
  updated: DateTime
@@ -97,10 +97,10 @@ export default [
97
97
  title: String
98
98
  review: String
99
99
  voteCount(type: ProductReviewVoteType): Int
100
- ownVotes: [ProductReviewVote!]!
100
+ ownVotes: [ProductReviewVote!]! @cacheControl(scope: PRIVATE, maxAge: 60)
101
101
  }
102
102
 
103
- type ProductReviewVote {
103
+ type ProductReviewVote @cacheControl(maxAge: 60) {
104
104
  _id: ID!
105
105
  timestamp: Timestamp!
106
106
  type: ProductReviewVoteType!
@@ -117,13 +117,13 @@ export default [
117
117
  value: String!
118
118
  }
119
119
 
120
- type PriceLevel {
120
+ type PriceLevel @cacheControl(maxAge: 60) {
121
121
  minQuantity: Int!
122
122
  maxQuantity: Int
123
123
  price: Price!
124
124
  }
125
125
 
126
- type ProductCatalogPrice {
126
+ type ProductCatalogPrice @cacheControl(maxAge: 60) {
127
127
  _id: ID!
128
128
  isTaxable: Boolean!
129
129
  isNetPrice: Boolean!
@@ -3,7 +3,7 @@ export default [
3
3
  """
4
4
  Simple Product
5
5
  """
6
- type SimpleProduct implements Product {
6
+ type SimpleProduct implements Product @cacheControl(maxAge: 180) {
7
7
  _id: ID!
8
8
  sequence: Int!
9
9
  status: ProductStatus!
@@ -16,16 +16,17 @@ export default [
16
16
  catalogPrice(quantity: Int = 1, currency: String): Price
17
17
  leveledCatalogPrices(currency: String): [PriceLevel!]!
18
18
  simulatedPrice(currency: String, useNetPrice: Boolean = false, quantity: Int = 1): Price
19
- simulatedDiscounts(quantity: Int = 1): [ProductDiscount!]
19
+ @cacheControl(scope: PRIVATE, maxAge: 10)
20
+ simulatedDiscounts(quantity: Int = 1): [ProductDiscount!] @cacheControl(scope: PRIVATE, maxAge: 10)
20
21
  simulatedDispatches(
21
22
  deliveryProviderType: DeliveryProviderType = SHIPPING
22
23
  referenceDate: Timestamp
23
24
  quantity: Int = 1
24
- ): [Dispatch!]
25
+ ): [Dispatch!] @cacheControl(scope: PRIVATE, maxAge: 10)
25
26
  simulatedStocks(
26
27
  deliveryProviderType: DeliveryProviderType = SHIPPING
27
28
  referenceDate: Timestamp
28
- ): [Stock!]
29
+ ): [Stock!] @cacheControl(scope: PRIVATE, maxAge: 10)
29
30
  assortmentPaths: [ProductAssortmentPath!]!
30
31
  siblings(
31
32
  assortmentId: ID
@@ -1 +1 @@
1
- {"version":3,"file":"simple-product.js","sourceRoot":"","sources":["../../../../src/schema/types/product/simple-product.js"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+Cb;CACF,CAAC"}
1
+ {"version":3,"file":"simple-product.js","sourceRoot":"","sources":["../../../../src/schema/types/product/simple-product.js"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDb;CACF,CAAC"}
@@ -5,6 +5,7 @@ export default [
5
5
  contractStandard: SmartContractStandard!
6
6
  tokenId: String
7
7
  supply: Int
8
+ ercMetadataProperties: JSON
8
9
  }
9
10
 
10
11
  enum SmartContractStandard {
@@ -12,9 +13,10 @@ export default [
12
13
  ERC721
13
14
  }
14
15
 
15
- type ContractConfiguration {
16
+ type ContractConfiguration @cacheControl(maxAge: 180) {
16
17
  tokenId: String
17
18
  supply: Int
19
+ ercMetadataProperties: JSON
18
20
  }
19
21
 
20
22
  """
@@ -33,8 +35,9 @@ export default [
33
35
  catalogPrice(quantity: Int = 1, currency: String): Price
34
36
  leveledCatalogPrices(currency: String): [PriceLevel!]!
35
37
  simulatedPrice(currency: String, useNetPrice: Boolean = false, quantity: Int = 1): Price
36
- simulatedDiscounts(quantity: Int = 1): [ProductDiscount!]
37
- simulatedStocks(referenceDate: Timestamp): [Stock!]
38
+ @cacheControl(scope: PRIVATE, maxAge: 10)
39
+ simulatedDiscounts(quantity: Int = 1): [ProductDiscount!] @cacheControl(scope: PRIVATE, maxAge: 10)
40
+ simulatedStocks(referenceDate: Timestamp): [Stock!] @cacheControl(scope: PRIVATE, maxAge: 10)
38
41
  assortmentPaths(forceLocale: String): [ProductAssortmentPath!]!
39
42
  siblings(
40
43
  assortmentId: ID
@@ -1 +1 @@
1
- {"version":3,"file":"tokenized-product.js","sourceRoot":"","sources":["../../../../src/schema/types/product/tokenized-product.js"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDb;CACF,CAAC"}
1
+ {"version":3,"file":"tokenized-product.js","sourceRoot":"","sources":["../../../../src/schema/types/product/tokenized-product.js"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDb;CACF,CAAC"}
@@ -7,10 +7,8 @@ export default [
7
7
  """
8
8
  Search result
9
9
  """
10
- type SearchResult {
11
- totalProducts: Int! @deprecated(reason: "Renamed, use the productsCount field")
10
+ type SearchResult @cacheControl(maxAge: 180) {
12
11
  productsCount: Int!
13
- filteredProducts: Int! @deprecated(reason: "Renamed, use the filteredProductsCount field")
14
12
  filteredProductsCount: Int!
15
13
  filters: [LoadedFilter!]!
16
14
  products(limit: Int = 10, offset: Int = 0): [Product!]!
@@ -19,17 +17,14 @@ export default [
19
17
  """
20
18
  Search result
21
19
  """
22
- type ProductSearchResult {
23
- totalProducts: Int! @deprecated(reason: "Renamed, use the productsCount field")
20
+ type ProductSearchResult @cacheControl(maxAge: 180) {
24
21
  productsCount: Int!
25
- filteredProducts: Int! @deprecated(reason: "Renamed, use the filteredProductsCount field")
26
22
  filteredProductsCount: Int!
27
23
  filters: [LoadedFilter!]!
28
24
  products(limit: Int = 10, offset: Int = 0): [Product!]!
29
25
  }
30
26
 
31
- type AssortmentSearchResult {
32
- totalAssortments: Int! @deprecated(reason: "Renamed, use the assortmentsCount field")
27
+ type AssortmentSearchResult @cacheControl(maxAge: 180) {
33
28
  assortmentsCount: Int!
34
29
  assortments(limit: Int = 10, offset: Int = 0): [Assortment!]!
35
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/schema/types/search.js"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCb;CACF,CAAC"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/schema/types/search.js"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6Bb;CACF,CAAC"}
@@ -1,10 +1,10 @@
1
1
  export default [
2
2
  /* GraphQL */ `
3
- type Link {
3
+ type Link @cacheControl(maxAge: 180) {
4
4
  href: String
5
5
  title: String
6
6
  }
7
- type Shop {
7
+ type Shop @cacheControl(maxAge: 180) {
8
8
  _id: ID!
9
9
  language: Language
10
10
  country: Country
@@ -1,3 +1,4 @@
1
+ // TODO: Cache?
1
2
  export default [
2
3
  /* GraphQL */ `
3
4
  type Stock {
@@ -1 +1 @@
1
- {"version":3,"file":"stock.js","sourceRoot":"","sources":["../../../src/schema/types/stock.js"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;GAOb;CACF,CAAC"}
1
+ {"version":3,"file":"stock.js","sourceRoot":"","sources":["../../../src/schema/types/stock.js"],"names":[],"mappings":"AAAA,eAAe;AACf,eAAe;IACb,aAAa,CAAC;;;;;;;GAOb;CACF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export default [
2
2
  /* GraphQL */ `
3
- type SuccessResponse {
3
+ type SuccessResponse @cacheControl(maxAge: 0, scope: PRIVATE) {
4
4
  success: Boolean
5
5
  }
6
6
 
@@ -5,7 +5,7 @@ export default [
5
5
  """
6
6
  Type returned when the user logs in
7
7
  """
8
- type LoginMethodResponse {
8
+ type LoginMethodResponse @cacheControl(maxAge: 0, scope: PRIVATE) {
9
9
  """
10
10
  Id of the user logged in user
11
11
  """
@@ -86,9 +86,7 @@ export default [
86
86
 
87
87
  type User {
88
88
  _id: ID!
89
- email: String @deprecated(reason: "Please use primaryEmail.address instead")
90
89
  username: String
91
- isEmailVerified: Boolean! @deprecated(reason: "Please use primaryEmail.verified instead")
92
90
  isGuest: Boolean!
93
91
  isTwoFactorEnabled: Boolean!
94
92
  isInitialPassword: Boolean!
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../src/schema/types/user.js"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoHb;CACF,CAAC"}
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../src/schema/types/user.js"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkHb;CACF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export default [
2
2
  /* GraphQL */ `
3
- type WarehousingInterface {
3
+ type WarehousingInterface @cacheControl(maxAge: 180) {
4
4
  _id: ID!
5
5
  label: String
6
6
  version: String
@@ -24,7 +24,7 @@ export default [
24
24
  WRONG_CREDENTIALS
25
25
  }
26
26
 
27
- type WarehousingProvider {
27
+ type WarehousingProvider @cacheControl(maxAge: 60) {
28
28
  _id: ID!
29
29
  created: DateTime
30
30
  updated: DateTime
@@ -42,7 +42,7 @@ export default [
42
42
  DECENTRALIZED
43
43
  }
44
44
 
45
- type Token {
45
+ type Token @cacheControl(maxAge: 0, scope: PRIVATE) {
46
46
  _id: ID!
47
47
  user: User
48
48
  walletAddress: String
package/package.json CHANGED
@@ -1,12 +1,21 @@
1
1
  {
2
2
  "name": "@unchainedshop/api",
3
- "version": "2.0.0-beta6",
3
+ "version": "2.0.0-beta8",
4
4
  "main": "lib/api-index.js",
5
5
  "exports": {
6
6
  ".": "./lib/api-index.js",
7
7
  "./*": "./lib/*"
8
8
  },
9
- "types": "lib/api-index.d.ts",
9
+ "typesVersions": {
10
+ "*": {
11
+ "express": [
12
+ "./lib/express/index.d.ts"
13
+ ],
14
+ "express/*": [
15
+ "./lib/express/*"
16
+ ]
17
+ }
18
+ },
10
19
  "type": "module",
11
20
  "scripts": {
12
21
  "clean": "rm -rf lib",
@@ -30,34 +39,37 @@
30
39
  },
31
40
  "homepage": "https://github.com/unchainedshop/unchained#readme",
32
41
  "peerDependencies": {
33
- "apollo-server-express": "2.x",
42
+ "@apollo/server": "^4.2.1",
34
43
  "cookie": "^0.5.0",
35
- "graphql": "^15.x"
44
+ "graphql": "^16.6.0"
45
+ },
46
+ "optionalDependencies": {
47
+ "express": "^4.18.2"
36
48
  },
37
49
  "dependencies": {
38
- "@metamask/eth-sig-util": "^5.0.0",
39
- "@unchainedshop/core": "^2.0.0-beta6",
40
- "@unchainedshop/events": "^2.0.0-beta6",
41
- "@unchainedshop/logger": "^2.0.0-beta6",
42
- "@unchainedshop/roles": "^2.0.0-beta6",
43
- "@unchainedshop/utils": "^2.0.0-beta6",
50
+ "@metamask/eth-sig-util": "^5.0.2",
51
+ "@unchainedshop/core": "^2.0.0-beta8",
52
+ "@unchainedshop/events": "^2.0.0-beta8",
53
+ "@unchainedshop/logger": "^2.0.0-beta8",
54
+ "@unchainedshop/roles": "^2.0.0-beta8",
55
+ "@unchainedshop/utils": "^2.0.0-beta8",
44
56
  "accounting": "0.4.1",
45
57
  "dataloader": "^2.1.0",
46
- "graphql-scalars": "^1.20.0",
47
- "graphql-upload": "^13.0.0",
58
+ "graphql-scalars": "^1.20.1",
59
+ "graphql-upload": "^16.0.2",
48
60
  "locale": "0.1.0",
49
61
  "lodash.isnumber": "3.0.3",
50
- "lru-cache": "^7.14.0"
62
+ "lru-cache": "^7.14.1"
51
63
  },
52
64
  "devDependencies": {
53
65
  "@types/graphql-upload": "^8.0.12",
54
66
  "@types/locale": "^0.1.1",
55
- "@types/node": "^16.18.2",
56
- "@unchainedshop/types": "^2.0.0-beta6",
57
- "apollo-server-express": "^2.26.0",
58
- "graphql": "^15.8.0",
59
- "jest": "^29.2.2",
67
+ "@types/node": "^18.11.9",
68
+ "@unchainedshop/types": "^2.0.0-beta8",
69
+ "express": "^4.18.2",
70
+ "graphql": "^16.6.0",
71
+ "jest": "^29.3.1",
60
72
  "ts-jest": "^29.0.3",
61
- "typescript": "^4.8.4"
73
+ "typescript": "^4.9.3"
62
74
  }
63
75
  }