@simonbackx/simple-database 1.36.0 → 1.36.4

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 (230) hide show
  1. package/dist/_virtual/_@oxc-project_runtime@0.115.0/helpers/decorate.cjs +9 -0
  2. package/dist/_virtual/_@oxc-project_runtime@0.115.0/helpers/decorate.mjs +9 -0
  3. package/dist/_virtual/_rolldown/runtime.cjs +23 -0
  4. package/dist/index.cjs +22 -0
  5. package/dist/index.d.cts +10 -0
  6. package/dist/index.d.mts +10 -0
  7. package/dist/index.mjs +10 -0
  8. package/dist/src/classes/Column.cjs +134 -0
  9. package/dist/src/classes/Column.d.cts +34 -0
  10. package/dist/src/classes/Column.d.cts.map +1 -0
  11. package/dist/src/classes/Column.d.mts +34 -0
  12. package/dist/src/classes/Column.d.mts.map +1 -0
  13. package/dist/src/classes/Column.mjs +135 -0
  14. package/dist/src/classes/Column.mjs.map +1 -0
  15. package/dist/src/classes/ColumnType.d.cts +5 -0
  16. package/dist/src/classes/ColumnType.d.cts.map +1 -0
  17. package/dist/src/classes/ColumnType.d.mts +5 -0
  18. package/dist/src/classes/ColumnType.d.mts.map +1 -0
  19. package/dist/src/classes/Database.cjs +157 -0
  20. package/dist/src/classes/Database.d.cts +59 -0
  21. package/dist/src/classes/Database.d.cts.map +1 -0
  22. package/dist/src/classes/Database.d.mts +59 -0
  23. package/dist/src/classes/Database.d.mts.map +1 -0
  24. package/dist/src/classes/Database.mjs +155 -0
  25. package/dist/src/classes/Database.mjs.map +1 -0
  26. package/dist/src/classes/DatabaseStoredValue.d.cts +5 -0
  27. package/dist/src/classes/DatabaseStoredValue.d.cts.map +1 -0
  28. package/dist/src/classes/DatabaseStoredValue.d.mts +5 -0
  29. package/dist/src/classes/DatabaseStoredValue.d.mts.map +1 -0
  30. package/dist/src/classes/Factory.cjs +48 -0
  31. package/dist/src/classes/Factory.d.cts +17 -0
  32. package/dist/src/classes/Factory.d.cts.map +1 -0
  33. package/dist/src/classes/Factory.d.mts +17 -0
  34. package/dist/src/classes/Factory.d.mts.map +1 -0
  35. package/dist/src/classes/Factory.mjs +50 -0
  36. package/dist/src/classes/Factory.mjs.map +1 -0
  37. package/dist/src/classes/ManyToManyRelation.cjs +193 -0
  38. package/dist/src/classes/ManyToManyRelation.d.cts +83 -0
  39. package/dist/src/classes/ManyToManyRelation.d.cts.map +1 -0
  40. package/dist/src/classes/ManyToManyRelation.d.mts +83 -0
  41. package/dist/src/classes/ManyToManyRelation.d.mts.map +1 -0
  42. package/dist/src/classes/ManyToManyRelation.mjs +195 -0
  43. package/dist/src/classes/ManyToManyRelation.mjs.map +1 -0
  44. package/dist/src/classes/ManyToOneRelation.cjs +41 -0
  45. package/dist/src/classes/ManyToOneRelation.d.cts +26 -0
  46. package/dist/src/classes/ManyToOneRelation.d.cts.map +1 -0
  47. package/dist/src/classes/ManyToOneRelation.d.mts +26 -0
  48. package/dist/src/classes/ManyToOneRelation.d.mts.map +1 -0
  49. package/dist/src/classes/ManyToOneRelation.mjs +43 -0
  50. package/dist/src/classes/ManyToOneRelation.mjs.map +1 -0
  51. package/dist/src/classes/Migration.cjs +116 -0
  52. package/dist/src/classes/Migration.d.cts +16 -0
  53. package/dist/src/classes/Migration.d.cts.map +1 -0
  54. package/dist/src/classes/Migration.d.mts +16 -0
  55. package/dist/src/classes/Migration.d.mts.map +1 -0
  56. package/dist/src/classes/Migration.mjs +116 -0
  57. package/dist/src/classes/Migration.mjs.map +1 -0
  58. package/dist/src/classes/Model.cjs +459 -0
  59. package/dist/src/classes/Model.d.cts +162 -0
  60. package/dist/src/classes/Model.d.cts.map +1 -0
  61. package/dist/src/classes/Model.d.mts +162 -0
  62. package/dist/src/classes/Model.d.mts.map +1 -0
  63. package/dist/src/classes/Model.mjs +460 -0
  64. package/dist/src/classes/Model.mjs.map +1 -0
  65. package/dist/src/classes/OneToManyRelation.cjs +66 -0
  66. package/dist/src/classes/OneToManyRelation.d.cts +42 -0
  67. package/dist/src/classes/OneToManyRelation.d.cts.map +1 -0
  68. package/dist/src/classes/OneToManyRelation.d.mts +42 -0
  69. package/dist/src/classes/OneToManyRelation.d.mts.map +1 -0
  70. package/dist/src/classes/OneToManyRelation.mjs +68 -0
  71. package/dist/src/classes/OneToManyRelation.mjs.map +1 -0
  72. package/dist/src/classes/data/boys.cjs +1005 -0
  73. package/dist/src/classes/data/boys.mjs +1007 -0
  74. package/dist/src/classes/data/boys.mjs.map +1 -0
  75. package/dist/src/classes/data/family-names.cjs +1005 -0
  76. package/dist/src/classes/data/family-names.mjs +1007 -0
  77. package/dist/src/classes/data/family-names.mjs.map +1 -0
  78. package/dist/src/classes/data/girls.cjs +1004 -0
  79. package/dist/src/classes/data/girls.mjs +1006 -0
  80. package/dist/src/classes/data/girls.mjs.map +1 -0
  81. package/dist/src/decorators/Column.cjs +26 -0
  82. package/dist/src/decorators/Column.d.cts +22 -0
  83. package/dist/src/decorators/Column.d.cts.map +1 -0
  84. package/dist/src/decorators/Column.d.mts +22 -0
  85. package/dist/src/decorators/Column.d.mts.map +1 -0
  86. package/dist/src/decorators/Column.mjs +28 -0
  87. package/dist/src/decorators/Column.mjs.map +1 -0
  88. package/dist/src/models/Migration.cjs +37 -0
  89. package/dist/src/models/Migration.mjs +39 -0
  90. package/dist/src/models/Migration.mjs.map +1 -0
  91. package/package.json +27 -14
  92. package/dist/cjs/index.d.ts +0 -10
  93. package/dist/cjs/index.d.ts.map +0 -1
  94. package/dist/cjs/index.js +0 -13
  95. package/dist/cjs/index.js.map +0 -1
  96. package/dist/cjs/package.json +0 -1
  97. package/dist/cjs/src/classes/Column.d.ts +0 -30
  98. package/dist/cjs/src/classes/Column.d.ts.map +0 -1
  99. package/dist/cjs/src/classes/Column.js +0 -183
  100. package/dist/cjs/src/classes/Column.js.map +0 -1
  101. package/dist/cjs/src/classes/ColumnType.d.ts +0 -2
  102. package/dist/cjs/src/classes/ColumnType.d.ts.map +0 -1
  103. package/dist/cjs/src/classes/ColumnType.js +0 -3
  104. package/dist/cjs/src/classes/ColumnType.js.map +0 -1
  105. package/dist/cjs/src/classes/Database.d.ts +0 -59
  106. package/dist/cjs/src/classes/Database.d.ts.map +0 -1
  107. package/dist/cjs/src/classes/Database.js +0 -176
  108. package/dist/cjs/src/classes/Database.js.map +0 -1
  109. package/dist/cjs/src/classes/DatabaseStoredValue.d.ts +0 -2
  110. package/dist/cjs/src/classes/DatabaseStoredValue.d.ts.map +0 -1
  111. package/dist/cjs/src/classes/DatabaseStoredValue.js +0 -3
  112. package/dist/cjs/src/classes/DatabaseStoredValue.js.map +0 -1
  113. package/dist/cjs/src/classes/Factory.d.ts +0 -14
  114. package/dist/cjs/src/classes/Factory.d.ts.map +0 -1
  115. package/dist/cjs/src/classes/Factory.js +0 -56
  116. package/dist/cjs/src/classes/Factory.js.map +0 -1
  117. package/dist/cjs/src/classes/ManyToManyRelation.d.ts +0 -79
  118. package/dist/cjs/src/classes/ManyToManyRelation.d.ts.map +0 -1
  119. package/dist/cjs/src/classes/ManyToManyRelation.js +0 -258
  120. package/dist/cjs/src/classes/ManyToManyRelation.js.map +0 -1
  121. package/dist/cjs/src/classes/ManyToOneRelation.d.ts +0 -22
  122. package/dist/cjs/src/classes/ManyToOneRelation.d.ts.map +0 -1
  123. package/dist/cjs/src/classes/ManyToOneRelation.js +0 -51
  124. package/dist/cjs/src/classes/ManyToOneRelation.js.map +0 -1
  125. package/dist/cjs/src/classes/Migration.d.ts +0 -14
  126. package/dist/cjs/src/classes/Migration.d.ts.map +0 -1
  127. package/dist/cjs/src/classes/Migration.js +0 -206
  128. package/dist/cjs/src/classes/Migration.js.map +0 -1
  129. package/dist/cjs/src/classes/Model.d.ts +0 -159
  130. package/dist/cjs/src/classes/Model.d.ts.map +0 -1
  131. package/dist/cjs/src/classes/Model.js +0 -640
  132. package/dist/cjs/src/classes/Model.js.map +0 -1
  133. package/dist/cjs/src/classes/OneToManyRelation.d.ts +0 -38
  134. package/dist/cjs/src/classes/OneToManyRelation.d.ts.map +0 -1
  135. package/dist/cjs/src/classes/OneToManyRelation.js +0 -79
  136. package/dist/cjs/src/classes/OneToManyRelation.js.map +0 -1
  137. package/dist/cjs/src/classes/data/boys.d.ts +0 -3
  138. package/dist/cjs/src/classes/data/boys.d.ts.map +0 -1
  139. package/dist/cjs/src/classes/data/boys.js +0 -1005
  140. package/dist/cjs/src/classes/data/boys.js.map +0 -1
  141. package/dist/cjs/src/classes/data/family-names.d.ts +0 -3
  142. package/dist/cjs/src/classes/data/family-names.d.ts.map +0 -1
  143. package/dist/cjs/src/classes/data/family-names.js +0 -1005
  144. package/dist/cjs/src/classes/data/family-names.js.map +0 -1
  145. package/dist/cjs/src/classes/data/girls.d.ts +0 -3
  146. package/dist/cjs/src/classes/data/girls.d.ts.map +0 -1
  147. package/dist/cjs/src/classes/data/girls.js +0 -1004
  148. package/dist/cjs/src/classes/data/girls.js.map +0 -1
  149. package/dist/cjs/src/classes/data/streets.d.ts +0 -3
  150. package/dist/cjs/src/classes/data/streets.d.ts.map +0 -1
  151. package/dist/cjs/src/classes/data/streets.js +0 -296
  152. package/dist/cjs/src/classes/data/streets.js.map +0 -1
  153. package/dist/cjs/src/decorators/Column.d.ts +0 -18
  154. package/dist/cjs/src/decorators/Column.d.ts.map +0 -1
  155. package/dist/cjs/src/decorators/Column.js +0 -39
  156. package/dist/cjs/src/decorators/Column.js.map +0 -1
  157. package/dist/cjs/src/models/Migration.d.ts +0 -11
  158. package/dist/cjs/src/models/Migration.d.ts.map +0 -1
  159. package/dist/cjs/src/models/Migration.js +0 -52
  160. package/dist/cjs/src/models/Migration.js.map +0 -1
  161. package/dist/cjs/tsconfig.cjs.tsbuildinfo +0 -1
  162. package/dist/esm/index.d.ts +0 -10
  163. package/dist/esm/index.d.ts.map +0 -1
  164. package/dist/esm/index.js +0 -10
  165. package/dist/esm/index.js.map +0 -1
  166. package/dist/esm/src/classes/Column.d.ts +0 -30
  167. package/dist/esm/src/classes/Column.d.ts.map +0 -1
  168. package/dist/esm/src/classes/Column.js +0 -179
  169. package/dist/esm/src/classes/Column.js.map +0 -1
  170. package/dist/esm/src/classes/ColumnType.d.ts +0 -2
  171. package/dist/esm/src/classes/ColumnType.d.ts.map +0 -1
  172. package/dist/esm/src/classes/ColumnType.js +0 -2
  173. package/dist/esm/src/classes/ColumnType.js.map +0 -1
  174. package/dist/esm/src/classes/Database.d.ts +0 -59
  175. package/dist/esm/src/classes/Database.d.ts.map +0 -1
  176. package/dist/esm/src/classes/Database.js +0 -171
  177. package/dist/esm/src/classes/Database.js.map +0 -1
  178. package/dist/esm/src/classes/DatabaseStoredValue.d.ts +0 -2
  179. package/dist/esm/src/classes/DatabaseStoredValue.d.ts.map +0 -1
  180. package/dist/esm/src/classes/DatabaseStoredValue.js +0 -2
  181. package/dist/esm/src/classes/DatabaseStoredValue.js.map +0 -1
  182. package/dist/esm/src/classes/Factory.d.ts +0 -14
  183. package/dist/esm/src/classes/Factory.d.ts.map +0 -1
  184. package/dist/esm/src/classes/Factory.js +0 -51
  185. package/dist/esm/src/classes/Factory.js.map +0 -1
  186. package/dist/esm/src/classes/ManyToManyRelation.d.ts +0 -79
  187. package/dist/esm/src/classes/ManyToManyRelation.d.ts.map +0 -1
  188. package/dist/esm/src/classes/ManyToManyRelation.js +0 -254
  189. package/dist/esm/src/classes/ManyToManyRelation.js.map +0 -1
  190. package/dist/esm/src/classes/ManyToOneRelation.d.ts +0 -22
  191. package/dist/esm/src/classes/ManyToOneRelation.d.ts.map +0 -1
  192. package/dist/esm/src/classes/ManyToOneRelation.js +0 -47
  193. package/dist/esm/src/classes/ManyToOneRelation.js.map +0 -1
  194. package/dist/esm/src/classes/Migration.d.ts +0 -14
  195. package/dist/esm/src/classes/Migration.d.ts.map +0 -1
  196. package/dist/esm/src/classes/Migration.js +0 -168
  197. package/dist/esm/src/classes/Migration.js.map +0 -1
  198. package/dist/esm/src/classes/Model.d.ts +0 -159
  199. package/dist/esm/src/classes/Model.d.ts.map +0 -1
  200. package/dist/esm/src/classes/Model.js +0 -635
  201. package/dist/esm/src/classes/Model.js.map +0 -1
  202. package/dist/esm/src/classes/OneToManyRelation.d.ts +0 -38
  203. package/dist/esm/src/classes/OneToManyRelation.d.ts.map +0 -1
  204. package/dist/esm/src/classes/OneToManyRelation.js +0 -75
  205. package/dist/esm/src/classes/OneToManyRelation.js.map +0 -1
  206. package/dist/esm/src/classes/data/boys.d.ts +0 -3
  207. package/dist/esm/src/classes/data/boys.d.ts.map +0 -1
  208. package/dist/esm/src/classes/data/boys.js +0 -1003
  209. package/dist/esm/src/classes/data/boys.js.map +0 -1
  210. package/dist/esm/src/classes/data/family-names.d.ts +0 -3
  211. package/dist/esm/src/classes/data/family-names.d.ts.map +0 -1
  212. package/dist/esm/src/classes/data/family-names.js +0 -1003
  213. package/dist/esm/src/classes/data/family-names.js.map +0 -1
  214. package/dist/esm/src/classes/data/girls.d.ts +0 -3
  215. package/dist/esm/src/classes/data/girls.d.ts.map +0 -1
  216. package/dist/esm/src/classes/data/girls.js +0 -1002
  217. package/dist/esm/src/classes/data/girls.js.map +0 -1
  218. package/dist/esm/src/classes/data/streets.d.ts +0 -3
  219. package/dist/esm/src/classes/data/streets.d.ts.map +0 -1
  220. package/dist/esm/src/classes/data/streets.js +0 -294
  221. package/dist/esm/src/classes/data/streets.js.map +0 -1
  222. package/dist/esm/src/decorators/Column.d.ts +0 -18
  223. package/dist/esm/src/decorators/Column.d.ts.map +0 -1
  224. package/dist/esm/src/decorators/Column.js +0 -36
  225. package/dist/esm/src/decorators/Column.js.map +0 -1
  226. package/dist/esm/src/models/Migration.d.ts +0 -11
  227. package/dist/esm/src/models/Migration.d.ts.map +0 -1
  228. package/dist/esm/src/models/Migration.js +0 -48
  229. package/dist/esm/src/models/Migration.js.map +0 -1
  230. package/dist/esm/tsconfig.esm.tsbuildinfo +0 -1
