lapeh 2.6.0 → 2.6.2
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/bin/index.js
CHANGED
|
@@ -412,7 +412,7 @@ async function upgradeProject() {
|
|
|
412
412
|
function createProject() {
|
|
413
413
|
const projectName = args.find(arg => !arg.startsWith('-'));
|
|
414
414
|
const isFull = args.includes('--full');
|
|
415
|
-
const useDefaults = args.includes('--defaults') || args.includes('-y');
|
|
415
|
+
const useDefaults = args.includes('--defaults') || args.includes('--default') || args.includes('-y');
|
|
416
416
|
|
|
417
417
|
if (!projectName) {
|
|
418
418
|
console.error('❌ Please specify the project name:');
|
|
@@ -591,6 +591,23 @@ function createProject() {
|
|
|
591
591
|
|
|
592
592
|
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
593
593
|
|
|
594
|
+
// Update tsconfig.json for aliases
|
|
595
|
+
const tsconfigPath = path.join(projectDir, 'tsconfig.json');
|
|
596
|
+
if (fs.existsSync(tsconfigPath)) {
|
|
597
|
+
try {
|
|
598
|
+
const tsconfig = require(tsconfigPath);
|
|
599
|
+
if (!tsconfig.compilerOptions) tsconfig.compilerOptions = {};
|
|
600
|
+
if (!tsconfig.compilerOptions.paths) tsconfig.compilerOptions.paths = {};
|
|
601
|
+
|
|
602
|
+
// Ensure @lapeh/* points to the installed package
|
|
603
|
+
tsconfig.compilerOptions.paths["@lapeh/*"] = ["./node_modules/lapeh/dist/lib/*"];
|
|
604
|
+
|
|
605
|
+
fs.writeFileSync(tsconfigPath, JSON.stringify(tsconfig, null, 2));
|
|
606
|
+
} catch (e) {
|
|
607
|
+
console.warn('⚠️ Failed to update tsconfig.json aliases.');
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
|
|
594
611
|
const prismaBaseFile = path.join(projectDir, "prisma", "base.prisma.template");
|
|
595
612
|
if (usePrisma && fs.existsSync(prismaBaseFile)) {
|
|
596
613
|
let baseContent = fs.readFileSync(prismaBaseFile, "utf8");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Response } from "express";
|
|
2
|
-
export declare function sendSuccess<T>(res: Response, statusCode: number, message: string, data
|
|
2
|
+
export declare function sendSuccess<T = any>(res: Response, statusCode: number, message: string, data?: T): Response<any, Record<string, any>>;
|
|
3
3
|
/**
|
|
4
4
|
* Mengirim response sukses dengan performa tinggi menggunakan Schema Serialization (Fastify-style).
|
|
5
5
|
* Melewati proses JSON.stringify standar yang lambat.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../lib/utils/response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAsCnC,wBAAgB,WAAW,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../lib/utils/response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAsCnC,wBAAgB,WAAW,CAAC,CAAC,GAAG,GAAG,EACjC,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,CAAC,sCAIT;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,EAChC,IAAI,EAAE,GAAG,sCASV;AAED,wBAAgB,SAAS,CAAC,CAAC,GAAG,OAAO,EACnC,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,CAAC,sCAcX"}
|
package/lib/utils/response.ts
CHANGED
|
@@ -7,7 +7,7 @@ type ErrorStatus = "error";
|
|
|
7
7
|
type SuccessBody<T> = {
|
|
8
8
|
status: SuccessStatus;
|
|
9
9
|
message: string;
|
|
10
|
-
data
|
|
10
|
+
data?: T;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
type ErrorBody<T = unknown> = {
|
|
@@ -36,13 +36,13 @@ function toJsonSafe(value: unknown): unknown {
|
|
|
36
36
|
return value;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
export function sendSuccess<T>(
|
|
39
|
+
export function sendSuccess<T = any>(
|
|
40
40
|
res: Response,
|
|
41
41
|
statusCode: number,
|
|
42
42
|
message: string,
|
|
43
|
-
data
|
|
43
|
+
data?: T
|
|
44
44
|
) {
|
|
45
|
-
const body: SuccessBody<T> = { status: "success", message, data };
|
|
45
|
+
const body: SuccessBody<T | undefined> = { status: "success", message, data };
|
|
46
46
|
return res.status(statusCode).json(toJsonSafe(body));
|
|
47
47
|
}
|
|
48
48
|
|
package/package.json
CHANGED
package/prisma.config.ts
CHANGED
package/scripts/make-module.js
CHANGED
|
@@ -25,10 +25,10 @@ fs.mkdirSync(moduleDir, { recursive: true });
|
|
|
25
25
|
|
|
26
26
|
// Controller
|
|
27
27
|
const controllerContent = `import { Request, Response } from "express";
|
|
28
|
-
import { sendSuccess
|
|
28
|
+
import { sendSuccess } from "@lapeh/utils/response";
|
|
29
29
|
// import * as ${name}Service from "./${lowerName}.service";
|
|
30
30
|
|
|
31
|
-
export async function index(
|
|
31
|
+
export async function index(_req: Request, res: Response) {
|
|
32
32
|
sendSuccess(res, 200, "Index ${name}");
|
|
33
33
|
}
|
|
34
34
|
|
|
@@ -37,7 +37,7 @@ export async function show(req: Request, res: Response) {
|
|
|
37
37
|
sendSuccess(res, 200, "Show ${name} " + id);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
export async function create(
|
|
40
|
+
export async function create(_req: Request, res: Response) {
|
|
41
41
|
sendSuccess(res, 201, "Create ${name}");
|
|
42
42
|
}
|
|
43
43
|
|
|
@@ -55,13 +55,13 @@ export async function destroy(req: Request, res: Response) {
|
|
|
55
55
|
fs.writeFileSync(path.join(moduleDir, `${lowerName}.controller.ts`), controllerContent);
|
|
56
56
|
|
|
57
57
|
// Service (Optional but good for NestJS style)
|
|
58
|
-
const serviceContent =
|
|
58
|
+
const serviceContent = `// import { prisma } from "@lapeh/core/database";
|
|
59
59
|
|
|
60
60
|
export async function findAll() {
|
|
61
61
|
return [];
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
export async function findOne(
|
|
64
|
+
export async function findOne(_id: number) {
|
|
65
65
|
return null;
|
|
66
66
|
}
|
|
67
67
|
`;
|