@webresto/graphql 1.3.7 → 1.3.8

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 +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 +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
@@ -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;