@webresto/graphql 1.3.7 → 1.4.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 (142) hide show
  1. package/.gitattributes +2 -0
  2. package/.gitlab-ci.yml +18 -0
  3. package/.vscode/extensions.json +5 -0
  4. package/docs/actions.md +25 -0
  5. package/docs/authorization.md +215 -0
  6. package/docs/captcha.md +71 -0
  7. package/docs/device-id.md +30 -0
  8. package/docs/messages.md +10 -0
  9. package/docs/user.md +54 -0
  10. package/index.d.ts +0 -1
  11. package/index.js +6 -2
  12. package/index.ts +2 -2
  13. package/lib/afterHook.js +8 -0
  14. package/lib/afterHook.ts +9 -0
  15. package/lib/bindTranslations.d.ts +1 -0
  16. package/lib/bindTranslations.js +40 -0
  17. package/lib/bindTranslations.ts +39 -0
  18. package/lib/defaults.d.ts +1 -0
  19. package/lib/defaults.js +49 -10
  20. package/lib/defaults.ts +55 -0
  21. package/lib/eventHelper.d.ts +14 -5
  22. package/lib/eventHelper.js +28 -9
  23. package/lib/eventHelper.ts +41 -8
  24. package/lib/getRecomended.d.ts +1 -0
  25. package/lib/getRecomended.js +29 -0
  26. package/lib/getRecomended.ts +31 -0
  27. package/lib/graphqlHelper.d.ts +3 -4
  28. package/lib/graphqlHelper.js +184 -72
  29. package/lib/graphqlHelper.ts +329 -185
  30. package/lib/jwt.d.ts +10 -0
  31. package/lib/jwt.js +43 -0
  32. package/lib/jwt.ts +61 -0
  33. package/package.json +15 -7
  34. package/src/additionalResolvers.d.ts +72 -9
  35. package/src/additionalResolvers.js +93 -24
  36. package/src/additionalResolvers.ts +105 -34
  37. package/src/graphql.d.ts +5 -3
  38. package/src/graphql.js +170 -37
  39. package/src/graphql.ts +210 -60
  40. package/src/resolvers/bonusProgram.d.ts +32 -0
  41. package/src/resolvers/bonusProgram.js +65 -0
  42. package/src/resolvers/bonusProgram.ts +79 -0
  43. package/src/resolvers/captcha.d.ts +11 -0
  44. package/src/resolvers/captcha.js +19 -0
  45. package/src/resolvers/captcha.ts +16 -0
  46. package/src/resolvers/checkout.d.ts +35 -16
  47. package/src/resolvers/checkout.js +171 -94
  48. package/src/resolvers/checkout.ts +214 -104
  49. package/src/resolvers/dishAndModifier.js +8 -4
  50. package/src/resolvers/dishAndModifier.ts +4 -0
  51. package/src/resolvers/error.d.ts +9 -0
  52. package/src/resolvers/error.js +21 -0
  53. package/src/resolvers/error.ts +21 -0
  54. package/src/resolvers/menu.d.ts +9 -0
  55. package/src/resolvers/menu.js +12 -0
  56. package/src/resolvers/menu.ts +10 -0
  57. package/src/resolvers/order.d.ts +527 -0
  58. package/src/resolvers/order.js +349 -0
  59. package/src/resolvers/order.ts +435 -0
  60. package/src/resolvers/paymentMethod.js +7 -3
  61. package/src/resolvers/paymentMethod.ts +9 -5
  62. package/src/resolvers/pickupPoint.d.ts +1 -0
  63. package/src/resolvers/pickupPoint.js +24 -0
  64. package/src/resolvers/pickupPoint.ts +23 -0
  65. package/src/resolvers/recomended.d.ts +13 -0
  66. package/src/resolvers/recomended.js +80 -0
  67. package/src/resolvers/recomended.ts +86 -0
  68. package/src/resolvers/restrictions.d.ts +37 -1
  69. package/src/resolvers/restrictions.js +100 -15
  70. package/src/resolvers/restrictions.ts +106 -14
  71. package/src/resolvers/streets.d.ts +1 -1
  72. package/src/resolvers/streets.js +1 -4
  73. package/src/resolvers/streets.ts +1 -3
  74. package/src/resolvers/subscriptions.d.ts +4 -4
  75. package/src/resolvers/subscriptions.js +49 -12
  76. package/src/resolvers/subscriptions.ts +59 -14
  77. package/src/resolvers/telemetry.d.ts +14 -0
  78. package/src/resolvers/telemetry.js +25 -0
  79. package/src/resolvers/telemetry.ts +24 -0
  80. package/src/resolvers/user.d.ts +82 -0
  81. package/src/resolvers/user.js +416 -0
  82. package/src/resolvers/user.ts +621 -0
  83. package/src/resolvers/userLocation.d.ts +53 -0
  84. package/src/resolvers/userLocation.js +74 -0
  85. package/src/resolvers/userLocation.ts +125 -0
  86. package/src/resolvers/userOTPrequest.d.ts +21 -0
  87. package/src/resolvers/userOTPrequest.js +57 -0
  88. package/src/resolvers/userOTPrequest.ts +75 -0
  89. package/test/e2e_helper.js +157 -0
  90. package/test/e2e_helper.ts +212 -0
  91. package/test/fixture/config/i18n.js +7 -20
  92. package/test/fixture/config/locales/de.json +1 -0
  93. package/test/fixture/config/locales/en.json +10 -0
  94. package/test/fixture/config/locales/es.json +3 -0
  95. package/test/fixture/config/locales/fr.json +1 -0
  96. package/test/fixture/config/log.js +1 -1
  97. package/test/fixture/package.json +5 -6
  98. package/test/fixture/patches/rttc+10.0.1.patch +17 -0
  99. package/test/integration/captcha.test.js +20 -0
  100. package/test/integration/captcha.test.ts +25 -0
  101. package/test/integration/dish.test.js +35 -0
  102. package/test/integration/dish.test.ts +43 -0
  103. package/test/integration/graphql.test.js +5 -2
  104. package/test/integration/graphql.test.ts +2 -4
  105. package/test/integration/images.test.js +35 -0
  106. package/test/integration/images.test.ts +40 -0
  107. package/test/integration/locale.test.js +26 -0
  108. package/test/integration/locale.test.ts +32 -0
  109. package/test/integration/order.test.js +56 -43
  110. package/test/integration/order.test.ts +59 -59
  111. package/test/integration/subscriptions.test.js +136 -0
  112. package/test/integration/subscriptions.test.ts +162 -0
  113. package/test/integration/user.test.js +249 -0
  114. package/test/integration/user.test.ts +299 -0
  115. package/test/unit/first.test.js +4 -2
  116. package/test/unit/first.test.ts +1 -1
  117. package/test/unit/get-recomended.test.js +56 -0
  118. package/test/unit/get-recomended.test.ts +63 -0
  119. package/translations/de.json +2 -0
  120. package/translations/en.json +3 -0
  121. package/translations/es.json +3 -0
  122. package/translations/fr.json +2 -0
  123. package/translations/ru.json +36 -0
  124. package/tsconfig.json +20 -5
  125. package/types/global.d.ts +30 -0
  126. package/types/global.js +2 -0
  127. package/types/global.ts +31 -0
  128. package/types/primitives.d.ts +19 -0
  129. package/types/references.d.ts +1 -0
  130. package/types/restoGraphQLConfig.d.ts +13 -0
  131. package/lib/afterHook.ts___graphql-transport-ws +0 -138
  132. package/lib/afterHook.ts___graphql-ws +0 -133
  133. package/lib/errorWrapper.d.ts +0 -4
  134. package/lib/errorWrapper.js +0 -13
  135. package/lib/errorWrapper.ts +0 -12
  136. package/notes.md +0 -1976
  137. package/src/resolvers/cart.d.ts +0 -343
  138. package/src/resolvers/cart.js +0 -196
  139. package/src/resolvers/cart.ts +0 -278
  140. package/test/fixture/config/connections.js +0 -9
  141. package/test/integration/sails_not_crash.test.js +0 -3
  142. package/test/integration/sails_not_crash.test.ts +0 -3