@@ -0,0 +1,59 @@
1
+ import { DatabaseStoredValue } from "./DatabaseStoredValue.cjs";
2
+ import mysql from "mysql2/promise";
3
+
4
+ //#region src/classes/Database.d.ts
5
+ type SQLResultRow = Record<string, DatabaseStoredValue>;
6
+ type SQLResultNamespacedRow = Record<string, SQLResultRow>;
7
+ type SelectOptions = {
8
+ connection?: mysql.PoolConnection;
9
+ nestTables?: boolean;
10
+ };
11
+ type PoolOptions = {
12
+ debug?: boolean;
13
+ host?: string;
14
+ user?: string;
15
+ password?: string;
16
+ port?: number;
17
+ database?: string | null;
18
+ connectionLimit?: number;
19
+ multipleStatements?: boolean;
20
+ charset?: string;
21
+ useSSL?: boolean;
22
+ ca?: string;
23
+ };
24
+ declare class DatabaseInstance {
25
+ pool: mysql.Pool;
26
+ debug: boolean;
27
+ constructor(options?: PoolOptions);
28
+ createPool(options?: PoolOptions): void;
29
+ reload(options?: PoolOptions): Promise<void>;
30
+ setDebug(enabled?: boolean): void;
31
+ getConnection(): Promise<mysql.PoolConnection>;
32
+ escapeId(value: string): string;
33
+ end(): Promise<void>;
34
+ startQuery(): [number, number];
35
+ logQuery(q: any, hrstart: [number, number]): void;
36
+ finishQuery(q: any, hrstart: [number, number]): void;
37
+ select(query: string, values?: any, options?: SelectOptions & {
38
+ nestTables: true;
39
+ }): Promise<[SQLResultNamespacedRow[], mysql.FieldPacket[] | undefined]>;
40
+ select(query: string, values?: any, options?: SelectOptions & {
41
+ nestTables: false;
42
+ }): Promise<[SQLResultRow[], mysql.FieldPacket[] | undefined]>;
43
+ insert(query: string, values?: any, useConnection?: mysql.PoolConnection): Promise<[{
44
+ insertId: any;
45
+ affectedRows: number;
46
+ }, mysql.FieldPacket[] | undefined]>;
47
+ update(query: string, values?: any, useConnection?: mysql.PoolConnection): Promise<[{
48
+ changedRows: number;
49
+ affectedRows: number;
50
+ }, mysql.FieldPacket[] | undefined]>;
51
+ delete(query: string, values?: any, useConnection?: mysql.PoolConnection): Promise<[{
52
+ affectedRows: number;
53
+ }, mysql.FieldPacket[] | undefined]>;
54
+ statement(query: string, values?: any, useConnection?: mysql.PoolConnection): Promise<[any, any]>;
55
+ }
56
+ declare const Database: DatabaseInstance;
57
+ //#endregion
58
+ export { Database, DatabaseInstance, PoolOptions, SQLResultNamespacedRow, SQLResultRow };
59
+ //# sourceMappingURL=Database.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Database.d.cts","names":[],"sources":["../../../src/classes/Database.ts"],"mappings":";;;;KAGY,YAAA,GAAe,MAAA,SAAe,mBAAA;AAAA,KAC9B,sBAAA,GAAyB,MAAA,SAAe,YAAA;AAAA,KAE/C,aAAA;EAAkB,UAAA,GAAa,KAAA,CAAM,cAAA;EAAgB,UAAA;AAAA;AAAA,KAC9C,WAAA;EACR,KAAA;EACA,IAAA;EACA,IAAA;EACA,QAAA;EACA,IAAA;EACA,QAAA;EACA,eAAA;EACA,kBAAA;EACA,OAAA;EACA,MAAA;EACA,EAAA;AAAA;AAAA,cAIS,gBAAA;EACT,IAAA,EAAM,KAAA,CAAM,IAAA;EACZ,KAAA;cAEY,OAAA,GAAS,WAAA;EAIrB,UAAA,CAAW,OAAA,GAAS,WAAA;EA2Dd,MAAA,CAAO,OAAA,GAAS,WAAA,GAAmB,OAAA;EAKzC,QAAA,CAAS,OAAA;EAIH,aAAA,CAAA,GAAiB,OAAA,CAAQ,KAAA,CAAM,cAAA;EAKrC,QAAA,CAAS,KAAA;EAIH,GAAA,CAAA,GAAO,OAAA;EAIb,UAAA,CAAA;EAIA,QAAA,CAAS,CAAA,OAAG,OAAA;EAOZ,WAAA,CAAY,CAAA,OAAG,OAAA;EAOf,MAAA,CAAO,KAAA,UAAe,MAAA,QAAc,OAAA,GAAU,aAAA;IAAkB,UAAA;EAAA,IAAqB,OAAA,EAAS,sBAAA,IAA0B,KAAA,CAAM,WAAA;EAC9H,MAAA,CAAO,KAAA,UAAe,MAAA,QAAc,OAAA,GAAU,aAAA;IAAkB,UAAA;EAAA,IAAsB,OAAA,EAAS,YAAA,IAAgB,KAAA,CAAM,WAAA;EAiB/G,MAAA,CACF,KAAA,UACA,MAAA,QACA,aAAA,GAAgB,KAAA,CAAM,cAAA,GACvB,OAAA;IAAW,QAAA;IAAe,YAAA;EAAA,GAAwB,KAAA,CAAM,WAAA;EAgBrD,MAAA,CAAO,KAAA,UAAe,MAAA,QAAc,aAAA,GAAgB,KAAA,CAAM,cAAA,GAAiB,OAAA;IACxD,WAAA;IAAqB,YAAA;EAAA,GACxC,KAAA,CAAM,WAAA;EAgBN,MAAA,CAAO,KAAA,UAAe,MAAA,QAAc,aAAA,GAAgB,KAAA,CAAM,cAAA,GAAiB,OAAA;IAAW,YAAA;EAAA,GAAwB,KAAA,CAAM,WAAA;EAgBpH,SAAA,CAAU,KAAA,UAAe,MAAA,QAAc,aAAA,GAAgB,KAAA,CAAM,cAAA,GAAiB,OAAA;AAAA;AAAA,cAiB3E,QAAA,EAAQ,gBAAA"}
@@ -0,0 +1,59 @@
1
+ import { DatabaseStoredValue } from "./DatabaseStoredValue.mjs";
2
+ import mysql from "mysql2/promise";
3
+
4
+ //#region src/classes/Database.d.ts
5
+ type SQLResultRow = Record<string, DatabaseStoredValue>;
6
+ type SQLResultNamespacedRow = Record<string, SQLResultRow>;
7
+ type SelectOptions = {
8
+ connection?: mysql.PoolConnection;
9
+ nestTables?: boolean;
10
+ };
11
+ type PoolOptions = {
12
+ debug?: boolean;
13
+ host?: string;
14
+ user?: string;
15
+ password?: string;
16
+ port?: number;
17
+ database?: string | null;
18
+ connectionLimit?: number;
19
+ multipleStatements?: boolean;
20
+ charset?: string;
21
+ useSSL?: boolean;
22
+ ca?: string;
23
+ };
24
+ declare class DatabaseInstance {
25
+ pool: mysql.Pool;
26
+ debug: boolean;
27
+ constructor(options?: PoolOptions);
28
+ createPool(options?: PoolOptions): void;
29
+ reload(options?: PoolOptions): Promise<void>;
30
+ setDebug(enabled?: boolean): void;
31
+ getConnection(): Promise<mysql.PoolConnection>;
32
+ escapeId(value: string): string;
33
+ end(): Promise<void>;
34
+ startQuery(): [number, number];
35
+ logQuery(q: any, hrstart: [number, number]): void;
36
+ finishQuery(q: any, hrstart: [number, number]): void;
37
+ select(query: string, values?: any, options?: SelectOptions & {
38
+ nestTables: true;
39
+ }): Promise<[SQLResultNamespacedRow[], mysql.FieldPacket[] | undefined]>;
40
+ select(query: string, values?: any, options?: SelectOptions & {
41
+ nestTables: false;
42
+ }): Promise<[SQLResultRow[], mysql.FieldPacket[] | undefined]>;
43
+ insert(query: string, values?: any, useConnection?: mysql.PoolConnection): Promise<[{
44
+ insertId: any;
45
+ affectedRows: number;
46
+ }, mysql.FieldPacket[] | undefined]>;
47
+ update(query: string, values?: any, useConnection?: mysql.PoolConnection): Promise<[{
48
+ changedRows: number;
49
+ affectedRows: number;
50
+ }, mysql.FieldPacket[] | undefined]>;
51
+ delete(query: string, values?: any, useConnection?: mysql.PoolConnection): Promise<[{
52
+ affectedRows: number;
53
+ }, mysql.FieldPacket[] | undefined]>;
54
+ statement(query: string, values?: any, useConnection?: mysql.PoolConnection): Promise<[any, any]>;
55
+ }
56
+ declare const Database: DatabaseInstance;
57
+ //#endregion
58
+ export { Database, DatabaseInstance, PoolOptions, SQLResultNamespacedRow, SQLResultRow };
59
+ //# sourceMappingURL=Database.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Database.d.mts","names":[],"sources":["../../../src/classes/Database.ts"],"mappings":";;;;KAGY,YAAA,GAAe,MAAA,SAAe,mBAAA;AAAA,KAC9B,sBAAA,GAAyB,MAAA,SAAe,YAAA;AAAA,KAE/C,aAAA;EAAkB,UAAA,GAAa,KAAA,CAAM,cAAA;EAAgB,UAAA;AAAA;AAAA,KAC9C,WAAA;EACR,KAAA;EACA,IAAA;EACA,IAAA;EACA,QAAA;EACA,IAAA;EACA,QAAA;EACA,eAAA;EACA,kBAAA;EACA,OAAA;EACA,MAAA;EACA,EAAA;AAAA;AAAA,cAIS,gBAAA;EACT,IAAA,EAAM,KAAA,CAAM,IAAA;EACZ,KAAA;cAEY,OAAA,GAAS,WAAA;EAIrB,UAAA,CAAW,OAAA,GAAS,WAAA;EA2Dd,MAAA,CAAO,OAAA,GAAS,WAAA,GAAmB,OAAA;EAKzC,QAAA,CAAS,OAAA;EAIH,aAAA,CAAA,GAAiB,OAAA,CAAQ,KAAA,CAAM,cAAA;EAKrC,QAAA,CAAS,KAAA;EAIH,GAAA,CAAA,GAAO,OAAA;EAIb,UAAA,CAAA;EAIA,QAAA,CAAS,CAAA,OAAG,OAAA;EAOZ,WAAA,CAAY,CAAA,OAAG,OAAA;EAOf,MAAA,CAAO,KAAA,UAAe,MAAA,QAAc,OAAA,GAAU,aAAA;IAAkB,UAAA;EAAA,IAAqB,OAAA,EAAS,sBAAA,IAA0B,KAAA,CAAM,WAAA;EAC9H,MAAA,CAAO,KAAA,UAAe,MAAA,QAAc,OAAA,GAAU,aAAA;IAAkB,UAAA;EAAA,IAAsB,OAAA,EAAS,YAAA,IAAgB,KAAA,CAAM,WAAA;EAiB/G,MAAA,CACF,KAAA,UACA,MAAA,QACA,aAAA,GAAgB,KAAA,CAAM,cAAA,GACvB,OAAA;IAAW,QAAA;IAAe,YAAA;EAAA,GAAwB,KAAA,CAAM,WAAA;EAgBrD,MAAA,CAAO,KAAA,UAAe,MAAA,QAAc,aAAA,GAAgB,KAAA,CAAM,cAAA,GAAiB,OAAA;IACxD,WAAA;IAAqB,YAAA;EAAA,GACxC,KAAA,CAAM,WAAA;EAgBN,MAAA,CAAO,KAAA,UAAe,MAAA,QAAc,aAAA,GAAgB,KAAA,CAAM,cAAA,GAAiB,OAAA;IAAW,YAAA;EAAA,GAAwB,KAAA,CAAM,WAAA;EAgBpH,SAAA,CAAU,KAAA,UAAe,MAAA,QAAc,aAAA,GAAgB,KAAA,CAAM,cAAA,GAAiB,OAAA;AAAA;AAAA,cAiB3E,QAAA,EAAQ,gBAAA"}
@@ -0,0 +1,155 @@
1
+ import fs from "fs";
2
+ import mysql from "mysql2/promise";
3
+ //#region src/classes/Database.ts
4
+ var DatabaseInstance = class {
5
+ pool;
6
+ debug = false;
7
+ constructor(options = {}) {
8
+ this.createPool(options);
9
+ }
10
+ createPool(options = {}) {
11
+ const settings = {
12
+ host: options.host ?? process.env.DB_HOST ?? "localhost",
13
+ user: options.user ?? process.env.DB_USER ?? "root",
14
+ password: options.password ?? process.env.DB_PASS ?? "root",
15
+ port: options.port ? options.port : parseInt(process.env.DB_PORT ?? "3306"),
16
+ database: options.database === void 0 ? process.env.DB_DATABASE : options.database,
17
+ connectionLimit: options.connectionLimit ? options.connectionLimit : parseInt(process.env.DB_CONNECTION_LIMIT ?? "10"),
18
+ multipleStatements: options.multipleStatements ?? (process.env.DB_MULTIPLE_STATEMENTS ?? "true") === "true",
19
+ charset: options.charset ?? process.env.DB_CHARSET ?? "utf8mb4_0900_ai_ci",
20
+ useSSL: options.useSSL ?? !!process.env.DB_USE_SSL,
21
+ ca: options.ca ?? process.env.DB_CA
22
+ };
23
+ if (settings.database === void 0) throw new Error("Environment variable DB_DATABASE is missing");
24
+ this.pool = mysql.createPool({
25
+ host: settings.host,
26
+ user: settings.user,
27
+ password: settings.password,
28
+ port: settings.port,
29
+ database: settings.database ?? void 0,
30
+ waitForConnections: true,
31
+ connectionLimit: settings.connectionLimit,
32
+ queueLimit: 0,
33
+ multipleStatements: settings.multipleStatements,
34
+ charset: settings.charset,
35
+ decimalNumbers: true,
36
+ jsonStrings: true,
37
+ ssl: settings.useSSL ? {
38
+ ca: settings.ca ? fs.readFileSync(settings.ca) : void 0,
39
+ rejectUnauthorized: settings.ca ? true : false
40
+ } : void 0
41
+ });
42
+ this.debug = options?.debug ?? false;
43
+ if (this.debug) {
44
+ this.pool.on("acquire", function(connection) {
45
+ console.log("Connection %d acquired", connection.threadId);
46
+ });
47
+ this.pool.on("connection", function(connection) {
48
+ console.log("Connection %d created", connection.threadId);
49
+ });
50
+ this.pool.on("enqueue", function() {
51
+ console.log("Waiting for available connection slot");
52
+ });
53
+ this.pool.on("release", function(connection) {
54
+ console.log("Connection %d released", connection.threadId);
55
+ });
56
+ }
57
+ }
58
+ async reload(options = {}) {
59
+ await this.pool.end();
60
+ this.createPool(options);
61
+ }
62
+ setDebug(enabled = true) {
63
+ this.debug = enabled;
64
+ }
65
+ async getConnection() {
66
+ return await this.pool.getConnection();
67
+ }
68
+ escapeId(value) {
69
+ return this.pool.escapeId(value);
70
+ }
71
+ async end() {
72
+ return await this.pool.end();
73
+ }
74
+ startQuery() {
75
+ return process.hrtime();
76
+ }
77
+ logQuery(q, hrstart) {
78
+ if (this.debug) {
79
+ const hrend = process.hrtime(hrstart);
80
+ console.warn(q.sql.replace(/\n+ +/g, "\n"), "started at " + (hrend[0] * 1e3 + hrend[1] / 1e6) + "ms");
81
+ }
82
+ }
83
+ finishQuery(q, hrstart) {
84
+ if (this.debug) {
85
+ const hrend = process.hrtime(hrstart);
86
+ console.log(q.sql.replace(/\s+/g, " "), "in " + (hrend[0] * 1e3 + hrend[1] / 1e6) + "ms");
87
+ }
88
+ }
89
+ async select(query, values, options = {}) {
90
+ const connection = options.connection ?? await this.getConnection();
91
+ try {
92
+ const q = await connection.query({
93
+ sql: query,
94
+ nestTables: options.nestTables ?? true,
95
+ values
96
+ });
97
+ return [q[0], q[1]];
98
+ } finally {
99
+ if (!options.connection) connection.release();
100
+ }
101
+ }
102
+ async insert(query, values, useConnection) {
103
+ const connection = useConnection ?? await this.getConnection();
104
+ try {
105
+ const q = await connection.query({
106
+ sql: query,
107
+ values
108
+ });
109
+ return [q[0], q[1]];
110
+ } finally {
111
+ if (!useConnection) connection.release();
112
+ }
113
+ }
114
+ async update(query, values, useConnection) {
115
+ const connection = useConnection ?? await this.getConnection();
116
+ try {
117
+ const q = await connection.query({
118
+ sql: query,
119
+ values
120
+ });
121
+ return [q[0], q[1]];
122
+ } finally {
123
+ if (!useConnection) connection.release();
124
+ }
125
+ }
126
+ async delete(query, values, useConnection) {
127
+ const connection = useConnection ?? await this.getConnection();
128
+ try {
129
+ const q = await connection.query({
130
+ sql: query,
131
+ values
132
+ });
133
+ return [q[0], q[1]];
134
+ } finally {
135
+ if (!useConnection) connection.release();
136
+ }
137
+ }
138
+ async statement(query, values, useConnection) {
139
+ const connection = useConnection ?? await this.getConnection();
140
+ try {
141
+ const q = await connection.query({
142
+ sql: query,
143
+ values
144
+ });
145
+ return [q[0], q[1]];
146
+ } finally {
147
+ if (!useConnection) connection.release();
148
+ }
149
+ }
150
+ };
151
+ const Database = new DatabaseInstance();
152
+ //#endregion
153
+ export { Database, DatabaseInstance };
154
+
155
+ //# sourceMappingURL=Database.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Database.mjs","names":[],"sources":["../../../src/classes/Database.ts"],"sourcesContent":["import fs from 'fs';\nimport mysql from 'mysql2/promise';\nimport { type DatabaseStoredValue } from './DatabaseStoredValue.js';\nexport type SQLResultRow = Record<string, DatabaseStoredValue>;\nexport type SQLResultNamespacedRow = Record<string, SQLResultRow>;\n\ntype SelectOptions = { connection?: mysql.PoolConnection; nestTables?: boolean };\nexport type PoolOptions = {\n debug?: boolean;\n host?: string;\n user?: string;\n password?: string;\n port?: number;\n database?: string | null; // set to null to not use a default database\n connectionLimit?: number;\n multipleStatements?: boolean;\n charset?: string;\n useSSL?: boolean;\n ca?: string;\n};\n\n/// Database is a wrapper arround mysql, because we want to use promises + types\nexport class DatabaseInstance {\n pool: mysql.Pool;\n debug = false;\n\n constructor(options: PoolOptions = {}) {\n this.createPool(options);\n }\n\n createPool(options: PoolOptions = {}) {\n const settings = {\n host: options.host ?? process.env.DB_HOST ?? 'localhost',\n user: options.user ?? process.env.DB_USER ?? 'root',\n password: options.password ?? process.env.DB_PASS ?? 'root',\n port: options.port ? options.port : parseInt(process.env.DB_PORT ?? '3306'),\n database: options.database === undefined ? process.env.DB_DATABASE : options.database,\n connectionLimit: options.connectionLimit ? options.connectionLimit : parseInt(process.env.DB_CONNECTION_LIMIT ?? '10'),\n multipleStatements: options.multipleStatements ?? ((process.env.DB_MULTIPLE_STATEMENTS ?? 'true') === 'true'),\n charset: options.charset ?? process.env.DB_CHARSET ?? 'utf8mb4_0900_ai_ci',\n useSSL: options.useSSL ?? !!process.env.DB_USE_SSL,\n ca: options.ca ?? process.env.DB_CA,\n };\n\n if (settings.database === undefined) {\n throw new Error('Environment variable DB_DATABASE is missing');\n }\n\n this.pool = mysql.createPool({\n host: settings.host,\n user: settings.user,\n password: settings.password,\n port: settings.port,\n database: settings.database ?? undefined,\n waitForConnections: true,\n connectionLimit: settings.connectionLimit,\n queueLimit: 0,\n multipleStatements: settings.multipleStatements,\n charset: settings.charset,\n decimalNumbers: true,\n jsonStrings: true,\n ssl: settings.useSSL\n ? {\n ca: settings.ca ? fs.readFileSync(settings.ca) : undefined,\n rejectUnauthorized: settings.ca ? true : false,\n }\n : undefined,\n });\n this.debug = options?.debug ?? false;\n\n if (this.debug) {\n this.pool.on('acquire', function (connection) {\n console.log('Connection %d acquired', connection.threadId);\n });\n\n this.pool.on('connection', function (connection) {\n console.log('Connection %d created', connection.threadId);\n });\n\n this.pool.on('enqueue', function () {\n console.log('Waiting for available connection slot');\n });\n\n this.pool.on('release', function (connection) {\n console.log('Connection %d released', connection.threadId);\n });\n }\n }\n\n async reload(options: PoolOptions = {}): Promise<void> {\n await this.pool.end();\n this.createPool(options);\n }\n\n setDebug(enabled = true) {\n this.debug = enabled;\n }\n\n async getConnection(): Promise<mysql.PoolConnection> {\n // Todo: use the settings here to provide a good connection pool\n return await this.pool.getConnection();\n }\n\n escapeId(value: string): string {\n return this.pool.escapeId(value);\n }\n\n async end(): Promise<void> {\n return await this.pool.end();\n }\n\n startQuery(): [number, number] {\n return process.hrtime();\n }\n\n logQuery(q, hrstart: [number, number]) {\n if (this.debug) {\n const hrend = process.hrtime(hrstart);\n console.warn(q.sql.replace(/\\n+ +/g, '\\n'), 'started at ' + (hrend[0] * 1000 + hrend[1] / 1000000) + 'ms');\n }\n }\n\n finishQuery(q, hrstart: [number, number]) {\n if (this.debug) {\n const hrend = process.hrtime(hrstart);\n console.log(q.sql.replace(/\\s+/g, ' '), 'in ' + (hrend[0] * 1000 + hrend[1] / 1000000) + 'ms');\n }\n }\n\n select(query: string, values?: any, options?: SelectOptions & { nestTables: true }): Promise<[SQLResultNamespacedRow[], mysql.FieldPacket[] | undefined]>;\n select(query: string, values?: any, options?: SelectOptions & { nestTables: false }): Promise<[SQLResultRow[], mysql.FieldPacket[] | undefined]>;\n async select(query: string, values?: any, options: SelectOptions = {}): Promise<[(SQLResultNamespacedRow | SQLResultRow)[], mysql.FieldPacket[] | undefined]> {\n const connection: mysql.PoolConnection = options.connection ?? (await this.getConnection());\n try {\n const q = await connection.query({ sql: query, nestTables: options.nestTables ?? true, values: values });\n return [\n q[0] as (SQLResultNamespacedRow | SQLResultRow)[],\n q[1] as mysql.FieldPacket[] | undefined,\n ];\n }\n finally {\n if (!options.connection) {\n connection.release();\n }\n }\n }\n\n async insert(\n query: string,\n values?: any,\n useConnection?: mysql.PoolConnection,\n ): Promise<[{ insertId: any; affectedRows: number }, mysql.FieldPacket[] | undefined]> {\n const connection: mysql.PoolConnection = useConnection ?? (await this.getConnection());\n try {\n const q = await connection.query({ sql: query, values: values });\n return [\n q[0] as { insertId: any; affectedRows: number },\n q[1] as mysql.FieldPacket[] | undefined,\n ];\n }\n finally {\n if (!useConnection) {\n connection.release();\n }\n }\n }\n\n async update(query: string, values?: any, useConnection?: mysql.PoolConnection): Promise<[\n { /** @deprecated */ changedRows: number; affectedRows: number }\n , mysql.FieldPacket[] | undefined]> {\n const connection: mysql.PoolConnection = useConnection ?? (await this.getConnection());\n try {\n const q = await connection.query({ sql: query, values: values });\n return [\n q[0] as { changedRows: number; affectedRows: number },\n q[1] as mysql.FieldPacket[] | undefined,\n ];\n }\n finally {\n if (!useConnection) {\n connection.release();\n }\n }\n }\n\n async delete(query: string, values?: any, useConnection?: mysql.PoolConnection): Promise<[{ affectedRows: number }, mysql.FieldPacket[] | undefined]> {\n const connection: mysql.PoolConnection = useConnection ?? (await this.getConnection());\n try {\n const q = await connection.query({ sql: query, values: values });\n return [\n q[0] as { affectedRows: number },\n q[1] as mysql.FieldPacket[] | undefined,\n ];\n }\n finally {\n if (!useConnection) {\n connection.release();\n }\n }\n }\n\n async statement(query: string, values?: any, useConnection?: mysql.PoolConnection): Promise<[any, any]> {\n const connection: mysql.PoolConnection = useConnection ?? (await this.getConnection());\n try {\n const q = await connection.query({ sql: query, values: values });\n return [\n q[0] as any,\n q[1] as any,\n ];\n }\n finally {\n if (!useConnection) {\n connection.release();\n }\n }\n }\n}\n\nexport const Database = new DatabaseInstance();\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ //#region src/classes/DatabaseStoredValue.d.ts
2
+ type DatabaseStoredValue = string | number | Date | null;
3
+ //#endregion
4
+ export { DatabaseStoredValue };
5
+ //# sourceMappingURL=DatabaseStoredValue.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabaseStoredValue.d.cts","names":[],"sources":["../../../src/classes/DatabaseStoredValue.ts"],"mappings":";KAAY,mBAAA,qBAAwC,IAAA"}
@@ -0,0 +1,5 @@
1
+ //#region src/classes/DatabaseStoredValue.d.ts
2
+ type DatabaseStoredValue = string | number | Date | null;
3
+ //#endregion
4
+ export { DatabaseStoredValue };
5
+ //# sourceMappingURL=DatabaseStoredValue.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabaseStoredValue.d.mts","names":[],"sources":["../../../src/classes/DatabaseStoredValue.ts"],"mappings":";KAAY,mBAAA,qBAAwC,IAAA"}
@@ -0,0 +1,48 @@
1
+ const require_boys = require("./data/boys.cjs");
2
+ const require_family_names = require("./data/family-names.cjs");
3
+ const require_girls = require("./data/girls.cjs");
4
+ //#region src/classes/Factory.ts
5
+ var Factory = class {
6
+ options;
7
+ constructor(options) {
8
+ this.options = options;
9
+ }
10
+ randomArray(arr) {
11
+ return arr[Math.floor(Math.random() * arr.length)];
12
+ }
13
+ randomEnum(e) {
14
+ return this.randomArray(Object.values(e));
15
+ }
16
+ randomString(length) {
17
+ let result = "";
18
+ const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
19
+ const charactersLength = 62;
20
+ for (let i = 0; i < length; i++) result += characters.charAt(Math.floor(Math.random() * charactersLength));
21
+ return result;
22
+ }
23
+ randomFirstName(gender) {
24
+ let names;
25
+ switch (gender) {
26
+ case "Male":
27
+ names = require_boys.default;
28
+ break;
29
+ case "Female":
30
+ names = require_girls.default;
31
+ break;
32
+ case "Other":
33
+ names = [...require_boys.default, ...require_girls.default];
34
+ break;
35
+ }
36
+ return this.randomArray(names);
37
+ }
38
+ randomLastName() {
39
+ return this.randomArray(require_family_names.default);
40
+ }
41
+ async createMultiple(amount = 40) {
42
+ const arr = [];
43
+ for (let index = 0; index < amount; index++) arr.push(await this.create());
44
+ return arr;
45
+ }
46
+ };
47
+ //#endregion
48
+ exports.Factory = Factory;
@@ -0,0 +1,17 @@
1
+ //#region src/classes/Factory.d.ts
2
+ declare abstract class Factory<Options, Model> {
3
+ options: Options;
4
+ constructor(options: Options);
5
+ abstract create(): Promise<Model>;
6
+ randomArray(arr: Array<any>): any;
7
+ randomEnum<E extends {
8
+ [key: number]: string | number;
9
+ }>(e: E): E[keyof E];
10
+ randomString(length: number): string;
11
+ randomFirstName(gender: 'Male' | 'Female' | 'Other'): string;
12
+ randomLastName(): string;
13
+ createMultiple(amount?: number): Promise<Model[]>;
14
+ }
15
+ //#endregion
16
+ export { Factory };
17
+ //# sourceMappingURL=Factory.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Factory.d.cts","names":[],"sources":["../../../src/classes/Factory.ts"],"mappings":";uBAIsB,OAAA;EAClB,OAAA,EAAS,OAAA;cACG,OAAA,EAAS,OAAA;EAAA,SAGZ,MAAA,CAAA,GAAU,OAAA,CAAQ,KAAA;EAE3B,WAAA,CAAY,GAAA,EAAK,KAAA;EAKjB,UAAA;IAAA,CAAwB,GAAA;EAAA,EAAA,CAAiC,CAAA,EAAG,CAAA,GAAI,CAAA,OAAQ,CAAA;EAIxE,YAAA,CAAa,MAAA;EAUb,eAAA,CAAgB,MAAA;EAgBhB,cAAA,CAAA;EAIM,cAAA,CAAe,MAAA,YAAc,OAAA,CAAQ,KAAA;AAAA"}
@@ -0,0 +1,17 @@
1
+ //#region src/classes/Factory.d.ts
2
+ declare abstract class Factory<Options, Model> {
3
+ options: Options;
4
+ constructor(options: Options);
5
+ abstract create(): Promise<Model>;
6
+ randomArray(arr: Array<any>): any;
7
+ randomEnum<E extends {
8
+ [key: number]: string | number;
9
+ }>(e: E): E[keyof E];
10
+ randomString(length: number): string;
11
+ randomFirstName(gender: 'Male' | 'Female' | 'Other'): string;
12
+ randomLastName(): string;
13
+ createMultiple(amount?: number): Promise<Model[]>;
14
+ }
15
+ //#endregion
16
+ export { Factory };
17
+ //# sourceMappingURL=Factory.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Factory.d.mts","names":[],"sources":["../../../src/classes/Factory.ts"],"mappings":";uBAIsB,OAAA;EAClB,OAAA,EAAS,OAAA;cACG,OAAA,EAAS,OAAA;EAAA,SAGZ,MAAA,CAAA,GAAU,OAAA,CAAQ,KAAA;EAE3B,WAAA,CAAY,GAAA,EAAK,KAAA;EAKjB,UAAA;IAAA,CAAwB,GAAA;EAAA,EAAA,CAAiC,CAAA,EAAG,CAAA,GAAI,CAAA,OAAQ,CAAA;EAIxE,YAAA,CAAa,MAAA;EAUb,eAAA,CAAgB,MAAA;EAgBhB,cAAA,CAAA;EAIM,cAAA,CAAe,MAAA,YAAc,OAAA,CAAQ,KAAA;AAAA"}
@@ -0,0 +1,50 @@
1
+ import boys_default from "./data/boys.mjs";
2
+ import family_names_default from "./data/family-names.mjs";
3
+ import girls_default from "./data/girls.mjs";
4
+ //#region src/classes/Factory.ts
5
+ var Factory = class {
6
+ options;
7
+ constructor(options) {
8
+ this.options = options;
9
+ }
10
+ randomArray(arr) {
11
+ return arr[Math.floor(Math.random() * arr.length)];
12
+ }
13
+ randomEnum(e) {
14
+ return this.randomArray(Object.values(e));
15
+ }
16
+ randomString(length) {
17
+ let result = "";
18
+ const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
19
+ const charactersLength = 62;
20
+ for (let i = 0; i < length; i++) result += characters.charAt(Math.floor(Math.random() * charactersLength));
21
+ return result;
22
+ }
23
+ randomFirstName(gender) {
24
+ let names;
25
+ switch (gender) {
26
+ case "Male":
27
+ names = boys_default;
28
+ break;
29
+ case "Female":
30
+ names = girls_default;
31
+ break;
32
+ case "Other":
33
+ names = [...boys_default, ...girls_default];
34
+ break;
35
+ }
36
+ return this.randomArray(names);
37
+ }
38
+ randomLastName() {
39
+ return this.randomArray(family_names_default);
40
+ }
41
+ async createMultiple(amount = 40) {
42
+ const arr = [];
43
+ for (let index = 0; index < amount; index++) arr.push(await this.create());
44
+ return arr;
45
+ }
46
+ };
47
+ //#endregion
48
+ export { Factory };
49
+
50
+ //# sourceMappingURL=Factory.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Factory.mjs","names":["BoyNames","GirlNames","FamilyNames"],"sources":["../../../src/classes/Factory.ts"],"sourcesContent":["import BoyNames from './data/boys.js';\nimport FamilyNames from './data/family-names.js';\nimport GirlNames from './data/girls.js';\n\nexport abstract class Factory<Options, Model> {\n options: Options;\n constructor(options: Options) {\n this.options = options;\n }\n abstract create(): Promise<Model>;\n\n randomArray(arr: Array<any>): any {\n const int = Math.floor(Math.random() * arr.length);\n return arr[int];\n }\n\n randomEnum<E extends { [key: number]: string | number }>(e: E): E[keyof E] {\n return this.randomArray(Object.values(e));\n }\n\n randomString(length: number): string {\n let result = '';\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n }\n\n randomFirstName(gender: 'Male' | 'Female' | 'Other'): string {\n let names: string[];\n switch (gender) {\n case 'Male':\n names = BoyNames;\n break;\n case 'Female':\n names = GirlNames;\n break;\n case 'Other':\n names = [...BoyNames, ...GirlNames];\n break;\n }\n return this.randomArray(names);\n }\n\n randomLastName(): string {\n return this.randomArray(FamilyNames);\n }\n\n async createMultiple(amount = 40): Promise<Model[]> {\n const arr: Model[] = [];\n for (let index = 0; index < amount; index++) {\n arr.push(await this.create());\n }\n return arr;\n }\n}\n"],"mappings":";;;;AAIA,IAAsB,UAAtB,MAA8C;CAC1C;CACA,YAAY,SAAkB;AAC1B,OAAK,UAAU;;CAInB,YAAY,KAAsB;AAE9B,SAAO,IADK,KAAK,MAAM,KAAK,QAAQ,GAAG,IAAI,OAAO;;CAItD,WAAyD,GAAkB;AACvE,SAAO,KAAK,YAAY,OAAO,OAAO,EAAE,CAAC;;CAG7C,aAAa,QAAwB;EACjC,IAAI,SAAS;EACb,MAAM,aAAa;EACnB,MAAM,mBAAmB;AACzB,OAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,IACxB,WAAU,WAAW,OAAO,KAAK,MAAM,KAAK,QAAQ,GAAG,iBAAiB,CAAC;AAE7E,SAAO;;CAGX,gBAAgB,QAA6C;EACzD,IAAI;AACJ,UAAQ,QAAR;GACI,KAAK;AACD,YAAQA;AACR;GACJ,KAAK;AACD,YAAQC;AACR;GACJ,KAAK;AACD,YAAQ,CAAC,GAAGD,cAAU,GAAGC,cAAU;AACnC;;AAER,SAAO,KAAK,YAAY,MAAM;;CAGlC,iBAAyB;AACrB,SAAO,KAAK,YAAYC,qBAAY;;CAGxC,MAAM,eAAe,SAAS,IAAsB;EAChD,MAAM,MAAe,EAAE;AACvB,OAAK,IAAI,QAAQ,GAAG,QAAQ,QAAQ,QAChC,KAAI,KAAK,MAAM,KAAK,QAAQ,CAAC;AAEjC,SAAO"}