5htp 0.3.6 → 0.3.9

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 (102) hide show
  1. package/package.json +1 -1
  2. package/skeleton/docker-compose.yml +7 -15
  3. package/skeleton/identity.yaml +12 -8
  4. package/skeleton/package.json +25 -7
  5. package/skeleton/src/client/assets/identity/logo.svg +13 -63
  6. package/skeleton/src/client/assets/identity/logoAndText.svg +9 -104
  7. package/skeleton/src/client/assets/identity/logoAndTextBlack.svg +11 -0
  8. package/skeleton/src/client/assets/illustration/landing/banner.webp +0 -0
  9. package/skeleton/src/client/assets/illustration/landing/candidate/employers.webp +0 -0
  10. package/skeleton/src/client/assets/illustration/landing/candidate/hero.webp +0 -0
  11. package/skeleton/src/client/assets/illustration/landing/candidate/mentors.webp +0 -0
  12. package/skeleton/src/client/assets/illustration/landing/headhunter/hero.webp +0 -0
  13. package/skeleton/src/client/assets/illustration/landing/hero.jpeg +0 -0
  14. package/skeleton/src/client/assets/illustration/landing/hero.webp +0 -0
  15. package/skeleton/src/client/assets/illustration/landing/hero.xcf +0 -0
  16. package/skeleton/src/client/assets/illustration/landing/recruiter/onboarding.webp +0 -0
  17. package/skeleton/src/client/assets/illustration/landing/team/andre.png +0 -0
  18. package/skeleton/src/client/assets/illustration/landing/team/emma.png +0 -0
  19. package/skeleton/src/client/assets/illustration/landing/team/fei.png +0 -0
  20. package/skeleton/src/client/assets/illustration/landing/team/gaetan.png +0 -0
  21. package/skeleton/src/client/assets/illustration/landing/team/jordan.png +0 -0
  22. package/skeleton/src/client/assets/illustration/landing/team/lery.png +0 -0
  23. package/skeleton/src/client/assets/illustration/landing/team/mehdi.png +0 -0
  24. package/skeleton/src/client/assets/illustration/landing/team/omkar.png +0 -0
  25. package/skeleton/src/client/assets/illustration/landing/team/thibaut.png +0 -0
  26. package/skeleton/src/client/assets/img/background/header-blur.png +0 -0
  27. package/skeleton/src/client/assets/img/partners/citron.svg +987 -0
  28. package/skeleton/src/client/assets/patterns/dots.png +0 -0
  29. package/skeleton/src/client/assets/theme.less +179 -226
  30. package/skeleton/src/client/assets/vars.less +54 -0
  31. package/skeleton/src/client/context.ts +23 -0
  32. package/skeleton/src/client/index.ts +59 -0
  33. package/skeleton/src/client/pages/_messages/400.tsx +45 -0
  34. package/skeleton/src/client/pages/_messages/401.tsx +39 -0
  35. package/skeleton/src/client/pages/_messages/403.tsx +43 -0
  36. package/skeleton/src/client/pages/_messages/404.tsx +42 -0
  37. package/skeleton/src/client/pages/_messages/500.tsx +42 -0
  38. package/skeleton/src/client/pages/platform/Header.less +12 -0
  39. package/skeleton/src/client/pages/platform/Header.tsx +119 -0
  40. package/skeleton/src/client/pages/platform/_layout/index.less +118 -0
  41. package/skeleton/src/client/pages/platform/_layout/index.tsx +131 -0
  42. package/skeleton/src/client/pages/platform/_layout/mobile.less +114 -0
  43. package/skeleton/src/client/pages/platform/_page.tsx +54 -0
  44. package/skeleton/src/client/pages/platform/headhunters/index.tsx +88 -0
  45. package/skeleton/src/client/pages/platform/index.tsx +58 -0
  46. package/skeleton/src/client/pages/platform/missions/index.tsx +149 -0
  47. package/skeleton/src/client/services/metrics/index.ts +59 -0
  48. package/skeleton/src/client/tsconfig.json +4 -1
  49. package/skeleton/src/common/config/router.ts +16 -0
  50. package/skeleton/src/common/forms/company/bookCall.ts +25 -0
  51. package/skeleton/src/common/forms/company/importJob.ts +26 -0
  52. package/skeleton/src/common/forms/company/signup.ts +31 -0
  53. package/skeleton/src/common/forms/headhunter/feedback.ts +31 -0
  54. package/skeleton/src/common/forms/headhunter/mission/cancel.ts +26 -0
  55. package/skeleton/src/common/forms/headhunter/mission/candidate/availability.ts +31 -0
  56. package/skeleton/src/common/forms/headhunter/mission/candidate/education.ts +19 -0
  57. package/skeleton/src/common/forms/headhunter/mission/candidate/identity.ts +31 -0
  58. package/skeleton/src/common/forms/headhunter/mission/candidate/others.ts +19 -0
  59. package/skeleton/src/common/forms/headhunter/mission/candidate/skills.ts +21 -0
  60. package/skeleton/src/common/forms/headhunter/mission/reject.ts +23 -0
  61. package/skeleton/src/common/forms/headhunter/mission/search.ts +78 -0
  62. package/skeleton/src/common/forms/headhunter/signup.ts +34 -0
  63. package/skeleton/src/common/libs/headhunter/candidate/index.ts +155 -0
  64. package/skeleton/src/common/libs/headhunter/mission/index.ts +30 -0
  65. package/skeleton/src/common/libs/hub/index.ts +41 -0
  66. package/skeleton/src/server/config/communication.ts +48 -0
  67. package/skeleton/src/server/config/crosspath.ts +9 -0
  68. package/skeleton/src/server/config/data.ts +34 -0
  69. package/skeleton/src/server/config/database.ts +26 -0
  70. package/skeleton/src/server/config/internal.ts +21 -0
  71. package/skeleton/src/server/config/user.ts +90 -0
  72. package/skeleton/src/server/index.ts +111 -23
  73. package/skeleton/src/server/libs/utils/slug.ts +11 -0
  74. package/skeleton/src/server/routes/global.ts +33 -0
  75. package/skeleton/src/server/routes/headhunters.ts +24 -0
  76. package/skeleton/src/server/routes/missions.ts +50 -0
  77. package/skeleton/src/server/services/Headhunter/index.ts +127 -0
  78. package/skeleton/src/server/services/Headhunter/service.json +6 -0
  79. package/skeleton/src/server/services/Mission/index.ts +174 -0
  80. package/skeleton/src/server/services/Mission/service.json +6 -0
  81. package/skeleton/src/server/services/email/sendgrid/index.ts +97 -0
  82. package/skeleton/src/server/services/email/sendgrid/service.json +6 -0
  83. package/skeleton/src/server/services/slack/index.ts +105 -0
  84. package/skeleton/src/server/services/slack/service.json +6 -0
  85. package/skeleton/src/server/services/users/index.ts +133 -0
  86. package/skeleton/src/server/services/users/service.json +6 -0
  87. package/skeleton/src/server/tsconfig.json +6 -8
  88. package/skeleton/var/typings/routes.d.ts +541 -0
  89. package/src/compiler/index.ts +34 -12
  90. package/src/index.ts +1 -1
  91. package/src/utils/keyboard.ts +1 -1
  92. package/skeleton/package-lock.json +0 -6139
  93. package/skeleton/src/client/components/LoginModal.tsx +0 -45
  94. package/skeleton/src/client/pages/app/_layout/index.less +0 -20
  95. package/skeleton/src/client/pages/app/_layout/index.tsx +0 -33
  96. package/skeleton/src/client/pages/app/index.tsx +0 -57
  97. package/skeleton/src/client/pages/landing/_layout/index.less +0 -145
  98. package/skeleton/src/client/pages/landing/_layout/index.tsx +0 -63
  99. package/skeleton/src/client/pages/landing/index.tsx +0 -73
  100. package/skeleton/src/server/models.ts +0 -117
  101. package/skeleton/src/server/routes/general.ts +0 -66
  102. package/skeleton/src/server/services/auth/index.ts +0 -80