@@ -1,278 +0,0 @@
1
- import * as eventHelper from "@webresto/graphql";
2
- import checkExpression from "@webresto/core/libs/checkExpression";
3
- import getEmitter from "@webresto/core/libs/getEmitter";
4
-
5
- import { Error } from "../../lib/errorWrapper";
6
-
7
- export default {
8
- Query: {
9
- order: {
10
- def: '""" если orderId не задан, вернется новая корзина """ order(orderId: String, shortId: String, orderNumber: String): Order',
11
- fn: async function (parent, args, context) {
12
- let order;
13
-
14
- let criteria = {};
15
- if (args.orderNumber) {
16
- criteria["rmsOrderNumber"] = args.orderNumber;
17
- criteria["sort"] = "createdAt DESC";
18
- } else if (args.orderId) {
19
- criteria["id"] = args.orderId;
20
- } else if (args.shortId) {
21
- criteria["shortId"] = args.shortId;
22
- }
23
-
24
- if (Object.keys(criteria).length !== 0) {
25
- order = (await Order.find(criteria))[0];
26
- }
27
-
28
- if (!order) {
29
- sails.log.error(
30
- "GQL > order resolver error: ",
31
- `order with id ${args.orderId} . Trying make new cart.`
32
- );
33
- order = await getNewCart(args.orderId);
34
- }
35
-
36
- let fullOrder = await Order.populate(order.id);
37
- getEmitter().emit("http-api:before-response-order", fullOrder);
38
- return fullOrder
39
- },
40
- },
41
- },
42
- Mutation: {
43
- orderAddDish: {
44
- def: "orderAddDish(orderId: String, dishId: String, amount: Int, modifiers: Json, comment: String, from: String, replace: Boolean, orderDishId: Int): Order",
45
- fn: async function (parent, args, context) {
46
- let order;
47
-
48
-
49
-
50
- if (args.modifiers) {
51
- args.modifiers.forEach((modifier) => {
52
- if (modifier.amount === undefined || modifier.id === undefined)
53
- throw new Error(
54
- "BAD_DISHMODIFIER",
55
- `modifier required (amount, id) for dish: ${args.dishId} current values: id: ${modifier.id}, amount: ${modifier.amount}`
56
- );
57
- });
58
- }
59
-
60
- if (args.orderId) order = await Order.findOne({ id: args.orderId });
61
-
62
- if (!order) {
63
- sails.log.error(
64
- "GQL > orderAddDish resolver error: ",
65
- `order with id ${args.orderId} has problem. Trying make new cart.`
66
- );
67
- order = await getNewCart(args.orderId);
68
- }
69
-
70
- const dish = await Dish.findOne({ id: args.dishId });
71
-
72
- if (!dish && !args.replace)
73
- throw new Error(0, "ERROR", `dish with id ${args.dishId} not found`);
74
-
75
- if (dish && checkExpression(dish) === "promo") {
76
- let additionalInfo;
77
- try {
78
- additionalInfo = JSON.parse(dish.additionalInfo);
79
- } catch (e) {}
80
-
81
- if (additionalInfo && additionalInfo.defaultOrderDish) {
82
- // Исключение на товар в каждую корзину
83
- } else {
84
- throw new Error(
85
- 0,
86
- "ERROR",
87
- `"${dish.name}" является акционным и не может быть добавлено пользователем`
88
- );
89
- }
90
- }
91
-
92
- await Order.addDish(
93
- order.id,
94
- args.dishId,
95
- args.amount,
96
- args.modifiers === undefined ? [] : args.modifiers,
97
- args.comment,
98
- args.from,
99
- args.replace,
100
- args.orderDishId
101
- );
102
- await Order.countCart(order);
103
-
104
- let fullOrder = await Order.populate(order.id);
105
- getEmitter().emit("http-api:before-response-order-add-dish", fullOrder);
106
- return fullOrder
107
- },
108
- },
109
- orderReplaceDish: {
110
- def: "orderReplaceDish(orderId: String!, orderDishId: Int!, amount: Int, modifiers: Json, comment: String, from: String): Order",
111
- fn: async (parent, args, context) => {
112
- let order;
113
- if (args.orderId) order = await Order.findOne({ id: args.orderId });
114
-
115
- if (!order) {
116
- sails.log.error(
117
- "GQL > orderReplaceDish resolver error: ",
118
- `order with id ${args.orderId} has problem. Trying make new cart.`
119
- );
120
- order = await getNewCart(args.orderId);
121
- }
122
-
123
- if (order.paid || order.state === "ORDER") {
124
- order = await getNewCart();
125
- }
126
-
127
- await Order.addDish(
128
- order.id,
129
- args.dishId,
130
- args.amount,
131
- args.modifiers === undefined ? [] : args.modifiers,
132
- args.comment,
133
- args.from,
134
- args.replace,
135
- args.orderDishId
136
- );
137
- await Order.countCart(order);
138
- let fullOrder = await Order.populate(order.id);
139
- getEmitter().emit("http-api:before-response-order-replace-dish", fullOrder);
140
- return fullOrder
141
- },
142
- },
143
- orderRemoveDish: {
144
- def: "orderRemoveDish(id: String!, orderDishId: Int!, amount: Int): Order",
145
- fn: async function (parent, args, context) {
146
- let order;
147
- order = await Order.findOne({ id: args.id });
148
-
149
- if (!order) {
150
- sails.log.error(
151
- "GQL > orderRemoveDish resolver error: ",
152
- `order with id ${args.orderId} has problem. Trying make new cart.`
153
- );
154
- order = await getNewCart(args.orderId);
155
- }
156
-
157
- if (order.paid || order.state === "ORDER") {
158
- order = await getNewCart();
159
- }
160
-
161
- const orderDish = await OrderDish.findOne({ id: args.orderDishId });
162
-
163
- await Order.removeDish(order.id, orderDish, args.amount, false);
164
- await Order.countCart(order);
165
- let fullOrder = await Order.populate(order.id);
166
- getEmitter().emit("http-api:before-response-order-remove-dish", fullOrder);
167
- return fullOrder
168
- },
169
- },
170
- orderSetDishAmount: {
171
- def: "orderSetDishAmount(id: String, orderDishId: Int, amount: Int): Order",
172
- fn: async function (parent, args, context) {
173
- let order;
174
-
175
- order = await Order.findOne(args.id);
176
-
177
- if (!order) {
178
- sails.log.error(
179
- "GQL > orderSetDishAmount resolver error: ",
180
- `order with id ${args.orderId} has problem. Trying make new cart.`
181
- );
182
- order = await getNewCart(args.orderId);
183
- }
184
-
185
- if (order.paid || order.state === "ORDER") {
186
- order = await getNewCart();
187
- }
188
-
189
- let dish = await OrderDish.findOne(args.orderDishId).populate("dish");
190
- if (!dish)
191
- throw new Error(
192
- 0,
193
- "ERROR",
194
- `OrderDish with id ${args.orderDishId} not found`
195
- );
196
- if (!dish.dish)
197
- throw new Error(
198
- 0,
199
- "ERROR",
200
- `Dish in OrderDish with id ${args.orderDishId} not found`
201
- );
202
-
203
- await Order.setCount(order.id, dish, args.amount);
204
- await Order.countCart(order);
205
- let fullOrder = await Order.populate(order.id);
206
- getEmitter().emit("http-api:before-response-order-set-dish-amount", fullOrder);
207
- return fullOrder
208
- },
209
- },
210
- orderSetDishComment: {
211
- def: "orderSetDishComment(id: String, orderDishId: Int, comment: String): Order",
212
- fn: async function (parent, args, context) {
213
- let order;
214
-
215
- const data = args;
216
- const orderId = data.orderId;
217
- const comment = data.comment || "";
218
- const dishId = data.dishId;
219
- if (!dishId) {
220
- throw new Error(0, "ERROR", "dishId is required");
221
- }
222
-
223
- order = await Order.findOne(orderId);
224
-
225
- if (!order) {
226
- sails.log.error(
227
- "GQL > orderSetDishComment resolver error: ",
228
- `order with id ${args.orderId} has problem. Trying make new cart.`
229
- );
230
- order = await getNewCart(args.orderId);
231
- }
232
-
233
- if (order.paid || order.state === "ORDER") {
234
- order = await getNewCart();
235
- }
236
-
237
- const dish = await OrderDish.findOne({ id: dishId }).populate("dish");
238
- if (!dish) {
239
- throw new Error(0, "ERROR", `Dish with id ${dishId} not found`);
240
- }
241
-
242
- await order.setComment(dish, comment);
243
- await Order.countCart(order);
244
- let fullOrder = await Order.populate(order.id);
245
- getEmitter().emit("http-api:before-response-order-set-dish-comment", fullOrder);
246
- return fullOrder },
247
- },
248
-
249
- orderUpdate: {
250
- def: '"""Experimental! allowed only for trifleFrom """ orderUpdate(order: Json): Order',
251
- fn: async function (parent, args, context) {
252
-
253
- let order = args.order;
254
- if (!order.id) throw "order.id field is required"
255
- await Order.update({id: order.id}, {trifleFrom: order.trifleFrom})
256
- await Order.populate(order.id);
257
- let fullOrder = await Order.populate(order.id);
258
- getEmitter().emit("http-api:before-response-order-update", fullOrder);
259
- return fullOrder
260
- },
261
- },
262
- },
263
- };
264
-
265
- // Generate new cart
266
- async function getNewCart(orderId?: string) {
267
- let order: any;
268
- let initOrder = {};
269
-
270
- // Pass oredrId from frontend
271
- if (orderId) initOrder["id"] = orderId;
272
-
273
- getEmitter().emit("http-api:init-newcart", initOrder);
274
- order = await Order.create(initOrder).fetch();
275
- await getEmitter().emit("http-api:create-newcart", order);
276
-
277
- return order;
278
- }
@@ -1,9 +0,0 @@
1
- module.exports.connections = {
2
- // postgres: {
3
- // adapter: 'sails-postgresql',
4
- // host: process.env.PG_HOST === undefined ? '127.0.0.1' : process.env.PG_HOST,
5
- // user: process.env.PG_USER === undefined ? 'postgres' : process.env.PG_USER,
6
- // password: process.env.PG_PASSWORD === undefined ? 'postgres' : process.env.PG_PASSWORD,
7
- // database: process.env.PG_DATABASE === undefined ? 'testdb' : process.env.PG_DATABASE
8
- // }
9
- };
@@ -1,3 +0,0 @@
1
- describe('Sails', function () {
2
- it('sails does not crash', () => true);
3
- });
@@ -1,3 +0,0 @@
1
- describe('Sails', function () {
2
- it('sails does not crash', () => true);
3
- });