@webresto/graphql 1.3.6 → 1.3.8

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 -73
  29. package/lib/graphqlHelper.ts +329 -186
  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 +13 -6
  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 +43 -14
  47. package/src/resolvers/checkout.js +172 -122
  48. package/src/resolvers/checkout.ts +218 -142
  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 -277
  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
@@ -0,0 +1,86 @@
1
+ import { getRecomendElements } from "../../lib/getRecomended";
2
+
3
+ export default {
4
+ Query: {
5
+ recomendedForDish: {
6
+ def: 'recomendedForDish(dishId: String): [Dish]',
7
+ fn: async function (parent: any, args: any, context: any) {
8
+ try {
9
+ let criteria = {}
10
+ const RECOMENDED_GROUPID_FOR_DISHES = await Settings.get("RECOMENDED_GROUPID_FOR_DISHES") as string
11
+
12
+ let defaultGroup = null;
13
+ let listOfAllowedGroups = null;
14
+ if(RECOMENDED_GROUPID_FOR_DISHES){
15
+ defaultGroup = await Group.find({id: RECOMENDED_GROUPID_FOR_DISHES})
16
+ listOfAllowedGroups = await Group.getMenuTree(defaultGroup);
17
+ } else {
18
+ listOfAllowedGroups = await Group.getMenuTree();
19
+ }
20
+
21
+ let dish = await Dish.findOne({id: args.dishId});
22
+
23
+ criteria['where'] = {
24
+ 'and': [
25
+ { 'parentGroup': { 'in': listOfAllowedGroups } },
26
+ { 'balance': { "!=": 0 } },
27
+ { 'modifier': false },
28
+ { 'isDeleted': false }
29
+ ]
30
+ };
31
+
32
+ if (dish) {
33
+ criteria['where']['and'].push({'parentGroup': { "!=": dish.parentGroup}})
34
+ }
35
+
36
+ const array = await Dish.find(criteria);
37
+ return getRecomendElements(array, 7);
38
+ } catch (e) {
39
+ sails.log.error(e);
40
+ throw `${JSON.stringify(e)}`
41
+ }
42
+ }
43
+ },
44
+ recomendedForOrder: {
45
+ def: 'recomendedForOrder(orderId: String): [Dish]',
46
+ fn: async function (parent: any, args: any, context: any) {
47
+ try {
48
+
49
+ const RECOMENDED_GROUPID_FOR_ORDER = await Settings.get("RECOMENDED_GROUPID_FOR_ORDER") as string
50
+
51
+ let orderDishes = await OrderDish.find({order: args.orderId});
52
+ const orderDishIds = orderDishes.map(orderDish => orderDish.dish as string);
53
+ let criteria = {}
54
+ let defaultGroup = null;
55
+ let listOfAllowedGroups = null;
56
+
57
+ if(RECOMENDED_GROUPID_FOR_ORDER){
58
+ defaultGroup = await Group.find({id: RECOMENDED_GROUPID_FOR_ORDER})
59
+ listOfAllowedGroups = await Group.getMenuTree(defaultGroup);
60
+ } else {
61
+ listOfAllowedGroups = await Group.getMenuTree();
62
+ }
63
+
64
+ criteria['where'] = {
65
+ 'and': [
66
+ { 'parentGroup': { 'in': listOfAllowedGroups } },
67
+ { 'balance': { "!=": 0 } },
68
+ { 'modifier': false },
69
+ { 'isDeleted': false }
70
+ ]
71
+ };
72
+
73
+ if (orderDishIds.length) {
74
+ criteria["where"]["and"].push({id : {"!=": orderDishIds}})
75
+ }
76
+
77
+ const allDishes = await Dish.find(criteria)
78
+ return getRecomendElements(allDishes, 7);
79
+ } catch (e) {
80
+ sails.log.error(e);
81
+ throw `${JSON.stringify(e)}`
82
+ }
83
+ }
84
+ }
85
+ }
86
+ }
@@ -1,9 +1,45 @@
1
+ type PasswordPolicy = "required" | "from_otp" | "disabled";
1
2
  declare const _default: {
2
3
  Query: {
3
4
  restrictions: {
4
5
  def: string;
5
- fn: (parent: any, args: any, context: any) => Promise<any>;
6
+ fn: () => {};
6
7
  };
7
8
  };
9
+ Restrictions: {
10
+ worktime: () => Promise<(string | number | boolean | string[] | number[]) | {
11
+ [key: string]: string | number | boolean;
12
+ }>;
13
+ graphqlSchemaBackwardCompatibilityVersion: () => number;
14
+ possibleToOrderInMinutes: () => Promise<number>;
15
+ minDeliveryTimeInMinutes: () => Promise<number>;
16
+ timezone: () => Promise<(string | number | boolean | string[] | number[]) | {
17
+ [key: string]: string | number | boolean;
18
+ }>;
19
+ captchaType: () => Promise<string | number | true | string[] | number[] | {
20
+ [key: string]: string | number | boolean;
21
+ }>;
22
+ deliveryDescription: () => Promise<(string | number | boolean | string[] | number[]) | {
23
+ [key: string]: string | number | boolean;
24
+ }>;
25
+ user: () => {};
26
+ };
27
+ UserRestrictions: {
28
+ loginField: () => Promise<string | number | true | string[] | number[] | {
29
+ [key: string]: string | number | boolean;
30
+ }>;
31
+ loginOTPRequired: () => Promise<string | number | boolean | string[] | number[] | {
32
+ [key: string]: string | number | boolean;
33
+ }>;
34
+ customFields: () => Promise<string | number | true | string[] | number[] | {
35
+ [key: string]: string | number | boolean;
36
+ }>;
37
+ passwordPolicy: () => Promise<PasswordPolicy>;
38
+ allowedPhoneCountries: () => Promise<any[]>;
39
+ linkToProcessingPersonalData: () => string;
40
+ linkToUserAgreement: () => string;
41
+ OTPlength: () => number;
42
+ allowBonusSpending: () => Promise<boolean>;
43
+ };
8
44
  };
