backfarm 1.0.3 → 1.0.5

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 (162) hide show
  1. package/dist/{chunk-HZ4GLSOO.js → chunk-2RFTNIPS.js} +11 -7
  2. package/dist/chunk-2RFTNIPS.js.map +1 -0
  3. package/dist/{chunk-X3R3RLXY.js → chunk-3IO4NPP3.js} +1 -1
  4. package/dist/chunk-3IO4NPP3.js.map +1 -0
  5. package/dist/chunk-ATY3REI3.js +89 -0
  6. package/dist/chunk-ATY3REI3.js.map +1 -0
  7. package/dist/{chunk-FMCW72HO.js → chunk-CBTP2HOO.js} +64 -18
  8. package/dist/chunk-CBTP2HOO.js.map +1 -0
  9. package/dist/chunk-CPECHQJJ.js +18 -0
  10. package/dist/chunk-CPECHQJJ.js.map +1 -0
  11. package/dist/{chunk-BMPUYKJJ.js → chunk-DRLEV7OW.js} +2 -2
  12. package/dist/chunk-E2NNDV4O.js +40 -0
  13. package/dist/chunk-E2NNDV4O.js.map +1 -0
  14. package/dist/{chunk-EB35KLDE.js → chunk-ECIP24BN.js} +9 -3
  15. package/dist/chunk-ECIP24BN.js.map +1 -0
  16. package/dist/chunk-ES6AHESH.js +17 -0
  17. package/dist/chunk-ES6AHESH.js.map +1 -0
  18. package/dist/chunk-FNFFY5LD.js +44 -0
  19. package/dist/chunk-FNFFY5LD.js.map +1 -0
  20. package/dist/chunk-IAQMTSGP.js +19 -0
  21. package/dist/chunk-IAQMTSGP.js.map +1 -0
  22. package/dist/chunk-LNFYUCA3.js +32 -0
  23. package/dist/chunk-LNFYUCA3.js.map +1 -0
  24. package/dist/chunk-LW246RDT.js +33 -0
  25. package/dist/chunk-LW246RDT.js.map +1 -0
  26. package/dist/chunk-M2C6HHRK.js +34 -0
  27. package/dist/chunk-M2C6HHRK.js.map +1 -0
  28. package/dist/chunk-MKS3GPZY.js +74 -0
  29. package/dist/chunk-MKS3GPZY.js.map +1 -0
  30. package/dist/chunk-O42S6QIG.js +88 -0
  31. package/dist/chunk-O42S6QIG.js.map +1 -0
  32. package/dist/chunk-OHDZYSL3.js +60 -0
  33. package/dist/chunk-OHDZYSL3.js.map +1 -0
  34. package/dist/chunk-P4FWSZ43.js +47 -0
  35. package/dist/chunk-P4FWSZ43.js.map +1 -0
  36. package/dist/{chunk-SSFPGDA3.js → chunk-QBBF6LZZ.js} +4 -4
  37. package/dist/chunk-QBBF6LZZ.js.map +1 -0
  38. package/dist/chunk-QS4MDB5H.js +336 -0
  39. package/dist/chunk-QS4MDB5H.js.map +1 -0
  40. package/dist/{chunk-MEQAHLW6.js → chunk-QUZPQJRE.js} +2 -2
  41. package/dist/chunk-RIBTACPE.js +35 -0
  42. package/dist/chunk-RIBTACPE.js.map +1 -0
  43. package/dist/{chunk-NMNAPTVV.js → chunk-SOZL76ZM.js} +7 -3
  44. package/dist/chunk-SOZL76ZM.js.map +1 -0
  45. package/dist/{chunk-MNSQSU7T.js → chunk-T4KN3FCF.js} +1 -1
  46. package/dist/chunk-T4KN3FCF.js.map +1 -0
  47. package/dist/{chunk-AATAYCEY.js → chunk-WLJV5O6C.js} +10 -10
  48. package/dist/chunk-WLJV5O6C.js.map +1 -0
  49. package/dist/engine/cloudBucket/r2Storage.js +3 -1
  50. package/dist/engine/mondoDb/mongoDB.js +2 -1
  51. package/dist/engine/server/server.d.ts +5 -3
  52. package/dist/engine/server/server.js +28 -6
  53. package/dist/engine/sql/mySql.d.ts +2 -2
  54. package/dist/engine/sql/mySql.js +2 -1
  55. package/dist/engine/sql/pgSql.js +2 -1
  56. package/dist/utility/libs/index.d.ts +1772 -0
  57. package/dist/utility/libs/index.js +101 -0
  58. package/dist/utility/libs/interface.d.ts +5 -7
  59. package/dist/utility/libs/run-all.js +46 -0
  60. package/dist/utility/libs/run-all.js.map +1 -0
  61. package/dist/{chunk-LFRKRR7G.js → utility/libs/run-bucket.js} +4 -7
  62. package/dist/utility/libs/run-bucket.js.map +1 -0
  63. package/dist/utility/libs/run-node-server.js +35 -0
  64. package/dist/utility/libs/run-node-server.js.map +1 -0
  65. package/dist/utility/libs/types.d.ts +11 -31
  66. package/dist/utility/libs/types.js.map +1 -1
  67. package/dist/utility/utilis/cloud_storage/deleteFile.js +7 -54
  68. package/dist/utility/utilis/cloud_storage/deleteFile.js.map +1 -1
  69. package/dist/utility/utilis/cloud_storage/deleteFiles.js +7 -83
  70. package/dist/utility/utilis/cloud_storage/deleteFiles.js.map +1 -1
  71. package/dist/utility/utilis/cloud_storage/downloadFile.js +8 -68
  72. package/dist/utility/utilis/cloud_storage/downloadFile.js.map +1 -1
  73. package/dist/utility/utilis/cloud_storage/downloadFiles.js +8 -82
  74. package/dist/utility/utilis/cloud_storage/downloadFiles.js.map +1 -1
  75. package/dist/utility/utilis/cloud_storage/uploadFile.js +5 -5
  76. package/dist/utility/utilis/cloud_storage/uploadFiles.d.ts +0 -64
  77. package/dist/utility/utilis/cloud_storage/uploadFiles.js +8 -42
  78. package/dist/utility/utilis/cloud_storage/uploadFiles.js.map +1 -1
  79. package/dist/utility/utilis/general/file-operations.d.ts +8 -132
  80. package/dist/utility/utilis/general/file-operations.js +7 -3
  81. package/dist/utility/utilis/general/sqlDb.js.d.ts +0 -141
  82. package/dist/utility/utilis/general/sqlDb.js.js +1 -1
  83. package/dist/utility/utilis/general/uuids.d.ts +0 -43
  84. package/dist/utility/utilis/general/uuids.js +1 -1
  85. package/dist/utility/utilis/general/web.d.ts +2 -238
  86. package/dist/utility/utilis/general/web.js +3 -3
  87. package/dist/utility/utilis/mongoDb/buldWrite.d.ts +0 -44
  88. package/dist/utility/utilis/mongoDb/buldWrite.js +5 -26
  89. package/dist/utility/utilis/mongoDb/buldWrite.js.map +1 -1
  90. package/dist/utility/utilis/mongoDb/deleteDocument.d.ts +0 -45
  91. package/dist/utility/utilis/mongoDb/deleteDocument.js +5 -28
  92. package/dist/utility/utilis/mongoDb/deleteDocument.js.map +1 -1
  93. package/dist/utility/utilis/mongoDb/insertField.d.ts +2 -33
  94. package/dist/utility/utilis/mongoDb/insertField.js +6 -28
  95. package/dist/utility/utilis/mongoDb/insertField.js.map +1 -1
  96. package/dist/utility/utilis/mongoDb/insertFields.d.ts +2 -41
  97. package/dist/utility/utilis/mongoDb/insertFields.js +6 -30
  98. package/dist/utility/utilis/mongoDb/insertFields.js.map +1 -1
  99. package/dist/utility/utilis/mongoDb/updateFiled.d.ts +0 -56
  100. package/dist/utility/utilis/mongoDb/updateFiled.js +5 -34
  101. package/dist/utility/utilis/mongoDb/updateFiled.js.map +1 -1
  102. package/dist/utility/utilis/multer/upload_batch.js +5 -12
  103. package/dist/utility/utilis/multer/upload_batch.js.map +1 -1
  104. package/dist/utility/utilis/multer/upload_single.d.ts +41 -0
  105. package/dist/utility/utilis/multer/upload_single.js +5 -11
  106. package/dist/utility/utilis/multer/upload_single.js.map +1 -1
  107. package/dist/utility/utilis/postgres/executeQuery.d.ts +2 -205
  108. package/dist/utility/utilis/postgres/executeQuery.js +11 -40
  109. package/dist/utility/utilis/postgres/executeQuery.js.map +1 -1
  110. package/dist/utility/utilis/postgres/subSqlfiles/executeMySqlQuery.js +3 -2
  111. package/dist/utility/utilis/postgres/subSqlfiles/executePgQuery.js +3 -2
  112. package/dist/utility/utilis/server/app.js +30 -10
  113. package/dist/utility/utilis/server/app.js.map +1 -1
  114. package/dist/utility/utilis/server/server.d.ts +2 -2
  115. package/dist/utility/utilis/server/server.js +28 -17
  116. package/dist/utility/utilis/server/server.js.map +1 -1
  117. package/package.json +7 -8
  118. package/dist/chunk-3AP6JARL.js +0 -12
  119. package/dist/chunk-3AP6JARL.js.map +0 -1
  120. package/dist/chunk-5A3RVJNT.js +0 -19
  121. package/dist/chunk-5A3RVJNT.js.map +0 -1
  122. package/dist/chunk-AATAYCEY.js.map +0 -1
  123. package/dist/chunk-EB35KLDE.js.map +0 -1
  124. package/dist/chunk-FMCW72HO.js.map +0 -1
  125. package/dist/chunk-HZ4GLSOO.js.map +0 -1
  126. package/dist/chunk-LFRKRR7G.js.map +0 -1
  127. package/dist/chunk-MNSQSU7T.js.map +0 -1
  128. package/dist/chunk-NMNAPTVV.js.map +0 -1
  129. package/dist/chunk-SSFPGDA3.js.map +0 -1
  130. package/dist/chunk-W2745SOE.js +0 -38
  131. package/dist/chunk-W2745SOE.js.map +0 -1
  132. package/dist/chunk-WDQJPBUK.js +0 -53
  133. package/dist/chunk-WDQJPBUK.js.map +0 -1
  134. package/dist/chunk-X3R3RLXY.js.map +0 -1
  135. package/dist/chunk-YWFCWT6R.js +0 -23
  136. package/dist/chunk-YWFCWT6R.js.map +0 -1
  137. package/dist/engine/script/run-all.d.ts +0 -3
  138. package/dist/engine/script/run-all.js +0 -8
  139. package/dist/engine/script/run-bucket.d.ts +0 -3
  140. package/dist/engine/script/run-bucket.js +0 -8
  141. package/dist/engine/script/run-bucket.js.map +0 -1
  142. package/dist/engine/script/run-node-server.d.ts +0 -3
  143. package/dist/engine/script/run-node-server.js +0 -8
  144. package/dist/engine/script/run-node-server.js.map +0 -1
  145. package/dist/engine/server/app.d.ts +0 -5
  146. package/dist/engine/server/app.js +0 -8
  147. package/dist/engine/server/app.js.map +0 -1
  148. package/dist/utility/script/run-all.js +0 -8
  149. package/dist/utility/script/run-all.js.map +0 -1
  150. package/dist/utility/script/run-bucket.js +0 -8
  151. package/dist/utility/script/run-bucket.js.map +0 -1
  152. package/dist/utility/script/run-node-server.js +0 -8
  153. package/dist/utility/script/run-node-server.js.map +0 -1
  154. package/dist/utility/utilis/cloud_storage/s3Client.d.ts +0 -5
  155. package/dist/utility/utilis/cloud_storage/s3Client.js +0 -15
  156. package/dist/utility/utilis/cloud_storage/s3Client.js.map +0 -1
  157. /package/dist/{chunk-BMPUYKJJ.js.map → chunk-DRLEV7OW.js.map} +0 -0
  158. /package/dist/{chunk-MEQAHLW6.js.map → chunk-QUZPQJRE.js.map} +0 -0
  159. /package/dist/{engine/script/run-all.js.map → utility/libs/index.js.map} +0 -0
  160. /package/dist/utility/{script → libs}/run-all.d.ts +0 -0
  161. /package/dist/utility/{script → libs}/run-bucket.d.ts +0 -0
  162. /package/dist/utility/{script → libs}/run-node-server.d.ts +0 -0
