@webresto/graphql 1.3.7 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
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
- });