9
45
  export default _default;
@@ -1,24 +1,109 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const graphqlHelper_1 = require("../../lib/graphqlHelper");
4
+ graphqlHelper_1.default.addType(`#graphql
5
+ type UserRestrictions {
6
+ "Indicate main login field"
7
+ loginField: String
8
+ "Indicate required OTP on any login"
9
+ loginOTPRequired: Boolean
10
+
11
+ "List of all custom user fields"
12
+ customFields: [UserCustomField]
13
+
14
+ "Password is required in users accounts"
15
+ passwordPolicy: String
16
+
17
+ "Countries for send OTP"
18
+ allowedPhoneCountries: [Country],
19
+
20
+ linkToProcessingPersonalData: String,
21
+
22
+ linkToUserAgreement: String
23
+
24
+ "Allow spening bonuses"
25
+ allowBonusSpending: Boolean
26
+
27
+ "OTP code Length"
28
+ OTPlength: Int
29
+ }
30
+ type Restrictions {
31
+ "graphql scehma backward compatibility version"
32
+ graphqlSchemaBackwardCompatibilityVersion: Int
33
+
34
+ "Delivery service working time"
35
+ worktime: Json
36
+
37
+ "Time possible for order from now"
38
+ possibleToOrderInMinutes: Int
39
+ timezone: String
40
+ "By default is POW"
41
+ captchaType: String
42
+ "Global delivery discription"
43
+ deliveryDescription: Json
44
+ "The minimum time for which delivery of the order is possible"
45
+ minDeliveryTimeInMinutes: Int
46
+ "Group User restrictions"
47
+ user: UserRestrictions
48
+ }
49
+ `);
3
50
  exports.default = {
4
51
  Query: {
5
52
  restrictions: {
6
53
  def: 'restrictions: Restrictions',
7
- fn: async function (parent, args, context) {
8
- try {
9
- let restrictions = {};
10
- restrictions.workTime = await Settings.use('workTime');
11
- restrictions.periodPossibleForOrder = await Settings.use('PeriodPossibleForOrder');
12
- restrictions.timezone = await Settings.use('timezone');
13
- restrictions.deliveryDescription = await Settings.use('DeliveryDescription');
14
- restrictions.minDeliveryTime = await Settings.use('minDeliveryTime') || "40";
15
- return restrictions;
16
- }
17
- catch (e) {
18
- sails.log.error(e);
19
- throw new Error(0, JSON.stringify(e));
20
- }
21
- }
54
+ fn: () => ({})
22
55
  }
56
+ },
57
+ Restrictions: {
58
+ worktime: async () => await Settings.get('WORK_TIME'),
59
+ graphqlSchemaBackwardCompatibilityVersion: () => 1,
60
+ possibleToOrderInMinutes: async () => isNaN(parseInt(await Settings.get('POSSIBLE_TO_ORDER_IN_MINUTES'))) ? 7 * 24 * 60 : parseInt(await Settings.get('POSSIBLE_TO_ORDER_IN_MINUTES')),
61
+ minDeliveryTimeInMinutes: async () => isNaN(parseInt(await Settings.get('MIN_DELIVERY_TIME_IN_MINUTES'))) ? 40 : parseInt(await Settings.get('MIN_DELIVERY_TIME_IN_MINUTES')),
62
+ timezone: async () => {
63
+ return await Settings.get('TZ') ?? 'Etc/GMT';
64
+ },
65
+ captchaType: async () => await Settings.get('CAPTCHA_TYPE') || "POW",
66
+ deliveryDescription: async () => await Settings.get('DELIVERY_DESCRIPTION'),
67
+ user: () => ({}), // Dummy resolver to nest the fields below
68
+ },
69
+ UserRestrictions: {
70
+ loginField: async () => {
71
+ let loginField = await Settings.get("LOGIN_FIELD");
72
+ return loginField || 'phone';
73
+ },
74
+ loginOTPRequired: async () => {
75
+ let loginOTPRequired = await Settings.get("LOGIN_OTP_REQUIRED");
76
+ return loginOTPRequired || false;
77
+ },
78
+ customFields: async () => {
79
+ let customFields = await Settings.get("CUSTOM_FIELDS");
80
+ return customFields || [];
81
+ },
82
+ passwordPolicy: async () => {
83
+ let passwordPolicy = await Settings.get("PASSWORD_POLICY");
84
+ return passwordPolicy || "from_otp";
85
+ },
86
+ allowedPhoneCountries: async () => {
87
+ let allowedPhoneCountriesList = [];
88
+ // ALLOWED_PHONE_COUNTRIES
89
+ let allowedPhoneCountries = await Settings.get("ALLOWED_PHONE_COUNTRIES");
90
+ if (typeof allowedPhoneCountries === "string")
91
+ allowedPhoneCountries = [allowedPhoneCountries];
92
+ if (Array.isArray(allowedPhoneCountries) && typeof allowedPhoneCountries[0] === "string") {
93
+ allowedPhoneCountries.forEach(allowedPhoneCountry => {
94
+ let country = sails.hooks.restocore.dictionaries.countries[allowedPhoneCountry];
95
+ if (country) {
96
+ allowedPhoneCountriesList.push(country);
97
+ }
98
+ });
99
+ }
100
+ return allowedPhoneCountriesList;
101
+ },
102
+ linkToProcessingPersonalData: () => "/static/processing_personal_data",
103
+ linkToUserAgreement: () => "/static/user_agreement",
104
+ OTPlength: () => 6,
105
+ allowBonusSpending: async () => {
106
+ return await Settings.get("ALLOW_BONUS_SPENDING") ?? true;
107
+ },
23
108
  }
24
109
  };