@@ -1,3 +1,6 @@
1
+ import {
2
+ fileExistsAsync
3
+ } from "./chunk-CBTP2HOO.js";
1
4
  import {
2
5
  ENV
3
6
  } from "./chunk-EWQYVPOL.js";
@@ -17,10 +20,11 @@ async function getMySqlPool() {
17
20
  if (!pool) {
18
21
  let options;
19
22
  try {
20
- const mySqlConfigFile = path.join(process.cwd(), "src/config/mySql.config.ts");
21
- const { MYSQL_POOL_OPTIONS } = await import(pathToFileURL(mySqlConfigFile).href);
23
+ const mySqlConfigFileTs = path.join(process.cwd(), "src/config/mySql.config.ts");
24
+ const mySqlConfigFileJs = path.join(process.cwd(), "src/config/mySql.config.js");
25
+ const { MYSQL_POOL_OPTIONS } = await import(pathToFileURL(await fileExistsAsync(mySqlConfigFileJs) ? mySqlConfigFileJs : mySqlConfigFileTs).href);
22
26
  options = MYSQL_POOL_OPTIONS || {};
23
- options.uri = ENV.SQL_DB_URL;
27
+ if (!options.uri) options.uri = ENV.SQL_DB_URL;
24
28
  } catch (error) {
25
29
  options = {};
26
30
  }
@@ -32,16 +36,16 @@ async function getMySqlPool() {
32
36
  console.error("\u274C Failed to connect to MySQL:", err.message);
33
37
  process.exit(1);
34
38
  });
35
- pool.on("connection", (connection) => {
39
+ pool.on("connection", () => {
36
40
  console.log("\u{1F50C} New MySQL connection established");
37
41
  });
38
- pool.on("acquire", (connection) => {
42
+ pool.on("acquire", () => {
39
43
  console.log("\u{1F4E5} MySQL connection acquired");
40
44
  });
41
45
  pool.on("enqueue", () => {
42
46
  console.log("\u23F3 MySQL connection queued");
43
47
  });
44
- pool.on("release", (connection) => {
48
+ pool.on("release", () => {
45
49
  console.log("\u{1F4E4} MySQL connection released");
46
50
  });
47
51
  }
@@ -88,4 +92,4 @@ export {
88
92
  runMySqlScript,
89
93
  closePool
90
94
  };
91
- //# sourceMappingURL=chunk-HZ4GLSOO.js.map
95
+ //# sourceMappingURL=chunk-2RFTNIPS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/engine/sql/mySql.ts"],"sourcesContent":["// mySql.ts\r\nimport mysql from 'mysql2/promise';\r\nimport dotenv from 'dotenv';\r\nimport fs from 'fs/promises';\r\nimport path from \"node:path\"\r\nimport {pathToFileURL} from \"node:url\";\r\nimport {ENV} from \"../../utility/libs/env.js\";\r\nimport {fileExistsAsync} from \"../../utility/utilis/general/file-operations.js\";\r\n\r\n\r\ndotenv.config();\r\nlet pool: mysql.Pool | null = null;\r\n\r\n\r\n\r\n\r\n\r\nexport async function getMySqlPool(): Promise<mysql.Pool> {\r\n if (!pool) {\r\n\r\n let options: mysql.PoolOptions;\r\n\r\n try {\r\n const mySqlConfigFileTs = path.join(process.cwd(), \"src/config/mySql.config.ts\");\r\n const mySqlConfigFileJs = path.join(process.cwd(), \"src/config/mySql.config.js\");\r\n const {MYSQL_POOL_OPTIONS} = await import(pathToFileURL(await fileExistsAsync(mySqlConfigFileJs) ? mySqlConfigFileJs : mySqlConfigFileTs).href);\r\n options = MYSQL_POOL_OPTIONS || {};\r\n if (!options.uri) options.uri = ENV.SQL_DB_URL\r\n }\r\n catch (error) {\r\n options = {};\r\n }\r\n\r\n pool = mysql.createPool(options);\r\n\r\n // Test connection on startup\r\n pool.getConnection()\r\n .then(conn => {\r\n console.log('✅ MySQL Database connected successfully');\r\n conn.release();\r\n })\r\n .catch(err => {\r\n console.error('❌ Failed to connect to MySQL:', err.message);\r\n process.exit(1);\r\n });\r\n\r\n // Connection event\r\n pool.on('connection', () => {\r\n console.log('🔌 New MySQL connection established');\r\n });\r\n\r\n // Acquire event (when connection is acquired from pool)\r\n pool.on('acquire', () => {\r\n console.log('📥 MySQL connection acquired');\r\n });\r\n\r\n // Enqueue event (when connection is queued)\r\n pool.on('enqueue', () => {\r\n console.log('⏳ MySQL connection queued');\r\n });\r\n\r\n // Release event (when connection is released back to pool)\r\n pool.on('release', () => {\r\n console.log('📤 MySQL connection released');\r\n });\r\n }\r\n\r\n return pool;\r\n}\r\n\r\n\r\n\r\n\r\nexport const runMySqlScript = async () => {\r\n try {\r\n const fileQuery = await fs.readFile('db.sql', 'utf8');\r\n\r\n // Split queries for multiple statements\r\n const queries = fileQuery\r\n .split(';')\r\n .map(q => q.trim())\r\n .filter(q => q.length > 0);\r\n\r\n\r\n const mySqlPool = await getMySqlPool();\r\n\r\n const connection = await mySqlPool.getConnection();\r\n\r\n try {\r\n for (const query of queries) {\r\n await mySqlPool.query(query);\r\n }\r\n console.log(\"✅ Database schema created successfully\");\r\n } finally {\r\n connection.release();\r\n }\r\n } catch (err) {\r\n console.error('❌ Failed to execute SQL script:', err);\r\n throw err;\r\n }\r\n};\r\n\r\n\r\n\r\n\r\n\r\n\r\n// Graceful shutdown\r\nexport const closePool = async () => {\r\n if (pool) {\r\n console.log('Closing database pool...');\r\n await pool.end();\r\n console.log('Database pool closed');\r\n }\r\n};\r\n\r\n\r\n\r\n\r\n// Handle process termination\r\nprocess.on('SIGINT', async () => {\r\n await closePool();\r\n process.exit(0);\r\n});\r\n\r\n\r\n\r\n\r\nprocess.on('SIGTERM', async () => {\r\n await closePool();\r\n process.exit(0);\r\n});\r\n"],"mappings":";;;;;;;;;;;AACA,OAAO,WAAW;AAClB,OAAO,YAAY;AACnB,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,SAAQ,qBAAoB;AAK5B,OAAO,OAAO;AACd,IAAI,OAA0B;AAM9B,eAAsB,eAAoC;AACtD,MAAI,CAAC,MAAM;AAEP,QAAI;AAEJ,QAAI;AACA,YAAM,oBAAoB,KAAK,KAAK,QAAQ,IAAI,GAAG,4BAA4B;AAC/E,YAAM,oBAAoB,KAAK,KAAK,QAAQ,IAAI,GAAG,4BAA4B;AAC/E,YAAM,EAAC,mBAAkB,IAAI,MAAM,OAAO,cAAc,MAAM,gBAAgB,iBAAiB,IAAI,oBAAoB,iBAAiB,EAAE;AAC1I,gBAAU,sBAAsB,CAAC;AACjC,UAAI,CAAC,QAAQ,IAAK,SAAQ,MAAM,IAAI;AAAA,IACxC,SACO,OAAO;AACV,gBAAU,CAAC;AAAA,IACf;AAEA,WAAO,MAAM,WAAW,OAAO;AAG/B,SAAK,cAAc,EACd,KAAK,UAAQ;AACV,cAAQ,IAAI,8CAAyC;AACrD,WAAK,QAAQ;AAAA,IACjB,CAAC,EACA,MAAM,SAAO;AACV,cAAQ,MAAM,sCAAiC,IAAI,OAAO;AAC1D,cAAQ,KAAK,CAAC;AAAA,IAClB,CAAC;AAGL,SAAK,GAAG,cAAc,MAAM;AACxB,cAAQ,IAAI,4CAAqC;AAAA,IACrD,CAAC;AAGD,SAAK,GAAG,WAAW,MAAM;AACrB,cAAQ,IAAI,qCAA8B;AAAA,IAC9C,CAAC;AAGD,SAAK,GAAG,WAAW,MAAM;AACrB,cAAQ,IAAI,gCAA2B;AAAA,IAC3C,CAAC;AAGD,SAAK,GAAG,WAAW,MAAM;AACrB,cAAQ,IAAI,qCAA8B;AAAA,IAC9C,CAAC;AAAA,EACL;AAEA,SAAO;AACX;AAnDsB;AAwDf,IAAM,iBAAiB,mCAAY;AACtC,MAAI;AACA,UAAM,YAAY,MAAM,GAAG,SAAS,UAAU,MAAM;AAGpD,UAAM,UAAU,UACX,MAAM,GAAG,EACT,IAAI,OAAK,EAAE,KAAK,CAAC,EACjB,OAAO,OAAK,EAAE,SAAS,CAAC;AAG7B,UAAM,YAAY,MAAM,aAAa;AAErC,UAAM,aAAa,MAAM,UAAU,cAAc;AAEjD,QAAI;AACA,iBAAW,SAAS,SAAS;AACzB,cAAM,UAAU,MAAM,KAAK;AAAA,MAC/B;AACA,cAAQ,IAAI,6CAAwC;AAAA,IACxD,UAAE;AACE,iBAAW,QAAQ;AAAA,IACvB;AAAA,EACJ,SAAS,KAAK;AACV,YAAQ,MAAM,wCAAmC,GAAG;AACpD,UAAM;AAAA,EACV;AACJ,GA3B8B;AAmCvB,IAAM,YAAY,mCAAY;AACjC,MAAI,MAAM;AACN,YAAQ,IAAI,0BAA0B;AACtC,UAAM,KAAK,IAAI;AACf,YAAQ,IAAI,sBAAsB;AAAA,EACtC;AACJ,GANyB;AAYzB,QAAQ,GAAG,UAAU,YAAY;AAC7B,QAAM,UAAU;AAChB,UAAQ,KAAK,CAAC;AAClB,CAAC;AAKD,QAAQ,GAAG,WAAW,YAAY;AAC9B,QAAM,UAAU;AAChB,UAAQ,KAAK,CAAC;AAClB,CAAC;","names":[]}
@@ -59,4 +59,4 @@ __name(generateUniqueValue, "generateUniqueValue");
59
59
  export {
60
60
  generateUniqueValue
61
61
  };
62
- //# sourceMappingURL=chunk-X3R3RLXY.js.map
62
+ //# sourceMappingURL=chunk-3IO4NPP3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utility/utilis/general/uuids.ts"],"sourcesContent":["import crypto from 'crypto';\r\nimport { getRandomValues } from 'node:crypto';\r\nimport type {GenerateIdOptions} from \"../../libs/interface.js\";\r\n\r\n\r\n\r\n\r\nexport function generateUniqueValue(length: number, options?: GenerateIdOptions): string;\r\nexport function generateUniqueValue(length: number, options: GenerateIdOptions & { count: number }): string[];\r\nexport function generateUniqueValue(\r\n length: number,\r\n options?: GenerateIdOptions & { count?: number }\r\n): string | string[] {\r\n if (length <= 0) {\r\n throw new Error('Length must be greater than 0');\r\n }\r\n\r\n const count = options?.count ?? 1;\r\n if (count <= 0) {\r\n throw new Error('Count must be greater than 0');\r\n }\r\n\r\n const generateSingleId = (): string => {\r\n let id = '';\r\n\r\n if (options?.useHex) {\r\n // 1 byte = 2 hex chars. We use Math.ceil and slice to ensure exact requested length.\r\n id = crypto.randomBytes(Math.ceil(length / 2)).toString('hex').slice(0, length);\r\n } else {\r\n // Allowed characters: A-Z, a-z, 0-9, and _ (63 total characters)\r\n const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_';\r\n const alphabetLength = alphabet.length; // 63\r\n\r\n // 63 is less than 64 (2^6), so 6 bits can represent 0-62.\r\n // Using a bitmask (63) avoids modulo bias for uniform randomness.\r\n const mask = (2 << (31 - Math.clz32((alphabetLength - 1) | 1))) - 1;\r\n const step = Math.ceil((1.6 * mask * length) / alphabetLength);\r\n\r\n const getBaseId = (): string => {\r\n let baseId = '';\r\n while (true) {\r\n const bytes = new Uint8Array(step);\r\n getRandomValues(bytes);\r\n\r\n for (const byteValue of bytes) {\r\n const byte = byteValue & mask;\r\n if (byte < alphabetLength) {\r\n baseId += alphabet[byte];\r\n if (baseId.length === length) {\r\n return baseId;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n id = getBaseId();\r\n }\r\n\r\n // Apply formatting (Timestamp first, then Prefix)\r\n if (options?.includeTimestamp) {\r\n const timestamp = Date.now().toString(16);\r\n id = `${timestamp}-${id}`;\r\n }\r\n\r\n if (options?.prefix) {\r\n id = `${options.prefix}-${id}`;\r\n }\r\n\r\n return id;\r\n };\r\n\r\n // Return an array if count is explicitly requested, otherwise return a single string\r\n if (options?.count !== undefined) {\r\n return Array.from({ length: count }, () => generateSingleId());\r\n }\r\n\r\n return generateSingleId();\r\n}\r\n"],"mappings":";;;;;AAAA,OAAO,YAAY;AACnB,SAAS,uBAAuB;AAQzB,SAAS,oBACZ,QACA,SACiB;AACnB,MAAI,UAAU,GAAG;AACf,UAAM,IAAI,MAAM,+BAA+B;AAAA,EACjD;AAEA,QAAM,QAAQ,SAAS,SAAS;AAChC,MAAI,SAAS,GAAG;AACd,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AAEA,QAAM,mBAAmB,6BAAc;AACrC,QAAI,KAAK;AAET,QAAI,SAAS,QAAQ;AAEnB,WAAK,OAAO,YAAY,KAAK,KAAK,SAAS,CAAC,CAAC,EAAE,SAAS,KAAK,EAAE,MAAM,GAAG,MAAM;AAAA,IAChF,OAAO;AAEL,YAAM,WAAW;AACjB,YAAM,iBAAiB,SAAS;AAIhC,YAAM,QAAQ,KAAM,KAAK,KAAK,MAAO,iBAAiB,IAAK,CAAC,KAAM;AAClE,YAAM,OAAO,KAAK,KAAM,MAAM,OAAO,SAAU,cAAc;AAE7D,YAAM,YAAY,6BAAc;AAC9B,YAAI,SAAS;AACb,eAAO,MAAM;AACX,gBAAM,QAAQ,IAAI,WAAW,IAAI;AACjC,0BAAgB,KAAK;AAErB,qBAAW,aAAa,OAAO;AAC7B,kBAAM,OAAO,YAAY;AACzB,gBAAI,OAAO,gBAAgB;AACzB,wBAAU,SAAS,IAAI;AACvB,kBAAI,OAAO,WAAW,QAAQ;AAC5B,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF,GAhBkB;AAiBlB,WAAK,UAAU;AAAA,IACjB;AAGA,QAAI,SAAS,kBAAkB;AAC7B,YAAM,YAAY,KAAK,IAAI,EAAE,SAAS,EAAE;AACxC,WAAK,GAAG,SAAS,IAAI,EAAE;AAAA,IACzB;AAEA,QAAI,SAAS,QAAQ;AACnB,WAAK,GAAG,QAAQ,MAAM,IAAI,EAAE;AAAA,IAC9B;AAEA,WAAO;AAAA,EACT,GA/CyB;AAkDzB,MAAI,SAAS,UAAU,QAAW;AAChC,WAAO,MAAM,KAAK,EAAE,QAAQ,MAAM,GAAG,MAAM,iBAAiB,CAAC;AAAA,EAC/D;AAEA,SAAO,iBAAiB;AAC1B;AApEgB;","names":[]}
@@ -0,0 +1,89 @@
1
+ import {
2
+ getKeyFromUrl
3
+ } from "./chunk-QBBF6LZZ.js";
4
+ import {
5
+ s3Client
6
+ } from "./chunk-IAQMTSGP.js";
7
+ import {
8
+ url_or_path
9
+ } from "./chunk-CBTP2HOO.js";
10
+ import {
11
+ ENV
12
+ } from "./chunk-EWQYVPOL.js";
13
+ import {
14
+ __name
15
+ } from "./chunk-7QVYU63E.js";
16
+
17
+ // src/utility/utilis/cloud_storage/deleteFiles.ts
18
+ import { DeleteObjectCommand } from "@aws-sdk/client-s3";
19
+ import * as fs from "fs";
20
+ var deleteFiles = /* @__PURE__ */ __name(async (item_files) => {
21
+ if (!item_files || item_files.length === 0) {
22
+ return { items: [] };
23
+ }
24
+ const uniqueFiles = [...new Set(item_files)];
25
+ const BATCH_SIZE = 50;
26
+ const results = [];
27
+ const deleteSingleFile = /* @__PURE__ */ __name(async (item_file) => {
28
+ try {
29
+ const fileType = url_or_path(item_file);
30
+ if (fileType === ENV.URL) {
31
+ const key = getKeyFromUrl(item_file);
32
+ const command = new DeleteObjectCommand({
33
+ Bucket: ENV.BUCKET_NAME,
34
+ Key: key
35
+ });
36
+ await s3Client.send(command);
37
+ return {
38
+ url_or_path: item_file,
39
+ status: true
40
+ };
41
+ }
42
+ if (fileType === ENV.PATH) {
43
+ try {
44
+ await fs.promises.access(item_file);
45
+ await fs.promises.unlink(item_file);
46
+ } catch (accessError) {
47
+ }
48
+ return {
49
+ url_or_path: item_file,
50
+ status: true
51
+ };
52
+ }
53
+ return {
54
+ url_or_path: item_file,
55
+ status: false
56
+ };
57
+ } catch (error) {
58
+ return {
59
+ url_or_path: item_file,
60
+ status: false,
61
+ error
62
+ };
63
+ }
64
+ }, "deleteSingleFile");
65
+ for (let i = 0; i < uniqueFiles.length; i += BATCH_SIZE) {
66
+ const batch = uniqueFiles.slice(i, i + BATCH_SIZE);
67
+ const batchResults = await Promise.allSettled(
68
+ batch.map((file) => deleteSingleFile(file))
69
+ );
70
+ batchResults.forEach((result, index) => {
71
+ if (result.status === "fulfilled") {
72
+ results.push(result.value);
73
+ } else {
74
+ results.push({
75
+ url_or_path: batch[index] || "unknown",
76
+ // Provide fallback
77
+ status: false,
78
+ error: result.reason
79
+ });
80
+ }
81
+ });
82
+ }
83
+ return { items: results };
84
+ }, "deleteFiles");
85
+
86
+ export {
87
+ deleteFiles
88
+ };
89
+ //# sourceMappingURL=chunk-ATY3REI3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utility/utilis/cloud_storage/deleteFiles.ts"],"sourcesContent":["import {ENV} from \"../../libs/env.js\";\r\nimport {url_or_path} from \"../general/file-operations.js\";\r\nimport {getKeyFromUrl} from \"../general/web.js\";\r\nimport {DeleteObjectCommand} from \"@aws-sdk/client-s3\";\r\nimport * as fs from \"node:fs\";\r\nimport type {DeleteFiles} from \"../../libs/interface.js\";\r\nimport {s3Client} from \"../../../engine/cloudBucket/r2Storage.js\";\r\n\r\n\r\n\r\nexport const deleteFiles = async (item_files: string[]): Promise<DeleteFiles> => {\r\n // Early return for empty array\r\n if (!item_files || item_files.length === 0) {\r\n return { items: [] };\r\n }\r\n\r\n // Optional: Deduplicate files to avoid redundant operations\r\n const uniqueFiles = [...new Set(item_files)];\r\n\r\n // Optional: Limit concurrency to avoid overwhelming the system\r\n const BATCH_SIZE = 50; // Adjust based on your needs\r\n const results: DeleteFiles['items'] = [];\r\n\r\n const deleteSingleFile = async (item_file: string): Promise<DeleteFiles['items'][0]> => {\r\n try {\r\n const fileType = url_or_path(item_file);\r\n\r\n if (fileType === ENV.URL) {\r\n const key = getKeyFromUrl(item_file);\r\n const command = new DeleteObjectCommand({\r\n Bucket: ENV.BUCKET_NAME,\r\n Key: key,\r\n });\r\n await s3Client.send(command);\r\n return {\r\n url_or_path: item_file,\r\n status: true,\r\n };\r\n }\r\n\r\n if (fileType === ENV.PATH) {\r\n try {\r\n await fs.promises.access(item_file);\r\n await fs.promises.unlink(item_file);\r\n } catch (accessError) {\r\n // File doesn't exist - consider this a success (idempotent)\r\n }\r\n return {\r\n url_or_path: item_file,\r\n status: true,\r\n };\r\n }\r\n\r\n return {\r\n url_or_path: item_file,\r\n status: false,\r\n };\r\n } catch (error) {\r\n return {\r\n url_or_path: item_file,\r\n status: false,\r\n error: error,\r\n };\r\n }\r\n };\r\n\r\n // Process in batches to control memory/connection usage\r\n for (let i = 0; i < uniqueFiles.length; i += BATCH_SIZE) {\r\n const batch = uniqueFiles.slice(i, i + BATCH_SIZE);\r\n const batchResults = await Promise.allSettled(\r\n batch.map(file => deleteSingleFile(file))\r\n );\r\n\r\n batchResults.forEach((result, index) => {\r\n if (result.status === 'fulfilled') {\r\n results.push(result.value);\r\n } else {\r\n // result.reason should never happen with allSettled, but handle it anyway\r\n results.push({\r\n url_or_path: batch[index] || 'unknown', // Provide fallback\r\n status: false,\r\n error: result.reason,\r\n });\r\n }\r\n });\r\n }\r\n\r\n return { items: results };\r\n};\r\n"],"mappings":";;;;;;;;;;;;;;;;;AAGA,SAAQ,2BAA0B;AAClC,YAAY,QAAQ;AAMb,IAAM,cAAc,8BAAO,eAA+C;AAE7E,MAAI,CAAC,cAAc,WAAW,WAAW,GAAG;AACxC,WAAO,EAAE,OAAO,CAAC,EAAE;AAAA,EACvB;AAGA,QAAM,cAAc,CAAC,GAAG,IAAI,IAAI,UAAU,CAAC;AAG3C,QAAM,aAAa;AACnB,QAAM,UAAgC,CAAC;AAEvC,QAAM,mBAAmB,8BAAO,cAAwD;AACpF,QAAI;AACA,YAAM,WAAW,YAAY,SAAS;AAEtC,UAAI,aAAa,IAAI,KAAK;AACtB,cAAM,MAAM,cAAc,SAAS;AACnC,cAAM,UAAU,IAAI,oBAAoB;AAAA,UACpC,QAAQ,IAAI;AAAA,UACZ,KAAK;AAAA,QACT,CAAC;AACD,cAAM,SAAS,KAAK,OAAO;AAC3B,eAAO;AAAA,UACH,aAAa;AAAA,UACb,QAAQ;AAAA,QACZ;AAAA,MACJ;AAEA,UAAI,aAAa,IAAI,MAAM;AACvB,YAAI;AACA,gBAAS,YAAS,OAAO,SAAS;AAClC,gBAAS,YAAS,OAAO,SAAS;AAAA,QACtC,SAAS,aAAa;AAAA,QAEtB;AACA,eAAO;AAAA,UACH,aAAa;AAAA,UACb,QAAQ;AAAA,QACZ;AAAA,MACJ;AAEA,aAAO;AAAA,QACH,aAAa;AAAA,QACb,QAAQ;AAAA,MACZ;AAAA,IACJ,SAAS,OAAO;AACZ,aAAO;AAAA,QACH,aAAa;AAAA,QACb,QAAQ;AAAA,QACR;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,GAzCyB;AA4CzB,WAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK,YAAY;AACrD,UAAM,QAAQ,YAAY,MAAM,GAAG,IAAI,UAAU;AACjD,UAAM,eAAe,MAAM,QAAQ;AAAA,MAC/B,MAAM,IAAI,UAAQ,iBAAiB,IAAI,CAAC;AAAA,IAC5C;AAEA,iBAAa,QAAQ,CAAC,QAAQ,UAAU;AACpC,UAAI,OAAO,WAAW,aAAa;AAC/B,gBAAQ,KAAK,OAAO,KAAK;AAAA,MAC7B,OAAO;AAEH,gBAAQ,KAAK;AAAA,UACT,aAAa,MAAM,KAAK,KAAK;AAAA;AAAA,UAC7B,QAAQ;AAAA,UACR,OAAO,OAAO;AAAA,QAClB,CAAC;AAAA,MACL;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,SAAO,EAAE,OAAO,QAAQ;AAC5B,GA9E2B;","names":[]}
@@ -8,6 +8,26 @@ import {
8
8
  // src/utility/utilis/general/file-operations.ts
9
9
  import mime from "mime-types";
10
10
  import { readFile } from "fs/promises";
11
+ import fs from "fs/promises";
12
+ import fsSync from "fs";
13
+ async function fileExistsAsync(filePath) {
14
+ try {
15
+ await fs.access(filePath);
16
+ return true;
17
+ } catch {
18
+ return false;
19
+ }
20
+ }
21
+ __name(fileExistsAsync, "fileExistsAsync");
22
+ function fileExistsSync(filePath) {
23
+ try {
24
+ fsSync.accessSync(filePath);
25
+ return true;
26
+ } catch {
27
+ return false;
28
+ }
29
+ }
30
+ __name(fileExistsSync, "fileExistsSync");
11
31
  function getFileExtension(input) {
12
32
  if (Buffer.isBuffer(input)) {
13
33
  return "";
@@ -28,31 +48,55 @@ function getFileExtension(input) {
28
48
  return match?.[1]?.toLowerCase() ?? "";
29
49
  }
30
50
  __name(getFileExtension, "getFileExtension");
31
- function buildPath({
32
- path_prefix = "",
33
- path = [],
34
- path_postfix = "",
35
- fileName
36
- }) {
37
- const resolvedFileName = fileName instanceof File ? fileName.name : fileName ?? "";
51
+ function buildPath(options) {
52
+ if ("path" in options) {
53
+ return options.path.replace(/^\/+|\/+$/g, "").replace(/\/+/g, "/");
54
+ }
55
+ const {
56
+ path_prefix,
57
+ segments = [],
58
+ path_postfix,
59
+ fileName
60
+ } = options;
61
+ let resolvedFileName = "";
62
+ if (typeof fileName === "string") {
63
+ resolvedFileName = fileName;
64
+ } else if (Buffer.isBuffer(fileName)) {
65
+ resolvedFileName = fileName.toString();
66
+ } else if (fileName) {
67
+ if ("name" in fileName) {
68
+ resolvedFileName = fileName.name;
69
+ } else if ("originalname" in fileName) {
70
+ resolvedFileName = fileName.originalname;
71
+ }
72
+ }
38
73
  const allSegments = [
39
74
  path_prefix,
40
- ...path,
75
+ ...segments,
41
76
  path_postfix,
42
77
  resolvedFileName
43
78
  ];
44
- return allSegments.filter((segment) => Boolean(segment && segment.trim())).map((segment) => segment.replace(/^\/+|\/+$/g, "")).map((segment) => segment.replace(/\/+/g, "/")).filter((segment) => segment.length > 0).join("/");
79
+ return allSegments.filter(
80
+ (segment) => Boolean(segment && segment.trim())
81
+ ).map(
82
+ (segment) => segment.replace(/^\/+|\/+$/g, "").replace(/\/+/g, "/")
83
+ ).filter((segment) => segment.length > 0).join("/");
45
84
  }
46
85
  __name(buildPath, "buildPath");
47
- function downloadedFilePath({ path = [], fileName }) {
48
- const cleanedPath = path.filter((segment) => segment !== ENV.IN_APP_BUCKET);
86
+ function getInAppBucketDownloadPath({
87
+ segments = [],
88
+ fileName
89
+ } = {}) {
90
+ const cleanedSegments = segments.filter(
91
+ (segment) => segment !== ENV.IN_APP_BUCKET
92
+ );
49
93
  return buildPath({
50
94
  path_prefix: ENV.IN_APP_BUCKET,
51
- fileName: fileName instanceof File ? fileName.name : fileName ?? "",
52
- path: cleanedPath
95
+ segments: cleanedSegments,
96
+ ...fileName && { fileName }
53
97
  });
54
98
  }
55
- __name(downloadedFilePath, "downloadedFilePath");
99
+ __name(getInAppBucketDownloadPath, "getInAppBucketDownloadPath");
56
100
  var getFileContentType = /* @__PURE__ */ __name(async (file) => {
57
101
  if (Buffer.isBuffer(file)) {
58
102
  return "application/octet-stream";
@@ -73,11 +117,11 @@ var url_or_path = /* @__PURE__ */ __name((val) => {
73
117
  try {
74
118
  const parsed = new URL(val);
75
119
  if (parsed.protocol === "http:" || parsed.protocol === "https:") {
76
- return ENV.URL;
120
+ return "url";
77
121
  }
78
122
  } catch {
79
123
  }
80
- return ENV.PATH;
124
+ return "path";
81
125
  }, "url_or_path");
82
126
  async function toUint8Array(file) {
83
127
  if (typeof file === "string") {
@@ -100,11 +144,13 @@ async function toUint8Array(file) {
100
144
  __name(toUint8Array, "toUint8Array");
101
145
 
102
146
  export {
147
+ fileExistsAsync,
148
+ fileExistsSync,
103
149
  getFileExtension,
104
150
  buildPath,
105
- downloadedFilePath,
151
+ getInAppBucketDownloadPath,
106
152
  getFileContentType,
107
153
  url_or_path,
108
154
  toUint8Array
109
155
  };
110
- //# sourceMappingURL=chunk-FMCW72HO.js.map
156
+ //# sourceMappingURL=chunk-CBTP2HOO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utility/utilis/general/file-operations.ts"],"sourcesContent":["import mime from \"mime-types\";\r\nimport {ENV} from \"../../libs/env.js\";\r\nimport {readFile} from \"node:fs/promises\";\r\nimport fs from \"fs/promises\";\r\nimport fsSync from \"fs\";\r\nimport type {PathOptions} from \"../../libs/types.js\";\r\nimport type {DownloadablePath} from \"../../libs/interface.js\";\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport async function fileExistsAsync(filePath: string): Promise<boolean> {\r\n try {\r\n await fs.access(filePath);\r\n return true; // File exists and is accessible\r\n } catch {\r\n return false; // File does not exist\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport function fileExistsSync(filePath: string): boolean {\r\n try {\r\n fsSync.accessSync(filePath);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport function getFileExtension(input: Express.Multer.File | File | Buffer | string): string {\r\n // 1. If it's a raw Buffer, it has no file name/extension metadata\r\n if (Buffer.isBuffer(input)) {\r\n return '';\r\n }\r\n\r\n // 2. Extract the filename string based on the input type\r\n let filename = '';\r\n\r\n if (typeof input === 'string') {\r\n filename = input;\r\n }\r\n else if ('originalname' in input && input.originalname) {\r\n // Express.Multer.File\r\n filename = input.originalname;\r\n }\r\n else if ('name' in input && input.name) {\r\n // Web API File\r\n filename = input.name;\r\n }\r\n\r\n if (!filename) {\r\n return '';\r\n }\r\n\r\n // 3. Remove URL query parameters or hashes (if a URL/path string is passed)\r\n const cleanFilename = filename.split(/[?#]/)[0] as string;\r\n\r\n // 4. Extract the last segment after the final dot\r\n const match = cleanFilename.match(/\\.([^./\\\\]+)$/);\r\n\r\n return match?.[1]?.toLowerCase() ?? '';\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport function buildPath(options: PathOptions): string {\r\n // If a complete path is directly provided\r\n if (\"path\" in options) {\r\n return options.path\r\n .replace(/^\\/+|\\/+$/g, '')\r\n .replace(/\\/+/g, '/');\r\n }\r\n\r\n const {\r\n path_prefix,\r\n segments = [],\r\n path_postfix,\r\n fileName,\r\n } = options;\r\n\r\n let resolvedFileName = '';\r\n\r\n if (typeof fileName === 'string') {\r\n resolvedFileName = fileName;\r\n } else if (Buffer.isBuffer(fileName)) {\r\n resolvedFileName = fileName.toString();\r\n } else if (fileName) {\r\n // Browser File\r\n if ('name' in fileName) {\r\n resolvedFileName = fileName.name;\r\n }\r\n // Express.Multer.File\r\n else if ('originalname' in fileName) {\r\n resolvedFileName = fileName.originalname;\r\n }\r\n }\r\n\r\n const allSegments = [\r\n path_prefix,\r\n ...segments,\r\n path_postfix,\r\n resolvedFileName,\r\n ];\r\n\r\n return allSegments\r\n .filter(\r\n (segment): segment is string =>\r\n Boolean(segment && segment.trim())\r\n )\r\n .map((segment) =>\r\n segment\r\n .replace(/^\\/+|\\/+$/g, '')\r\n .replace(/\\/+/g, '/')\r\n )\r\n .filter((segment) => segment.length > 0)\r\n .join('/');\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport function getInAppBucketDownloadPath(\r\n {\r\n segments = [],\r\n fileName,\r\n }: DownloadablePath = {}\r\n): string {\r\n const cleanedSegments = segments.filter(\r\n (segment) => segment !== ENV.IN_APP_BUCKET\r\n );\r\n\r\n return buildPath({\r\n path_prefix: ENV.IN_APP_BUCKET,\r\n segments: cleanedSegments,\r\n ...(fileName && {fileName: fileName}),\r\n });\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport const getFileContentType = async (\r\n file: Express.Multer.File | File | Buffer | string\r\n): Promise<string> => {\r\n // 1. Raw Buffer: Buffers don't carry MIME metadata, so default to octet-stream\r\n if (Buffer.isBuffer(file)) {\r\n return 'application/octet-stream';\r\n }\r\n\r\n // 2. String path or URL: Look up MIME type based on extension/filename\r\n if (typeof file === 'string') {\r\n const detectedType = mime.lookup(file);\r\n return detectedType || 'application/octet-stream';\r\n }\r\n\r\n // 3. Express.Multer.File: Has 'mimetype' property\r\n if ('mimetype' in file && file.mimetype) {\r\n return file.mimetype;\r\n }\r\n\r\n // 4. Web API File: Has 'type' property\r\n if ('type' in file && file.type) {\r\n return file.type;\r\n }\r\n\r\n // 5. Fallback if object has no recognizable MIME type\r\n return 'application/octet-stream';\r\n};\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport const url_or_path = (val: string): 'url' | 'path' => {\r\n try {\r\n const parsed = new URL(val);\r\n if (parsed.protocol === \"http:\" || parsed.protocol === \"https:\") {\r\n return 'url';\r\n }\r\n } catch {\r\n // If new URL() throws, it is a local path\r\n }\r\n return 'path';\r\n};\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport async function toUint8Array(file: Express.Multer.File | File | Buffer | string): Promise<Uint8Array> {\r\n if (typeof file === \"string\") {\r\n // File path on disk\r\n return await readFile(file);\r\n }\r\n\r\n if (Buffer.isBuffer(file)) {\r\n // Raw Node.js Buffer\r\n return new Uint8Array(file);\r\n }\r\n\r\n if (\"buffer\" in file && Buffer.isBuffer(file.buffer)) {\r\n // Express.Multer.File (Memory storage)\r\n return new Uint8Array(file.buffer);\r\n }\r\n\r\n if (\"path\" in file && typeof file.path === \"string\") {\r\n // Express.Multer.File (Disk storage)\r\n return await readFile(file.path);\r\n }\r\n\r\n if (\"arrayBuffer\" in file && typeof file.arrayBuffer === \"function\") {\r\n // Web API File / Blob\r\n return new Uint8Array(await file.arrayBuffer());\r\n }\r\n\r\n throw new Error(\"Unable to parse file input into a valid binary buffer.\");\r\n}\r\n\r\n\r\n\r\n\r\n\r\n"],"mappings":"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","names":[]}
@@ -0,0 +1,18 @@
1
+ import {
2
+ MAX_BATCH_FILES,
3
+ multerInstance
4
+ } from "./chunk-UWIMSKL5.js";
5
+ import {
6
+ ENV
7
+ } from "./chunk-EWQYVPOL.js";
8
+ import {
9
+ __name
10
+ } from "./chunk-7QVYU63E.js";
11
+
12
+ // src/utility/utilis/multer/upload_batch.ts
13
+ var upload_batch = /* @__PURE__ */ __name((fieldName = ENV.FILES, maxCount = MAX_BATCH_FILES) => multerInstance.array(fieldName, maxCount), "upload_batch");
14
+
15
+ export {
16
+ upload_batch
17
+ };
18
+ //# sourceMappingURL=chunk-CPECHQJJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utility/utilis/multer/upload_batch.ts"],"sourcesContent":["import {MAX_BATCH_FILES, multerInstance} from \"../../../engine/multer/multer_configs.js\";\r\nimport {ENV} from \"../../libs/env.js\";\r\n\r\n\r\n\r\nexport const upload_batch = (fieldName: string = ENV.FILES, maxCount: number = MAX_BATCH_FILES) =>\r\n multerInstance.array(fieldName, maxCount);\r\n\r\n"],"mappings":";;;;;;;;;;;;AAKO,IAAM,eAAe,wBAAC,YAAoB,IAAI,OAAO,WAAmB,oBAC3E,eAAe,MAAM,WAAW,QAAQ,GADhB;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getMySqlPool
3
- } from "./chunk-HZ4GLSOO.js";
3
+ } from "./chunk-2RFTNIPS.js";
4
4
  import {
5
5
  __name
6
6
  } from "./chunk-7QVYU63E.js";
@@ -145,4 +145,4 @@ var executeCustom = /* @__PURE__ */ __name(async (customQuery, poolClient) => {
145
145
  export {
146
146
  executeMySqlQuery
147
147
  };
148
- //# sourceMappingURL=chunk-BMPUYKJJ.js.map
148
+ //# sourceMappingURL=chunk-DRLEV7OW.js.map
@@ -0,0 +1,40 @@
1
+ import {
2
+ getMongoServer
3
+ } from "./chunk-ECIP24BN.js";
4
+ import {
5
+ __name
6
+ } from "./chunk-7QVYU63E.js";
7
+
8
+ // src/utility/utilis/mongoDb/updateFiled.ts
9
+ var mongoUpdateField = /* @__PURE__ */ __name(async (params) => {
10
+ const {
11
+ dbName,
12
+ collectionName,
13
+ query,
14
+ updatable,
15
+ updateMany = false,
16
+ options
17
+ } = params;
18
+ try {
19
+ const db = getMongoServer().db(dbName);
20
+ const collection = db.collection(collectionName);
21
+ const result = updateMany ? await collection.updateMany(query, updatable, options) : await collection.updateOne(query, updatable, options);
22
+ return {
23
+ status: true,
24
+ result,
25
+ error: null
26
+ };
27
+ } catch (err) {
28
+ const error = err instanceof Error ? err : new Error(String(err));
29
+ return {
30
+ status: false,
31
+ result: null,
32
+ error
33
+ };
34
+ }
35
+ }, "mongoUpdateField");
36
+
37
+ export {
38
+ mongoUpdateField
39
+ };
40
+ //# sourceMappingURL=chunk-E2NNDV4O.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utility/utilis/mongoDb/updateFiled.ts"],"sourcesContent":["import type {CustomUpdateResult} from \"../../libs/types.js\";\r\nimport {getMongoServer} from \"../../../engine/mondoDb/mongoDB.js\";\r\nimport type {UpdateDocument} from \"../../libs/interface.js\";\r\n\r\n\r\n\r\nexport const mongoUpdateField = async (\r\n params: UpdateDocument\r\n): Promise<CustomUpdateResult> => {\r\n const {\r\n dbName,\r\n collectionName,\r\n query,\r\n updatable,\r\n updateMany = false,\r\n options\r\n } = params;\r\n\r\n try {\r\n const db = getMongoServer().db(dbName);\r\n const collection = db.collection(collectionName);\r\n\r\n // Perform update with await\r\n const result = updateMany\r\n ? await collection.updateMany(query, updatable, options)\r\n : await collection.updateOne(query, updatable, options);\r\n\r\n return {\r\n status: true,\r\n result,\r\n error: null,\r\n };\r\n } catch (err) {\r\n const error = err instanceof Error ? err : new Error(String(err));\r\n\r\n return {\r\n status: false,\r\n result: null,\r\n error,\r\n };\r\n }\r\n};\r\n"],"mappings":";;;;;;;;AAMO,IAAM,mBAAmB,8BAC5B,WAC8B;AAC9B,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,EACJ,IAAI;AAEJ,MAAI;AACA,UAAM,KAAK,eAAe,EAAE,GAAG,MAAM;AACrC,UAAM,aAAa,GAAG,WAAW,cAAc;AAG/C,UAAM,SAAS,aACT,MAAM,WAAW,WAAW,OAAO,WAAW,OAAO,IACrD,MAAM,WAAW,UAAU,OAAO,WAAW,OAAO;AAE1D,WAAO;AAAA,MACH,QAAQ;AAAA,MACR;AAAA,MACA,OAAO;AAAA,IACX;AAAA,EACJ,SAAS,KAAK;AACV,UAAM,QAAQ,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC;AAEhE,WAAO;AAAA,MACH,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR;AAAA,IACJ;AAAA,EACJ;AACJ,GAnCgC;","names":[]}
@@ -1,3 +1,6 @@
1
+ import {
2
+ fileExistsAsync
3
+ } from "./chunk-CBTP2HOO.js";
1
4
  import {
2
5
  ENV
3
6
  } from "./chunk-EWQYVPOL.js";
@@ -17,8 +20,11 @@ async function connectToMongo() {
17
20
  if (!client) {
18
21
  let options;
19
22
  try {
20
- const mongoConfigFilePath = path.join(process.cwd(), "src/config/mongo.config.ts");
21
- const { MONGO_CLIENT_OPTIONS } = await import(pathToFileURL(mongoConfigFilePath).href);
23
+ const mongoConfigFileTs = path.join(process.cwd(), "src/config/mongo.config.ts");
24
+ const mongoConfigFileJs = path.join(process.cwd(), "src/config/mongo.config.js");
25
+ const { MONGO_CLIENT_OPTIONS } = await import(pathToFileURL(
26
+ await fileExistsAsync(mongoConfigFileJs) ? mongoConfigFileJs : mongoConfigFileTs
27
+ ).href);
22
28
  options = MONGO_CLIENT_OPTIONS || {};
23
29
  } catch (error) {
24
30
  options = {};
@@ -46,4 +52,4 @@ export {
46
52
  connectToMongo,
47
53
  getMongoServer
48
54
  };
49
- //# sourceMappingURL=chunk-EB35KLDE.js.map
55
+ //# sourceMappingURL=chunk-ECIP24BN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/engine/mondoDb/mongoDB.ts"],"sourcesContent":["import { ENV } from \"../../utility/libs/env.js\";\r\nimport { MongoClient, type MongoClientOptions } from 'mongodb';\r\nimport path from \"node:path\"\r\nimport {pathToFileURL} from \"node:url\";\r\nimport {fileExistsAsync} from \"../../utility/utilis/general/file-operations.js\";\r\n\r\n\r\nconst uri = ENV.MONGO_SERVER_URL;\r\nlet client: MongoClient | null = null;\r\n\r\n\r\nasync function connectToMongo(): Promise<MongoClient|undefined> {\r\n if (!uri) return;\r\n try {\r\n if (!client) {\r\n\r\n let options: MongoClientOptions;\r\n\r\n try {\r\n const mongoConfigFileTs = path.join(process.cwd(), \"src/config/mongo.config.ts\");\r\n const mongoConfigFileJs = path.join(process.cwd(), \"src/config/mongo.config.js\");\r\n\r\n const { MONGO_CLIENT_OPTIONS } = await import(\r\n pathToFileURL(\r\n (await fileExistsAsync(mongoConfigFileJs)) ? mongoConfigFileJs : mongoConfigFileTs\r\n ).href\r\n );\r\n options = MONGO_CLIENT_OPTIONS || {};\r\n }\r\n catch (error) {\r\n options = {}\r\n }\r\n\r\n\r\n client = new MongoClient(uri, options);\r\n await client.connect();\r\n console.log(\"✅ Connected to MongoDB Cluster\");\r\n\r\n }\r\n return client;\r\n } catch (error) {\r\n console.error(\"❌ MongoDB Connection Error:\", error);\r\n throw error;\r\n }\r\n}\r\n\r\n\r\n\r\nfunction getMongoServer(): MongoClient {\r\n if (!client) {\r\n throw new Error(\"Call connectToMongo first!\");\r\n }\r\n return client;\r\n}\r\n\r\n\r\n\r\nexport { connectToMongo, getMongoServer };\r\n"],"mappings":";;;;;;;;;;;AACA,SAAS,mBAA4C;AACrD,OAAO,UAAU;AACjB,SAAQ,qBAAoB;AAI5B,IAAM,MAAM,IAAI;AAChB,IAAI,SAA6B;AAGjC,eAAe,iBAAiD;AAC9D,MAAI,CAAC,IAAK;AACV,MAAI;AACF,QAAI,CAAC,QAAQ;AAEX,UAAI;AAEJ,UAAI;AACF,cAAM,oBAAoB,KAAK,KAAK,QAAQ,IAAI,GAAG,4BAA4B;AAC/E,cAAM,oBAAoB,KAAK,KAAK,QAAQ,IAAI,GAAG,4BAA4B;AAE/E,cAAM,EAAE,qBAAqB,IAAI,MAAM,OACnC;AAAA,UACK,MAAM,gBAAgB,iBAAiB,IAAK,oBAAoB;AAAA,QACrE,EAAE;AAEN,kBAAU,wBAAwB,CAAC;AAAA,MACrC,SACO,OAAO;AACZ,kBAAU,CAAC;AAAA,MACb;AAGA,eAAS,IAAI,YAAY,KAAK,OAAO;AACrC,YAAM,OAAO,QAAQ;AACrB,cAAQ,IAAI,qCAAgC;AAAA,IAE9C;AACA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,MAAM,oCAA+B,KAAK;AAClD,UAAM;AAAA,EACR;AACF;AAjCe;AAqCf,SAAS,iBAA8B;AACrC,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,4BAA4B;AAAA,EAC9C;AACA,SAAO;AACT;AALS;","names":[]}
@@ -0,0 +1,17 @@
1
+ import {
2
+ multerInstance
3
+ } from "./chunk-UWIMSKL5.js";
4
+ import {
5
+ ENV
6
+ } from "./chunk-EWQYVPOL.js";
7
+ import {
8
+ __name
9
+ } from "./chunk-7QVYU63E.js";
10
+
11
+ // src/utility/utilis/multer/upload_single.ts
12
+ var upload_single = /* @__PURE__ */ __name((fieldName = ENV.FILE) => multerInstance.single(fieldName), "upload_single");
13
+
14
+ export {
15
+ upload_single
16
+ };
17
+ //# sourceMappingURL=chunk-ES6AHESH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utility/utilis/multer/upload_single.ts"],"sourcesContent":["import {multerInstance} from \"../../../engine/multer/multer_configs.js\";\r\nimport {ENV} from \"../../libs/env.js\";\r\n\r\n\r\n/**\r\n * Creates Multer middleware for handling a single file upload.\r\n *\r\n * The middleware expects one uploaded file from the specified\r\n * `multipart/form-data` field and makes the uploaded file available through\r\n * `req.file`.\r\n *\r\n * If no field name is provided, `ENV.FILE` is used as the default field name.\r\n *\r\n * @param fieldName - Name of the multipart/form-data field containing the\r\n * uploaded file.\r\n *\r\n * @returns Multer middleware configured to process a single uploaded file.\r\n *\r\n * @example\r\n * // Use the default field name.\r\n * router.post(\r\n * '/upload',\r\n * upload_single(),\r\n * uploadSingleFileApi\r\n * );\r\n *\r\n * @example\r\n * // Accept a single file from the \"file\" field.\r\n * router.post(\r\n * '/upload',\r\n * upload_single('file'),\r\n * uploadSingleFileApi\r\n * );\r\n *\r\n * @example\r\n * // Use a custom field name.\r\n * router.post(\r\n * '/profile-picture',\r\n * upload_single('profilePicture'),\r\n * uploadSingleFileApi\r\n * );\r\n *\r\n * // The uploaded file will be available as:\r\n * // req.file\r\n */\r\nexport const upload_single = (fieldName: string = ENV.FILE) =>\r\n multerInstance.single(fieldName);\r\n"],"mappings":";;;;;;;;;;;AA6CO,IAAM,gBAAgB,wBAAC,YAAoB,IAAI,SAClD,eAAe,OAAO,SAAS,GADN;","names":[]}
@@ -0,0 +1,44 @@
1
+ import {
2
+ upload_file
3
+ } from "./chunk-WLJV5O6C.js";
4
+ import {
5
+ __name
6
+ } from "./chunk-7QVYU63E.js";
7
+
8
+ // src/utility/utilis/cloud_storage/uploadFiles.ts
9
+ import pLimit from "p-limit";
10
+ var upload_files = /* @__PURE__ */ __name(async ({
11
+ files,
12
+ globalPath,
13
+ concurrency = 5
14
+ }) => {
15
+ if (globalPath && files.some((item) => item.path && item.path.length > 0)) {
16
+ throw new Error("Invalid options: 'globalPath' and individual 'path' cannot both exist.");
17
+ }
18
+ const limiter = pLimit(concurrency);
19
+ const returnData = {
20
+ successFiles: [],
21
+ failedFiles: []
22
+ };
23
+ const uploadTasks = files.map(
24
+ ({ file, path }) => limiter(async () => {
25
+ const resolvedPath = path ?? (globalPath?.length ? globalPath : void 0);
26
+ const result = await upload_file({
27
+ file,
28
+ path: resolvedPath
29
+ });
30
+ if ("error" in result && result.error) {
31
+ returnData.failedFiles.push(result);
32
+ } else {
33
+ returnData.successFiles.push(result);
34
+ }
35
+ })
36
+ );
37
+ await Promise.all(uploadTasks);
38
+ return returnData;
39
+ }, "upload_files");
40
+
41
+ export {
42
+ upload_files
43
+ };
44
+ //# sourceMappingURL=chunk-FNFFY5LD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utility/utilis/cloud_storage/uploadFiles.ts"],"sourcesContent":["import type {FilesUploadedResponseData, UploadFilesInput} from \"../../libs/interface.js\";\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nimport pLimit from 'p-limit';\r\nimport {upload_file} from \"./uploadFile.js\";\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport const upload_files = async ({\r\n files,\r\n globalPath,\r\n concurrency = 5\r\n }: UploadFilesInput): Promise<FilesUploadedResponseData> => {\r\n\r\n // 1. Validate: Throw error immediately if globalPath coexists with any item's individual path\r\n if (globalPath && files.some((item) => item.path && item.path.length > 0)) {\r\n throw new Error(\"Invalid options: 'globalPath' and individual 'path' cannot both exist.\");\r\n }\r\n\r\n const limiter = pLimit(concurrency);\r\n const returnData: FilesUploadedResponseData = {\r\n successFiles: [],\r\n failedFiles: []\r\n };\r\n\r\n // 2. Map and run concurrent uploads inside limiter tasks\r\n const uploadTasks = files.map(({ file, path }) =>\r\n limiter(async () => {\r\n // Resolve target path (use item's path if available, otherwise globalPath array)\r\n const resolvedPath = path ?? (globalPath?.length ? globalPath : undefined);\r\n\r\n // Delegate single file upload logic to upload_file function\r\n const result = await upload_file({\r\n file,\r\n path: resolvedPath\r\n });\r\n\r\n // Aggregate results based on whether an error occurred on the single file upload\r\n if ('error' in result && result.error) {\r\n returnData.failedFiles.push(result);\r\n } else {\r\n returnData.successFiles.push(result);\r\n }\r\n })\r\n );\r\n\r\n // 3. Wait for all concurrent uploads to settle\r\n await Promise.all(uploadTasks);\r\n\r\n return returnData;\r\n};\r\n"],"mappings":";;;;;;;;AAQA,OAAO,YAAY;AAUZ,IAAM,eAAe,8BAAO;AAAA,EACI;AAAA,EACA;AAAA,EACA,cAAc;AAClB,MAA4D;AAG3F,MAAI,cAAc,MAAM,KAAK,CAAC,SAAS,KAAK,QAAQ,KAAK,KAAK,SAAS,CAAC,GAAG;AACvE,UAAM,IAAI,MAAM,wEAAwE;AAAA,EAC5F;AAEA,QAAM,UAAU,OAAO,WAAW;AAClC,QAAM,aAAwC;AAAA,IAC1C,cAAc,CAAC;AAAA,IACf,aAAa,CAAC;AAAA,EAClB;AAGA,QAAM,cAAc,MAAM;AAAA,IAAI,CAAC,EAAE,MAAM,KAAK,MACxC,QAAQ,YAAY;AAEhB,YAAM,eAAe,SAAS,YAAY,SAAS,aAAa;AAGhE,YAAM,SAAS,MAAM,YAAY;AAAA,QAC7B;AAAA,QACA,MAAM;AAAA,MACV,CAAC;AAGD,UAAI,WAAW,UAAU,OAAO,OAAO;AACnC,mBAAW,YAAY,KAAK,MAAM;AAAA,MACtC,OAAO;AACH,mBAAW,aAAa,KAAK,MAAM;AAAA,MACvC;AAAA,IACJ,CAAC;AAAA,EACL;AAGA,QAAM,QAAQ,IAAI,WAAW;AAE7B,SAAO;AACX,GA1C4B;","names":[]}
@@ -0,0 +1,19 @@
1
+ import {
2
+ fileExistsAsync
3
+ } from "./chunk-CBTP2HOO.js";
4
+
5
+ // src/engine/cloudBucket/r2Storage.ts
6
+ import { S3Client } from "@aws-sdk/client-s3";
7
+ import path from "path";
8
+ import { pathToFileURL } from "url";
9
+ var s3ConfigFileTs = path.join(process.cwd(), "src/config/s3bucket.config.ts");
10
+ var s3ConfigFileJs = path.join(process.cwd(), "src/config/s3bucket.config.js");
11
+ var { S3_BUCKET_CONFIG } = await import(pathToFileURL(
12
+ await fileExistsAsync(s3ConfigFileJs) ? s3ConfigFileJs : s3ConfigFileTs
13
+ ).href);
14
+ var s3Client = new S3Client(S3_BUCKET_CONFIG);
15
+
16
+ export {
17
+ s3Client
18
+ };
19
+ //# sourceMappingURL=chunk-IAQMTSGP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/engine/cloudBucket/r2Storage.ts"],"sourcesContent":["import { S3Client } from '@aws-sdk/client-s3';\r\nimport path from \"node:path\";\r\nimport {pathToFileURL} from \"node:url\";\r\nimport {fileExistsAsync} from \"../../utility/utilis/general/file-operations.js\";\r\n\r\n\r\n\r\n\r\n\r\nconst s3ConfigFileTs = path.join(process.cwd(), \"src/config/s3bucket.config.ts\");\r\nconst s3ConfigFileJs = path.join(process.cwd(), \"src/config/s3bucket.config.js\");\r\n\r\nconst { S3_BUCKET_CONFIG } = await import(\r\n pathToFileURL(\r\n (await fileExistsAsync(s3ConfigFileJs)) ? s3ConfigFileJs : s3ConfigFileTs\r\n ).href\r\n );\r\n\r\n\r\nexport const s3Client: S3Client = new S3Client(S3_BUCKET_CONFIG);\r\n"],"mappings":";;;;;AAAA,SAAS,gBAAgB;AACzB,OAAO,UAAU;AACjB,SAAQ,qBAAoB;AAO5B,IAAM,iBAAiB,KAAK,KAAK,QAAQ,IAAI,GAAG,+BAA+B;AAC/E,IAAM,iBAAiB,KAAK,KAAK,QAAQ,IAAI,GAAG,+BAA+B;AAE/E,IAAM,EAAE,iBAAiB,IAAI,MAAM,OAC/B;AAAA,EACK,MAAM,gBAAgB,cAAc,IAAK,iBAAiB;AAC/D,EAAE;AAIC,IAAM,WAAqB,IAAI,SAAS,gBAAgB;","names":[]}
@@ -0,0 +1,32 @@
1
+ import {
2
+ getMongoServer
3
+ } from "./chunk-ECIP24BN.js";
4
+ import {
5
+ __name
6
+ } from "./chunk-7QVYU63E.js";
7
+
8
+ // src/utility/utilis/mongoDb/buldWrite.ts
9
+ var mongoBulkWrite = /* @__PURE__ */ __name(async (params) => {
10
+ const { dbName, collectionName, writable, options } = params;
11
+ try {
12
+ const col = getMongoServer().db(dbName).collection(collectionName);
13
+ const result = await col.bulkWrite(writable, options);
14
+ return {
15
+ status: true,
16
+ result,
17
+ error: null
18
+ };
19
+ } catch (err) {
20
+ const error = err instanceof Error ? err : new Error(String(err));
21
+ return {
22
+ status: false,
23
+ result: null,
24
+ error
25
+ };
26
+ }
27
+ }, "mongoBulkWrite");
28
+
29
+ export {
30
+ mongoBulkWrite
31
+ };
32
+ //# sourceMappingURL=chunk-LNFYUCA3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utility/utilis/mongoDb/buldWrite.ts"],"sourcesContent":["import {getMongoServer} from \"../../../engine/mondoDb/mongoDB.js\";\r\nimport type {CustomBulkWriteResult} from \"../../libs/types.js\";\r\nimport type {BulkWriteInterface} from \"../../libs/interface.js\";\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport const mongoBulkWrite = async (\r\n params: BulkWriteInterface\r\n): Promise<CustomBulkWriteResult> => {\r\n const { dbName, collectionName, writable, options } = params;\r\n\r\n try {\r\n const col = getMongoServer().db(dbName).collection(collectionName);\r\n\r\n // Added 'await' to ensure operations complete\r\n const result = await col.bulkWrite(writable, options);\r\n\r\n return {\r\n status: true,\r\n result,\r\n error: null,\r\n };\r\n } catch (err) {\r\n const error = err instanceof Error ? err : new Error(String(err));\r\n return {\r\n status: false,\r\n result: null,\r\n error,\r\n };\r\n }\r\n};\r\n"],"mappings":";;;;;;;;AAWO,IAAM,iBAAiB,8BAC1B,WACiC;AACjC,QAAM,EAAE,QAAQ,gBAAgB,UAAU,QAAQ,IAAI;AAEtD,MAAI;AACA,UAAM,MAAM,eAAe,EAAE,GAAG,MAAM,EAAE,WAAW,cAAc;AAGjE,UAAM,SAAS,MAAM,IAAI,UAAU,UAAU,OAAO;AAEpD,WAAO;AAAA,MACH,QAAQ;AAAA,MACR;AAAA,MACA,OAAO;AAAA,IACX;AAAA,EACJ,SAAS,KAAK;AACV,UAAM,QAAQ,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC;AAChE,WAAO;AAAA,MACH,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR;AAAA,IACJ;AAAA,EACJ;AACJ,GAxB8B;","names":[]}
@@ -0,0 +1,33 @@
1
+ import {
2
+ getMongoServer
3
+ } from "./chunk-ECIP24BN.js";
4
+ import {
5
+ __name
6
+ } from "./chunk-7QVYU63E.js";
7
+
8
+ // src/utility/utilis/mongoDb/insertField.ts
9
+ var mongoInsertField = /* @__PURE__ */ __name(async (params) => {
10
+ const { dbName, collectionName, field, options } = params;
11
+ try {
12
+ const db = getMongoServer().db(dbName);
13
+ const collection = db.collection(collectionName);
14
+ const result = await collection.insertOne(field, options);
15
+ return {
16
+ status: true,
17
+ result,
18
+ error: null
19
+ };
20
+ } catch (err) {
21
+ const error = err instanceof Error ? err : new Error(String(err));
22
+ return {
23
+ status: false,
24
+ result: null,
25
+ error
26
+ };
27
+ }
28
+ }, "mongoInsertField");
29
+
30
+ export {
31
+ mongoInsertField
32
+ };
33
+ //# sourceMappingURL=chunk-LW246RDT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utility/utilis/mongoDb/insertField.ts"],"sourcesContent":["import {getMongoServer} from \"../../../engine/mondoDb/mongoDB.js\";\r\nimport type {CustomInsertOneResult} from \"../../libs/types.js\";\r\nimport type {InsertOneInterface} from \"../../libs/interface.js\";\r\nimport type {Document } from \"mongodb\";\r\n\r\n\r\n\r\nexport const mongoInsertField = async <T>(\r\n params: InsertOneInterface<T>\r\n): Promise<CustomInsertOneResult<T>> => {\r\n const { dbName, collectionName, field, options } = params;\r\n\r\n try {\r\n const db = getMongoServer().db(dbName);\r\n const collection = db.collection<T & Document>(collectionName);\r\n\r\n const result = await collection.insertOne(field, options);\r\n\r\n return {\r\n status: true,\r\n result,\r\n error: null,\r\n };\r\n } catch (err) {\r\n const error = err instanceof Error ? err : new Error(String(err));\r\n return {\r\n status: false,\r\n result: null,\r\n error,\r\n };\r\n }\r\n};\r\n"],"mappings":";;;;;;;;AAOO,IAAM,mBAAmB,8BAC5B,WACoC;AACpC,QAAM,EAAE,QAAQ,gBAAgB,OAAO,QAAQ,IAAI;AAEnD,MAAI;AACA,UAAM,KAAK,eAAe,EAAE,GAAG,MAAM;AACrC,UAAM,aAAa,GAAG,WAAyB,cAAc;AAE7D,UAAM,SAAS,MAAM,WAAW,UAAU,OAAO,OAAO;AAExD,WAAO;AAAA,MACH,QAAQ;AAAA,MACR;AAAA,MACA,OAAO;AAAA,IACX;AAAA,EACJ,SAAS,KAAK;AACV,UAAM,QAAQ,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC;AAChE,WAAO;AAAA,MACH,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR;AAAA,IACJ;AAAA,EACJ;AACJ,GAxBgC;","names":[]}