@armi-wave/common 1.0.0 → 1.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.
package/build/index.js ADDED
@@ -0,0 +1,8 @@
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
+ exports.User = void 0;
7
+ const User_1 = __importDefault(require("./models/User"));
8
+ exports.User = User_1.default;
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const mongoose_1 = __importDefault(require("mongoose"));
16
+ const password_1 = __importDefault(require("../utils/password"));
17
+ const userSchema = new mongoose_1.default.Schema({
18
+ email: {
19
+ type: String,
20
+ required: true,
21
+ unique: true,
22
+ },
23
+ username: {
24
+ type: String,
25
+ required: true,
26
+ unique: true,
27
+ },
28
+ password: {
29
+ type: String,
30
+ required: true,
31
+ },
32
+ name: {
33
+ type: String,
34
+ required: true,
35
+ },
36
+ surname: {
37
+ type: String,
38
+ required: true,
39
+ },
40
+ followers: {
41
+ type: Number,
42
+ required: true,
43
+ },
44
+ following: {
45
+ type: Number,
46
+ required: true,
47
+ },
48
+ phoneNumber: {
49
+ type: String,
50
+ required: true,
51
+ },
52
+ verified: {
53
+ type: Boolean,
54
+ required: true,
55
+ },
56
+ paidPlan: {
57
+ type: String,
58
+ required: true,
59
+ },
60
+ savedPosts: {
61
+ type: Array,
62
+ required: true,
63
+ },
64
+ likedPosts: {
65
+ type: Array,
66
+ required: true,
67
+ },
68
+ upVotedPosts: {
69
+ type: Array,
70
+ required: true,
71
+ },
72
+ likedComments: {
73
+ type: Array,
74
+ required: true,
75
+ },
76
+ bannedAccounts: {
77
+ type: Array,
78
+ required: true,
79
+ },
80
+ reportedPosts: {
81
+ type: Array,
82
+ required: true,
83
+ },
84
+ validReportedPosts: {
85
+ type: Array,
86
+ required: true,
87
+ },
88
+ totalLikes: {
89
+ type: Number,
90
+ required: true,
91
+ },
92
+ totalUpVotes: {
93
+ type: Number,
94
+ required: true,
95
+ },
96
+ totalDownVotes: {
97
+ type: Number,
98
+ required: true,
99
+ },
100
+ location: {
101
+ type: String,
102
+ required: true,
103
+ },
104
+ height: {
105
+ type: Number,
106
+ required: true,
107
+ },
108
+ weight: {
109
+ type: Number,
110
+ required: true,
111
+ },
112
+ profession: {
113
+ type: String,
114
+ required: true,
115
+ },
116
+ grossIncome: {
117
+ type: Number,
118
+ required: true,
119
+ },
120
+ netIncome: {
121
+ type: Number,
122
+ required: true,
123
+ },
124
+ }, {
125
+ toJSON: {
126
+ transform(doc, ret) {
127
+ ret.id = ret._id;
128
+ delete ret.password;
129
+ delete ret.__v;
130
+ delete ret._id;
131
+ delete ret.followers;
132
+ delete ret.following;
133
+ delete ret.phoneNumber;
134
+ delete ret.verified;
135
+ delete ret.paidPlan;
136
+ delete ret.savedPosts;
137
+ delete ret.likedPosts;
138
+ delete ret.upVotedPosts;
139
+ delete ret.likedComments;
140
+ delete ret.bannedAccounts;
141
+ delete ret.reportedPosts;
142
+ delete ret.validReportedPosts;
143
+ delete ret.totalLikes;
144
+ delete ret.totalUpVotes;
145
+ delete ret.totalDownVotes;
146
+ delete ret.location;
147
+ delete ret.height;
148
+ delete ret.weight;
149
+ delete ret.profession;
150
+ delete ret.grossIncome;
151
+ delete ret.netIncome;
152
+ },
153
+ },
154
+ });
155
+ userSchema.pre('save', function (done) {
156
+ return __awaiter(this, void 0, void 0, function* () {
157
+ if (this.isModified('password')) {
158
+ const hashedPassword = yield password_1.default.toHash(this.get('password'));
159
+ this.set('password', hashedPassword);
160
+ }
161
+ done();
162
+ });
163
+ });
164
+ userSchema.statics.build = (attrs) => {
165
+ return new User(attrs);
166
+ };
167
+ const User = mongoose_1.default.model('User', userSchema);
168
+ exports.default = User;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const crypto_1 = require("crypto");
13
+ const util_1 = require("util");
14
+ const scryptAsync = (0, util_1.promisify)(crypto_1.scrypt);
15
+ class Password {
16
+ static toHash(password) {
17
+ return __awaiter(this, void 0, void 0, function* () {
18
+ const salt = (0, crypto_1.randomBytes)(16).toString('hex');
19
+ const buffer = (yield scryptAsync(password, salt, 64));
20
+ return `${buffer.toString('hex')}.${salt}`;
21
+ });
22
+ }
23
+ static compare(storedPassword, suppliedPassword) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ const [hashedPassword, salt] = storedPassword.split('.');
26
+ const buffer = (yield scryptAsync(suppliedPassword, salt, 64));
27
+ return buffer.toString('hex') === hashedPassword;
28
+ });
29
+ }
30
+ }
31
+ exports.default = Password;
package/package.json CHANGED
@@ -1,10 +1,16 @@
1
1
  {
2
2
  "name": "@armi-wave/common",
3
- "version": "1.0.0",
3
+ "version": "1.3.0",
4
4
  "description": "",
5
- "main": "index.js",
5
+ "main": "./build/index.js",
6
+ "types": "./build/index.d.ts",
7
+ "files": [
8
+ "build/**/*"
9
+ ],
6
10
  "scripts": {
7
- "test": "echo \"Error: no test specified\" && exit 1"
11
+ "test": "echo \"Error: no test specified\" && exit 1",
12
+ "build": "tsc",
13
+ "pub": "git add . && git commit -m \"Updates\" && npm version feature && npm run build && npm publish"
8
14
  },
9
15
  "author": "Armiron Kurbalaj",
10
16
  "license": "ISC"
package/src/index.ts DELETED
@@ -1,3 +0,0 @@
1
- import User from './models/User';
2
-
3
- export { User };
@@ -1,223 +0,0 @@
1
- import mongoose, { ObjectId } from 'mongoose';
2
- import Password from '../utils/password';
3
-
4
- interface UserAttributes {
5
- email: string;
6
- username: string;
7
- password: string;
8
- name: string;
9
- surname: string;
10
- followers: number;
11
- following: number;
12
- phoneNumber: string;
13
- verified: boolean;
14
- paidPlan: string;
15
- savedPosts: ObjectId[];
16
- likedPosts: ObjectId[];
17
- upVotedPosts: ObjectId[];
18
- likedComments: ObjectId[];
19
- bannedAccounts: ObjectId[];
20
- reportedPosts: ObjectId[];
21
- validReportedPosts: ObjectId[];
22
- totalLikes: number;
23
- totalUpVotes: number;
24
- totalDownVotes: number;
25
- location: string;
26
- height: number;
27
- weight: number;
28
- profession: string;
29
- grossIncome: number;
30
- netIncome: number;
31
- }
32
-
33
- interface UserModel extends mongoose.Model<UserDocument> {
34
- build(attrs: UserAttributes): UserDocument;
35
- }
36
-
37
- interface UserDocument extends mongoose.Document {
38
- email: string;
39
- username: string;
40
- password: string;
41
- name: string;
42
- surname: string;
43
- followers: number;
44
- following: number;
45
- phoneNumber: string;
46
- verified: boolean;
47
- paidPlan: string;
48
- savedPosts: ObjectId[];
49
- likedPosts: ObjectId[];
50
- upVotedPosts: ObjectId[];
51
- likedComments: ObjectId[];
52
- bannedAccounts: ObjectId[];
53
- reportedPosts: ObjectId[];
54
- validReportedPosts: ObjectId[];
55
- totalLikes: number;
56
- totalUpVotes: number;
57
- totalDownVotes: number;
58
- location: string;
59
- height: number;
60
- weight: number;
61
- profession: string;
62
- grossIncome: number;
63
- netIncome: number;
64
- }
65
-
66
- const userSchema = new mongoose.Schema(
67
- {
68
- email: {
69
- type: String,
70
- required: true,
71
- unique: true,
72
- },
73
- username: {
74
- type: String,
75
- required: true,
76
- unique: true,
77
- },
78
- password: {
79
- type: String,
80
- required: true,
81
- },
82
- name: {
83
- type: String,
84
- required: true,
85
- },
86
- surname: {
87
- type: String,
88
- required: true,
89
- },
90
- followers: {
91
- type: Number,
92
- required: true,
93
- },
94
- following: {
95
- type: Number,
96
- required: true,
97
- },
98
- phoneNumber: {
99
- type: String,
100
- required: true,
101
- },
102
- verified: {
103
- type: Boolean,
104
- required: true,
105
- },
106
- paidPlan: {
107
- type: String,
108
- required: true,
109
- },
110
- savedPosts: {
111
- type: Array,
112
- required: true,
113
- },
114
- likedPosts: {
115
- type: Array,
116
- required: true,
117
- },
118
- upVotedPosts: {
119
- type: Array,
120
- required: true,
121
- },
122
- likedComments: {
123
- type: Array,
124
- required: true,
125
- },
126
- bannedAccounts: {
127
- type: Array,
128
- required: true,
129
- },
130
- reportedPosts: {
131
- type: Array,
132
- required: true,
133
- },
134
- validReportedPosts: {
135
- type: Array,
136
- required: true,
137
- },
138
- totalLikes: {
139
- type: Number,
140
- required: true,
141
- },
142
- totalUpVotes: {
143
- type: Number,
144
- required: true,
145
- },
146
- totalDownVotes: {
147
- type: Number,
148
- required: true,
149
- },
150
- location: {
151
- type: String,
152
- required: true,
153
- },
154
- height: {
155
- type: Number,
156
- required: true,
157
- },
158
- weight: {
159
- type: Number,
160
- required: true,
161
- },
162
- profession: {
163
- type: String,
164
- required: true,
165
- },
166
- grossIncome: {
167
- type: Number,
168
- required: true,
169
- },
170
- netIncome: {
171
- type: Number,
172
- required: true,
173
- },
174
- },
175
- {
176
- toJSON: {
177
- transform(doc, ret) {
178
- ret.id = ret._id;
179
- delete ret.password;
180
- delete ret.__v;
181
- delete ret._id;
182
- delete ret.followers;
183
- delete ret.following;
184
- delete ret.phoneNumber;
185
- delete ret.verified;
186
- delete ret.paidPlan;
187
- delete ret.savedPosts;
188
- delete ret.likedPosts;
189
- delete ret.upVotedPosts;
190
- delete ret.likedComments;
191
- delete ret.bannedAccounts;
192
- delete ret.reportedPosts;
193
- delete ret.validReportedPosts;
194
- delete ret.totalLikes;
195
- delete ret.totalUpVotes;
196
- delete ret.totalDownVotes;
197
- delete ret.location;
198
- delete ret.height;
199
- delete ret.weight;
200
- delete ret.profession;
201
- delete ret.grossIncome;
202
- delete ret.netIncome;
203
- },
204
- },
205
- }
206
- );
207
-
208
- userSchema.pre('save', async function (done) {
209
- if (this.isModified('password')) {
210
- const hashedPassword = await Password.toHash(this.get('password'));
211
- this.set('password', hashedPassword);
212
- }
213
-
214
- done();
215
- });
216
-
217
- userSchema.statics.build = (attrs: UserAttributes) => {
218
- return new User(attrs);
219
- };
220
-
221
- const User = mongoose.model<UserDocument, UserModel>('User', userSchema);
222
-
223
- export default User;
@@ -1,19 +0,0 @@
1
- import { scrypt, randomBytes } from 'crypto';
2
- import { promisify } from 'util';
3
-
4
- const scryptAsync = promisify(scrypt);
5
-
6
- export default class Password {
7
- static async toHash(password: string) {
8
- const salt = randomBytes(16).toString('hex');
9
- const buffer = (await scryptAsync(password, salt, 64)) as Buffer;
10
-
11
- return `${buffer.toString('hex')}.${salt}`;
12
- }
13
-
14
- static async compare(storedPassword: string, suppliedPassword: string) {
15
- const [hashedPassword, salt] = storedPassword.split('.');
16
- const buffer = (await scryptAsync(suppliedPassword, salt, 64)) as Buffer;
17
- return buffer.toString('hex') === hashedPassword;
18
- }
19
- }