@diia-inhouse/test 6.3.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 (63) hide show
  1. package/LICENCE.md +287 -0
  2. package/README.md +93 -0
  3. package/dist/documentsGenerator.js +22 -0
  4. package/dist/documentsGenerator.js.map +1 -0
  5. package/dist/index.js +30 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/interfaces/documents/driverLicense.js +63 -0
  8. package/dist/interfaces/documents/driverLicense.js.map +1 -0
  9. package/dist/interfaces/documents/foreignPassport.js +20 -0
  10. package/dist/interfaces/documents/foreignPassport.js.map +1 -0
  11. package/dist/interfaces/documents/index.js +40 -0
  12. package/dist/interfaces/documents/index.js.map +1 -0
  13. package/dist/interfaces/documents/internalPassport.js +19 -0
  14. package/dist/interfaces/documents/internalPassport.js.map +1 -0
  15. package/dist/interfaces/documents/taxpayerCard.js +3 -0
  16. package/dist/interfaces/documents/taxpayerCard.js.map +1 -0
  17. package/dist/interfaces/index.js +3 -0
  18. package/dist/interfaces/index.js.map +1 -0
  19. package/dist/mock.js +29 -0
  20. package/dist/mock.js.map +1 -0
  21. package/dist/mongooseMock.js +43 -0
  22. package/dist/mongooseMock.js.map +1 -0
  23. package/dist/publicServiceGenerator.js +25 -0
  24. package/dist/publicServiceGenerator.js.map +1 -0
  25. package/dist/randomGenerator.js +18 -0
  26. package/dist/randomGenerator.js.map +1 -0
  27. package/dist/sessionGenerator.js +323 -0
  28. package/dist/sessionGenerator.js.map +1 -0
  29. package/dist/stubs/documents/driverLicense.js +233 -0
  30. package/dist/stubs/documents/driverLicense.js.map +1 -0
  31. package/dist/stubs/documents/foreignPassport.js +48 -0
  32. package/dist/stubs/documents/foreignPassport.js.map +1 -0
  33. package/dist/stubs/documents/index.js +18 -0
  34. package/dist/stubs/documents/index.js.map +1 -0
  35. package/dist/stubs/documents/internalPassport.js +44 -0
  36. package/dist/stubs/documents/internalPassport.js.map +1 -0
  37. package/dist/stubs/documents/taxpayerCard.js +20 -0
  38. package/dist/stubs/documents/taxpayerCard.js.map +1 -0
  39. package/dist/stubs/photo.js +5 -0
  40. package/dist/stubs/photo.js.map +1 -0
  41. package/dist/stubs/signature.js +5 -0
  42. package/dist/stubs/signature.js.map +1 -0
  43. package/dist/types/documentsGenerator.d.ts +4 -0
  44. package/dist/types/index.d.ts +13 -0
  45. package/dist/types/interfaces/documents/driverLicense.d.ts +120 -0
  46. package/dist/types/interfaces/documents/foreignPassport.d.ts +86 -0
  47. package/dist/types/interfaces/documents/index.d.ts +67 -0
  48. package/dist/types/interfaces/documents/internalPassport.d.ts +48 -0
  49. package/dist/types/interfaces/documents/taxpayerCard.d.ts +17 -0
  50. package/dist/types/interfaces/index.d.ts +7 -0
  51. package/dist/types/mock.d.ts +5 -0
  52. package/dist/types/mongooseMock.d.ts +32 -0
  53. package/dist/types/publicServiceGenerator.d.ts +5 -0
  54. package/dist/types/randomGenerator.d.ts +4 -0
  55. package/dist/types/sessionGenerator.d.ts +30 -0
  56. package/dist/types/stubs/documents/driverLicense.d.ts +3 -0
  57. package/dist/types/stubs/documents/foreignPassport.d.ts +3 -0
  58. package/dist/types/stubs/documents/index.d.ts +2 -0
  59. package/dist/types/stubs/documents/internalPassport.d.ts +3 -0
  60. package/dist/types/stubs/documents/taxpayerCard.d.ts +3 -0
  61. package/dist/types/stubs/photo.d.ts +2 -0
  62. package/dist/types/stubs/signature.d.ts +2 -0
  63. package/package.json +97 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":";;;AAAA,yCAAmD;AAEnD,SAAgB,SAAS,CAAsB,WAAc;IACzD,MAAM,MAAM,GAAG,IAAI,wBAAY,CAAC,MAAM,CAAC,CAAA;IAEvC,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;IACvE,CAAC;IAED,OAA4B,MAAM,CAAC,oBAAoB,CAAI,QAAQ,CAAC,CAAA;AACxE,CAAC;AATD,8BASC;AAED,8DAA8D;AAC9D,SAAgB,YAAY,CAAsB,WAAc;IAC5D,OAAO,SAAS,CAAC,WAAW,CAAC,CAAA;AACjC,CAAC;AAFD,oCAEC;AAED,SAAgB,YAAY,CACxB,WAAc,EACd,QAAyD,EAAE;IAE3D,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,CAAA;IAC1C,MAAM,cAAc,GAAG,IAAI,WAAW,EAAE,CAAA;IAExC,MAAM,IAAI,GAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAE5C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,cAAc,CAAC,cAAc,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACrE,CAAC;IAED,OAAO,cAAc,CAAA;AACzB,CAAC;AAdD,oCAcC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const mongoose = __importStar(require("mongoose"));