@@ -0,0 +1,541 @@
1
+
2
+ declare type Routes = {
3
+
4
+ '/admin/heahdunters/kpis': {
5
+ params: {
6
+
7
+ }
8
+ }
9
+ ,
10
+ '/admin/headhunters': {
11
+ params: {
12
+
13
+ }
14
+ }
15
+ ,
16
+ '/admin/headhunters/:id': {
17
+ params: {
18
+ 'id': string
19
+ }
20
+ }
21
+ ,
22
+ '/admin/headhunters/:recordId/login': {
23
+ params: {
24
+ 'recordId': string
25
+ }
26
+ }
27
+ ,
28
+ '/admin/headhunters/missions/current': {
29
+ params: {
30
+
31
+ }
32
+ }
33
+ ,
34
+ '/admin/headhunters/missions/suggested': {
35
+ params: {
36
+
37
+ }
38
+ }
39
+ ,
40
+ '/admin/headhunters/missions/candidates': {
41
+ params: {
42
+
43
+ }
44
+ }
45
+ ,
46
+ '/companies/signup/import/:companyName': {
47
+ params: {
48
+ 'companyName': string
49
+ }
50
+ }
51
+ ,
52
+ '/companies/signup/import/:companyName': {
53
+ params: {
54
+ 'companyName': string
55
+ }
56
+ }
57
+ ,
58
+ '/companies/signup': {
59
+ params: {
60
+
61
+ }
62
+ }
63
+ ,
64
+ '/companies/r/:referrerId': {
65
+ params: {
66
+ 'referrerId': string
67
+ }
68
+ }
69
+ ,
70
+ '/company/:companySlug/:resourceType(logo|cover).webp': {
71
+ params: {
72
+ 'companySlug': string,
73
+ 'resourceType': string
74
+ }
75
+ }
76
+ ,
77
+ '/recruiter/:slug/photo.webp': {
78
+ params: {
79
+ 'slug': string
80
+ }
81
+ }
82
+ ,
83
+ '*': {
84
+ params: {
85
+ '0': string
86
+ }
87
+ }
88
+ ,
89
+ '/send-activation-links': {
90
+ params: {
91
+
92
+ }
93
+ }
94
+ ,
95
+ '/headhunters/signup': {
96
+ params: {
97
+
98
+ }
99
+ }
100
+ ,
101
+ '/headhunters/login': {
102
+ params: {
103
+
104
+ }
105
+ }
106
+ ,
107
+ '/headhunters/login': {
108
+ params: {
109
+
110
+ }
111
+ }
112
+ ,
113
+ '/headhunters/login/reset': {
114
+ params: {
115
+
116
+ }
117
+ }
118
+ ,
119
+ '/headhunters/login/reset/:token': {
120
+ params: {
121
+ 'token': string
122
+ }
123
+ }
124
+ ,
125
+ '/headhunters/logout': {
126
+ params: {
127
+
128
+ }
129
+ }
130
+ ,
131
+ '/headhunters/r/:referrerId': {
132
+ params: {
133
+ 'referrerId': string
134
+ }
135
+ }
136
+ ,
137
+ '/headhunters/signup/linkedin': {
138
+ params: {
139
+
140
+ }
141
+ }
142
+ ,
143
+ '/headhunters/signup/linkedin/response': {
144
+ params: {
145
+
146
+ }
147
+ }
148
+ ,
149
+ '/headhunter/awards': {
150
+ params: {
151
+
152
+ }
153
+ }
154
+ ,
155
+ '/headhunter/refer': {
156
+ params: {
157
+
158
+ }
159
+ }
160
+ ,
161
+ '/help/terms-and-conditions': {
162
+ params: {
163
+
164
+ }
165
+ }
166
+ ,
167
+ '/headhunters/consent/terms-and-conditions': {
168
+ params: {
169
+
170
+ }
171
+ }
172
+ ,
173
+ '/headhunter/kpis': {
174
+ params: {
175
+
176
+ }
177
+ }
178
+ ,
179
+ '/headhunter/missions': {
180
+ params: {
181
+
182
+ }
183
+ }
184
+ ,
185
+ '/headhunter/missions/suggest': {
186
+ params: {
187
+
188
+ }
189
+ }
190
+ ,
191
+ '/headhunter/mission/:missionStatus(suggested|accepted)/:missionId': {
192
+ params: {
193
+ 'missionStatus': string,
194
+ 'missionId': string
195
+ }
196
+ }
197
+ ,
198
+ '/headhunter/mission/accepted/:missionId/summary': {
199
+ params: {
200
+ 'missionId': string
201
+ }
202
+ }
203
+ ,
204
+ '/headhunter/mission/suggested/:missionId/accept': {
205
+ params: {
206
+ 'missionId': string
207
+ }
208
+ }
209
+ ,
210
+ '/headhunter/mission/suggested/:missionId/reject': {
211
+ params: {
212
+ 'missionId': string
213
+ }
214
+ }
215
+ ,
216
+ '/headhunter/mission/accepted/:missionId/cancel': {
217
+ params: {
218
+ 'missionId': string
219
+ }
220
+ }
221
+ ,
222
+ '/headhunter/mission/accepted/:missionId/candidate': {
223
+ params: {
224
+ 'missionId': string
225
+ }
226
+ }
227
+ ,
228
+ '/headhunter/mission/accepted/:mission/candidates': {
229
+ params: {
230
+ 'mission': string
231
+ }
232
+ }
233
+ ,
234
+ '/headhunter/mission/accepted/:missionId/cv/:cvFileName': {
235
+ params: {
236
+ 'missionId': string,
237
+ 'cvFileName': string
238
+ }
239
+ }
240
+ ,
241
+ '/headhunter/onboarding': {
242
+ params: {
243
+
244
+ }
245
+ }
246
+ ,
247
+ '/headhunter/onboarding/:questionId(introduction|country|sectors|positions|companySizes|hardSkills|targetLocations|languages|school|agency|clientsServed|usedTools|communities|seniorityAsRecruiter|seniorityAsFreelancer|minAcceptedBountyPc|finished)?': {
248
+ params: {
249
+ 'questionId': string
250
+ }
251
+ }
252
+ ,
253
+ '/headhunter/onboarding/status': {
254
+ params: {
255
+
256
+ }
257
+ }
258
+ ,
259
+ '/hub/locations': {
260
+ params: {
261
+
262
+ }
263
+ }
264
+ ,
265
+ '/hub/sectors': {
266
+ params: {
267
+
268
+ }
269
+ }
270
+ ,
271
+ '/hub/positions': {
272
+ params: {
273
+
274
+ }
275
+ }
276
+ ,
277
+ '/hub/languages': {
278
+ params: {
279
+
280
+ }
281
+ }
282
+ ,
283
+ '/hub/companySizes': {
284
+ params: {
285
+
286
+ }
287
+ }
288
+ ,
289
+ '/hub/skills/hard': {
290
+ params: {
291
+
292
+ }
293
+ }
294
+ ,
295
+ '/hub/seniorities': {
296
+ params: {
297
+
298
+ }
299
+ }
300
+ ,
301
+ '/hub/currencies': {
302
+ params: {
303
+
304
+ }
305
+ }
306
+ ,
307
+ '/hub/team/:collaboratorSlug/:resourceType(photo).webp': {
308
+ params: {
309
+ 'collaboratorSlug': string,
310
+ 'resourceType': string
311
+ }
312
+ }
313
+ ,
314
+ '/go/:recordId': {
315
+ params: {
316
+ 'recordId': string
317
+ }
318
+ }
319
+ ,
320
+ '/api/command': {
321
+ params: {
322
+
323
+ }
324
+ }
325
+ ,
326
+ '/system/webhook/airtable': {
327
+ params: {
328
+
329
+ }
330
+ }
331
+ ,
332
+ '/scraping/mission': {
333
+ params: {
334
+
335
+ }
336
+ }
337
+ ,
338
+ '/companies/signup/import/:companyName?': {
339
+ params: {
340
+ 'companyName': string
341
+ }
342
+ }
343
+ ,
344
+ '/companies': {
345
+ params: {
346
+
347
+ }
348
+ }
349
+ ,
350
+ '/companies/login': {
351
+ params: {
352
+
353
+ }
354
+ }
355
+ ,
356
+ '/companies/pricing': {
357
+ params: {
358
+
359
+ }
360
+ }
361
+ ,
362
+ '/companies/signup': {
363
+ params: {
364
+
365
+ }
366
+ }
367
+ ,
368
+ '/faq': {
369
+ params: {
370
+
371
+ }
372
+ }
373
+ ,
374
+ '/headhunters/signup/activate/:token': {
375
+ params: {
376
+ 'token': string
377
+ }
378
+ }
379
+ ,
380
+ '/headhunters': {
381
+ params: {
382
+
383
+ }
384
+ }
385
+ ,
386
+ '/headhunters/login': {
387
+ params: {
388
+
389
+ }
390
+ }
391
+ ,
392
+ '/headhunters/login/reset': {
393
+ params: {
394
+
395
+ }
396
+ }
397
+ ,
398
+ '/headhunters/login/reset/:token': {
399
+ params: {
400
+ 'token': string
401
+ }
402
+ }
403
+ ,
404
+ '/headhunters/signup': {
405
+ params: {
406
+
407
+ }
408
+ }
409
+ ,
410
+ '/help/privacy': {
411
+ params: {
412
+
413
+ }
414
+ }
415
+ ,
416
+ '/help/terms-and-conditions': {
417
+ params: {
418
+
419
+ }
420
+ }
421
+ ,
422
+ '/': {
423
+ params: {
424
+
425
+ }
426
+ }
427
+ ,
428
+ '/admin/headhunters/missions/candidates': {
429
+ params: {
430
+
431
+ }
432
+ }
433
+ ,
434
+ '/admin/headhunters/missions/current': {
435
+ params: {
436
+
437
+ }
438
+ }
439
+ ,
440
+ '/admin/headhunters': {
441
+ params: {
442
+
443
+ }
444
+ }
445
+ ,
446
+ '/admin/headhunters/missions/suggested': {
447
+ params: {
448
+
449
+ }
450
+ }
451
+ ,
452
+ '/admin/headhunters/:id': {
453
+ params: {
454
+ 'id': string
455
+ }
456
+ }
457
+ ,
458
+ '/candidate': {
459
+ params: {
460
+
461
+ }
462
+ }
463
+ ,
464
+ '/headhunter/awards': {
465
+ params: {
466
+
467
+ }
468
+ }
469
+ ,
470
+ '/headhunter/candidates': {
471
+ params: {
472
+
473
+ }
474
+ }
475
+ ,
476
+ '/headhunter/help': {
477
+ params: {
478
+
479
+ }
480
+ }
481
+ ,
482
+ '/headhunter/learn': {
483
+ params: {
484
+
485
+ }
486
+ }
487
+ ,
488
+ '/headhunter/:jobType(freelance|fullTime)?': {
489
+ params: {
490
+ 'jobType': string
491
+ }
492
+ }
493
+ ,
494
+ '/headhunter/mission/accepted/:companySlug/:missionId/submit': {
495
+ params: {
496
+ 'companySlug': string,
497
+ 'missionId': string
498
+ }
499
+ }
500
+ ,
501
+ '/headhunter/mission/:status(suggested|accepted)/:companySlug/:missionId': {
502
+ params: {
503
+ 'status': string,
504
+ 'companySlug': string,
505
+ 'missionId': string
506
+ }
507
+ }
508
+ ,
509
+ '/headhunter/refer': {
510
+ params: {
511
+
512
+ }
513
+ }
514
+ ,
515
+ '/headhunter/settings': {
516
+ params: {
517
+
518
+ }
519
+ }
520
+ ,
521
+ '/headhunter/talent-pool': {
522
+ params: {
523
+
524
+ }
525
+ }
526
+ ,
527
+ '/headhunter/consent/terms-and-conditions': {
528
+ params: {
529
+
530
+ }
531
+ }
532
+ ,
533
+ '/headhunter/onboarding': {
534
+ params: {
535
+
536
+ }
537
+ }
538
+
539
+ }
540
+ }
541
+
@@ -19,6 +19,14 @@ import { TCompileMode } from './common';
19
19
 