@@ -1,22 +1,114 @@
1
+ import graphqlHelper from "../../lib/graphqlHelper";
2
+
3
+
4
+
5
+ type PasswordPolicy = "required" | "from_otp" | "disabled"
6
+ graphqlHelper.addType(`#graphql
7
+ type UserRestrictions {
8
+ "Indicate main login field"
9
+ loginField: String
10
+ "Indicate required OTP on any login"
11
+ loginOTPRequired: Boolean
12
+
13
+ "List of all custom user fields"
14
+ customFields: [UserCustomField]
15
+
16
+ "Password is required in users accounts"
17
+ passwordPolicy: String
18
+
19
+ "Countries for send OTP"
20
+ allowedPhoneCountries: [Country],
21
+
22
+ linkToProcessingPersonalData: String,
23
+
24
+ linkToUserAgreement: String
25
+
26
+ "Allow spening bonuses"
27
+ allowBonusSpending: Boolean
28
+
29
+ "OTP code Length"
30
+ OTPlength: Int
31
+ }
32
+ type Restrictions {
33
+ "graphql scehma backward compatibility version"
34
+ graphqlSchemaBackwardCompatibilityVersion: Int
35
+
36
+ "Delivery service working time"
37
+ worktime: Json
38
+
39
+ "Time possible for order from now"
40
+ possibleToOrderInMinutes: Int
41
+ timezone: String
42
+ "By default is POW"
43
+ captchaType: String
44
+ "Global delivery discription"
45
+ deliveryDescription: Json
46
+ "The minimum time for which delivery of the order is possible"
47
+ minDeliveryTimeInMinutes: Int
48
+ "Group User restrictions"
49
+ user: UserRestrictions
50
+ }
51
+ `);
1
52
 
