@fplpool/fpl-models 1.0.0 → 1.1.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 (115) hide show
  1. package/dist/config/index.d.ts +34 -0
  2. package/dist/config/index.d.ts.map +1 -0
  3. package/{src/config/index.ts → dist/config/index.js} +7 -8
  4. package/dist/config/index.js.map +1 -0
  5. package/dist/enums/status-code.enum.d.ts +32 -0
  6. package/dist/enums/status-code.enum.d.ts.map +1 -0
  7. package/dist/enums/status-code.enum.js +36 -0
  8. package/dist/enums/status-code.enum.js.map +1 -0
  9. package/dist/enums/status.enum.d.ts +7 -0
  10. package/dist/enums/status.enum.d.ts.map +1 -0
  11. package/dist/enums/status.enum.js +10 -0
  12. package/dist/enums/status.enum.js.map +1 -0
  13. package/dist/errors/advanced.error.d.ts +5 -0
  14. package/dist/errors/advanced.error.d.ts.map +1 -0
  15. package/dist/errors/advanced.error.js +10 -0
  16. package/dist/errors/advanced.error.js.map +1 -0
  17. package/dist/index.d.ts +41 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +82 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/models/card.model.d.ts +22 -0
  22. package/dist/models/card.model.d.ts.map +1 -0
  23. package/{src/models/card.model.ts → dist/models/card.model.js} +20 -35
  24. package/dist/models/card.model.js.map +1 -0
  25. package/dist/models/config.model.d.ts +21 -0
  26. package/dist/models/config.model.d.ts.map +1 -0
  27. package/{src/models/config.model.ts → dist/models/config.model.js} +8 -23
  28. package/dist/models/config.model.js.map +1 -0
  29. package/dist/models/invoice.model.d.ts +35 -0
  30. package/dist/models/invoice.model.d.ts.map +1 -0
  31. package/dist/models/invoice.model.js +79 -0
  32. package/dist/models/invoice.model.js.map +1 -0
  33. package/dist/models/job.model.d.ts +26 -0
  34. package/dist/models/job.model.d.ts.map +1 -0
  35. package/dist/models/job.model.js +48 -0
  36. package/dist/models/job.model.js.map +1 -0
  37. package/dist/models/pool-gameweek-deadline.model.d.ts +21 -0
  38. package/dist/models/pool-gameweek-deadline.model.d.ts.map +1 -0
  39. package/dist/models/pool-gameweek-deadline.model.js +37 -0
  40. package/dist/models/pool-gameweek-deadline.model.js.map +1 -0
  41. package/dist/models/pool-gameweek-winner.model.d.ts +24 -0
  42. package/dist/models/pool-gameweek-winner.model.d.ts.map +1 -0
  43. package/dist/models/pool-gameweek-winner.model.js +43 -0
  44. package/dist/models/pool-gameweek-winner.model.js.map +1 -0
  45. package/dist/models/pool-gameweek.model.d.ts +27 -0
  46. package/dist/models/pool-gameweek.model.d.ts.map +1 -0
  47. package/dist/models/pool-gameweek.model.js +99 -0
  48. package/dist/models/pool-gameweek.model.js.map +1 -0
  49. package/dist/models/pool-invite.model.d.ts +26 -0
  50. package/dist/models/pool-invite.model.d.ts.map +1 -0
  51. package/dist/models/pool-invite.model.js +54 -0
  52. package/dist/models/pool-invite.model.js.map +1 -0
  53. package/dist/models/pool-member.model.d.ts +22 -0
  54. package/dist/models/pool-member.model.d.ts.map +1 -0
  55. package/dist/models/pool-member.model.js +45 -0
  56. package/dist/models/pool-member.model.js.map +1 -0
  57. package/dist/models/pool-transaction.model.d.ts +31 -0
  58. package/dist/models/pool-transaction.model.d.ts.map +1 -0
  59. package/dist/models/pool-transaction.model.js +109 -0
  60. package/dist/models/pool-transaction.model.js.map +1 -0
  61. package/dist/models/pool-wallet.model.d.ts +18 -0
  62. package/dist/models/pool-wallet.model.d.ts.map +1 -0
  63. package/dist/models/pool-wallet.model.js +86 -0
  64. package/dist/models/pool-wallet.model.js.map +1 -0
  65. package/dist/models/pool.model.d.ts +42 -0
  66. package/dist/models/pool.model.d.ts.map +1 -0
  67. package/{src/models/pool.model.ts → dist/models/pool.model.js} +33 -65
  68. package/dist/models/pool.model.js.map +1 -0
  69. package/dist/models/session.model.d.ts +19 -0
  70. package/dist/models/session.model.d.ts.map +1 -0
  71. package/dist/models/session.model.js +28 -0
  72. package/dist/models/session.model.js.map +1 -0
  73. package/dist/models/transaction.model.d.ts +32 -0
  74. package/dist/models/transaction.model.d.ts.map +1 -0
  75. package/{src/models/transaction.model.ts → dist/models/transaction.model.js} +38 -65
  76. package/dist/models/transaction.model.js.map +1 -0
  77. package/dist/models/user-settings.model.d.ts +20 -0
  78. package/dist/models/user-settings.model.d.ts.map +1 -0
  79. package/{src/models/user-settings.model.ts → dist/models/user-settings.model.js} +14 -29
  80. package/dist/models/user-settings.model.js.map +1 -0
  81. package/dist/models/user.model.d.ts +23 -0
  82. package/dist/models/user.model.d.ts.map +1 -0
  83. package/{src/models/user.model.ts → dist/models/user.model.js} +20 -37
  84. package/dist/models/user.model.js.map +1 -0
  85. package/dist/models/wallet.model.d.ts +23 -0
  86. package/dist/models/wallet.model.d.ts.map +1 -0
  87. package/dist/models/wallet.model.js +141 -0
  88. package/dist/models/wallet.model.js.map +1 -0
  89. package/dist/repositories/generic.repository.d.ts +17 -0
  90. package/dist/repositories/generic.repository.d.ts.map +1 -0
  91. package/dist/repositories/generic.repository.js +55 -0
  92. package/dist/repositories/generic.repository.js.map +1 -0
  93. package/dist/types/pool.d.ts +6 -0
  94. package/dist/types/pool.d.ts.map +1 -0
  95. package/dist/types/pool.js +10 -0
  96. package/dist/types/pool.js.map +1 -0
  97. package/dist/types/wallet.d.ts +16 -0
  98. package/dist/types/wallet.d.ts.map +1 -0
  99. package/dist/types/wallet.js +22 -0
  100. package/dist/types/wallet.js.map +1 -0
  101. package/package.json +11 -4
  102. package/src/index.ts +0 -19
  103. package/src/models/invoice.model.ts +0 -100
  104. package/src/models/job.model.ts +0 -62
  105. package/src/models/pool-gameweek-deadline.model.ts +0 -46
  106. package/src/models/pool-gameweek-winner.model.ts +0 -55
  107. package/src/models/pool-gameweek.model.ts +0 -114
  108. package/src/models/pool-invite.model.ts +0 -65
  109. package/src/models/pool-member.model.ts +0 -53
  110. package/src/models/pool-transaction.model.ts +0 -130
  111. package/src/models/pool-wallet.model.ts +0 -89
  112. package/src/models/session.model.ts +0 -45
  113. package/src/models/wallet.model.ts +0 -154
  114. package/src/repositories/generic.repository.ts +0 -86
  115. package/tsconfig.json +0 -103
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.model.js","sourceRoot":"","sources":["../../src/models/transaction.model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Document } from "mongoose";
2
+ import { Types } from "mongoose";
3
+ export interface IUserSettings extends Document {
4
+ _id: Types.ObjectId;
5
+ twoFaEnabled: boolean;
6
+ twoFaSecret?: string;
7
+ country: string;
8
+ currency: string;
9
+ createdAt: Date;
10
+ updatedAt: Date;
11
+ }
12
+ declare const UserSettings: import("mongoose").Model<IUserSettings, {}, {}, {}, Document<unknown, {}, IUserSettings, {}, import("mongoose").DefaultSchemaOptions> & IUserSettings & Required<{
13
+ _id: Types.ObjectId;
14
+ }> & {
15
+ __v: number;
16
+ } & {
17
+ id: string;
18
+ }, any, IUserSettings>;
19
+ export default UserSettings;
20
+ //# sourceMappingURL=user-settings.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-settings.model.d.ts","sourceRoot":"","sources":["../../src/models/user-settings.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAgB,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAOjC,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC3C,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACnB;AAkCD,QAAA,MAAM,YAAY;;;;;;sBAAuE,CAAC;AAE1F,eAAe,YAAY,CAAC"}
@@ -1,23 +1,11 @@
1
- import {Document, Schema, model} from "mongoose";
2
- import { Types } from "mongoose";
3
-
4
- import config from "../config";
5
-
6
-
7
-
8
-
9
- export interface IUserSettings extends Document {
10
- _id: Types.ObjectId;
11
- twoFaEnabled: boolean;
12
- twoFaSecret?: string;
13
- country: string;
14
- currency: string;
15
- createdAt: Date;
16
- updatedAt: Date;
17
- }
18
-
19
-
20
- const userSettingsSchema = new Schema<IUserSettings>({
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const mongoose_1 = require("mongoose");
7
+ const config_1 = __importDefault(require("../config"));
8
+ const userSettingsSchema = new mongoose_1.Schema({
21
9
  twoFaEnabled: {
22
10
  type: Boolean,
23
11
  required: [true, 'Two factor authentication is required'],
@@ -42,12 +30,9 @@ const userSettingsSchema = new Schema<IUserSettings>({
42
30
  },
43
31
  }, {
44
32
  timestamps: true,
45
- toJSON: {virtuals: true},
46
- toObject: {virtuals: true}
47
- })
48
-
49
-
50
-
51
- const UserSettings = model<IUserSettings>(config.models.userSettings, userSettingsSchema);
52
-
53
- export default UserSettings;
33
+ toJSON: { virtuals: true },
34
+ toObject: { virtuals: true }
35
+ });
36
+ const UserSettings = (0, mongoose_1.model)(config_1.default.models.userSettings, userSettingsSchema);
37
+ exports.default = UserSettings;
38
+ //# sourceMappingURL=user-settings.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-settings.model.js","sourceRoot":"","sources":["../../src/models/user-settings.model.ts"],"names":[],"mappings":";;;;;AAAA,uCAAiD;AAGjD,uDAA+B;AAgB/B,MAAM,kBAAkB,GAAG,IAAI,iBAAM,CAAgB;IACjD,YAAY,EAAE;QACV,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,CAAC,IAAI,EAAE,uCAAuC,CAAC;QACzD,OAAO,EAAE,KAAK;KACjB;IACD,WAAW,EAAE;QACT,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,IAAI;KAChB;IACD,OAAO,EAAE;QACL,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,qBAAqB,CAAC;QACvC,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,CAAC,EAAE,EAAE,yCAAyC,CAAC;KAC7D;IACD,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,sBAAsB,CAAC;QACxC,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,CAAC,EAAE,EAAE,0CAA0C,CAAC;KAC9D;CACJ,EAAE;IACC,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;IACxB,QAAQ,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;CAC7B,CAAC,CAAA;AAIF,MAAM,YAAY,GAAG,IAAA,gBAAK,EAAgB,gBAAM,CAAC,MAAM,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;AAE1F,kBAAe,YAAY,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { Document, Types } from "mongoose";
2
+ import { IUserSettings } from "./user-settings.model";
3
+ export interface IUser extends Document {
4
+ _id: Types.ObjectId;
5
+ uid: string;
6
+ email: string;
7
+ firstName: string;
8
+ lastName: string;
9
+ teamName: string;
10
+ emailVerifiedAt: Date | null;
11
+ settings: IUserSettings;
12
+ createdAt: Date;
13
+ updatedAt: Date;
14
+ }
15
+ declare const User: import("mongoose").Model<IUser, {}, {}, {}, Document<unknown, {}, IUser, {}, import("mongoose").DefaultSchemaOptions> & IUser & Required<{
16
+ _id: Types.ObjectId;
17
+ }> & {
18
+ __v: number;
19
+ } & {
20
+ id: string;
21
+ }, any, IUser>;
22
+ export default User;
23
+ //# sourceMappingURL=user.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.model.d.ts","sourceRoot":"","sources":["../../src/models/user.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAU,KAAK,EAAQ,MAAM,UAAU,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,MAAM,WAAW,KAAM,SAAQ,QAAQ;IACnC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACnB;AA8DD,QAAA,MAAM,IAAI;;;;;;cAA+C,CAAA;AAEzD,eAAe,IAAI,CAAC"}
@@ -1,23 +1,11 @@
1
- import {Document, Schema, Types, model} from "mongoose";
2
- import config from "../config";
3
- import { IUserSettings } from "./user-settings.model";
4
-
5
-
6
- export interface IUser extends Document {
7
- _id: Types.ObjectId;
8
- uid: string;
9
- email: string;
10
- firstName: string;
11
- lastName: string;
12
- teamName: string;
13
- emailVerifiedAt: Date | null;
14
- settings: IUserSettings;
15
- createdAt: Date;
16
- updatedAt: Date;
17
- }
18
-
19
-
20
- const userSchema = new Schema<IUser>({
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const mongoose_1 = require("mongoose");
7
+ const config_1 = __importDefault(require("../config"));
8
+ const userSchema = new mongoose_1.Schema({
21
9
  uid: {
22
10
  type: String,
23
11
  required: [true, 'UID is required'],
@@ -33,8 +21,8 @@ const userSchema = new Schema<IUser>({
33
21
  match: [/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/, 'Please enter a valid email']
34
22
  },
35
23
  settings: {
36
- type: Schema.Types.ObjectId,
37
- ref: config.models.userSettings,
24
+ type: mongoose_1.Schema.Types.ObjectId,
25
+ ref: config_1.default.models.userSettings,
38
26
  required: true,
39
27
  unique: true
40
28
  },
@@ -62,20 +50,15 @@ const userSchema = new Schema<IUser>({
62
50
  },
63
51
  }, {
64
52
  timestamps: true,
65
- toJSON: {virtuals: true},
66
- toObject: {virtuals: true}
67
- })
68
-
69
- userSchema.virtual('fullName').get(function(){
70
- return `${this.firstName} ${this.lastName}`
71
- })
72
-
53
+ toJSON: { virtuals: true },
54
+ toObject: { virtuals: true }
55
+ });
56
+ userSchema.virtual('fullName').get(function () {
57
+ return `${this.firstName} ${this.lastName}`;
58
+ });
73
59
  // userSchema.index({uid: 1})
74
- userSchema.index({teamName: 1})
60
+ userSchema.index({ teamName: 1 });
75
61
  // userSchema.index({email: 1})
76
-
77
-
78
-
79
- const User = model<IUser>(config.models.user, userSchema)
80
-
81
- export default User;
62
+ const User = (0, mongoose_1.model)(config_1.default.models.user, userSchema);
63
+ exports.default = User;
64
+ //# sourceMappingURL=user.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.model.js","sourceRoot":"","sources":["../../src/models/user.model.ts"],"names":[],"mappings":";;;;;AAAA,uCAAwD;AACxD,uDAA+B;AAkB/B,MAAM,UAAU,GAAG,IAAI,iBAAM,CAAQ;IACjC,GAAG,EAAE;QACD,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC;QACnC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,CAAC,EAAE,EAAE,qCAAqC,CAAC;KACzD;IACD,KAAK,EAAE;QACH,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC;QACrC,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,CAAC,+CAA+C,EAAE,4BAA4B,CAAC;KACzF;IACD,QAAQ,EAAE;QACN,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,QAAQ;QAC3B,GAAG,EAAE,gBAAM,CAAC,MAAM,CAAC,YAAY;QAC/B,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;KACf;IACD,SAAS,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,wBAAwB,CAAC;QAC1C,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,CAAC,EAAE,EAAE,4CAA4C,CAAC;KAChE;IACD,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,uBAAuB,CAAC;QACzC,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,CAAC,EAAE,EAAE,2CAA2C,CAAC;KAC/D;IACD,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,uBAAuB,CAAC;QACzC,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,CAAC,EAAE,EAAE,2CAA2C,CAAC;KAC/D;IACD,eAAe,EAAE;QACb,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI;KAChB;CACJ,EAAE;IACC,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;IACxB,QAAQ,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;CAC7B,CAAC,CAAA;AAEF,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC;IAC/B,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;AAC/C,CAAC,CAAC,CAAA;AAEF,6BAA6B;AAC7B,UAAU,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAE,CAAC,EAAC,CAAC,CAAA;AAC/B,+BAA+B;AAI/B,MAAM,IAAI,GAAG,IAAA,gBAAK,EAAQ,gBAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;AAEzD,kBAAe,IAAI,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { Types, Document } from "mongoose";
2
+ import { ITransaction } from "./transaction.model";
3
+ export interface IWallet extends Document {
4
+ _id: Types.ObjectId;
5
+ user: Types.ObjectId;
6
+ cards: Types.ObjectId[];
7
+ balance: string;
8
+ availableBalance: string;
9
+ customerId?: string;
10
+ createdAt: Date;
11
+ updatedAt: Date;
12
+ debit: (transaction: ITransaction) => Promise<void>;
13
+ refund: (transaction: ITransaction) => Promise<void>;
14
+ }
15
+ declare const Wallet: import("mongoose").Model<IWallet, {}, {}, {}, Document<unknown, {}, IWallet, {}, import("mongoose").DefaultSchemaOptions> & IWallet & Required<{
16
+ _id: Types.ObjectId;
17
+ }> & {
18
+ __v: number;
19
+ } & {
20
+ id: string;
21
+ }, any, IWallet>;
22
+ export default Wallet;
23
+ //# sourceMappingURL=wallet.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.model.d.ts","sourceRoot":"","sources":["../../src/models/wallet.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,EAAE,QAAQ,EAAC,MAAM,UAAU,CAAC;AAIxD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOnD,MAAM,WAAW,OAAQ,SAAQ,QAAQ;IACrC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC;IACpB,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,CAAC,WAAW,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,EAAE,CAAC,WAAW,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AA+HD,QAAA,MAAM,MAAM;;;;;;gBAAqD,CAAC;AAGlE,eAAe,MAAM,CAAC"}
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const mongoose_1 = require("mongoose");
7
+ const config_1 = __importDefault(require("../config"));
8
+ const pool_transaction_model_1 = require("./pool-transaction.model");
9
+ const advanced_error_1 = __importDefault(require("../errors/advanced.error"));
10
+ const status_code_enum_1 = __importDefault(require("../enums/status-code.enum"));
11
+ const wallet_1 = require("../types/wallet");
12
+ const walletSchema = new mongoose_1.Schema({
13
+ user: {
14
+ type: mongoose_1.Schema.Types.ObjectId,
15
+ ref: config_1.default.models.user,
16
+ required: true,
17
+ unique: [true, 'User already has a wallet'],
18
+ },
19
+ customerId: {
20
+ type: String,
21
+ required: false,
22
+ default: null,
23
+ unique: true
24
+ },
25
+ cards: [{
26
+ type: mongoose_1.Schema.Types.ObjectId,
27
+ ref: config_1.default.models.card
28
+ }],
29
+ balance: {
30
+ type: String,
31
+ required: true,
32
+ match: pool_transaction_model_1.poolAmountPattern,
33
+ set: function (value) {
34
+ // If value already looks like a float (has a .), ensure two decimals
35
+ if (typeof value === "string") {
36
+ if (pool_transaction_model_1.poolAmountPattern.test(value)) {
37
+ // If it has a dot but is not two decimals, pad right
38
+ if (value.indexOf('.') !== -1) {
39
+ let [whole, decimals] = value.split('.');
40
+ if (decimals === undefined)
41
+ return whole + ".00";
42
+ if (decimals.length === 1)
43
+ return whole + "." + decimals + "0";
44
+ if (decimals.length === 2)
45
+ return value;
46
+ if (decimals.length > 2)
47
+ return whole + "." + decimals.slice(0, 2);
48
+ }
49
+ // No decimal: add .00
50
+ return value + ".00";
51
+ }
52
+ // If it's an integer, add .00
53
+ if (/^\d+$/.test(value)) {
54
+ return value + ".00";
55
+ }
56
+ }
57
+ return value;
58
+ },
59
+ default: "0.00"
60
+ },
61
+ availableBalance: {
62
+ type: String,
63
+ required: false,
64
+ match: pool_transaction_model_1.poolAmountPattern,
65
+ set: function (value) {
66
+ // If value already looks like a float (has a .), ensure two decimals
67
+ if (typeof value === "string") {
68
+ if (pool_transaction_model_1.poolAmountPattern.test(value)) {
69
+ // If it has a dot but is not two decimals, pad right
70
+ if (value.indexOf('.') !== -1) {
71
+ let [whole, decimals] = value.split('.');
72
+ if (decimals === undefined)
73
+ return whole + ".00";
74
+ if (decimals.length === 1)
75
+ return whole + "." + decimals + "0";
76
+ if (decimals.length === 2)
77
+ return value;
78
+ if (decimals.length > 2)
79
+ return whole + "." + decimals.slice(0, 2);
80
+ }
81
+ // No decimal: add .00
82
+ return value + ".00";
83
+ }
84
+ // If it's an integer, add .00
85
+ if (/^\d+$/.test(value)) {
86
+ return value + ".00";
87
+ }
88
+ }
89
+ return value;
90
+ },
91
+ default: "0.00"
92
+ }
93
+ }, {
94
+ timestamps: true,
95
+ toJSON: { virtuals: true },
96
+ toObject: { virtuals: true }
97
+ });
98
+ walletSchema.methods.debit = async function (transaction) {
99
+ try {
100
+ if (transaction.type !== wallet_1.TransactionType.Debit)
101
+ throw new advanced_error_1.default('Invalid debit transaction', status_code_enum_1.default.BAD_REQUEST);
102
+ if (transaction.status === wallet_1.TransactionStatus.Failed)
103
+ throw new advanced_error_1.default('This transaction has already failed', status_code_enum_1.default.BAD_REQUEST);
104
+ //at this point the wallet was found
105
+ let hasEnoughBalance = parseFloat(this.balance) >= parseFloat(transaction.amount);
106
+ if (!hasEnoughBalance)
107
+ throw new advanced_error_1.default('Insufficient balance', status_code_enum_1.default.BAD_REQUEST);
108
+ //at this point the wallet has enough funds to make the debit
109
+ if (transaction.status === wallet_1.TransactionStatus.Pending)
110
+ throw new advanced_error_1.default('This transaction is still pending', status_code_enum_1.default.BAD_REQUEST);
111
+ //at this point the status is completed
112
+ this.balance = (parseFloat(this.balance) - parseFloat(transaction.amount)).toString();
113
+ console.log("[*] Wallet debited", { wallet: this.toJSON(), transaction: transaction.toJSON() });
114
+ await this.save();
115
+ }
116
+ catch (e) {
117
+ console.error("[*] Error debiting wallet", { error: e.message, stack: e.stack });
118
+ throw new advanced_error_1.default(e.message, e.statusCode || status_code_enum_1.default.INTERNAL_SERVER_ERROR);
119
+ }
120
+ };
121
+ walletSchema.methods.refund = async function (transaction) {
122
+ try {
123
+ //check that the transaction is a debit transaction
124
+ if (transaction.type !== wallet_1.TransactionType.Debit)
125
+ throw new advanced_error_1.default("Cannot refund a credit transaction", status_code_enum_1.default.BAD_REQUEST);
126
+ if (transaction.status !== wallet_1.TransactionStatus.Failed)
127
+ throw new advanced_error_1.default("Cannot refund a successful or pending transaction", status_code_enum_1.default.BAD_REQUEST);
128
+ //at this point the transaction checks out
129
+ //now we can refund the balance to their available balance, since we deducted it from their available balance only
130
+ this.availableBalance = parseFloat(this.availableBalance) + parseFloat(transaction.amount);
131
+ console.log("[*] Wallet refunded", { wallet: this.toJSON(), transaction: transaction.toJSON() });
132
+ await this.save();
133
+ }
134
+ catch (e) {
135
+ console.error("[*] Error refunding wallet", { error: e.message, stack: e.stack });
136
+ throw new advanced_error_1.default(e.message, e.statusCode || status_code_enum_1.default.INTERNAL_SERVER_ERROR);
137
+ }
138
+ };
139
+ const Wallet = (0, mongoose_1.model)(config_1.default.models.wallet, walletSchema);
140
+ exports.default = Wallet;
141
+ //# sourceMappingURL=wallet.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.model.js","sourceRoot":"","sources":["../../src/models/wallet.model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { Model, PipelineStage, Types, UpdateQuery, QueryFilter } from "mongoose";
2
+ export default class GenericRepository<U> {
3
+ readonly model: Model<U>;
4
+ constructor(model: Model<U>);
5
+ create(data: Partial<U>): Promise<U>;
6
+ get(filters: QueryFilter<U>, populate?: string[]): Promise<U | null>;
7
+ aggregate(pipeline: PipelineStage[]): Promise<any[]>;
8
+ exists(filters: QueryFilter<U>): Promise<boolean>;
9
+ count(filters: QueryFilter<U>): Promise<number>;
10
+ getAll(filters: QueryFilter<U>, populate?: string[]): Promise<U[]>;
11
+ getAllWithoutVirtuals(filters: QueryFilter<U>, virtuals: boolean, populate?: string[]): Promise<U[]>;
12
+ paginate(filters: QueryFilter<U>, populate?: string[], limit?: number, page?: number, order?: 'asc' | 'desc'): Promise<U[]>;
13
+ update(id: Types.ObjectId, entity: UpdateQuery<U>): Promise<U | null>;
14
+ delete(id: Types.ObjectId): Promise<U | null>;
15
+ deleteMany(filters: QueryFilter<U>): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=generic.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/generic.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAIjF,MAAM,CAAC,OAAO,OAAO,iBAAiB,CAAC,CAAC;aAED,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;gBAAf,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAErC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAUpC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAOxE,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAOpD,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAMjD,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAO/C,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAOtE,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAOxG,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAE,MAAM,EAAO,EAAE,KAAK,GAAE,MAAW,EAAE,IAAI,GAAE,MAAQ,EAAE,KAAK,GAAE,KAAK,GAAG,MAAe,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAO5I,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAOrE,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAO7C,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAKlE"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class GenericRepository {
4
+ constructor(model) {
5
+ this.model = model;
6
+ }
7
+ async create(data) {
8
+ const newEntity = await this.model.create(data);
9
+ await newEntity.save();
10
+ console.log(`Entity created: ${newEntity.toJSON()}`);
11
+ return newEntity;
12
+ }
13
+ async get(filters, populate = []) {
14
+ const entity = await this.model.findOne(filters).populate(populate);
15
+ return entity;
16
+ }
17
+ async aggregate(pipeline) {
18
+ const result = await this.model.aggregate(pipeline).exec();
19
+ return result;
20
+ }
21
+ async exists(filters) {
22
+ const entity = await this.model.exists(filters);
23
+ return entity ? true : false;
24
+ }
25
+ async count(filters) {
26
+ const count = await this.model.countDocuments(filters);
27
+ return count;
28
+ }
29
+ async getAll(filters, populate = []) {
30
+ const entities = await this.model.find(filters).populate(populate);
31
+ return entities;
32
+ }
33
+ async getAllWithoutVirtuals(filters, virtuals, populate = []) {
34
+ const entities = await this.model.find(filters).populate(populate).lean({ virtuals });
35
+ return entities;
36
+ }
37
+ async paginate(filters, populate = [], limit = 20, page = 1, order = 'desc') {
38
+ const entities = await this.model.find(filters).skip(limit * (page - 1)).limit(limit).populate(populate).sort({ createdAt: order });
39
+ return entities;
40
+ }
41
+ async update(id, entity) {
42
+ const updatedEntity = await this.model.findByIdAndUpdate(id, entity, { new: true });
43
+ return updatedEntity;
44
+ }
45
+ async delete(id) {
46
+ const deletedEntity = await this.model.findByIdAndDelete(id);
47
+ return deletedEntity;
48
+ }
49
+ async deleteMany(filters) {
50
+ await this.model.deleteMany(filters);
51
+ console.log(`Entities deleted: ${filters}`);
52
+ }
53
+ }
54
+ exports.default = GenericRepository;
55
+ //# sourceMappingURL=generic.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic.repository.js","sourceRoot":"","sources":["../../src/repositories/generic.repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare enum PoolType {
2
+ Weekly = "weekly",
3
+ Seasonal = "seasonal",
4
+ BiSeasonal = "bi-seasonal"
5
+ }
6
+ //# sourceMappingURL=pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../src/types/pool.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAChB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,UAAU,gBAAgB;CAC7B"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PoolType = void 0;
4
+ var PoolType;
5
+ (function (PoolType) {
6
+ PoolType["Weekly"] = "weekly";
7
+ PoolType["Seasonal"] = "seasonal";
8
+ PoolType["BiSeasonal"] = "bi-seasonal";
9
+ })(PoolType || (exports.PoolType = PoolType = {}));
10
+ //# sourceMappingURL=pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/types/pool.ts"],"names":[],"mappings":";;;AAAA,IAAY,QAIX;AAJD,WAAY,QAAQ;IAChB,6BAAiB,CAAA;IACjB,iCAAqB,CAAA;IACrB,sCAA0B,CAAA;AAC9B,CAAC,EAJW,QAAQ,wBAAR,QAAQ,QAInB"}
@@ -0,0 +1,16 @@
1
+ export declare enum TransactionType {
2
+ Debit = "debit",
3
+ Credit = "credit"
4
+ }
5
+ export declare enum TransactionMethod {
6
+ Card = "card",
7
+ Wallet = "wallet",
8
+ BankTransfer = "bank-transfer",
9
+ Crypto = "crypto"
10
+ }
11
+ export declare enum TransactionStatus {
12
+ Pending = "pending",
13
+ Completed = "completed",
14
+ Failed = "failed"
15
+ }
16
+ //# sourceMappingURL=wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/types/wallet.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACvB,KAAK,UAAU;IACf,MAAM,WAAW;CACpB;AAGD,oBAAY,iBAAiB;IACzB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,YAAY,kBAAkB;IAC9B,MAAM,WAAW;CACpB;AAGD,oBAAY,iBAAiB;IACzB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;CACpB"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransactionStatus = exports.TransactionMethod = exports.TransactionType = void 0;
4
+ var TransactionType;
5
+ (function (TransactionType) {
6
+ TransactionType["Debit"] = "debit";
7
+ TransactionType["Credit"] = "credit";
8
+ })(TransactionType || (exports.TransactionType = TransactionType = {}));
9
+ var TransactionMethod;
10
+ (function (TransactionMethod) {
11
+ TransactionMethod["Card"] = "card";
12
+ TransactionMethod["Wallet"] = "wallet";
13
+ TransactionMethod["BankTransfer"] = "bank-transfer";
14
+ TransactionMethod["Crypto"] = "crypto";
15
+ })(TransactionMethod || (exports.TransactionMethod = TransactionMethod = {}));
16
+ var TransactionStatus;
17
+ (function (TransactionStatus) {
18
+ TransactionStatus["Pending"] = "pending";
19
+ TransactionStatus["Completed"] = "completed";
20
+ TransactionStatus["Failed"] = "failed";
21
+ })(TransactionStatus || (exports.TransactionStatus = TransactionStatus = {}));
22
+ //# sourceMappingURL=wallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/types/wallet.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAGX;AAHD,WAAY,eAAe;IACvB,kCAAe,CAAA;IACf,oCAAiB,CAAA;AACrB,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B;AAGD,IAAY,iBAKX;AALD,WAAY,iBAAiB;IACzB,kCAAa,CAAA;IACb,sCAAiB,CAAA;IACjB,mDAA8B,CAAA;IAC9B,sCAAiB,CAAA;AACrB,CAAC,EALW,iBAAiB,iCAAjB,iBAAiB,QAK5B;AAGD,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IACzB,wCAAmB,CAAA;IACnB,4CAAuB,CAAA;IACvB,sCAAiB,CAAA;AACrB,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B"}
package/package.json CHANGED
@@ -1,8 +1,14 @@
1
1
  {
2
2
  "name": "@fplpool/fpl-models",
3
- "version": "1.0.0",
4
- "main": "index.js",
3
+ "version": "1.1.0",
4
+ "main": "dist/index.js",
5
+ "types": "dist/index.d.ts",
6
+ "files": [
7
+ "dist"
8
+ ],
5
9
  "scripts": {
10
+ "build": "tsc",
11
+ "prepublishOnly": "npm run build",
6
12
  "test": "echo \"Error: no test specified\" && exit 1"
7
13
  },
8
14
  "keywords": [],
@@ -11,9 +17,10 @@
11
17
  "description": "Shared application models",
12
18
  "dependencies": {
13
19
  "dotenv": "^17.3.1",
14
- "mongoose": "^9.3.0"
20
+ "mongoose": "^9.3.0",
21
+ "sperse-id": "^1.2.0"
15
22
  },
16
- "publishConfig": {
23
+ "publishConfig": {
17
24
  "access": "public"
18
25
  },
19
26
  "devDependencies": {
package/src/index.ts DELETED
@@ -1,19 +0,0 @@
1
- export * from "./models/user.model";
2
- export * from "./models/user-settings.model";
3
- export * from "./models/session.model";
4
- export * from "./models/wallet.model";
5
- export * from "./models/card.model";
6
- export * from "./models/transaction.model";
7
- export * from "./models/pool.model";
8
- export * from "./models/pool-gameweek-deadline.model";
9
- export * from "./models/pool-member.model";
10
- export * from "./models/pool-wallet.model";
11
- export * from "./models/pool-gameweek.model";
12
- export * from "./models/pool-gameweek-winner.model";
13
- export * from "./models/pool-invite.model";
14
- export * from "./models/pool-transaction.model";
15
- export * from "./models/job.model";
16
- export * from "./models/invoice.model";
17
- export * from "./models/config.model";
18
-
19
- export * from "./repositories/generic.repository";