20
20
  type TCompilerCallback = (compiler: webpack.Compiler) => void
21
21
 
22
+ type TServiceMetas = {
23
+ id: string,
24
+ name: string,
25
+ parent: string,
26
+ dependences: string,
27
+ importationPath: string
28
+ }
29
+
22
30
  /*----------------------------------
23
31
  - FONCTION
24
32
  ----------------------------------*/
@@ -93,7 +101,7 @@ export default class Compiler {
93
101
 
94
102
  private findServices( dir: string ) {
95
103
 
96
- const blacklist = ['node_modules', '5htp-core']
104
+ const blacklist = ['node_modules', '5htp-core', '5htp']
97
105
  const files: string[] = [];
98
106
  const dirents = fs.readdirSync(dir, { withFileTypes: true });
99
107
 
@@ -135,37 +143,51 @@ export default class Compiler {
135
143
 
136
144
  // Index services
137
145
  const searchDirs = {
146
+ // The less priority is the first
147
+ // The last override the first if there are duplicates
138
148
  '@server/services/': path.join(cli.paths.core.src, 'server', 'services'),
139
149
  '@/server/services/': path.join(app.paths.src, 'server', 'services'),
140
150
  '': path.join(app.paths.root, 'node_modules'),
141
151
  }
142
152
 
153
+ const servicesIndex: {[id: string]: TServiceMetas} = {};
143
154
  for (const importationPrefix in searchDirs) {
144
155
 
145
156
  const searchDir = searchDirs[ importationPrefix ];
146
157
  const services = this.findServices(searchDir);
147
158
 
148
159
  for (const serviceDir of services) {
149
-
150
160
  const metasFile = path.join( serviceDir, 'service.json');
151
- const { id, name, parent, dependences } = require(metasFile);
152
161
 
153
162
  // The +1 is to remove the slash
154
163
  const importationPath = importationPrefix + serviceDir.substring( searchDir.length + 1 );
155
-
156
- // Generate index & typings
157
- imported.push(`import type ${name} from "${importationPath}";`);
158
- exportedType.push(`'${id}': ${name},`);
159
- // NOTE: only import enabled packages to optimize memory
160
- // TODO: don't index non-setuped packages in the exported metas
161
- exportedMetas.push(`'${id}': {
164
+
165
+ const serviceMetas = require(metasFile);
166
+
167
+ servicesIndex[ metasFile ] = {
168
+ ...serviceMetas,
169
+ importationPath
170
+ };
171
+ }
172
+ }
173
+
174
+ // Create importation directives
175
+ for (const serviceId in servicesIndex) {
176
+
177
+ const { id, name, parent, dependences, importationPath } = servicesIndex[ serviceId ];
178
+
179
+ // Generate index & typings
180
+ imported.push(`import type ${name} from "${importationPath}";`);
181
+ exportedType.push(`'${id}': ${name},`);
182
+ // NOTE: only import enabled packages to optimize memory
183
+ // TODO: don't index non-setuped packages in the exported metas
184
+ exportedMetas.push(`'${id}': {
162
185
  class: () => require("${importationPath}"),
163
186
  id: "${id}",
164
187
  name: "${name}",
165
188
  parent: "${parent}",
166
189
  dependences: ${JSON.stringify(dependences)},
167
- },`);
168
- }
190
+ },`);
169
191
  }
170
192
 
171
193
  // Define the app class identifier
package/src/index.ts CHANGED
@@ -136,7 +136,7 @@ export class CLI {
136
136
 
137
137
  }).finally(() => {
138
138
 
139
- process.exit();
139
+ process.exit(0);
140
140
 
141
141
  })
142
142
  }
@@ -51,7 +51,7 @@ class KeyboardCommands {
51
51
  if (str === 'ctrl+c') {
52
52
 
53
53
  console.log(`Exiting ...`);
54
- process.exit();
54
+ process.exit(0);
55
55
 
56
56
  }
57
57