27
+ class MongooseMock {
28
+ setResult(operation, result, repeat = 1) {
29
+ for (let i = 0; i < repeat; i++) {
30
+ jest.spyOn(mongoose.Query.prototype, operation).mockReturnValueOnce(result);
31
+ }
32
+ }
33
+ setResultChain(operations, result, repeat = 1) {
34
+ for (let i = 0; i < repeat; i++) {
35
+ for (const operation of operations) {
36
+ jest.spyOn(mongoose.Query.prototype, operation).mockReturnThis();
37
+ }
38
+ jest.spyOn(mongoose.Query.prototype, 'exec').mockResolvedValueOnce(result);
39
+ }
40
+ }
41
+ }
42
+ exports.default = MongooseMock;
43
+ //# sourceMappingURL=mongooseMock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongooseMock.js","sourceRoot":"","sources":["../src/mongooseMock.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAoC;AAIpC,MAAqB,YAAY;IAC7B,SAAS,CAAC,SAA+B,EAAE,MAAe,EAAE,MAAM,GAAG,CAAC;QAClE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAA;QAC/E,CAAC;IACL,CAAC;IAED,cAAc,CAAC,UAAkC,EAAE,MAAe,EAAE,MAAM,GAAG,CAAC;QAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,cAAc,EAAE,CAAA;YACpE,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAA;QAC9E,CAAC;IACL,CAAC;CACJ;AAhBD,+BAgBC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const types_1 = require("@diia-inhouse/types");
4
+ class PublicServiceGenerator {
5
+ getPublicServiceContextMenu(contextMenuItems = []) {
6
+ return [{ type: types_1.PublicServiceContextMenuType.faqCategory, name: 'contextItemName' }, ...contextMenuItems];
7
+ }
8
+ getPublicServiceSettings(serviceSettings = {}) {
9
+ return {
10
+ id: '123',
11
+ code: 'penalties',
12
+ name: 'penalties',
13
+ status: types_1.PublicServiceStatus.active,
14
+ sessionTypes: [types_1.SessionType.User],
15
+ contextMenu: this.getPublicServiceContextMenu(),
16
+ categories: [],
17
+ segments: [],
18
+ sortOrder: 0,
19
+ locales: {},
20
+ ...serviceSettings,
21
+ };
22
+ }
23
+ }
24
+ exports.default = PublicServiceGenerator;
25
+ //# sourceMappingURL=publicServiceGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publicServiceGenerator.js","sourceRoot":"","sources":["../src/publicServiceGenerator.ts"],"names":[],"mappings":";;AAAA,+CAM4B;AAE5B,MAAqB,sBAAsB;IACvC,2BAA2B,CAAC,mBAA+C,EAAE;QACzE,OAAO,CAAC,EAAE,IAAI,EAAE,oCAA4B,CAAC,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,GAAG,gBAAgB,CAAC,CAAA;IAC7G,CAAC;IAED,wBAAwB,CAAC,kBAAkD,EAAE;QACzE,OAAO;YACH,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,2BAAmB,CAAC,MAAM;YAClC,YAAY,EAAE,CAAC,mBAAW,CAAC,IAAI,CAAC;YAChC,WAAW,EAAE,IAAI,CAAC,2BAA2B,EAAE;YAC/C,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,EAAE;YACX,GAAG,eAAe;SACrB,CAAA;IACL,CAAC;CACJ;AApBD,yCAoBC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class RandomGenerator {
4
+ getRandomInt(minParam, maxParam) {
5
+ const min = Math.ceil(minParam);
6
+ const max = Math.floor(maxParam);
7
+ return Math.floor(Math.random() * (max - min + 1) + min);
8
+ }
9
+ getRandomIntByLength(length) {
10
+ let randomNumber = '';
11
+ for (let i = 0; i < length; i++) {
12
+ randomNumber += Math.floor(Math.random() * 10);
13
+ }
14
+ return Number(randomNumber);
15
+ }
16
+ }
17
+ exports.default = RandomGenerator;
18
+ //# sourceMappingURL=randomGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"randomGenerator.js","sourceRoot":"","sources":["../src/randomGenerator.ts"],"names":[],"mappings":";;AAAA,MAAqB,eAAe;IAChC,YAAY,CAAC,QAAgB,EAAE,QAAgB;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAEhC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;IAC5D,CAAC;IAED,oBAAoB,CAAC,MAAc;QAC/B,IAAI,YAAY,GAAG,EAAE,CAAA;QAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAClD,CAAC;QAED,OAAO,MAAM,CAAC,YAAY,CAAC,CAAA;IAC/B,CAAC;CACJ;AAjBD,kCAiBC"}
@@ -0,0 +1,323 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const node_crypto_1 = require("node:crypto");
4
+ const bson_1 = require("bson");
5
+ const luxon_1 = require("luxon");
6
+ const types_1 = require("@diia-inhouse/types");
7
+ class SessionGenerator {
8
+ random;
9
+ constructor(random) {
10
+ this.random = random;
11
+ }
12
+ dateFormat = 'dd.MM.yyyy';
13
+ getUserActionArguments(user = {}, headers = {}, ops = {}) {
14
+ return {
15
+ session: this.getUserSession(user, ops.validItn),
16
+ headers: this.getHeaders(headers),
17
+ };
18
+ }
19
+ getAuthEntryPoint(authEntryPoint = {}) {
20
+ return {
21
+ target: 'bankid',
22
+ isBankId: true,
23
+ bankName: 'diia bank',
24
+ document: types_1.AuthDocumentType.ForeignPassport,
25
+ ...authEntryPoint,
26
+ };
27
+ }
28
+ getUserSession(tokenData = {}, validItn = false) {
29
+ const sessionType = types_1.SessionType.User;
30
+ const userData = this.getUserData(tokenData, validItn);
31
+ const { itn } = userData;
32
+ const result = {
33
+ ...userData,
34
+ mobileUid: (0, node_crypto_1.randomUUID)(),
35
+ document: { type: types_1.AuthDocumentType.ForeignPassport, value: '12345' },
36
+ sessionType,
37
+ identifier: this.createIdentifier(itn),
38
+ authEntryPoint: this.getAuthEntryPoint(),
39
+ refreshToken: {
40
+ value: (0, node_crypto_1.randomUUID)(),
41
+ expirationTime: Date.now() + 300000,
42
+ },
43
+ ...tokenData,
44
+ };
45
+ return { sessionType, user: result };
46
+ }
47
+ getDiiaOfficeUserSession(tokenData = {}, validItn = false, features = {}) {
48
+ return {
49
+ ...this.getUserSession(tokenData, validItn),
50
+ features: {
51
+ [types_1.ProfileFeature.office]: {
52
+ officeIdentifier: (0, node_crypto_1.randomUUID)(),
53
+ profileId: (0, node_crypto_1.randomUUID)(),
54
+ organizationId: (0, node_crypto_1.randomUUID)(),
55
+ unitId: (0, node_crypto_1.randomUUID)(),
56
+ isOrganizationAdmin: false,
57
+ scopes: ['auth'],
58
+ status: types_1.DiiaOfficeStatus.ACTIVE,
59
+ tokenFailedAt: undefined,
60
+ },
61
+ ...features,
62
+ },
63
+ };
64
+ }
65
+ getCabinetUserSession(tokenData = {}, validItn = false) {
66
+ const sessionType = types_1.SessionType.CabinetUser;
67
+ const userData = this.getUserData(tokenData, validItn);
68
+ const { itn } = userData;
69
+ const result = {
70
+ ...userData,
71
+ mobileUid: (0, node_crypto_1.randomUUID)(),
72
+ identifier: this.createIdentifier(itn),
73
+ sessionType,
74
+ refreshToken: {
75
+ value: (0, node_crypto_1.randomUUID)(),
76
+ expirationTime: Date.now() + 300000,
77
+ },
78
+ ...tokenData,
79
+ };
80
+ return { sessionType, user: result };
81
+ }
82
+ getEResidentSession(tokenData = {}, validItn = false) {
83
+ const sessionType = types_1.SessionType.EResident;
84
+ const userData = this.getUserData(tokenData, validItn);
85
+ const { itn } = userData;
86
+ const result = {
87
+ ...userData,
88
+ mobileUid: (0, node_crypto_1.randomUUID)(),
89
+ document: { type: types_1.AuthDocumentType.EResidency, value: '12345' },
90
+ sessionType,
91
+ identifier: this.createIdentifier(itn, { prefix: types_1.IdentifierPrefix.EResident }),
92
+ authEntryPoint: this.getAuthEntryPoint(),
93
+ refreshToken: {
94
+ value: (0, node_crypto_1.randomUUID)(),
95
+ expirationTime: Date.now() + 300000,
96
+ },
97
+ ...tokenData,
98
+ };
99
+ return { sessionType, user: result };
100
+ }
101
+ getEResidentApplicantSession(tokenData = {}) {
102
+ const email = tokenData.email || 'eresident-applicant@mail.com';
103
+ const sessionType = types_1.SessionType.EResidentApplicant;
104
+ const result = {
105
+ email,
106
+ sessionType,
107
+ document: { type: types_1.AuthDocumentType.EResidentApplicantEmail, value: email },
108
+ mobileUid: (0, node_crypto_1.randomUUID)(),
109
+ identifier: this.createIdentifier(email, { prefix: types_1.IdentifierPrefix.EResidentApplicant }),
110
+ authEntryPoint: this.getAuthEntryPoint(),
111
+ refreshToken: {
112
+ value: (0, node_crypto_1.randomUUID)(),
113
+ expirationTime: Date.now() + 300000,
114
+ },
115
+ ...tokenData,
116
+ };
117
+ return { sessionType, user: result };
118
+ }
119
+ getAcquirerSession(tokenData = {}) {
120
+ const sessionType = types_1.SessionType.Acquirer;
121
+ const result = {
122
+ sessionType,
123
+ refreshToken: {
124
+ value: (0, node_crypto_1.randomUUID)(),
125
+ expirationTime: Date.now() + 300000,
126
+ },
127
+ _id: new bson_1.ObjectId(),
128
+ ...tokenData,
129
+ };
130
+ return { sessionType, acquirer: result };
131
+ }
132
+ getPartnerSession(tokenData = {}) {
133
+ const sessionType = types_1.SessionType.Partner;
134
+ const result = {
135
+ _id: new bson_1.ObjectId(),
136
+ scopes: {},
137
+ sessionType,
138
+ refreshToken: {
139
+ value: (0, node_crypto_1.randomUUID)(),
140
+ expirationTime: Date.now() + 300000,
141
+ },
142
+ ...tokenData,
143
+ };
144
+ return { sessionType, partner: result };
145
+ }
146
+ getTemporarySession(tokenData = {}) {
147
+ const sessionType = types_1.SessionType.Temporary;
148
+ const result = {
149
+ sessionType,
150
+ refreshToken: {
151
+ value: (0, node_crypto_1.randomUUID)(),
152
+ expirationTime: Date.now() + 300000,
153
+ },
154
+ mobileUid: (0, node_crypto_1.randomUUID)(),
155
+ ...tokenData,
156
+ };
157
+ return { sessionType, temporary: result };
158
+ }
159
+ getServiceEntranceSession(tokenData = {}) {
160
+ const sessionType = types_1.SessionType.ServiceEntrance;
161
+ const result = {
162
+ acquirerId: new bson_1.ObjectId(),
163
+ branchHashId: (0, node_crypto_1.randomUUID)(),
164
+ offerHashId: (0, node_crypto_1.randomUUID)(),
165
+ offerRequestHashId: (0, node_crypto_1.randomUUID)(),
166
+ mobileUid: (0, node_crypto_1.randomUUID)(),
167
+ sessionType,
168
+ refreshToken: {
169
+ value: (0, node_crypto_1.randomUUID)(),
170
+ expirationTime: Date.now() + 300000,
171
+ },
172
+ ...tokenData,
173
+ };
174
+ return { sessionType, entrance: result };
175
+ }
176
+ getPortalUserSession(tokenData = {}, validItn = false) {
177
+ const sessionType = types_1.SessionType.PortalUser;
178
+ const birthDate = tokenData.birthDay || this.getBirthDate();
179
+ const gender = this.getGender();
180
+ const itn = this.generateItn(birthDate, gender, validItn);
181
+ const result = {
182
+ sessionType,
183
+ refreshToken: {
184
+ value: (0, node_crypto_1.randomUUID)(),
185
+ expirationTime: Date.now() + 300000,
186
+ },
187
+ fName: 'Дія',
188
+ lName: 'Надія',
189
+ mName: 'Володимирівна',
190
+ itn,
191
+ birthDay: birthDate,
192
+ identifier: (0, node_crypto_1.randomUUID)(),
193
+ ...tokenData,
194
+ };
195
+ return { sessionType, user: result };
196
+ }
197
+ getServiceUserSession(tokenData = {}) {
198
+ const sessionType = types_1.SessionType.ServiceUser;
199
+ const result = {
200
+ sessionType,
201
+ refreshToken: {
202
+ value: (0, node_crypto_1.randomUUID)(),
203
+ expirationTime: Date.now() + 300000,
204
+ },
205
+ login: 'test-login',
206
+ ...tokenData,
207
+ };
208
+ return { sessionType, serviceUser: result };
209
+ }
210
+ getSessionBySessionType(sessionType, tokenData = {}, validItn = false) {
211
+ switch (sessionType) {
212
+ case types_1.SessionType.Acquirer: {
213
+ return this.getAcquirerSession(tokenData);
214
+ }
215
+ case types_1.SessionType.CabinetUser: {
216
+ return this.getCabinetUserSession(tokenData, validItn);
217
+ }
218
+ case types_1.SessionType.EResident: {
219
+ return this.getEResidentSession(tokenData, validItn);
220
+ }
221
+ case types_1.SessionType.EResidentApplicant: {
222
+ return this.getEResidentApplicantSession(tokenData);
223
+ }
224
+ case types_1.SessionType.Partner: {
225
+ return this.getPartnerSession(tokenData);
226
+ }
227
+ case types_1.SessionType.PortalUser: {
228
+ return this.getPortalUserSession(tokenData, validItn);
229
+ }
230
+ case types_1.SessionType.ServiceEntrance: {
231
+ return this.getServiceEntranceSession(tokenData);
232
+ }
233
+ case types_1.SessionType.ServiceUser: {
234
+ return this.getServiceUserSession(tokenData);
235
+ }
236
+ case types_1.SessionType.Temporary: {
237
+ return this.getTemporarySession(tokenData);
238
+ }
239
+ case types_1.SessionType.User: {
240
+ return this.getUserSession(tokenData, validItn);
241
+ }
242
+ default: {
243
+ return undefined;
244
+ }
245
+ }
246
+ }
247
+ getHeaders(headers = {}) {
248
+ return {
249
+ mobileUid: (0, node_crypto_1.randomUUID)(),
250
+ traceId: (0, node_crypto_1.randomUUID)(),
251
+ token: (0, node_crypto_1.randomUUID)(),
252
+ platformType: types_1.PlatformType.Android,
253
+ platformVersion: '13',
254
+ appVersion: '3.0.55.981',
255
+ actionVersion: types_1.ActionVersion.V3,
256
+ ...headers,
257
+ };
258
+ }
259
+ getBirthDate() {
260
+ const fromDate = luxon_1.DateTime.fromFormat('31.12.1899', this.dateFormat);
261
+ const untilDate = luxon_1.DateTime.fromFormat('14.12.2004', this.dateFormat);
262
+ const interval = luxon_1.Interval.fromDateTimes(fromDate, untilDate);
263
+ const randomDay = this.random.getRandomInt(0, interval.length('days'));
264
+ return fromDate.plus({ days: randomDay }).toFormat(this.dateFormat);
265
+ }
266
+ getGender() {
267
+ return this.random.getRandomInt(0, 1) === 0 ? types_1.Gender.male : types_1.Gender.female;
268
+ }
269
+ generateItn(birthDate, gender, validItn) {
270
+ if (!validItn) {
271
+ return Math.floor(Math.random() * 10000000000).toString();
272
+ }
273
+ const fromDate = luxon_1.DateTime.fromFormat('31.12.1899', this.dateFormat);
274
+ const interval = luxon_1.Interval.fromDateTimes(fromDate, luxon_1.DateTime.fromFormat(birthDate, this.dateFormat));
275
+ const firstPart = interval.length('days').toString().padStart(5, '0');
276
+ const secondPart = this.getItnSeqNumber(gender).toString().padStart(4, '0');
277
+ const baseNumber = firstPart.concat(secondPart);
278
+ const [a, b, c, d, e, f, g, h, i] = baseNumber.split('').map((item) => Number.parseInt(item, 10));
279
+ const checksum = -a + 5 * b + 7 * c + 9 * d + 4 * e + 6 * f + 10 * g + 5 * h + 7 * i;
280
+ const controlNumber = (checksum - 11 * Math.floor(checksum / 11)) % 10;
281
+ return baseNumber.concat(controlNumber.toString());
282
+ }
283
+ getUserData(tokenData = {}, validItn = false) {
284
+ const birthDate = tokenData.birthDay || this.getBirthDate();
285
+ const gender = tokenData.gender || this.getGender();
286
+ const itn = this.generateItn(birthDate, gender, validItn);
287
+ return {
288
+ itn,
289
+ gender,
290
+ fName: 'Надія',
291
+ lName: 'Дія',
292
+ mName: 'Володимирівна',
293
+ phoneNumber: '+380999999999',
294
+ email: 'test@test.com',
295
+ passport: '12345',
296
+ document: { type: types_1.AuthDocumentType.ForeignPassport, value: '12345' },
297
+ birthDay: birthDate,
298
+ addressOfRegistration: '',
299
+ addressOfBirth: '',
300
+ ...tokenData,
301
+ };
302
+ }
303
+ getItnSeqNumber(gender) {
304
+ const seqNumber = this.random.getRandomInt(1, 9998);
305
+ const isOdd = this.isOdd(seqNumber);
306
+ if (isOdd) {
307
+ return gender === types_1.Gender.male ? seqNumber : seqNumber + 1;
308
+ }
309
+ return gender === types_1.Gender.male ? seqNumber + 1 : seqNumber;
310
+ }
311
+ isOdd(number) {
312
+ return number % 2 === 1;
313
+ }
314
+ createIdentifier(itn, ops = {}) {
315
+ const { customSalt, prefix = '' } = ops;
316
+ const hmac = (0, node_crypto_1.createHmac)('sha512', customSalt || 'salt');
317
+ hmac.update(itn);
318
+ const hash = hmac.digest('hex');
319
+ return `${prefix}${hash}`;
320
+ }
321
+ }
322
+ exports.default = SessionGenerator;
323
+ //# sourceMappingURL=sessionGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionGenerator.js","sourceRoot":"","sources":["../src/sessionGenerator.ts"],"names":[],"mappings":"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"}