lapeh 2.2.8 → 2.2.9

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 (149) hide show
  1. package/api-testing-enambelas/.env.example +19 -0
  2. package/api-testing-enambelas/doc/ARCHITECTURE_GUIDE.md +73 -0
  3. package/api-testing-enambelas/doc/CHANGELOG.md +77 -0
  4. package/api-testing-enambelas/doc/CHEATSHEET.md +94 -0
  5. package/api-testing-enambelas/doc/CLI.md +106 -0
  6. package/api-testing-enambelas/doc/CONTRIBUTING.md +105 -0
  7. package/api-testing-enambelas/doc/DEPLOYMENT.md +122 -0
  8. package/api-testing-enambelas/doc/FAQ.md +81 -0
  9. package/api-testing-enambelas/doc/FEATURES.md +165 -0
  10. package/api-testing-enambelas/doc/GETTING_STARTED.md +108 -0
  11. package/api-testing-enambelas/doc/INTRODUCTION.md +60 -0
  12. package/api-testing-enambelas/doc/PACKAGES.md +66 -0
  13. package/api-testing-enambelas/doc/PERFORMANCE.md +91 -0
  14. package/api-testing-enambelas/doc/ROADMAP.md +93 -0
  15. package/api-testing-enambelas/doc/SECURITY.md +93 -0
  16. package/api-testing-enambelas/doc/STRUCTURE.md +90 -0
  17. package/api-testing-enambelas/doc/TUTORIAL.md +192 -0
  18. package/api-testing-enambelas/docker-compose.yml +24 -0
  19. package/api-testing-enambelas/eslint.config.mjs +26 -0
  20. package/api-testing-enambelas/framework.md +168 -0
  21. package/api-testing-enambelas/nodemon.json +6 -0
  22. package/api-testing-enambelas/package-lock.json +5527 -0
  23. package/api-testing-enambelas/package.json +106 -0
  24. package/api-testing-enambelas/prisma/base.prisma.template +7 -0
  25. package/api-testing-enambelas/prisma/migrations/20251227042956_init_setup/migration.sql +248 -0
  26. package/api-testing-enambelas/prisma/migrations/migration_lock.toml +3 -0
  27. package/api-testing-enambelas/prisma/schema.prisma +183 -0
  28. package/api-testing-enambelas/prisma/seed.ts +411 -0
  29. package/api-testing-enambelas/prisma.config.ts +15 -0
  30. package/api-testing-enambelas/readme.md +414 -0
  31. package/api-testing-enambelas/scripts/check-update.js +92 -0
  32. package/api-testing-enambelas/scripts/compile-schema.js +29 -0
  33. package/api-testing-enambelas/scripts/config-clear.js +45 -0
  34. package/api-testing-enambelas/scripts/generate-jwt-secret.js +38 -0
  35. package/api-testing-enambelas/scripts/init-project.js +178 -0
  36. package/api-testing-enambelas/scripts/make-controller.js +205 -0
  37. package/api-testing-enambelas/scripts/make-model.js +42 -0
  38. package/api-testing-enambelas/scripts/make-module.js +158 -0
  39. package/api-testing-enambelas/scripts/verify-rbac-functional.js +187 -0
  40. package/api-testing-enambelas/src/controllers/authController.ts +469 -0
  41. package/api-testing-enambelas/src/controllers/petController.ts +194 -0
  42. package/api-testing-enambelas/src/controllers/rbacController.ts +478 -0
  43. package/api-testing-enambelas/src/models/core.prisma +163 -0
  44. package/api-testing-enambelas/src/models/pets.prisma +9 -0
  45. package/api-testing-enambelas/src/routes/auth.ts +74 -0
  46. package/api-testing-enambelas/src/routes/index.ts +10 -0
  47. package/api-testing-enambelas/src/routes/pets.ts +13 -0
  48. package/api-testing-enambelas/src/routes/rbac.ts +42 -0
  49. package/api-testing-enambelas/storage/logs/.gitkeep +0 -0
  50. package/api-testing-enambelas/tsconfig.json +43 -0
  51. package/api-testing-tujuhbelas/.env.example +19 -0
  52. package/api-testing-tujuhbelas/api-testing-enambelas/.env.example +19 -0
  53. package/api-testing-tujuhbelas/api-testing-enambelas/doc/ARCHITECTURE_GUIDE.md +73 -0
  54. package/api-testing-tujuhbelas/api-testing-enambelas/doc/CHANGELOG.md +77 -0
  55. package/api-testing-tujuhbelas/api-testing-enambelas/doc/CHEATSHEET.md +94 -0
  56. package/api-testing-tujuhbelas/api-testing-enambelas/doc/CLI.md +106 -0
  57. package/api-testing-tujuhbelas/api-testing-enambelas/doc/CONTRIBUTING.md +105 -0
  58. package/api-testing-tujuhbelas/api-testing-enambelas/doc/DEPLOYMENT.md +122 -0
  59. package/api-testing-tujuhbelas/api-testing-enambelas/doc/FAQ.md +81 -0
  60. package/api-testing-tujuhbelas/api-testing-enambelas/doc/FEATURES.md +165 -0
  61. package/api-testing-tujuhbelas/api-testing-enambelas/doc/GETTING_STARTED.md +108 -0
  62. package/api-testing-tujuhbelas/api-testing-enambelas/doc/INTRODUCTION.md +60 -0
  63. package/api-testing-tujuhbelas/api-testing-enambelas/doc/PACKAGES.md +66 -0
  64. package/api-testing-tujuhbelas/api-testing-enambelas/doc/PERFORMANCE.md +91 -0
  65. package/api-testing-tujuhbelas/api-testing-enambelas/doc/ROADMAP.md +93 -0
  66. package/api-testing-tujuhbelas/api-testing-enambelas/doc/SECURITY.md +93 -0
  67. package/api-testing-tujuhbelas/api-testing-enambelas/doc/STRUCTURE.md +90 -0
  68. package/api-testing-tujuhbelas/api-testing-enambelas/doc/TUTORIAL.md +192 -0
  69. package/api-testing-tujuhbelas/api-testing-enambelas/docker-compose.yml +24 -0
  70. package/api-testing-tujuhbelas/api-testing-enambelas/eslint.config.mjs +26 -0
  71. package/api-testing-tujuhbelas/api-testing-enambelas/framework.md +168 -0
  72. package/api-testing-tujuhbelas/api-testing-enambelas/nodemon.json +6 -0
  73. package/api-testing-tujuhbelas/api-testing-enambelas/package.json +106 -0
  74. package/api-testing-tujuhbelas/api-testing-enambelas/prisma/base.prisma.template +7 -0
  75. package/api-testing-tujuhbelas/api-testing-enambelas/prisma/schema.prisma +183 -0
  76. package/api-testing-tujuhbelas/api-testing-enambelas/prisma/seed.ts +411 -0
  77. package/api-testing-tujuhbelas/api-testing-enambelas/prisma.config.ts +15 -0
  78. package/api-testing-tujuhbelas/api-testing-enambelas/readme.md +414 -0
  79. package/api-testing-tujuhbelas/api-testing-enambelas/scripts/check-update.js +92 -0
  80. package/api-testing-tujuhbelas/api-testing-enambelas/scripts/compile-schema.js +29 -0
  81. package/api-testing-tujuhbelas/api-testing-enambelas/scripts/config-clear.js +45 -0
  82. package/api-testing-tujuhbelas/api-testing-enambelas/scripts/generate-jwt-secret.js +38 -0
  83. package/api-testing-tujuhbelas/api-testing-enambelas/scripts/init-project.js +178 -0
  84. package/api-testing-tujuhbelas/api-testing-enambelas/scripts/make-controller.js +205 -0
  85. package/api-testing-tujuhbelas/api-testing-enambelas/scripts/make-model.js +42 -0
  86. package/api-testing-tujuhbelas/api-testing-enambelas/scripts/make-module.js +158 -0
  87. package/api-testing-tujuhbelas/api-testing-enambelas/scripts/verify-rbac-functional.js +187 -0
  88. package/api-testing-tujuhbelas/api-testing-enambelas/src/controllers/authController.ts +469 -0
  89. package/api-testing-tujuhbelas/api-testing-enambelas/src/controllers/petController.ts +194 -0
  90. package/api-testing-tujuhbelas/api-testing-enambelas/src/controllers/rbacController.ts +478 -0
  91. package/api-testing-tujuhbelas/api-testing-enambelas/src/models/core.prisma +163 -0
  92. package/api-testing-tujuhbelas/api-testing-enambelas/src/models/pets.prisma +9 -0
  93. package/api-testing-tujuhbelas/api-testing-enambelas/src/routes/auth.ts +74 -0
  94. package/api-testing-tujuhbelas/api-testing-enambelas/src/routes/index.ts +10 -0
  95. package/api-testing-tujuhbelas/api-testing-enambelas/src/routes/pets.ts +13 -0
  96. package/api-testing-tujuhbelas/api-testing-enambelas/src/routes/rbac.ts +42 -0
  97. package/api-testing-tujuhbelas/api-testing-enambelas/storage/logs/.gitkeep +0 -0
  98. package/api-testing-tujuhbelas/api-testing-enambelas/tsconfig.json +43 -0
  99. package/api-testing-tujuhbelas/doc/ARCHITECTURE_GUIDE.md +73 -0
  100. package/api-testing-tujuhbelas/doc/CHANGELOG.md +77 -0
  101. package/api-testing-tujuhbelas/doc/CHEATSHEET.md +94 -0
  102. package/api-testing-tujuhbelas/doc/CLI.md +106 -0
  103. package/api-testing-tujuhbelas/doc/CONTRIBUTING.md +105 -0
  104. package/api-testing-tujuhbelas/doc/DEPLOYMENT.md +122 -0
  105. package/api-testing-tujuhbelas/doc/FAQ.md +81 -0
  106. package/api-testing-tujuhbelas/doc/FEATURES.md +165 -0
  107. package/api-testing-tujuhbelas/doc/GETTING_STARTED.md +108 -0
  108. package/api-testing-tujuhbelas/doc/INTRODUCTION.md +60 -0
  109. package/api-testing-tujuhbelas/doc/PACKAGES.md +66 -0
  110. package/api-testing-tujuhbelas/doc/PERFORMANCE.md +91 -0
  111. package/api-testing-tujuhbelas/doc/ROADMAP.md +93 -0
  112. package/api-testing-tujuhbelas/doc/SECURITY.md +93 -0
  113. package/api-testing-tujuhbelas/doc/STRUCTURE.md +90 -0
  114. package/api-testing-tujuhbelas/doc/TUTORIAL.md +192 -0
  115. package/api-testing-tujuhbelas/docker-compose.yml +24 -0
  116. package/api-testing-tujuhbelas/eslint.config.mjs +26 -0
  117. package/api-testing-tujuhbelas/framework.md +168 -0
  118. package/api-testing-tujuhbelas/nodemon.json +6 -0
  119. package/api-testing-tujuhbelas/package-lock.json +5527 -0
  120. package/api-testing-tujuhbelas/package.json +106 -0
  121. package/api-testing-tujuhbelas/prisma/base.prisma.template +7 -0
  122. package/api-testing-tujuhbelas/prisma/migrations/20251227043210_init_setup/migration.sql +248 -0
  123. package/api-testing-tujuhbelas/prisma/migrations/migration_lock.toml +3 -0
  124. package/api-testing-tujuhbelas/prisma/schema.prisma +183 -0
  125. package/api-testing-tujuhbelas/prisma/seed.ts +411 -0
  126. package/api-testing-tujuhbelas/prisma.config.ts +15 -0
  127. package/api-testing-tujuhbelas/readme.md +414 -0
  128. package/api-testing-tujuhbelas/scripts/check-update.js +92 -0
  129. package/api-testing-tujuhbelas/scripts/compile-schema.js +29 -0
  130. package/api-testing-tujuhbelas/scripts/config-clear.js +45 -0
  131. package/api-testing-tujuhbelas/scripts/generate-jwt-secret.js +38 -0
  132. package/api-testing-tujuhbelas/scripts/init-project.js +178 -0
  133. package/api-testing-tujuhbelas/scripts/make-controller.js +205 -0
  134. package/api-testing-tujuhbelas/scripts/make-model.js +42 -0
  135. package/api-testing-tujuhbelas/scripts/make-module.js +158 -0
  136. package/api-testing-tujuhbelas/scripts/verify-rbac-functional.js +187 -0
  137. package/api-testing-tujuhbelas/src/controllers/authController.ts +469 -0
  138. package/api-testing-tujuhbelas/src/controllers/petController.ts +194 -0
  139. package/api-testing-tujuhbelas/src/controllers/rbacController.ts +478 -0
  140. package/api-testing-tujuhbelas/src/models/core.prisma +163 -0
  141. package/api-testing-tujuhbelas/src/models/pets.prisma +9 -0
  142. package/api-testing-tujuhbelas/src/routes/auth.ts +74 -0
  143. package/api-testing-tujuhbelas/src/routes/index.ts +10 -0
  144. package/api-testing-tujuhbelas/src/routes/pets.ts +13 -0
  145. package/api-testing-tujuhbelas/src/routes/rbac.ts +42 -0
  146. package/api-testing-tujuhbelas/storage/logs/.gitkeep +0 -0
  147. package/api-testing-tujuhbelas/tsconfig.json +43 -0
  148. package/bin/index.js +20 -2
  149. package/package.json +1 -1
