@quesmed/types 1.4.22 → 1.4.23

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.
package/models/User.d.ts CHANGED
@@ -6,6 +6,14 @@ import { ISubscription } from './Subscription';
6
6
  import { ITopic } from './Topic';
7
7
  import { Id } from './Type';
8
8
  export declare type IClassYear = 'Year 1' | 'Year 2' | 'Year 3' | 'Year 4' | 'Year 5' | 'Graduated' | 'PhD' | 'BSc' | 'MSc' | 'Beta Tester';
9
+ export declare const classYears: IClassYear[];
10
+ export declare enum EClassYearGroup {
11
+ PRECLINICAL = 0,
12
+ CLINICAL = 1
13
+ }
14
+ export declare const classYearGroup: {
15
+ [key: string]: EClassYearGroup;
16
+ };
9
17
  export interface IPayload {
10
18
  id: Id;
11
19
  displayName: string;
@@ -46,6 +54,8 @@ export interface IUser {
46
54
  stripeSubscriptionEndDate: number | Date | null;
47
55
  stripePriceNickname: string | null;
48
56
  }
57
+ export declare function currentClassYear(createdAtUnix: number, classYear: IClassYear): IClassYear;
58
+ export declare function currentClassGroup(createdAtUnix: number, classYear: IClassYear): EClassYearGroup;
49
59
  export interface IUserCompletedQuestions {
50
60
  id: Id;
51
61
  createdAt: number | Date;
package/models/User.js CHANGED
@@ -1,2 +1,61 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.currentClassGroup = exports.currentClassYear = exports.classYearGroup = exports.EClassYearGroup = exports.classYears = void 0;
4
+ exports.classYears = [
5
+ 'Year 1',
6
+ 'Year 2',
7
+ 'Year 3',
8
+ 'Year 4',
9
+ 'Year 5',
10
+ 'Graduated',
11
+ ];
12
+ var EClassYearGroup;
13
+ (function (EClassYearGroup) {
14
+ EClassYearGroup[EClassYearGroup["PRECLINICAL"] = 0] = "PRECLINICAL";
15
+ EClassYearGroup[EClassYearGroup["CLINICAL"] = 1] = "CLINICAL";
16
+ })(EClassYearGroup = exports.EClassYearGroup || (exports.EClassYearGroup = {}));
17
+ exports.classYearGroup = {
18
+ 'Year 1': EClassYearGroup.PRECLINICAL,
19
+ 'Year 2': EClassYearGroup.PRECLINICAL,
20
+ 'Year 3': EClassYearGroup.CLINICAL,
21
+ 'Year 4': EClassYearGroup.CLINICAL,
22
+ 'Year 5': EClassYearGroup.CLINICAL,
23
+ Graduated: EClassYearGroup.CLINICAL,
24
+ PhD: EClassYearGroup.CLINICAL,
25
+ BSc: EClassYearGroup.PRECLINICAL,
26
+ MSc: EClassYearGroup.CLINICAL,
27
+ 'Beta Tester': EClassYearGroup.CLINICAL,
28
+ };
29
+ function currentClassYear(createdAtUnix, classYear) {
30
+ if (!createdAtUnix) {
31
+ return classYear;
32
+ }
33
+ const lastClassYearIdx = exports.classYears.length - 1;
34
+ const classYearsIdx = exports.classYears.findIndex((x) => x === classYear);
35
+ if (classYearsIdx === -1) {
36
+ return exports.classYears[lastClassYearIdx];
37
+ }
38
+ const now = new Date();
39
+ const currentYear = now.getFullYear();
40
+ const createdAt = new Date(createdAtUnix * 1000);
41
+ const createdYear = createdAt.getFullYear();
42
+ let yearsAdded = currentYear - createdYear;
43
+ const createdAcademicYear = new Date(createdYear, 7, 1);
44
+ const nowAcademicYear = new Date(currentYear, 7, 1);
45
+ if (createdAt > createdAcademicYear) {
46
+ yearsAdded--;
47
+ }
48
+ if (now > nowAcademicYear) {
49
+ yearsAdded++;
50
+ }
51
+ const newClassYearIdx = classYearsIdx + yearsAdded;
52
+ return newClassYearIdx > lastClassYearIdx
53
+ ? exports.classYears[lastClassYearIdx]
54
+ : exports.classYears[newClassYearIdx];
55
+ }
56
+ exports.currentClassYear = currentClassYear;
57
+ function currentClassGroup(createdAtUnix, classYear) {
58
+ const currentClass = currentClassYear(createdAtUnix, classYear);
59
+ return exports.classYearGroup[currentClass] || EClassYearGroup.CLINICAL;
60
+ }
61
+ exports.currentClassGroup = currentClassGroup;
package/models/User.mjs CHANGED
@@ -1 +1,56 @@
1
- export {};
1
+ export const classYears = [
2
+ 'Year 1',
3
+ 'Year 2',
4
+ 'Year 3',
5
+ 'Year 4',
6
+ 'Year 5',
7
+ 'Graduated',
8
+ ];
9
+ export var EClassYearGroup;
10
+ (function (EClassYearGroup) {
11
+ EClassYearGroup[EClassYearGroup["PRECLINICAL"] = 0] = "PRECLINICAL";
12
+ EClassYearGroup[EClassYearGroup["CLINICAL"] = 1] = "CLINICAL";
13
+ })(EClassYearGroup || (EClassYearGroup = {}));
14
+ export const classYearGroup = {
15
+ 'Year 1': EClassYearGroup.PRECLINICAL,
16
+ 'Year 2': EClassYearGroup.PRECLINICAL,
17
+ 'Year 3': EClassYearGroup.CLINICAL,
18
+ 'Year 4': EClassYearGroup.CLINICAL,
19
+ 'Year 5': EClassYearGroup.CLINICAL,
20
+ Graduated: EClassYearGroup.CLINICAL,
21
+ PhD: EClassYearGroup.CLINICAL,
22
+ BSc: EClassYearGroup.PRECLINICAL,
23
+ MSc: EClassYearGroup.CLINICAL,
24
+ 'Beta Tester': EClassYearGroup.CLINICAL,
25
+ };
26
+ export function currentClassYear(createdAtUnix, classYear) {
27
+ if (!createdAtUnix) {
28
+ return classYear;
29
+ }
30
+ const lastClassYearIdx = classYears.length - 1;
31
+ const classYearsIdx = classYears.findIndex((x) => x === classYear);
32
+ if (classYearsIdx === -1) {
33
+ return classYears[lastClassYearIdx];
34
+ }
35
+ const now = new Date();
36
+ const currentYear = now.getFullYear();
37
+ const createdAt = new Date(createdAtUnix * 1000);
38
+ const createdYear = createdAt.getFullYear();
39
+ let yearsAdded = currentYear - createdYear;
40
+ const createdAcademicYear = new Date(createdYear, 7, 1);
41
+ const nowAcademicYear = new Date(currentYear, 7, 1);
42
+ if (createdAt > createdAcademicYear) {
43
+ yearsAdded--;
44
+ }
45
+ if (now > nowAcademicYear) {
46
+ yearsAdded++;
47
+ }
48
+ const newClassYearIdx = classYearsIdx + yearsAdded;
49
+ return newClassYearIdx > lastClassYearIdx
50
+ ? classYears[lastClassYearIdx]
51
+ : classYears[newClassYearIdx];
52
+ }
53
+ export function currentClassGroup(createdAtUnix, classYear) {
54
+ const currentClass = currentClassYear(createdAtUnix, classYear);
55
+ return classYearGroup[currentClass] || EClassYearGroup.CLINICAL;
56
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quesmed/types",
3
- "version": "1.4.22",
3
+ "version": "1.4.23",
4
4
  "description": "Typescript types for Quesmed",
5
5
  "main": "index.js",
6
6
  "module": "index.mjs",