2
53
  export default {
3
54
  Query: {
4
55
  restrictions: {
5
56
  def: 'restrictions: Restrictions',
6
- fn: async function (parent, args, context) {
7
- try {
8
- let restrictions :any = {};
9
- restrictions.workTime = await Settings.use('workTime');
10
- restrictions.periodPossibleForOrder = await Settings.use('PeriodPossibleForOrder');
11
- restrictions.timezone = await Settings.use('timezone');
12
- restrictions.deliveryDescription = await Settings.use('DeliveryDescription');
13
- restrictions.minDeliveryTime = await Settings.use('minDeliveryTime') || "40";
14
- return restrictions;
15
- } catch (e) {
16
- sails.log.error(e); throw new Error(0, JSON.stringify(e));
17
-
18
- }
19
- }
57
+ fn: () => ({})
20
58
  }
59
+ },
60
+ Restrictions: {
61
+ worktime: async () => await Settings.get('WORK_TIME'),
62
+ graphqlSchemaBackwardCompatibilityVersion: () => 1,
63
+ possibleToOrderInMinutes: async () => isNaN(parseInt(await Settings.get('POSSIBLE_TO_ORDER_IN_MINUTES') as string)) ? 7 * 24 * 60 : parseInt(await Settings.get('POSSIBLE_TO_ORDER_IN_MINUTES') as string),
64
+ minDeliveryTimeInMinutes: async () => isNaN(parseInt(await Settings.get('MIN_DELIVERY_TIME_IN_MINUTES') as string)) ? 40 : parseInt(await Settings.get('MIN_DELIVERY_TIME_IN_MINUTES') as string),
65
+ timezone: async () => {
66
+ return await Settings.get('TZ') ?? 'Etc/GMT'
67
+ },
68
+ captchaType: async () => await Settings.get('CAPTCHA_TYPE') || "POW",
69
+ deliveryDescription: async () => await Settings.get('DELIVERY_DESCRIPTION'),
70
+ user: () => ({}), // Dummy resolver to nest the fields below
71
+ },
72
+ UserRestrictions: {
73
+ loginField: async () => {
74
+ let loginField = await Settings.get("LOGIN_FIELD");
75
+ return loginField || 'phone';
76
+ },
77
+ loginOTPRequired: async () => {
78
+ let loginOTPRequired = await Settings.get("LOGIN_OTP_REQUIRED");
79
+ return loginOTPRequired || false;
80
+ },
81
+ customFields: async () => {
82
+ let customFields = await Settings.get("CUSTOM_FIELDS");
83
+ return customFields || [];
84
+ },
85
+ passwordPolicy: async () => {
86
+ let passwordPolicy = await Settings.get("PASSWORD_POLICY") as PasswordPolicy;
87
+ return passwordPolicy || "from_otp";
88
+ },
89
+ allowedPhoneCountries: async () => {
90
+ let allowedPhoneCountriesList = [];
91
+
92
+ // ALLOWED_PHONE_COUNTRIES
93
+ let allowedPhoneCountries = await Settings.get("ALLOWED_PHONE_COUNTRIES") as string | string[];
94
+ if (typeof allowedPhoneCountries === "string") allowedPhoneCountries = [allowedPhoneCountries];
95
+
96
+ if (Array.isArray(allowedPhoneCountries) && typeof allowedPhoneCountries[0] === "string") {
97
+ allowedPhoneCountries.forEach(allowedPhoneCountry => {
98
+ let country = sails.hooks.restocore.dictionaries.countries[allowedPhoneCountry]
99
+ if (country) {
100
+ allowedPhoneCountriesList.push(country)
101
+ }
102
+ });
103
+ }
104
+
105
+ return allowedPhoneCountriesList;
106
+ },
107
+ linkToProcessingPersonalData: () => "/static/processing_personal_data",
108
+ linkToUserAgreement: () => "/static/user_agreement",
109
+ OTPlength: () => 6,
110
+ allowBonusSpending: async () => {
111
+ return await Settings.get("ALLOW_BONUS_SPENDING") as boolean ?? true;
112
+ },
21
113
  }
22
114
  }