@@ -0,0 +1,24 @@
1
+ version: "3.9"
2
+ services:
3
+ redis:
4
+ image: redis:7-alpine
5
+ command:
6
+ - "redis-server"
7
+ - "--appendonly"
8
+ - "yes"
9
+ - "--user"
10
+ - "default on >12341234 ~* +@all"
11
+ - "--user"
12
+ - "lapeh on >12341234 ~* +@all"
13
+ ports:
14
+ - "6379:6379"
15
+ volumes:
16
+ - redis_data:/data
17
+ healthcheck:
18
+ test: ["CMD", "redis-cli", "ping"]
19
+ interval: 10s
20
+ timeout: 5s
21
+ retries: 5
22
+
23
+ volumes:
24
+ redis_data:
@@ -0,0 +1,26 @@
1
+ import globals from "globals";
2
+ import pluginJs from "@eslint/js";
3
+ import tseslint from "typescript-eslint";
4
+
5
+ export default [
6
+ { files: ["**/*.{js,mjs,cjs,ts}"] },
7
+ { languageOptions: { globals: globals.node } },
8
+ pluginJs.configs.recommended,
9
+ ...tseslint.configs.recommended,
10
+ {
11
+ rules: {
12
+ "@typescript-eslint/no-unused-vars": [
13
+ "error",
14
+ {
15
+ "argsIgnorePattern": "^_",
16
+ "varsIgnorePattern": "^_",
17
+ "caughtErrorsIgnorePattern": "^_"
18
+ }
19
+ ],
20
+ "@typescript-eslint/no-explicit-any": "warn"
21
+ }
22
+ },
23
+ {
24
+ ignores: ["dist/", "node_modules/", "generated/", "scripts/"]
25
+ }
26
+ ];
@@ -0,0 +1,168 @@
1
+ # Lapeh Framework
2
+
3
+ ## Quick Start
4
+
5
+ Untuk memulai project ini (Setup awal):
6
+
7
+ ```bash
8
+ npm i
9
+ ```
10
+
11
+ ```bash
12
+ npm run first
13
+ ```
14
+
15
+ Perintah di atas akan secara otomatis melakukan:
16
+
17
+ 1. Copy `.env.example` ke `.env`
18
+ 2. Install dependencies (`npm install`)
19
+ 3. Generate JWT Secret baru di `.env`
20
+ 4. Setup database (Migrate)
21
+ 5. Menjalankan Database Seeder
22
+
23
+ Setelah selesai, Anda bisa langsung menjalankan project:
24
+
25
+ ```bash
26
+ npm run dev
27
+ ```
28
+
29
+ ### Akun Default
30
+
31
+ Jika seeder dijalankan (via `npm run first` atau `npm run db:seed`), gunakan akun berikut:
32
+
33
+ - **Super Admin**: `sa@sa.com` / `string`
34
+ - **Admin**: `a@a.com` / `string`
35
+ - **User**: `u@u.com` / `string`
36
+
37
+ ## Code Standards & Best Practices (Baru)
38
+
39
+ ### 1. Import Path Aliases
40
+ Gunakan alias `@/` untuk mengimpor module dari folder `src/`. Hindari relative path yang panjang seperti `../../utils/response`.
41
+
42
+ **Contoh:**
43
+ ```typescript
44
+ // ✅ Benar (Recommended)
45
+ import { prisma } from "@/core/database";
46
+ import { sendSuccess } from "@/utils/response";
47
+
48
+ // ❌ Salah (Legacy)
49
+ import { prisma } from "../core/database";
50
+ import { sendSuccess } from "../../utils/response";
51
+ ```
52
+
53
+ ### 2. Strict Linting (Dead Code Elimination)
54
+ Framework ini menerapkan aturan linter yang ketat untuk menjaga kebersihan kode. Variabel, parameter, atau import yang tidak digunakan akan menyebabkan error.
55
+
56
+ - **Variabel tidak terpakai**: Hapus atau beri prefix `_` (underscore).
57
+ ```typescript
58
+ // ✅ Benar
59
+ const _unusedVariable = 123;
60
+ function example(_req: Request, res: Response) { ... }
61
+
62
+ // ❌ Error
63
+ const unusedVariable = 123;
64
+ function example(req: Request, res: Response) { ... } // jika req tidak dipakai
65
+ ```
66
+
67
+ ### 3. High Performance Response (Fastify-Style)
68
+ Untuk endpoint dengan throughput tinggi (GET lists, data besar), gunakan `sendFastSuccess` dengan JSON Schema serializer. Ini 2-3x lebih cepat dari `res.json` standar Express.
69
+
70
+ **Langkah-langkah:**
71
+
72
+ 1. **Definisikan Schema** (sesuai field Prisma):
73
+ ```typescript
74
+ const userSchema = {
75
+ type: "object",
76
+ properties: {
77
+ id: { type: "string" }, // BigInt otomatis dicovert ke string
78
+ name: { type: "string" },
79
+ email: { type: "string" }
80
+ }
81
+ };
82
+ ```
83
+
84
+ 2. **Buat Serializer**:
85
+ ```typescript
86
+ import { getSerializer, createResponseSchema } from "@/core/serializer";
87
+
88
+ const userSerializer = getSerializer("user-detail", createResponseSchema(userSchema));
89
+ ```
90
+
91
+ 3. **Gunakan di Controller**:
92
+ ```typescript
93
+ import { sendFastSuccess } from "@/utils/response";
94
+
95
+ export async function getUser(req, res) {
96
+ const user = await prisma.user.findFirst();
97
+ sendFastSuccess(res, 200, userSerializer, {
98
+ status: "success",
99
+ message: "User found",
100
+ data: user
101
+ });
102
+ }
103
+ ```
104
+
105
+ ## Database Workflow (Prisma)
106
+
107
+ Framework ini menggunakan **Prisma ORM** dengan struktur schema yang modular (dipecah per file). Berikut adalah panduan lengkap dari Development hingga Deployment.
108
+
109
+ ### 1. Development (Lokal)
110
+
111
+ Saat mengembangkan aplikasi di local environment:
112
+
113
+ **a. Mengupdate Schema Database**
114
+ Jika Anda mengubah file schema di `src/models/*.prisma` atau konfigurasi di `prisma/base.prisma.template`:
115
+
116
+ ```bash
117
+ npm run prisma:migrate
118
+ ```
119
+
120
+ _Perintah ini akan menggabungkan semua file schema, membuat file migrasi baru, menerapkan ke database lokal, dan men-generate ulang Prisma Client._
121
+
122
+ **b. Melihat/Edit Data (GUI)**
123
+ Untuk membuka dashboard visual database:
124
+
125
+ ```bash
126
+ npm run db:studio
127
+ ```
128
+
129
+ **c. Mengisi Data Awal (Seeding)**
130
+ Jika Anda butuh data dummy atau data awal (seperti roles/permissions):
131
+
132
+ ```bash
133
+ npm run db:seed
134
+ ```
135
+
136
+ **d. Reset Database Total**
137
+ Jika database berantakan dan ingin mengulang dari awal (HATI-HATI: Menghapus semua data):
138
+
139
+ ```bash
140
+ npm run db:reset
141
+ ```
142
+
143
+ _Perintah ini akan menghapus database, membuat ulang schema dari awal, dan otomatis menjalankan seeder._
144
+
145
+ ---
146
+
147
+ ### 2. Deployment (Production)
148
+
149
+ Saat deploy ke server production:
150
+
151
+ **a. Setup Awal**
152
+ Pastikan `.env` di production sudah disetup dengan benar (DATABASE_URL, dll).
153
+
154
+ **b. Menerapkan Migrasi**
155
+ Jangan gunakan `migrate dev` di production. Gunakan perintah ini:
156
+
157
+ ```bash
158
+ npm run prisma:deploy
159
+ ```
160
+
161
+ _Perintah ini hanya akan menerapkan file migrasi yang sudah ada ke database production tanpa mereset data atau meminta konfirmasi interaktif._
162
+
163
+ **c. Generate Client (Opsional)**
164
+ Biasanya dilakukan otomatis saat `npm install` (karena `postinstall`), tapi jika perlu manual:
165
+
166
+ ```bash
167
+ npm run prisma:generate
168
+ ```
@@ -0,0 +1,6 @@
1
+ {
2
+ "watch": ["src", ".env"],
3
+ "ext": "ts,json",
4
+ "ignore": ["src/**/*.test.ts"],
5
+ "exec": "ts-node -r tsconfig-paths/register src/index.ts"
6
+ }