mahameru 0.0.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 (218) hide show
  1. package/README.md +28 -0
  2. package/dist/api.error.cjs +107 -0
  3. package/dist/api.error.cjs.map +1 -0
  4. package/dist/api.error.d.cts +65 -0
  5. package/dist/api.error.d.ts +65 -0
  6. package/dist/api.error.js +83 -0
  7. package/dist/api.error.js.map +1 -0
  8. package/dist/base-class/base.controller.cjs +148 -0
  9. package/dist/base-class/base.controller.cjs.map +1 -0
  10. package/dist/base-class/base.controller.d.cts +38 -0
  11. package/dist/base-class/base.controller.d.ts +38 -0
  12. package/dist/base-class/base.controller.js +126 -0
  13. package/dist/base-class/base.controller.js.map +1 -0
  14. package/dist/base-class/base.entity.cjs +79 -0
  15. package/dist/base-class/base.entity.cjs.map +1 -0
  16. package/dist/base-class/base.entity.d.cts +8 -0
  17. package/dist/base-class/base.entity.d.ts +8 -0
  18. package/dist/base-class/base.entity.js +57 -0
  19. package/dist/base-class/base.entity.js.map +1 -0
  20. package/dist/base-class/base.model.cjs +204 -0
  21. package/dist/base-class/base.model.cjs.map +1 -0
  22. package/dist/base-class/base.model.d.cts +68 -0
  23. package/dist/base-class/base.model.d.ts +68 -0
  24. package/dist/base-class/base.model.js +182 -0
  25. package/dist/base-class/base.model.js.map +1 -0
  26. package/dist/base-class/base.service.cjs +37 -0
  27. package/dist/base-class/base.service.cjs.map +1 -0
  28. package/dist/base-class/base.service.d.cts +5 -0
  29. package/dist/base-class/base.service.d.ts +5 -0
  30. package/dist/base-class/base.service.js +15 -0
  31. package/dist/base-class/base.service.js.map +1 -0
  32. package/dist/base-class/index.cjs +392 -0
  33. package/dist/base-class/index.cjs.map +1 -0
  34. package/dist/base-class/index.d.cts +6 -0
  35. package/dist/base-class/index.d.ts +6 -0
  36. package/dist/base-class/index.js +365 -0
  37. package/dist/base-class/index.js.map +1 -0
  38. package/dist/cli/index.cjs +706 -0
  39. package/dist/cli/index.cjs.map +1 -0
  40. package/dist/cli/index.d.cts +3 -0
  41. package/dist/cli/index.d.ts +3 -0
  42. package/dist/cli/index.js +681 -0
  43. package/dist/cli/index.js.map +1 -0
  44. package/dist/cli/scripts/on-build.cjs +56 -0
  45. package/dist/cli/scripts/on-build.cjs.map +1 -0
  46. package/dist/cli/scripts/on-build.d.cts +3 -0
  47. package/dist/cli/scripts/on-build.d.ts +3 -0
  48. package/dist/cli/scripts/on-build.js +28 -0
  49. package/dist/cli/scripts/on-build.js.map +1 -0
  50. package/dist/cli/scripts/on-dev.cjs +483 -0
  51. package/dist/cli/scripts/on-dev.cjs.map +1 -0
  52. package/dist/cli/scripts/on-dev.d.cts +5 -0
  53. package/dist/cli/scripts/on-dev.d.ts +5 -0
  54. package/dist/cli/scripts/on-dev.js +449 -0
  55. package/dist/cli/scripts/on-dev.js.map +1 -0
  56. package/dist/cli/scripts/on-init.cjs +96 -0
  57. package/dist/cli/scripts/on-init.cjs.map +1 -0
  58. package/dist/cli/scripts/on-init.d.cts +3 -0
  59. package/dist/cli/scripts/on-init.d.ts +3 -0
  60. package/dist/cli/scripts/on-init.js +68 -0
  61. package/dist/cli/scripts/on-init.js.map +1 -0
  62. package/dist/cli/scripts/on-start.cjs +55 -0
  63. package/dist/cli/scripts/on-start.cjs.map +1 -0
  64. package/dist/cli/scripts/on-start.d.cts +3 -0
  65. package/dist/cli/scripts/on-start.d.ts +3 -0
  66. package/dist/cli/scripts/on-start.js +27 -0
  67. package/dist/cli/scripts/on-start.js.map +1 -0
  68. package/dist/client.cjs +405 -0
  69. package/dist/client.cjs.map +1 -0
  70. package/dist/client.d.cts +7 -0
  71. package/dist/client.d.ts +7 -0
  72. package/dist/client.js +371 -0
  73. package/dist/client.js.map +1 -0
  74. package/dist/constants.cjs +51 -0
  75. package/dist/constants.cjs.map +1 -0
  76. package/dist/constants.d.cts +7 -0
  77. package/dist/constants.d.ts +7 -0
  78. package/dist/constants.js +16 -0
  79. package/dist/constants.js.map +1 -0
  80. package/dist/database/column/index.cjs +34 -0
  81. package/dist/database/column/index.cjs.map +1 -0
  82. package/dist/database/column/index.d.cts +2 -0
  83. package/dist/database/column/index.d.ts +2 -0
  84. package/dist/database/column/index.js +8 -0
  85. package/dist/database/column/index.js.map +1 -0
  86. package/dist/database/index.cjs +83 -0
  87. package/dist/database/index.cjs.map +1 -0
  88. package/dist/database/index.d.cts +2 -0
  89. package/dist/database/index.d.ts +2 -0
  90. package/dist/database/index.js +60 -0
  91. package/dist/database/index.js.map +1 -0
  92. package/dist/database/snake-naming-strategy.class.cjs +78 -0
  93. package/dist/database/snake-naming-strategy.class.cjs.map +1 -0
  94. package/dist/database/snake-naming-strategy.class.d.cts +16 -0
  95. package/dist/database/snake-naming-strategy.class.d.ts +16 -0
  96. package/dist/database/snake-naming-strategy.class.js +56 -0
  97. package/dist/database/snake-naming-strategy.class.js.map +1 -0
  98. package/dist/error.cjs +46 -0
  99. package/dist/error.cjs.map +1 -0
  100. package/dist/error.d.cts +10 -0
  101. package/dist/error.d.ts +10 -0
  102. package/dist/error.js +28 -0
  103. package/dist/error.js.map +1 -0
  104. package/dist/express/app.cjs +233 -0
  105. package/dist/express/app.cjs.map +1 -0
  106. package/dist/express/app.d.cts +16 -0
  107. package/dist/express/app.d.ts +16 -0
  108. package/dist/express/app.js +205 -0
  109. package/dist/express/app.js.map +1 -0
  110. package/dist/express/index.cjs +239 -0
  111. package/dist/express/index.cjs.map +1 -0
  112. package/dist/express/index.d.cts +3 -0
  113. package/dist/express/index.d.ts +3 -0
  114. package/dist/express/index.js +205 -0
  115. package/dist/express/index.js.map +1 -0
  116. package/dist/express/middleware/cors.middleware.cjs +54 -0
  117. package/dist/express/middleware/cors.middleware.cjs.map +1 -0
  118. package/dist/express/middleware/cors.middleware.d.cts +9 -0
  119. package/dist/express/middleware/cors.middleware.d.ts +9 -0
  120. package/dist/express/middleware/cors.middleware.js +26 -0
  121. package/dist/express/middleware/cors.middleware.js.map +1 -0
  122. package/dist/express/middleware/error.middleware.cjs +136 -0
  123. package/dist/express/middleware/error.middleware.cjs.map +1 -0
  124. package/dist/express/middleware/error.middleware.d.cts +5 -0
  125. package/dist/express/middleware/error.middleware.d.ts +5 -0
  126. package/dist/express/middleware/error.middleware.js +116 -0
  127. package/dist/express/middleware/error.middleware.js.map +1 -0
  128. package/dist/express/middleware/filter.middleware.cjs +38 -0
  129. package/dist/express/middleware/filter.middleware.cjs.map +1 -0
  130. package/dist/express/middleware/filter.middleware.d.cts +5 -0
  131. package/dist/express/middleware/filter.middleware.d.ts +5 -0
  132. package/dist/express/middleware/filter.middleware.js +20 -0
  133. package/dist/express/middleware/filter.middleware.js.map +1 -0
  134. package/dist/express/middleware/index.cjs +206 -0
  135. package/dist/express/middleware/index.cjs.map +1 -0
  136. package/dist/express/middleware/index.d.cts +19 -0
  137. package/dist/express/middleware/index.d.ts +19 -0
  138. package/dist/express/middleware/index.js +169 -0
  139. package/dist/express/middleware/index.js.map +1 -0
  140. package/dist/express/middleware/not-found.middleware.cjs +79 -0
  141. package/dist/express/middleware/not-found.middleware.cjs.map +1 -0
  142. package/dist/express/middleware/not-found.middleware.d.cts +5 -0
  143. package/dist/express/middleware/not-found.middleware.d.ts +5 -0
  144. package/dist/express/middleware/not-found.middleware.js +59 -0
  145. package/dist/express/middleware/not-found.middleware.js.map +1 -0
  146. package/dist/generator.cjs +258 -0
  147. package/dist/generator.cjs.map +1 -0
  148. package/dist/generator.d.cts +10 -0
  149. package/dist/generator.d.ts +10 -0
  150. package/dist/generator.js +220 -0
  151. package/dist/generator.js.map +1 -0
  152. package/dist/http.cjs +82 -0
  153. package/dist/http.cjs.map +1 -0
  154. package/dist/http.d.cts +11 -0
  155. package/dist/http.d.ts +11 -0
  156. package/dist/http.js +64 -0
  157. package/dist/http.js.map +1 -0
  158. package/dist/index.cjs +831 -0
  159. package/dist/index.cjs.map +1 -0
  160. package/dist/index.d.cts +19 -0
  161. package/dist/index.d.ts +19 -0
  162. package/dist/index.js +783 -0
  163. package/dist/index.js.map +1 -0
  164. package/dist/lib/create-env-file.cjs +69 -0
  165. package/dist/lib/create-env-file.cjs.map +1 -0
  166. package/dist/lib/create-env-file.d.cts +3 -0
  167. package/dist/lib/create-env-file.d.ts +3 -0
  168. package/dist/lib/create-env-file.js +31 -0
  169. package/dist/lib/create-env-file.js.map +1 -0
  170. package/dist/lib/helper.cjs +94 -0
  171. package/dist/lib/helper.cjs.map +1 -0
  172. package/dist/lib/helper.d.cts +13 -0
  173. package/dist/lib/helper.d.ts +13 -0
  174. package/dist/lib/helper.js +62 -0
  175. package/dist/lib/helper.js.map +1 -0
  176. package/dist/lib/model.generator.cjs +212 -0
  177. package/dist/lib/model.generator.cjs.map +1 -0
  178. package/dist/lib/model.generator.d.cts +29 -0
  179. package/dist/lib/model.generator.d.ts +29 -0
  180. package/dist/lib/model.generator.js +174 -0
  181. package/dist/lib/model.generator.js.map +1 -0
  182. package/dist/lib/pre-init-dev-script.cjs +336 -0
  183. package/dist/lib/pre-init-dev-script.cjs.map +1 -0
  184. package/dist/lib/pre-init-dev-script.d.cts +2 -0
  185. package/dist/lib/pre-init-dev-script.d.ts +2 -0
  186. package/dist/lib/pre-init-dev-script.js +311 -0
  187. package/dist/lib/pre-init-dev-script.js.map +1 -0
  188. package/dist/mahameru.cjs +397 -0
  189. package/dist/mahameru.cjs.map +1 -0
  190. package/dist/mahameru.d.cts +78 -0
  191. package/dist/mahameru.d.ts +78 -0
  192. package/dist/mahameru.js +359 -0
  193. package/dist/mahameru.js.map +1 -0
  194. package/dist/request.cjs +35 -0
  195. package/dist/request.cjs.map +1 -0
  196. package/dist/request.d.cts +4 -0
  197. package/dist/request.d.ts +4 -0
  198. package/dist/request.js +13 -0
  199. package/dist/request.js.map +1 -0
  200. package/dist/response.cjs +35 -0
  201. package/dist/response.cjs.map +1 -0
  202. package/dist/response.d.cts +4 -0
  203. package/dist/response.d.ts +4 -0
  204. package/dist/response.js +13 -0
  205. package/dist/response.js.map +1 -0
  206. package/dist/types.cjs +1 -0
  207. package/dist/types.cjs.map +1 -0
  208. package/dist/types.d.cts +2 -0
  209. package/dist/types.d.ts +2 -0
  210. package/dist/types.js +1 -0
  211. package/dist/types.js.map +1 -0
  212. package/dist/utils/import-dynamic-module.cjs +34 -0
  213. package/dist/utils/import-dynamic-module.cjs.map +1 -0
  214. package/dist/utils/import-dynamic-module.d.cts +3 -0
  215. package/dist/utils/import-dynamic-module.d.ts +3 -0
  216. package/dist/utils/import-dynamic-module.js +12 -0
  217. package/dist/utils/import-dynamic-module.js.map +1 -0
  218. package/package.json +70 -0