@@ -2,7 +2,7 @@ declare const _default: {
2
2
  Query: {
3
3
  streets: {
4
4
  def: string;
5
- fn: (parent: any, args: any, context: any, info: any) => Promise<any>;
5
+ fn: (parent: any, args: any, context: any, info: any) => Promise<import("@webresto/core/models/Street").default[]>;
6
6
  };
7
7
  };
8
8
  };
@@ -5,10 +5,7 @@ exports.default = {
5
5
  streets: {
6
6
  def: "streets: [Street]",
7
7
  fn: async (parent, args, context, info) => {
8
- let streetModel = await Settings.use("StreetModel");
9
- if (!streetModel && !sails.models[streetModel])
10
- streetModel = 'street';
11
- const streets = await sails.models[streetModel.toLowerCase()].find({ isDeleted: false });
8
+ const streets = await Street.find({ isDeleted: false });
12
9
  return streets;
13
10
  }
14
11
  }
@@ -3,9 +3,7 @@ export default {
3
3
  streets: {
4
4
  def: "streets: [Street]",
5
5
  fn: async (parent, args, context, info) => {
6
- let streetModel = await Settings.use("StreetModel")
7
- if (!streetModel && ! sails.models[streetModel]) streetModel = 'street'
8
- const streets = await sails.models[streetModel.toLowerCase()].find({isDeleted: false});
6
+ const streets = await Street.find({isDeleted: false});
9
7
  return streets;
10
8
  }
11
9
  }
@@ -3,28 +3,28 @@ declare const _default: {
3
3
  order: {
4
4
  def: string;
5
5
  fn: {
6
- subscribe: any;
6
+ subscribe: import("apollo-server").ResolverFn;
7
7
  resolve: (payload: any) => any;
8
8
  };
9
9
  };
10
10
  message: {
11
11
  def: string;
12
12
  fn: {
13
- subscribe: any;
13
+ subscribe: import("apollo-server").ResolverFn;
14
14
  resolve: (payload: any) => any;
15
15
  };
16
16
  };
17
17
  action: {
18
18
  def: string;
19
19
  fn: {
20
- subscribe: any;
20
+ subscribe: import("apollo-server").ResolverFn;
21
21
  resolve: (payload: any) => any;
22
22
  };
23
23
  };
24
24
  maintenance: {
25
25
  def: string;
26
26
  fn: {
27
- subscribe: any;
27
+ subscribe: import("apollo-server").ResolverFn;
28
28
  resolve: (payload: any) => any;
29
29
  };
30
30
  };
@@ -1,13 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const { withFilter } = require('apollo-server');
3
+ const apollo_server_1 = require("apollo-server");
4
4
  exports.default = {
5
5
  Subscription: {
6
6
  order: {
7
- def: 'order(orderId: String): Order',
7
+ def: `#graphql
8
+ "If you authorized you should send Authorization header;"
9
+ order(deviceId: String): Order
10
+ `,
8
11
  fn: {
9
- subscribe: withFilter((rootValue, args, context, info) => context.pubsub.asyncIterator('order-changed'), (payload, query) => {
10
- return payload.id === query.orderId;
12
+ subscribe: (0, apollo_server_1.withFilter)((rootValue, args, context, info) => {
13
+ if (args.deviceId) {
14
+ context.connectionParams.deviceId = args.deviceId;
15
+ }
16
+ if (!context.connectionParams.deviceId) {
17
+ throw `Missed deviceId`;
18
+ }
19
+ return context.pubsub.asyncIterator('order-changed');
20
+ }, (payload, query, context, info) => {
21
+ return payload.deviceId === context.connectionParams.deviceId;
11
22
  }),
12
23
  resolve: payload => {
13
24
  const order = payload;
@@ -16,10 +27,22 @@ exports.default = {
16
27
  }
17
28
  },
18
29
  message: {
19
- def: 'message(orderId: String): Message',
30
+ def: `#graphql
31
+ "If you authorized you should send Authorization header, and pass X-Device-Id header;"
32
+ message(deviceId: String): Message
33
+ `,
20
34
  fn: {
21
- subscribe: withFilter((rootValue, args, context, info) => context.pubsub.asyncIterator('message'), (payload, query) => {
22
- return payload.orderId === query.orderId;
35
+ subscribe: (0, apollo_server_1.withFilter)((rootValue, args, context, info) => {
36
+ if (args.deviceId) {
37
+ context.connectionParams.deviceId = args.deviceId;
38
+ }
39
+ if (!context.connectionParams.deviceId) {
40
+ throw `Missed deviceId`;
41
+ }
42
+ return context.pubsub.asyncIterator('message');
43
+ }, (payload, query, context, info) => {
44
+ console.log(payload.deviceId, context.connectionParams.deviceId);
45
+ return payload.deviceId === context.connectionParams.deviceId;
23
46
  }),
24
47
  resolve: payload => {
25
48
  return payload.message;
@@ -27,10 +50,22 @@ exports.default = {
27
50
  }
28
51
  },
29
52
  action: {
30
- def: 'action(orderId: String): Action',
53
+ def: `#graphql
54
+ "If you authorized you should send Authorization header, and pass X-Device-Id header; Please read full documentation for Actions https://docs.webresto.org/docs/graphql/actions/"
55
+ action(deviceId: String): Action
56
+ `,
31
57
  fn: {
32
- subscribe: withFilter((rootValue, args, context, info) => context.pubsub.asyncIterator('action'), (payload, query) => {
33
- return payload.orderId === query.orderId;
58
+ subscribe: (0, apollo_server_1.withFilter)((rootValue, args, context, info) => {
59
+ if (args.deviceId) {
60
+ context.connectionParams.deviceId = args.deviceId;
61
+ }
62
+ if (!context.connectionParams.deviceId) {
63
+ throw `Missed deviceId`;
64
+ }
65
+ return context.pubsub.asyncIterator('action');
66
+ }, (payload, query, context, info) => {
67
+ console.log(payload.deviceId, context.connectionParams.deviceId);
68
+ return payload.deviceId === context.connectionParams.deviceId;
34
69
  }),
35
70
  resolve: payload => {
36
71
  return payload.action;
@@ -38,9 +73,11 @@ exports.default = {
38
73
  }
39
74
  },
40
75
  maintenance: {
41
- def: 'maintenance: Maintenance',
76
+ def: `
77
+ "No maintenance when recive null"
78
+ maintenance: Maintenance`,
42
79
  fn: {
43
- subscribe: withFilter((rootValue, args, context, info) => context.pubsub.asyncIterator('maintenance'), (payload, query) => {
80
+ subscribe: (0, apollo_server_1.withFilter)((rootValue, args, context, info) => context.pubsub.asyncIterator('maintenance'), (payload, query) => {
44
81
  return true;
45
82
  }),
46
83
  resolve: payload => {
@@ -1,14 +1,28 @@
1
- const { withFilter } = require('apollo-server');
1
+ import { withFilter } from 'apollo-server';
2
2
 
3
3
  export default {
4
4
  Subscription: {
5
5
  order: {
6
- def: 'order(orderId: String): Order',
6
+ def: `#graphql
7
+ "If you authorized you should send Authorization header;"
8
+ order(deviceId: String): Order
9
+ `,
7
10
  fn: {
8
11
  subscribe: withFilter(
9
- (rootValue, args, context, info) => context.pubsub.asyncIterator('order-changed'),
10
- (payload, query) => {
11
- return payload.id === query.orderId;
12
+ (rootValue, args, context, info) => {
13
+ if(args.deviceId) {
14
+ context.connectionParams.deviceId = args.deviceId;
15
+ }
16
+
17
+ if (!context.connectionParams.deviceId) {
18
+ throw `Missed deviceId`
19
+ }
20
+
21
+ return context.pubsub.asyncIterator('order-changed')
22
+ },
23
+
24
+ (payload, query, context, info) => {
25
+ return payload.deviceId === context.connectionParams.deviceId;
12
26
  }
13
27
  ),
14
28
  resolve: payload => {
@@ -18,12 +32,27 @@ export default {
18
32
  }
19
33
  },
20
34
  message: {
21
- def: 'message(orderId: String): Message',
35
+ def: `#graphql
36
+ "If you authorized you should send Authorization header, and pass X-Device-Id header;"
37
+ message(deviceId: String): Message
38
+ `,
22
39
  fn: {
23
40
  subscribe: withFilter(
24
- (rootValue, args, context, info) => context.pubsub.asyncIterator('message'),
25
- (payload, query) => {
26
- return payload.orderId === query.orderId;
41
+ (rootValue, args, context, info) => {
42
+
43
+ if(args.deviceId) {
44
+ context.connectionParams.deviceId = args.deviceId;
45
+ }
46
+
47
+ if (!context.connectionParams.deviceId) {
48
+ throw `Missed deviceId`
49
+ }
50
+
51
+ return context.pubsub.asyncIterator('message')
52
+ },
53
+ (payload, query, context, info) => {
54
+ console.log(payload.deviceId, context.connectionParams.deviceId)
55
+ return payload.deviceId === context.connectionParams.deviceId;
27
56
  }
28
57
  ),
29
58
  resolve: payload => {
@@ -32,12 +61,26 @@ export default {
32
61
  }
33
62
  },
34
63
  action: {
35
- def: 'action(orderId: String): Action',
64
+ def: `#graphql
65
+ "If you authorized you should send Authorization header, and pass X-Device-Id header; Please read full documentation for Actions https://docs.webresto.org/docs/graphql/actions/"
66
+ action(deviceId: String): Action
67
+ `,
36
68
  fn: {
37
69
  subscribe: withFilter(
38
- (rootValue, args, context, info) => context.pubsub.asyncIterator('action'),
39
- (payload, query) => {
40
- return payload.orderId === query.orderId;
70
+ (rootValue, args, context, info) => {
71
+ if(args.deviceId) {
72
+ context.connectionParams.deviceId = args.deviceId;
73
+ }
74
+
75
+ if (!context.connectionParams.deviceId) {
76
+ throw `Missed deviceId`
77
+ }
78
+
79
+ return context.pubsub.asyncIterator('action')
80
+ },
81
+ (payload, query, context, info) => {
82
+ console.log(payload.deviceId, context.connectionParams.deviceId)
83
+ return payload.deviceId === context.connectionParams.deviceId;
41
84
  }
42
85
  ),
43
86
  resolve: payload => {
@@ -46,7 +89,9 @@ export default {
46
89
  }
47
90
  },
48
91
  maintenance: {
49
- def: 'maintenance: Maintenance',
92
+ def: `
93
+ "No maintenance when recive null"
94
+ maintenance: Maintenance`,
50
95
  fn: {
51
96
  subscribe: withFilter(
52
97
  (rootValue, args, context, info) => context.pubsub.asyncIterator('maintenance'),
@@ -0,0 +1,14 @@
1
+ declare const _default: {
2
+ Query: {
3
+ telemetry: {
4
+ def: string;
5
+ fn: () => {};
6
+ };
7
+ };
8
+ Telemetry: {
9
+ uptime: () => number;
10
+ i18n: (parent: any, args: any, context: any, info: any) => any;
11
+ locale: (parent: any, args: any, context: any, info: any) => any;
12
+ };
13
+ };
14
+ export default _default;