fragment-ts 1.0.37 → 1.0.38
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;WAe1B,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;mBAsF/C,wBAAwB;mBAgDxB,iBAAiB;
|
|
1
|
+
{"version":3,"file":"init.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;WAe1B,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;mBAsF/C,wBAAwB;mBAgDxB,iBAAiB;mBA+GjB,gBAAgB;mBA+BhB,yBAAyB;mBA6BzB,sBAAsB;mBAmBtB,qBAAqB;mBA8BrB,iBAAiB;mBAgDjB,mBAAmB;CA4BzC"}
|
|
@@ -149,7 +149,7 @@ class InitCommand {
|
|
|
149
149
|
dirs.push("src/seeds");
|
|
150
150
|
}
|
|
151
151
|
if (config.features.includes("testing")) {
|
|
152
|
-
dirs.push("src/test");
|
|
152
|
+
dirs.push("src/test");
|
|
153
153
|
}
|
|
154
154
|
for (const dir of dirs) {
|
|
155
155
|
await fs.ensureDir(path.join(projectPath, dir));
|
|
@@ -183,19 +183,14 @@ class InitCommand {
|
|
|
183
183
|
"migrate:revert": "fragment migrate:revert",
|
|
184
184
|
},
|
|
185
185
|
dependencies: {
|
|
186
|
-
"fragment-ts": "^1.0.
|
|
186
|
+
"fragment-ts": "^1.0.38",
|
|
187
187
|
"reflect-metadata": "^0.1.13",
|
|
188
|
-
express: "^4.18.2",
|
|
189
188
|
},
|
|
190
189
|
devDependencies: {
|
|
191
190
|
typescript: "^5.3.3",
|
|
192
191
|
"@types/node": "^20.10.5",
|
|
193
|
-
"@types/express": "^4.17.21",
|
|
194
192
|
"ts-node": "^10.9.2",
|
|
195
193
|
"tsconfig-paths": "^4.2.0",
|
|
196
|
-
jest: "^29.7.0",
|
|
197
|
-
"@types/jest": "^29.5.12",
|
|
198
|
-
"ts-jest": "^29.1.2",
|
|
199
194
|
},
|
|
200
195
|
};
|
|
201
196
|
await fs.writeJSON(path.join(projectPath, "package.json"), packageJson, {
|
|
@@ -327,16 +322,19 @@ export class AppService {
|
|
|
327
322
|
@Entity()
|
|
328
323
|
export class User {
|
|
329
324
|
@PrimaryGeneratedColumn()
|
|
330
|
-
id
|
|
325
|
+
id!: number;
|
|
331
326
|
|
|
332
327
|
@Column({ unique: true })
|
|
333
|
-
email
|
|
328
|
+
email!: string;
|
|
334
329
|
|
|
335
330
|
@Column()
|
|
336
|
-
name
|
|
331
|
+
name!: string;
|
|
332
|
+
|
|
333
|
+
@Column()
|
|
334
|
+
password!: string;
|
|
337
335
|
|
|
338
336
|
@CreateDateColumn()
|
|
339
|
-
createdAt
|
|
337
|
+
createdAt?: Date;
|
|
340
338
|
}
|
|
341
339
|
`;
|
|
342
340
|
await fs.writeFile(path.join(projectPath, "src", "entities", "user.entity.ts"), content);
|
|
@@ -362,38 +360,18 @@ export class AuthController {
|
|
|
362
360
|
}
|
|
363
361
|
`;
|
|
364
362
|
const serviceContent = `import { Service } from 'fragment-ts';
|
|
365
|
-
import
|
|
366
|
-
import * as jwt from 'jsonwebtoken';
|
|
363
|
+
import { AuthModule } from 'fragment-ts';
|
|
367
364
|
|
|
368
365
|
@Service()
|
|
369
366
|
export class AuthService {
|
|
370
|
-
private readonly jwtSecret = process.env.JWT_SECRET || 'default-secret-key';
|
|
371
|
-
|
|
372
367
|
async login(email: string, password: string) {
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
if (isValid) {
|
|
377
|
-
const token = jwt.sign({ userId: '1', email }, this.jwtSecret, { expiresIn: '1h' });
|
|
378
|
-
return { token };
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
throw new Error('Invalid credentials');
|
|
368
|
+
const token = AuthModule.generateToken({ userId: '1', email });
|
|
369
|
+
return { token };
|
|
382
370
|
}
|
|
383
371
|
|
|
384
372
|
async register(userData: any) {
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
return { message: 'User registered successfully', email: userData.email };
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
private async hashPassword(password: string): Promise<string> {
|
|
391
|
-
const saltRounds = 10;
|
|
392
|
-
return bcrypt.hash(password, saltRounds);
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
private async validatePassword(password: string, hashedPassword: string): Promise<boolean> {
|
|
396
|
-
return bcrypt.compare(password, hashedPassword);
|
|
373
|
+
const hashedPassword = await AuthModule.hashPassword(userData.password);
|
|
374
|
+
return { message: 'User registered successfully' };
|
|
397
375
|
}
|
|
398
376
|
}
|
|
399
377
|
`;
|
|
@@ -402,7 +380,8 @@ export class AuthService {
|
|
|
402
380
|
}
|
|
403
381
|
static async generateDefaultTest(projectPath) {
|
|
404
382
|
const testContent = `import { AppService } from '../services/app.service';
|
|
405
|
-
import { DIContainer } from
|
|
383
|
+
import { beforeEach, describe, DIContainer, expect, it } from "fragment-ts";
|
|
384
|
+
|
|
406
385
|
|
|
407
386
|
describe('AppService', () => {
|
|
408
387
|
let service: AppService;
|
|
@@ -421,27 +400,10 @@ describe('AppService', () => {
|
|
|
421
400
|
expect(message).toContain('Fragment');
|
|
422
401
|
});
|
|
423
402
|
});
|
|
424
|
-
`;
|
|
425
|
-
const jestConfig = `module.exports = {
|
|
426
|
-
preset: 'ts-jest',
|
|
427
|
-
testEnvironment: 'node',
|
|
428
|
-
roots: ['<rootDir>/src'],
|
|
429
|
-
transform: {
|
|
430
|
-
'^.+\\\\.tsx?$': 'ts-jest',
|
|
431
|
-
},
|
|
432
|
-
testRegex: '(/__tests__/.*|(\\\\.|/)(test|spec))\\\\.tsx?$',
|
|
433
|
-
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
|
|
434
|
-
collectCoverageFrom: [
|
|
435
|
-
'src/**/*.{ts,tsx}',
|
|
436
|
-
'!src/main.ts',
|
|
437
|
-
'!src/**/*.controller.ts',
|
|
438
|
-
],
|
|
439
|
-
};
|
|
440
403
|
`;
|
|
441
404
|
const testDir = path.join(projectPath, "src", "test");
|
|
442
405
|
await fs.ensureDir(testDir);
|
|
443
406
|
await fs.writeFile(path.join(testDir, "app.spec.ts"), testContent);
|
|
444
|
-
await fs.writeFile(path.join(projectPath, "jest.config.js"), jestConfig);
|
|
445
407
|
}
|
|
446
408
|
}
|
|
447
409
|
exports.InitCommand = InitCommand;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.command.js","sourceRoot":"","sources":["../../../src/cli/commands/init.command.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"init.command.js","sourceRoot":"","sources":["../../../src/cli/commands/init.command.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -132,7 +132,7 @@ export class InitCommand {
|
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
if (config.features.includes("testing")) {
|
|
135
|
-
dirs.push("src/test");
|
|
135
|
+
dirs.push("src/test");
|
|
136
136
|
}
|
|
137
137
|
|
|
138
138
|
for (const dir of dirs) {
|
|
@@ -176,19 +176,14 @@ export class InitCommand {
|
|
|
176
176
|
"migrate:revert": "fragment migrate:revert",
|
|
177
177
|
},
|
|
178
178
|
dependencies: {
|
|
179
|
-
"fragment-ts": "^1.0.
|
|
179
|
+
"fragment-ts": "^1.0.38",
|
|
180
180
|
"reflect-metadata": "^0.1.13",
|
|
181
|
-
express: "^4.18.2",
|
|
182
181
|
},
|
|
183
182
|
devDependencies: {
|
|
184
183
|
typescript: "^5.3.3",
|
|
185
184
|
"@types/node": "^20.10.5",
|
|
186
|
-
"@types/express": "^4.17.21",
|
|
187
185
|
"ts-node": "^10.9.2",
|
|
188
186
|
"tsconfig-paths": "^4.2.0",
|
|
189
|
-
jest: "^29.7.0",
|
|
190
|
-
"@types/jest": "^29.5.12",
|
|
191
|
-
"ts-jest": "^29.1.2",
|
|
192
187
|
},
|
|
193
188
|
};
|
|
194
189
|
|
|
@@ -359,16 +354,19 @@ export class AppService {
|
|
|
359
354
|
@Entity()
|
|
360
355
|
export class User {
|
|
361
356
|
@PrimaryGeneratedColumn()
|
|
362
|
-
id
|
|
357
|
+
id!: number;
|
|
363
358
|
|
|
364
359
|
@Column({ unique: true })
|
|
365
|
-
email
|
|
360
|
+
email!: string;
|
|
366
361
|
|
|
367
362
|
@Column()
|
|
368
|
-
name
|
|
363
|
+
name!: string;
|
|
364
|
+
|
|
365
|
+
@Column()
|
|
366
|
+
password!: string;
|
|
369
367
|
|
|
370
368
|
@CreateDateColumn()
|
|
371
|
-
createdAt
|
|
369
|
+
createdAt?: Date;
|
|
372
370
|
}
|
|
373
371
|
`;
|
|
374
372
|
|
|
@@ -400,38 +398,18 @@ export class AuthController {
|
|
|
400
398
|
`;
|
|
401
399
|
|
|
402
400
|
const serviceContent = `import { Service } from 'fragment-ts';
|
|
403
|
-
import
|
|
404
|
-
import * as jwt from 'jsonwebtoken';
|
|
401
|
+
import { AuthModule } from 'fragment-ts';
|
|
405
402
|
|
|
406
403
|
@Service()
|
|
407
404
|
export class AuthService {
|
|
408
|
-
private readonly jwtSecret = process.env.JWT_SECRET || 'default-secret-key';
|
|
409
|
-
|
|
410
405
|
async login(email: string, password: string) {
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
if (isValid) {
|
|
415
|
-
const token = jwt.sign({ userId: '1', email }, this.jwtSecret, { expiresIn: '1h' });
|
|
416
|
-
return { token };
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
throw new Error('Invalid credentials');
|
|
406
|
+
const token = AuthModule.generateToken({ userId: '1', email });
|
|
407
|
+
return { token };
|
|
420
408
|
}
|
|
421
409
|
|
|
422
410
|
async register(userData: any) {
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
return { message: 'User registered successfully', email: userData.email };
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
private async hashPassword(password: string): Promise<string> {
|
|
429
|
-
const saltRounds = 10;
|
|
430
|
-
return bcrypt.hash(password, saltRounds);
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
private async validatePassword(password: string, hashedPassword: string): Promise<boolean> {
|
|
434
|
-
return bcrypt.compare(password, hashedPassword);
|
|
411
|
+
const hashedPassword = await AuthModule.hashPassword(userData.password);
|
|
412
|
+
return { message: 'User registered successfully' };
|
|
435
413
|
}
|
|
436
414
|
}
|
|
437
415
|
`;
|
|
@@ -448,7 +426,8 @@ export class AuthService {
|
|
|
448
426
|
|
|
449
427
|
private static async generateDefaultTest(projectPath: string) {
|
|
450
428
|
const testContent = `import { AppService } from '../services/app.service';
|
|
451
|
-
import { DIContainer } from
|
|
429
|
+
import { beforeEach, describe, DIContainer, expect, it } from "fragment-ts";
|
|
430
|
+
|
|
452
431
|
|
|
453
432
|
describe('AppService', () => {
|
|
454
433
|
let service: AppService;
|
|
@@ -468,28 +447,9 @@ describe('AppService', () => {
|
|
|
468
447
|
});
|
|
469
448
|
});
|
|
470
449
|
`;
|
|
471
|
-
|
|
472
|
-
const jestConfig = `module.exports = {
|
|
473
|
-
preset: 'ts-jest',
|
|
474
|
-
testEnvironment: 'node',
|
|
475
|
-
roots: ['<rootDir>/src'],
|
|
476
|
-
transform: {
|
|
477
|
-
'^.+\\\\.tsx?$': 'ts-jest',
|
|
478
|
-
},
|
|
479
|
-
testRegex: '(/__tests__/.*|(\\\\.|/)(test|spec))\\\\.tsx?$',
|
|
480
|
-
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
|
|
481
|
-
collectCoverageFrom: [
|
|
482
|
-
'src/**/*.{ts,tsx}',
|
|
483
|
-
'!src/main.ts',
|
|
484
|
-
'!src/**/*.controller.ts',
|
|
485
|
-
],
|
|
486
|
-
};
|
|
487
|
-
`;
|
|
488
|
-
|
|
489
450
|
const testDir = path.join(projectPath, "src", "test");
|
|
490
451
|
await fs.ensureDir(testDir);
|
|
491
452
|
|
|
492
453
|
await fs.writeFile(path.join(testDir, "app.spec.ts"), testContent);
|
|
493
|
-
await fs.writeFile(path.join(projectPath, "jest.config.js"), jestConfig);
|
|
494
454
|
}
|
|
495
455
|
}
|