@@ -0,0 +1,392 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/base-class/index.ts
21
+ var base_class_exports = {};
22
+ __export(base_class_exports, {
23
+ BaseController: () => BaseController,
24
+ BaseEntity: () => BaseEntity,
25
+ BaseModel: () => BaseModel,
26
+ BaseService: () => BaseService
27
+ });
28
+ module.exports = __toCommonJS(base_class_exports);
29
+
30
+ // src/base-class/base.controller.ts
31
+ var BaseController = class {
32
+ static {
33
+ __name(this, "BaseController");
34
+ }
35
+ defaultLimit = 10;
36
+ maxLimit = 100;
37
+ defaultOffset = 0;
38
+ defaultSortBy = "createdAt";
39
+ defaultSortDirection = "ASC";
40
+ allowedSortFields = [];
41
+ constructor(options) {
42
+ if (options) {
43
+ if (options.defaultLimit !== void 0) {
44
+ this.defaultLimit = options.defaultLimit;
45
+ }
46
+ if (options.maxLimit !== void 0) {
47
+ this.maxLimit = options.maxLimit;
48
+ }
49
+ if (options.defaultOffset !== void 0) {
50
+ this.defaultOffset = options.defaultOffset;
51
+ }
52
+ if (options.defaultSortBy !== void 0) {
53
+ this.defaultSortBy = options.defaultSortBy;
54
+ }
55
+ if (options.defaultSortDirection !== void 0) {
56
+ this.defaultSortDirection = options.defaultSortDirection;
57
+ }
58
+ if (options.allowedSortFields !== void 0) {
59
+ this.allowedSortFields = [
60
+ ...new Set(options.allowedSortFields)
61
+ ];
62
+ }
63
+ }
64
+ }
65
+ parseListQuery = /* @__PURE__ */ __name((request) => {
66
+ const { query: rawQuery, limit: rawLimit, offset: rawOffset, sortBy: rawSortBy, sortDirection: rawSortDirection } = request.query;
67
+ return {
68
+ query: this.parseQuery(rawQuery),
69
+ limit: this.parseLimit(rawLimit),
70
+ offset: this.parseOffset(rawOffset),
71
+ sortBy: this.parseSortBy(rawSortBy),
72
+ sortDirection: this.parseSortDirection(rawSortDirection)
73
+ };
74
+ }, "parseListQuery");
75
+ //@ts-ignore
76
+ parseTypeORMFindManyOptions(rawQuery) {
77
+ try {
78
+ if (typeof rawQuery === "string" && rawQuery.trim().length > 0) {
79
+ const result = JSON.parse(rawQuery);
80
+ if ("where" in result && typeof result.where === "object" && result.where !== null || "relations" in result && typeof result.relations === "object" && result.relations !== null || "order" in result && typeof result.order === "object" || "select" in result && typeof result.select === "object" || "take" in result || "skip" in result) {
81
+ if ("take" in result) result.take = parseInt(result.take);
82
+ if ("skip" in result) result.skip = parseInt(result.skip);
83
+ return result;
84
+ }
85
+ }
86
+ } catch {
87
+ return void 0;
88
+ }
89
+ return void 0;
90
+ }
91
+ parseQuery(rawQuery) {
92
+ if (Array.isArray(rawQuery)) {
93
+ rawQuery = rawQuery[0];
94
+ }
95
+ if (typeof rawQuery !== "string" || rawQuery.trim().length === 0) {
96
+ return void 0;
97
+ }
98
+ return rawQuery;
99
+ }
100
+ parseLimit(rawLimit) {
101
+ const parsed = this.parseInteger(rawLimit);
102
+ if (parsed === null || parsed < 1) {
103
+ return this.defaultLimit;
104
+ }
105
+ return Math.min(parsed, this.maxLimit);
106
+ }
107
+ parseOffset(rawOffset) {
108
+ const parsed = this.parseInteger(rawOffset);
109
+ if (parsed === null || parsed < 0) {
110
+ return this.defaultOffset;
111
+ }
112
+ return parsed;
113
+ }
114
+ parseSortBy(rawSortBy) {
115
+ if (Array.isArray(rawSortBy)) {
116
+ rawSortBy = rawSortBy[0];
117
+ }
118
+ if (typeof rawSortBy !== "string") {
119
+ return this.defaultSortBy;
120
+ }
121
+ if (!this.allowedSortFields.includes(rawSortBy)) {
122
+ return this.defaultSortBy;
123
+ }
124
+ return rawSortBy;
125
+ }
126
+ parseSortDirection(rawSortDirection) {
127
+ if (Array.isArray(rawSortDirection)) {
128
+ rawSortDirection = rawSortDirection[0];
129
+ }
130
+ if (typeof rawSortDirection !== "string") {
131
+ return this.defaultSortDirection;
132
+ }
133
+ return rawSortDirection.toLowerCase() === "desc" ? "DESC" : "ASC";
134
+ }
135
+ parseInteger(value) {
136
+ if (Array.isArray(value)) {
137
+ value = value[0];
138
+ }
139
+ if (typeof value !== "string" || value.trim().length === 0) {
140
+ return null;
141
+ }
142
+ const numberValue = Number(value);
143
+ if (!Number.isFinite(numberValue)) {
144
+ return null;
145
+ }
146
+ return Math.floor(numberValue);
147
+ }
148
+ };
149
+
150
+ // src/base-class/base.entity.ts
151
+ var import_typeorm = require("typeorm");
152
+ function _ts_decorate(decorators, target, key, desc) {
153
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
154
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
155
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
156
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
157
+ }
158
+ __name(_ts_decorate, "_ts_decorate");
159
+ function _ts_metadata(k, v) {
160
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
161
+ }
162
+ __name(_ts_metadata, "_ts_metadata");
163
+ var BaseEntity = class {
164
+ static {
165
+ __name(this, "BaseEntity");
166
+ }
167
+ id;
168
+ createdAt;
169
+ updatedAt;
170
+ isDisabled;
171
+ };
172
+ _ts_decorate([
173
+ (0, import_typeorm.PrimaryGeneratedColumn)("uuid"),
174
+ _ts_metadata("design:type", String)
175
+ ], BaseEntity.prototype, "id", void 0);
176
+ _ts_decorate([
177
+ (0, import_typeorm.CreateDateColumn)({
178
+ type: "datetime",
179
+ precision: 3,
180
+ default: /* @__PURE__ */ __name(() => "UTC_TIMESTAMP(3)", "default")
181
+ }),
182
+ _ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
183
+ ], BaseEntity.prototype, "createdAt", void 0);
184
+ _ts_decorate([
185
+ (0, import_typeorm.Column)({
186
+ type: "datetime",
187
+ precision: 3,
188
+ default: null,
189
+ nullable: true
190
+ }),
191
+ _ts_metadata("design:type", Object)
192
+ ], BaseEntity.prototype, "updatedAt", void 0);
193
+ _ts_decorate([
194
+ (0, import_typeorm.Column)({
195
+ type: "boolean",
196
+ default: false
197
+ }),
198
+ _ts_metadata("design:type", Boolean)
199
+ ], BaseEntity.prototype, "isDisabled", void 0);
200
+
201
+ // src/base-class/base.model.ts
202
+ var import_typeorm2 = require("typeorm");
203
+ var BaseModel = class _BaseModel {
204
+ static {
205
+ __name(this, "BaseModel");
206
+ }
207
+ dataSource;
208
+ entityTarget;
209
+ static defaultChunkSize = 500;
210
+ constructor(dataSource, entityTarget) {
211
+ this.dataSource = dataSource;
212
+ this.entityTarget = entityTarget;
213
+ }
214
+ getRepository(manager) {
215
+ return (manager ?? this.dataSource.manager).getRepository(this.entityTarget);
216
+ }
217
+ transaction(handler) {
218
+ return this.dataSource.transaction(handler);
219
+ }
220
+ async list(options, manager) {
221
+ let where = options.where;
222
+ if (typeof options.parsedListQuery.query === "string" && options.parsedListQuery.query.trim().length > 0 && options.searchFields && options.searchFields.length > 0) {
223
+ const search = `%${options.parsedListQuery.query.trim()}%`;
224
+ where = options.searchFields.map((field) => ({
225
+ [field]: (0, import_typeorm2.Like)(search)
226
+ }));
227
+ }
228
+ const order = options.parsedListQuery.sortBy ? {
229
+ [options.parsedListQuery.sortBy]: options.parsedListQuery.sortDirection ?? "ASC"
230
+ } : options.defaultOrder;
231
+ const [data, total] = await this.getRepository(manager).findAndCount({
232
+ where,
233
+ take: options.parsedListQuery.limit,
234
+ skip: options.parsedListQuery.offset,
235
+ order,
236
+ relations: options.relations
237
+ });
238
+ return {
239
+ data,
240
+ meta: {
241
+ total,
242
+ limit: options.parsedListQuery.limit,
243
+ offset: options.parsedListQuery.offset,
244
+ hasNext: options.parsedListQuery.offset + data.length < total
245
+ }
246
+ };
247
+ }
248
+ find(options, manager) {
249
+ return this.getRepository(manager).find(options);
250
+ }
251
+ findAndCount(options, manager) {
252
+ return this.getRepository(manager).findAndCount(options);
253
+ }
254
+ findOne(options, manager) {
255
+ return this.getRepository(manager).findOne(options);
256
+ }
257
+ findOneBy(where, manager) {
258
+ return this.getRepository(manager).findOneBy(where);
259
+ }
260
+ findOneById(id, manager) {
261
+ return this.getRepository(manager).findOne({
262
+ where: {
263
+ id
264
+ }
265
+ });
266
+ }
267
+ count(options, manager) {
268
+ return this.getRepository(manager).count(options);
269
+ }
270
+ countBy(where, manager) {
271
+ return this.getRepository(manager).countBy(where);
272
+ }
273
+ async exists(where, manager) {
274
+ const total = await this.countBy(where, manager);
275
+ return total > 0;
276
+ }
277
+ create(data, manager) {
278
+ return this.getRepository(manager).create(data);
279
+ }
280
+ save(data, manager) {
281
+ return this.getRepository(manager).save(data);
282
+ }
283
+ async createAndSave(data, manager) {
284
+ const repository = this.getRepository(manager);
285
+ const entity = repository.create(data);
286
+ return repository.save(entity);
287
+ }
288
+ async createBatch(data, options = {}, manager) {
289
+ const chunkSize = this.normalizeChunkSize(options.chunkSize);
290
+ const result = {
291
+ totalRecord: data.length,
292
+ totalAdded: 0,
293
+ failed: []
294
+ };
295
+ for (let index = 0; index < data.length; index += chunkSize) {
296
+ const chunk = data.slice(index, index + chunkSize);
297
+ try {
298
+ const saved = await this.saveBatch(chunk, manager);
299
+ result.totalAdded += saved.length;
300
+ } catch {
301
+ await this.saveBatchOneByOne(chunk, result, manager);
302
+ }
303
+ }
304
+ return result;
305
+ }
306
+ async update(where, data, manager) {
307
+ const repository = this.getRepository(manager);
308
+ if (!data.updatedAt) data.updatedAt = /* @__PURE__ */ new Date();
309
+ return repository.update(where, data);
310
+ }
311
+ updateById(id, data, manager) {
312
+ const repository = this.getRepository(manager);
313
+ if (!data.updatedAt) data.updatedAt = /* @__PURE__ */ new Date();
314
+ return repository.update(id, data);
315
+ }
316
+ async updateByIds(ids, data, manager) {
317
+ const repository = this.getRepository(manager);
318
+ if (!data.updatedAt) data.updatedAt = /* @__PURE__ */ new Date();
319
+ return repository.update(ids, {
320
+ ...data
321
+ });
322
+ }
323
+ async removeById(id, manager) {
324
+ const repository = this.getRepository(manager);
325
+ const entity = await this.findOneById(id, manager);
326
+ if (!entity) {
327
+ return null;
328
+ }
329
+ await repository.remove(entity);
330
+ return entity;
331
+ }
332
+ async softRemoveById(id, manager) {
333
+ const repository = this.getRepository(manager);
334
+ const entity = await this.findOneById(id, manager);
335
+ if (!entity) {
336
+ return null;
337
+ }
338
+ await repository.softRemove(entity);
339
+ return entity;
340
+ }
341
+ async restoreById(id, manager) {
342
+ const result = await this.getRepository(manager).restore(id);
343
+ return Boolean(result.affected);
344
+ }
345
+ async delete(where, manager) {
346
+ const result = await this.getRepository(manager).delete(where);
347
+ return Boolean(result.affected);
348
+ }
349
+ normalizeChunkSize(chunkSize) {
350
+ if (!chunkSize || chunkSize < 1) return _BaseModel.defaultChunkSize;
351
+ return Math.floor(chunkSize);
352
+ }
353
+ async saveBatch(data, manager) {
354
+ const repo = this.getRepository(manager);
355
+ const objects = repo.create(data);
356
+ return repo.save(objects, {
357
+ chunk: data.length
358
+ });
359
+ }
360
+ async saveBatchOneByOne(data, result, manager) {
361
+ for (const item of data) {
362
+ try {
363
+ await this.saveBatch([
364
+ item
365
+ ], manager);
366
+ result.totalAdded += 1;
367
+ } catch (error) {
368
+ result.failed.push({
369
+ data: item,
370
+ error
371
+ });
372
+ }
373
+ }
374
+ }
375
+ };
376
+
377
+ // src/base-class/base.service.ts
378
+ var BaseService = class {
379
+ static {
380
+ __name(this, "BaseService");
381
+ }
382
+ constructor() {
383
+ }
384
+ };
385
+ // Annotate the CommonJS export names for ESM import in node:
386
+ 0 && (module.exports = {
387
+ BaseController,
388
+ BaseEntity,
389
+ BaseModel,
390
+ BaseService
391
+ });
392
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/base-class/index.ts","../../src/base-class/base.controller.ts","../../src/base-class/base.entity.ts","../../src/base-class/base.model.ts","../../src/base-class/base.service.ts"],"sourcesContent":["export * from './base.controller.js'\r\nexport * from './base.entity.js'\r\nexport * from './base.model.js'\r\nexport * from './base.service.js'\r\n","import type { FindManyOptions } from 'typeorm'\r\nimport type { Request } from \"express\"\r\nimport type { BaseEntity } from \"./base.entity.js\"\r\n\r\ntype BaseControllerOptions<T> = {\r\n defaultLimit?: number\r\n maxLimit?: number\r\n defaultOffset?: number\r\n defaultSortBy?: keyof T\r\n defaultSortDirection?: 'ASC' | 'DESC'\r\n allowedSortFields?: (keyof T)[]\r\n}\r\n\r\nexport type SortDirection = \"ASC\" | \"DESC\"\r\n\r\nexport type ParsedListQuery<T> = {\r\n query: string | undefined;\r\n limit: number;\r\n offset: number;\r\n sortBy: keyof T | keyof BaseEntity;\r\n sortDirection: SortDirection\r\n}\r\n\r\nexport class BaseController<T> {\r\n private defaultLimit = 10\r\n private maxLimit = 100\r\n private defaultOffset = 0\r\n private defaultSortBy: keyof T | keyof BaseEntity = 'createdAt'\r\n private defaultSortDirection: 'ASC' | 'DESC' = 'ASC'\r\n private allowedSortFields: (keyof T)[] = []\r\n\r\n constructor(options?: BaseControllerOptions<T>) {\r\n if (options) {\r\n if (options.defaultLimit !== undefined) {\r\n this.defaultLimit = options.defaultLimit\r\n }\r\n\r\n if (options.maxLimit !== undefined) {\r\n this.maxLimit = options.maxLimit\r\n }\r\n\r\n if (options.defaultOffset !== undefined) {\r\n this.defaultOffset = options.defaultOffset\r\n }\r\n\r\n if (options.defaultSortBy !== undefined) {\r\n this.defaultSortBy = options.defaultSortBy\r\n }\r\n\r\n if (options.defaultSortDirection !== undefined) {\r\n this.defaultSortDirection = options.defaultSortDirection\r\n }\r\n\r\n if (options.allowedSortFields !== undefined) {\r\n this.allowedSortFields = [...new Set(options.allowedSortFields)]\r\n }\r\n }\r\n }\r\n\r\n parseListQuery = (request: Request): ParsedListQuery<T> => {\r\n const { query: rawQuery, limit: rawLimit, offset: rawOffset, sortBy: rawSortBy, sortDirection: rawSortDirection } = request.query\r\n\r\n return {\r\n query: this.parseQuery(rawQuery),\r\n limit: this.parseLimit(rawLimit),\r\n offset: this.parseOffset(rawOffset),\r\n sortBy: this.parseSortBy(rawSortBy),\r\n sortDirection: this.parseSortDirection(rawSortDirection)\r\n }\r\n }\r\n\r\n //@ts-ignore\r\n private parseTypeORMFindManyOptions(rawQuery: unknown): FindManyOptions<T> | undefined {\r\n try {\r\n if (typeof rawQuery === 'string' && rawQuery.trim().length > 0) {\r\n const result = JSON.parse(rawQuery)\r\n\r\n if (\r\n \"where\" in result && typeof result.where === 'object' && result.where !== null ||\r\n \"relations\" in result && typeof result.relations === 'object' && result.relations !== null ||\r\n \"order\" in result && typeof result.order === 'object' ||\r\n \"select\" in result && typeof result.select === 'object' ||\r\n \"take\" in result ||\r\n \"skip\" in result\r\n ) {\r\n if (\"take\" in result)\r\n result.take = parseInt(result.take)\r\n\r\n if (\"skip\" in result)\r\n result.skip = parseInt(result.skip)\r\n\r\n return result as FindManyOptions<T>\r\n }\r\n }\r\n } catch {\r\n return undefined\r\n }\r\n\r\n return undefined\r\n }\r\n\r\n private parseQuery(rawQuery: unknown): string | undefined {\r\n if (Array.isArray(rawQuery)) {\r\n rawQuery = rawQuery[0]\r\n }\r\n\r\n if (typeof rawQuery !== 'string' || rawQuery.trim().length === 0) {\r\n return undefined\r\n }\r\n\r\n return rawQuery\r\n }\r\n\r\n private parseLimit(rawLimit: unknown): number {\r\n const parsed = this.parseInteger(rawLimit)\r\n\r\n if (parsed === null || parsed < 1) {\r\n return this.defaultLimit\r\n }\r\n\r\n return Math.min(parsed, this.maxLimit)\r\n }\r\n\r\n private parseOffset(rawOffset: unknown): number {\r\n const parsed = this.parseInteger(rawOffset)\r\n\r\n if (parsed === null || parsed < 0) {\r\n return this.defaultOffset\r\n }\r\n\r\n return parsed\r\n }\r\n\r\n private parseSortBy(rawSortBy: unknown): keyof T | keyof BaseEntity {\r\n if (Array.isArray(rawSortBy)) {\r\n rawSortBy = rawSortBy[0]\r\n }\r\n\r\n if (typeof rawSortBy !== 'string') {\r\n return this.defaultSortBy\r\n }\r\n\r\n if (!this.allowedSortFields.includes(rawSortBy as keyof T)) {\r\n return this.defaultSortBy\r\n }\r\n\r\n return rawSortBy as keyof T\r\n }\r\n\r\n private parseSortDirection(rawSortDirection: unknown): 'ASC' | 'DESC' {\r\n if (Array.isArray(rawSortDirection)) {\r\n rawSortDirection = rawSortDirection[0]\r\n }\r\n\r\n if (typeof rawSortDirection !== 'string') {\r\n return this.defaultSortDirection\r\n }\r\n\r\n return rawSortDirection.toLowerCase() === 'desc' ? 'DESC' : 'ASC'\r\n }\r\n\r\n private parseInteger(value: unknown): number | null {\r\n if (Array.isArray(value)) {\r\n value = value[0]\r\n }\r\n\r\n if (typeof value !== 'string' || value.trim().length === 0) {\r\n return null\r\n }\r\n\r\n const numberValue = Number(value)\r\n\r\n if (!Number.isFinite(numberValue)) {\r\n return null\r\n }\r\n\r\n return Math.floor(numberValue)\r\n }\r\n}\r\n","import { Column, CreateDateColumn, PrimaryGeneratedColumn } from 'typeorm'\r\n\r\nexport abstract class BaseEntity {\r\n @PrimaryGeneratedColumn('uuid')\r\n id: string\r\n\r\n @CreateDateColumn({\r\n type: 'datetime',\r\n precision: 3,\r\n default: () => 'UTC_TIMESTAMP(3)',\r\n })\r\n createdAt: Date\r\n\r\n @Column({\r\n type: 'datetime',\r\n precision: 3,\r\n default: null,\r\n nullable: true\r\n })\r\n updatedAt: Date | null\r\n\r\n @Column({\r\n type: 'boolean',\r\n default: false\r\n })\r\n isDisabled: boolean\r\n}\r\n","import {\r\n DataSource,\r\n DeepPartial,\r\n EntityManager,\r\n EntityTarget,\r\n FindManyOptions,\r\n FindOneOptions,\r\n FindOptionsOrder,\r\n FindOptionsRelations,\r\n FindOptionsWhere,\r\n Like,\r\n ObjectLiteral,\r\n QueryDeepPartialEntity,\r\n Repository\r\n} from 'typeorm'\r\nimport type { ParsedListQuery } from './base.controller.js'\r\n\r\nexport type CreateBatchOptions = {\r\n chunkSize?: number\r\n}\r\n\r\nexport type CreateBatchResult<T extends ObjectLiteral> = {\r\n totalRecord: number\r\n totalAdded: number\r\n failed: {\r\n data: DeepPartial<T>\r\n error: unknown\r\n }[]\r\n}\r\n\r\nexport type TransactionHandler<TResult> = (manager: EntityManager) => Promise<TResult>\r\n\r\nexport type BaseModelListOptions<TEntity extends ObjectLiteral> = {\r\n parsedListQuery: ParsedListQuery<TEntity>\r\n searchFields?: (keyof TEntity)[]\r\n relations?: FindOptionsRelations<TEntity>\r\n where?: FindOptionsWhere<TEntity> | FindOptionsWhere<TEntity>[]\r\n defaultOrder?: FindOptionsOrder<TEntity>\r\n}\r\n\r\nexport abstract class BaseModel<TEntity extends ObjectLiteral & { id: string }> {\r\n private static readonly defaultChunkSize = 500\r\n\r\n constructor(\r\n protected readonly dataSource: DataSource,\r\n protected readonly entityTarget: EntityTarget<TEntity>\r\n ) { }\r\n\r\n protected getRepository(manager?: EntityManager): Repository<TEntity> {\r\n return (manager ?? this.dataSource.manager).getRepository(this.entityTarget)\r\n }\r\n\r\n transaction<TResult>(handler: TransactionHandler<TResult>): Promise<TResult> {\r\n return this.dataSource.transaction(handler)\r\n }\r\n\r\n async list(options: BaseModelListOptions<TEntity>, manager?: EntityManager) {\r\n let where = options.where\r\n\r\n if (\r\n typeof options.parsedListQuery.query === 'string' &&\r\n options.parsedListQuery.query.trim().length > 0 &&\r\n options.searchFields &&\r\n options.searchFields.length > 0\r\n ) {\r\n const search = `%${options.parsedListQuery.query.trim()}%`\r\n\r\n where = options.searchFields.map((field) => ({\r\n [field]: Like(search)\r\n })) as FindOptionsWhere<TEntity>[]\r\n }\r\n\r\n const order: FindOptionsOrder<TEntity> | undefined = options.parsedListQuery.sortBy\r\n ? {\r\n [options.parsedListQuery.sortBy]: options.parsedListQuery.sortDirection ?? 'ASC'\r\n } as FindOptionsOrder<TEntity>\r\n : options.defaultOrder\r\n\r\n const [data, total] = await this.getRepository(manager).findAndCount({\r\n where,\r\n take: options.parsedListQuery.limit,\r\n skip: options.parsedListQuery.offset,\r\n order,\r\n relations: options.relations\r\n })\r\n\r\n return {\r\n data,\r\n meta: {\r\n total,\r\n limit: options.parsedListQuery.limit,\r\n offset: options.parsedListQuery.offset,\r\n hasNext: options.parsedListQuery.offset + data.length < total\r\n }\r\n }\r\n }\r\n\r\n find(options?: FindManyOptions<TEntity>, manager?: EntityManager) {\r\n return this.getRepository(manager).find(options)\r\n }\r\n\r\n findAndCount(options?: FindManyOptions<TEntity>, manager?: EntityManager) {\r\n return this.getRepository(manager).findAndCount(options)\r\n }\r\n\r\n findOne(options: FindOneOptions<TEntity>, manager?: EntityManager) {\r\n return this.getRepository(manager).findOne(options)\r\n }\r\n\r\n findOneBy(where: FindOptionsWhere<TEntity>, manager?: EntityManager) {\r\n return this.getRepository(manager).findOneBy(where)\r\n }\r\n\r\n findOneById(id: TEntity['id'], manager?: EntityManager) {\r\n return this.getRepository(manager).findOne({\r\n where: {\r\n id\r\n } as FindOptionsWhere<TEntity>\r\n })\r\n }\r\n\r\n count(options?: FindManyOptions<TEntity>, manager?: EntityManager) {\r\n return this.getRepository(manager).count(options)\r\n }\r\n\r\n countBy(where: FindOptionsWhere<TEntity>, manager?: EntityManager) {\r\n return this.getRepository(manager).countBy(where)\r\n }\r\n\r\n async exists(where: FindOptionsWhere<TEntity>, manager?: EntityManager) {\r\n const total = await this.countBy(where, manager)\r\n\r\n return total > 0\r\n }\r\n\r\n create(data: DeepPartial<TEntity>, manager?: EntityManager) {\r\n return this.getRepository(manager).create(data)\r\n }\r\n\r\n save(data: DeepPartial<TEntity>, manager?: EntityManager) {\r\n return this.getRepository(manager).save(data)\r\n }\r\n\r\n async createAndSave(data: DeepPartial<TEntity>, manager?: EntityManager) {\r\n const repository = this.getRepository(manager)\r\n const entity = repository.create(data)\r\n\r\n return repository.save(entity)\r\n }\r\n\r\n async createBatch(data: DeepPartial<TEntity>[], options: CreateBatchOptions = {}, manager?: EntityManager): Promise<CreateBatchResult<TEntity>> {\r\n const chunkSize = this.normalizeChunkSize(options.chunkSize)\r\n const result: CreateBatchResult<TEntity> = {\r\n totalRecord: data.length,\r\n totalAdded: 0,\r\n failed: []\r\n }\r\n\r\n for (let index = 0; index < data.length; index += chunkSize) {\r\n const chunk = data.slice(index, index + chunkSize)\r\n\r\n try {\r\n const saved = await this.saveBatch(chunk, manager)\r\n result.totalAdded += saved.length\r\n } catch {\r\n await this.saveBatchOneByOne(chunk, result, manager)\r\n }\r\n }\r\n\r\n return result\r\n }\r\n\r\n async update(where: FindOptionsWhere<TEntity> | FindOptionsWhere<TEntity>[], data: DeepPartial<TEntity>, manager?: EntityManager) {\r\n const repository = this.getRepository(manager)\r\n\r\n if (!data.updatedAt)\r\n (data as any).updatedAt = new Date()\r\n\r\n return repository.update(where, data)\r\n }\r\n\r\n updateById(\r\n id: TEntity['id'],\r\n data: DeepPartial<TEntity>,\r\n manager?: EntityManager\r\n ) {\r\n const repository = this.getRepository(manager)\r\n\r\n if (!data.updatedAt)\r\n (data as any).updatedAt = new Date()\r\n\r\n return repository.update(id, data)\r\n }\r\n\r\n async updateByIds(\r\n ids: string[],\r\n data: QueryDeepPartialEntity<TEntity>,\r\n manager?: EntityManager\r\n ) {\r\n const repository = this.getRepository(manager)\r\n\r\n if (!(data as any).updatedAt)\r\n (data as any).updatedAt = new Date()\r\n\r\n return repository.update(ids, { ...data })\r\n }\r\n\r\n async removeById(id: TEntity['id'], manager?: EntityManager) {\r\n const repository = this.getRepository(manager)\r\n\r\n const entity = await this.findOneById(id, manager)\r\n\r\n if (!entity) {\r\n return null\r\n }\r\n\r\n await repository.remove(entity)\r\n\r\n return entity\r\n }\r\n\r\n async softRemoveById(id: TEntity['id'], manager?: EntityManager) {\r\n const repository = this.getRepository(manager)\r\n\r\n const entity = await this.findOneById(id, manager)\r\n\r\n if (!entity) {\r\n return null\r\n }\r\n\r\n await repository.softRemove(entity)\r\n\r\n return entity\r\n }\r\n\r\n async restoreById(id: TEntity['id'], manager?: EntityManager) {\r\n const result = await this.getRepository(manager).restore(id)\r\n\r\n return Boolean(result.affected)\r\n }\r\n\r\n async delete(where: FindOptionsWhere<TEntity>, manager?: EntityManager) {\r\n const result = await this.getRepository(manager).delete(where)\r\n\r\n return Boolean(result.affected)\r\n }\r\n\r\n private normalizeChunkSize(chunkSize?: number) {\r\n if (!chunkSize || chunkSize < 1) return BaseModel.defaultChunkSize\r\n\r\n return Math.floor(chunkSize)\r\n }\r\n\r\n async saveBatch(data: DeepPartial<TEntity>[], manager?: EntityManager) {\r\n const repo = this.getRepository(manager)\r\n const objects = repo.create(data)\r\n\r\n return repo.save(objects, {\r\n chunk: data.length\r\n })\r\n }\r\n\r\n private async saveBatchOneByOne(data: DeepPartial<TEntity>[], result: CreateBatchResult<TEntity>, manager?: EntityManager) {\r\n for (const item of data) {\r\n try {\r\n await this.saveBatch([item], manager)\r\n result.totalAdded += 1\r\n } catch (error) {\r\n result.failed.push({\r\n data: item,\r\n error\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","export class BaseService {\r\n constructor() { }\r\n}\r\n"],"mappings":"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","names":["BaseController","defaultLimit","maxLimit","defaultOffset","defaultSortBy","defaultSortDirection","allowedSortFields","options","undefined","Set","parseListQuery","request","query","rawQuery","limit","rawLimit","offset","rawOffset","sortBy","rawSortBy","sortDirection","rawSortDirection","parseQuery","parseLimit","parseOffset","parseSortBy","parseSortDirection","parseTypeORMFindManyOptions","trim","length","result","JSON","parse","where","relations","order","select","take","parseInt","skip","Array","isArray","parsed","parseInteger","Math","min","includes","toLowerCase","value","numberValue","Number","isFinite","floor","BaseEntity","id","createdAt","updatedAt","isDisabled","type","precision","default","nullable","import_typeorm","BaseModel","defaultChunkSize","dataSource","entityTarget","getRepository","manager","transaction","handler","list","options","where","parsedListQuery","query","trim","length","searchFields","search","map","field","Like","order","sortBy","sortDirection","defaultOrder","data","total","findAndCount","take","limit","skip","offset","relations","meta","hasNext","find","findOne","findOneBy","findOneById","id","count","countBy","exists","create","save","createAndSave","repository","entity","createBatch","chunkSize","normalizeChunkSize","result","totalRecord","totalAdded","failed","index","chunk","slice","saved","saveBatch","saveBatchOneByOne","update","updatedAt","Date","updateById","updateByIds","ids","removeById","remove","softRemoveById","softRemove","restoreById","restore","Boolean","affected","delete","Math","floor","repo","objects","item","error","push","BaseService"]}
@@ -0,0 +1,6 @@
1
+ export { BaseController, ParsedListQuery, SortDirection } from './base.controller.cjs';
2
+ export { BaseEntity } from './base.entity.cjs';
3
+ export { BaseModel, BaseModelListOptions, CreateBatchOptions, CreateBatchResult, TransactionHandler } from './base.model.cjs';
4
+ export { BaseService } from './base.service.cjs';
5
+ import 'express';
6
+ import 'typeorm';
@@ -0,0 +1,6 @@
1
+ export { BaseController, ParsedListQuery, SortDirection } from './base.controller.js';
2
+ export { BaseEntity } from './base.entity.js';
3
+ export { BaseModel, BaseModelListOptions, CreateBatchOptions, CreateBatchResult, TransactionHandler } from './base.model.js';
4
+ export { BaseService } from './base.service.js';
5
+ import 'express';
6
+ import 'typeorm';