create-ssnode-cli 0.2.2 → 0.2.3

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 (203) hide show
  1. package/package.json +1 -1
  2. package/templates/backend/config/config.develop.yaml +6 -4
  3. package/templates/backend/data/template.dev.sqlite-shm +0 -0
  4. package/templates/backend/data/template.dev.sqlite-wal +0 -0
  5. package/templates/backend/dist/app.module.js +85 -1
  6. package/templates/backend/dist/app.module.js.map +1 -1
  7. package/templates/backend/dist/common/all-exceptions.filter.js +47 -1
  8. package/templates/backend/dist/common/all-exceptions.filter.js.map +1 -1
  9. package/templates/backend/dist/common/app-crypto.js +119 -1
  10. package/templates/backend/dist/common/app-crypto.js.map +1 -1
  11. package/templates/backend/dist/common/app-sign.guard.js +72 -1
  12. package/templates/backend/dist/common/app-sign.guard.js.map +1 -1
  13. package/templates/backend/dist/common/app-sign.module.js +20 -1
  14. package/templates/backend/dist/common/app-sign.module.js.map +1 -1
  15. package/templates/backend/dist/common/response.js +23 -1
  16. package/templates/backend/dist/common/response.js.map +1 -1
  17. package/templates/backend/dist/common/throttle.guard.js +42 -1
  18. package/templates/backend/dist/common/throttle.guard.js.map +1 -1
  19. package/templates/backend/dist/common/transform.interceptor.js +28 -1
  20. package/templates/backend/dist/common/transform.interceptor.js.map +1 -1
  21. package/templates/backend/dist/config/config.interface.js +2 -1
  22. package/templates/backend/dist/config/config.interface.js.map +1 -1
  23. package/templates/backend/dist/config/configuration.js +91 -1
  24. package/templates/backend/dist/config/configuration.js.map +1 -1
  25. package/templates/backend/dist/database/migrations/0001-init.migration.js +69 -1
  26. package/templates/backend/dist/database/migrations/0001-init.migration.js.map +1 -1
  27. package/templates/backend/dist/database/sqlite.config.js +32 -1
  28. package/templates/backend/dist/database/sqlite.config.js.map +1 -1
  29. package/templates/backend/dist/entities/audit-log.entity.js +49 -1
  30. package/templates/backend/dist/entities/audit-log.entity.js.map +1 -1
  31. package/templates/backend/dist/entities/image.entity.js +50 -1
  32. package/templates/backend/dist/entities/image.entity.js.map +1 -1
  33. package/templates/backend/dist/entities/page-data.entity.js +60 -1
  34. package/templates/backend/dist/entities/page-data.entity.js.map +1 -1
  35. package/templates/backend/dist/entities/screen-config.entity.js +74 -1
  36. package/templates/backend/dist/entities/screen-config.entity.js.map +1 -1
  37. package/templates/backend/dist/entities/user.entity.js +59 -1
  38. package/templates/backend/dist/entities/user.entity.js.map +1 -1
  39. package/templates/backend/dist/main.js +56 -1
  40. package/templates/backend/dist/main.js.map +1 -1
  41. package/templates/backend/dist/modules/audit/audit.controller.js +51 -1
  42. package/templates/backend/dist/modules/audit/audit.controller.js.map +1 -1
  43. package/templates/backend/dist/modules/audit/audit.module.js +25 -1
  44. package/templates/backend/dist/modules/audit/audit.module.js.map +1 -1
  45. package/templates/backend/dist/modules/audit/audit.service.js +57 -1
  46. package/templates/backend/dist/modules/audit/audit.service.js.map +1 -1
  47. package/templates/backend/dist/modules/auth/auth.controller.js +74 -1
  48. package/templates/backend/dist/modules/auth/auth.controller.js.map +1 -1
  49. package/templates/backend/dist/modules/auth/auth.module.js +45 -1
  50. package/templates/backend/dist/modules/auth/auth.module.js.map +1 -1
  51. package/templates/backend/dist/modules/auth/auth.service.js +151 -1
  52. package/templates/backend/dist/modules/auth/auth.service.js.map +1 -1
  53. package/templates/backend/dist/modules/auth/captcha.service.js +56 -1
  54. package/templates/backend/dist/modules/auth/captcha.service.js.map +1 -1
  55. package/templates/backend/dist/modules/auth/jwt-auth.guard.js +17 -1
  56. package/templates/backend/dist/modules/auth/jwt-auth.guard.js.map +1 -1
  57. package/templates/backend/dist/modules/auth/jwt.strategy.js +37 -1
  58. package/templates/backend/dist/modules/auth/jwt.strategy.js.map +1 -1
  59. package/templates/backend/dist/modules/image/image.controller.js +75 -1
  60. package/templates/backend/dist/modules/image/image.controller.js.map +1 -1
  61. package/templates/backend/dist/modules/image/image.module.js +26 -1
  62. package/templates/backend/dist/modules/image/image.module.js.map +1 -1
  63. package/templates/backend/dist/modules/image/image.service.js +94 -1
  64. package/templates/backend/dist/modules/image/image.service.js.map +1 -1
  65. package/templates/backend/dist/modules/ops/backend-version.probe.js +58 -1
  66. package/templates/backend/dist/modules/ops/backend-version.probe.js.map +1 -1
  67. package/templates/backend/dist/modules/ops/ops-probe.interface.js +4 -1
  68. package/templates/backend/dist/modules/ops/ops-probe.interface.js.map +1 -1
  69. package/templates/backend/dist/modules/ops/ops.controller.js +52 -1
  70. package/templates/backend/dist/modules/ops/ops.controller.js.map +1 -1
  71. package/templates/backend/dist/modules/ops/ops.module.js +39 -1
  72. package/templates/backend/dist/modules/ops/ops.module.js.map +1 -1
  73. package/templates/backend/dist/modules/ops/ops.service.js +72 -1
  74. package/templates/backend/dist/modules/ops/ops.service.js.map +1 -1
  75. package/templates/backend/dist/modules/ops/sqlite-backup-list.probe.js +105 -1
  76. package/templates/backend/dist/modules/ops/sqlite-backup-list.probe.js.map +1 -1
  77. package/templates/backend/dist/modules/ops/sqlite-backup-log.probe.js +67 -1
  78. package/templates/backend/dist/modules/ops/sqlite-backup-log.probe.js.map +1 -1
  79. package/templates/backend/dist/modules/ops/sqlite-backup.probe.js +115 -1
  80. package/templates/backend/dist/modules/ops/sqlite-backup.probe.js.map +1 -1
  81. package/templates/backend/dist/modules/ops/version.controller.js +52 -1
  82. package/templates/backend/dist/modules/ops/version.controller.js.map +1 -1
  83. package/templates/backend/dist/modules/page-data/page-data.controller.js +109 -1
  84. package/templates/backend/dist/modules/page-data/page-data.controller.js.map +1 -1
  85. package/templates/backend/dist/modules/page-data/page-data.module.js +25 -1
  86. package/templates/backend/dist/modules/page-data/page-data.module.js.map +1 -1
  87. package/templates/backend/dist/modules/page-data/page-data.service.js +69 -1
  88. package/templates/backend/dist/modules/page-data/page-data.service.js.map +1 -1
  89. package/templates/backend/dist/modules/screen-config/screen-config.controller.js +61 -1
  90. package/templates/backend/dist/modules/screen-config/screen-config.controller.js.map +1 -1
  91. package/templates/backend/dist/modules/screen-config/screen-config.module.js +25 -1
  92. package/templates/backend/dist/modules/screen-config/screen-config.module.js.map +1 -1
  93. package/templates/backend/dist/modules/screen-config/screen-config.service.js +41 -1
  94. package/templates/backend/dist/modules/screen-config/screen-config.service.js.map +1 -1
  95. package/templates/backend/dist/modules/upload/upload.controller.js +65 -1
  96. package/templates/backend/dist/modules/upload/upload.controller.js.map +1 -1
  97. package/templates/backend/dist/modules/upload/upload.module.js +22 -1
  98. package/templates/backend/dist/modules/upload/upload.module.js.map +1 -1
  99. package/templates/backend/dist/modules/upload/upload.service.js +75 -1
  100. package/templates/backend/dist/modules/upload/upload.service.js.map +1 -1
  101. package/templates/backend/dist/modules/user/user.controller.js +149 -1
  102. package/templates/backend/dist/modules/user/user.controller.js.map +1 -1
  103. package/templates/backend/dist/modules/user/user.module.js +26 -1
  104. package/templates/backend/dist/modules/user/user.module.js.map +1 -1
  105. package/templates/backend/dist/modules/user/user.service.js +249 -1
  106. package/templates/backend/dist/modules/user/user.service.js.map +1 -1
  107. package/templates/backend/dist/modules/websocket/websocket.gateway.js +33 -1
  108. package/templates/backend/dist/modules/websocket/websocket.gateway.js.map +1 -1
  109. package/templates/backend/dist/modules/websocket/websocket.module.js +19 -1
  110. package/templates/backend/dist/modules/websocket/websocket.module.js.map +1 -1
  111. package/templates/backend/dist/tsconfig.build.tsbuildinfo +1 -1
  112. package/templates/backend/package.json +1 -1
  113. package/templates/backend/src/modules/auth/captcha.service.ts +6 -5
  114. package/templates/web/dist/assets/{AuthLayout-bcf98efb.js → AuthLayout-f1e8d110.js} +1 -1
  115. package/templates/web/dist/assets/{AuthLayout-legacy-6e7a8ae1.js → AuthLayout-legacy-f871651c.js} +1 -1
  116. package/templates/web/dist/assets/{Background-eb77ef54.js → Background-955d549f.js} +1 -1
  117. package/templates/web/dist/assets/{Background-legacy-50457007.js → Background-legacy-fbad6e76.js} +1 -1
  118. package/templates/web/dist/assets/{Screen-318c3fc2.js → Screen-b14b0813.js} +1 -1
  119. package/templates/web/dist/assets/{Screen-legacy-af123b0f.js → Screen-legacy-154c8ee6.js} +1 -1
  120. package/templates/web/dist/assets/{api-beff4a3e.js → api-4d80e36e.js} +1 -1
  121. package/templates/web/dist/assets/{api-legacy-9fe41d4b.js → api-legacy-054fd569.js} +1 -1
  122. package/templates/web/dist/assets/{component-89b5253e.js → component-9d9f33fa.js} +1 -1
  123. package/templates/web/dist/assets/{component-legacy-8c5a28ef.js → component-legacy-4445386a.js} +1 -1
  124. package/templates/web/dist/assets/{index-a79e448b.js → index-107a0e80.js} +1 -1
  125. package/templates/web/dist/assets/{index-b60badf7.js → index-5afb70be.js} +1 -1
  126. package/templates/web/dist/assets/{index-cba19800.js → index-7b807c2d.js} +1 -1
  127. package/templates/web/dist/assets/{index-86214b19.js → index-ab64cd34.js} +1 -1
  128. package/templates/web/dist/assets/{index-7277cbfb.js → index-d8bfffb3.js} +1 -1
  129. package/templates/web/dist/assets/{index-d70eb540.js → index-db169639.js} +1 -1
  130. package/templates/web/dist/assets/{index-bd4ed808.js → index-e08dc495.js} +1 -1
  131. package/templates/web/dist/assets/index-e31f4b7c.js +1 -0
  132. package/templates/web/dist/assets/{index-legacy-783129a7.js → index-legacy-5cf7be80.js} +1 -1
  133. package/templates/web/dist/assets/index-legacy-6f112001.js +1 -0
  134. package/templates/web/dist/assets/{index-legacy-b3bd40c1.js → index-legacy-91e012ac.js} +1 -1
  135. package/templates/web/dist/assets/{index-legacy-0da8de82.js → index-legacy-aa61cf72.js} +1 -1
  136. package/templates/web/dist/assets/{index-legacy-06483318.js → index-legacy-afba9135.js} +1 -1
  137. package/templates/web/dist/assets/{index-legacy-d510e318.js → index-legacy-da51c769.js} +1 -1
  138. package/templates/web/dist/assets/{index-legacy-993ef005.js → index-legacy-eec0ca6e.js} +1 -1
  139. package/templates/web/dist/assets/{index-legacy-feb54578.js → index-legacy-f732db29.js} +1 -1
  140. package/templates/web/dist/index.html +2 -2
  141. package/templates/web/node_modules/.vite/deps/@ant-design_icons.js +4 -4
  142. package/templates/web/node_modules/.vite/deps/_metadata.json +57 -57
  143. package/templates/web/node_modules/.vite/deps/antd.js +6 -6
  144. package/templates/web/node_modules/.vite/deps/antd_locale_zh_CN.js +1 -1
  145. package/templates/web/node_modules/.vite/deps/axios.js +2793 -1104
  146. package/templates/web/node_modules/.vite/deps/axios.js.map +4 -4
  147. package/templates/web/node_modules/.vite/deps/{chunk-FADIZLW4.js → chunk-3EE4ABTD.js} +3 -3
  148. package/templates/web/node_modules/.vite/deps/{chunk-5JEEJ3ET.js → chunk-3KXTUEQ5.js} +2 -2
  149. package/templates/web/node_modules/.vite/deps/{chunk-DSEUD2VO.js → chunk-622VOE6C.js} +28 -237
  150. package/templates/web/node_modules/.vite/deps/chunk-622VOE6C.js.map +7 -0
  151. package/templates/web/node_modules/.vite/deps/{chunk-PCLWPLHU.js → chunk-AX2S74EI.js} +4 -4
  152. package/templates/web/node_modules/.vite/deps/{chunk-UX3FVGZU.js → chunk-DXNXWKU4.js} +1670 -1309
  153. package/templates/web/node_modules/.vite/deps/chunk-DXNXWKU4.js.map +7 -0
  154. package/templates/web/node_modules/.vite/deps/{chunk-OTDKR2HU.js → chunk-GT2UP6M4.js} +2 -2
  155. package/templates/web/node_modules/.vite/deps/{chunk-5WWUZCGV.js → chunk-HM4MQYWN.js} +10 -2
  156. package/templates/web/node_modules/.vite/deps/{chunk-Z4XTF2JV.js → chunk-NDUAOA7M.js} +2 -2
  157. package/templates/web/node_modules/.vite/deps/{chunk-PIIG5WB7.js → chunk-OKY2XKJX.js} +14406 -12416
  158. package/templates/web/node_modules/.vite/deps/chunk-OKY2XKJX.js.map +7 -0
  159. package/templates/web/node_modules/.vite/deps/{chunk-UIM57Q7Y.js → chunk-SC6QO7UO.js} +6086 -4354
  160. package/templates/web/node_modules/.vite/deps/chunk-SC6QO7UO.js.map +7 -0
  161. package/templates/web/node_modules/.vite/deps/classnames.js +2 -2
  162. package/templates/web/node_modules/.vite/deps/dayjs.js +2 -2
  163. package/templates/web/node_modules/.vite/deps/dayjs_locale_zh-cn.js +2 -2
  164. package/templates/web/node_modules/.vite/deps/echarts_charts.js +7172 -6102
  165. package/templates/web/node_modules/.vite/deps/echarts_charts.js.map +4 -4
  166. package/templates/web/node_modules/.vite/deps/echarts_components.js +3363 -1326
  167. package/templates/web/node_modules/.vite/deps/echarts_components.js.map +4 -4
  168. package/templates/web/node_modules/.vite/deps/echarts_core.js +57 -42
  169. package/templates/web/node_modules/.vite/deps/echarts_core.js.map +3 -3
  170. package/templates/web/node_modules/.vite/deps/echarts_renderers.js +432 -334
  171. package/templates/web/node_modules/.vite/deps/echarts_renderers.js.map +4 -4
  172. package/templates/web/node_modules/.vite/deps/exceljs.js +25762 -0
  173. package/templates/web/node_modules/.vite/deps/exceljs.js.map +7 -0
  174. package/templates/web/node_modules/.vite/deps/lodash.js +28 -10
  175. package/templates/web/node_modules/.vite/deps/lodash.js.map +3 -3
  176. package/templates/web/node_modules/.vite/deps/path-browserify.js +1 -1
  177. package/templates/web/node_modules/.vite/deps/prop-types.js +1 -1
  178. package/templates/web/node_modules/.vite/deps/qs.js +405 -138
  179. package/templates/web/node_modules/.vite/deps/qs.js.map +4 -4
  180. package/templates/web/node_modules/.vite/deps/react-dom.js +3 -3
  181. package/templates/web/node_modules/.vite/deps/react-dom_client.js +3 -3
  182. package/templates/web/node_modules/.vite/deps/react-router-dom.js +3445 -1283
  183. package/templates/web/node_modules/.vite/deps/react-router-dom.js.map +4 -4
  184. package/templates/web/node_modules/.vite/deps/react.js +2 -2
  185. package/templates/web/node_modules/.vite/deps/react_jsx-dev-runtime.js +2 -2
  186. package/templates/web/node_modules/.vite/deps/recoil.js +3 -3
  187. package/templates/web/src/pages/Login/index.tsx +8 -1
  188. package/templates/web/src/services/api.ts +6 -1
  189. package/templates/web/vite.config.js +5 -5
  190. package/templates/web/dist/assets/index-e6071630.js +0 -1
  191. package/templates/web/dist/assets/index-legacy-028ed5d5.js +0 -1
  192. package/templates/web/node_modules/.vite/deps/chunk-DSEUD2VO.js.map +0 -7
  193. package/templates/web/node_modules/.vite/deps/chunk-PIIG5WB7.js.map +0 -7
  194. package/templates/web/node_modules/.vite/deps/chunk-UIM57Q7Y.js.map +0 -7
  195. package/templates/web/node_modules/.vite/deps/chunk-UX3FVGZU.js.map +0 -7
  196. package/templates/web/node_modules/.vite/deps/xlsx.js +0 -33827
  197. package/templates/web/node_modules/.vite/deps/xlsx.js.map +0 -7
  198. /package/templates/web/node_modules/.vite/deps/{chunk-FADIZLW4.js.map → chunk-3EE4ABTD.js.map} +0 -0
  199. /package/templates/web/node_modules/.vite/deps/{chunk-5JEEJ3ET.js.map → chunk-3KXTUEQ5.js.map} +0 -0
  200. /package/templates/web/node_modules/.vite/deps/{chunk-PCLWPLHU.js.map → chunk-AX2S74EI.js.map} +0 -0
  201. /package/templates/web/node_modules/.vite/deps/{chunk-OTDKR2HU.js.map → chunk-GT2UP6M4.js.map} +0 -0
  202. /package/templates/web/node_modules/.vite/deps/{chunk-5WWUZCGV.js.map → chunk-HM4MQYWN.js.map} +0 -0
  203. /package/templates/web/node_modules/.vite/deps/{chunk-Z4XTF2JV.js.map → chunk-NDUAOA7M.js.map} +0 -0
@@ -1 +1 @@
1
- "{\"version\":3,\"file\":\"modules/image/image.service.js\",\"names\":[\"common_1\",\"require\",\"typeorm_1\",\"typeorm_2\",\"image_entity_1\",\"upload_service_1\",\"audit_service_1\",\"ImageService\",\"repo\",\"uploadService\",\"auditService\",\"constructor\",\"this\",\"getList\",\"params\",\"page\",\"Number\",\"pageSize\",\"qb\",\"createQueryBuilder\",\"name\",\"andWhere\",\"kw\",\"orderBy\",\"skip\",\"take\",\"list\",\"total\",\"getManyAndCount\",\"add\",\"operator\",\"url\",\"Error\",\"saved\",\"save\",\"create\",\"size\",\"record\",\"actorName\",\"username\",\"action\",\"detail\",\"id\",\"update\",\"deleteById\",\"target\",\"findOne\",\"where\",\"delete\",\"exports\",\"__decorate\",\"Injectable\",\"__param\",\"InjectRepository\",\"ImageEntity\",\"Inject\",\"forwardRef\",\"UploadService\",\"Repository\",\"AuditService\"],\"sources\":[\"../../../src/modules/image/image.service.ts\"],\"mappings\":\"mqBAAA,MAAAA,SAAAC,QAAA,kBACAC,UAAAD,QAAA,mBACAE,UAAAF,QAAA,WACAG,eAAAH,QAAA,+BACAI,iBAAAJ,QAAA,4BACAK,gBAAAL,QAAA,0BASO,IAAMM,aAAN,MAGcC,KAEAC,cACAC,aALnB,WAAAC,CAEmBH,EAEAC,EACAC,GAHAE,KAAAJ,OAEAI,KAAAH,gBACAG,KAAAF,cAChB,CAGH,aAAMG,CAAQC,GACZ,MAAMC,EAAOC,OAAOF,EAAOC,OAAS,EAC9BE,EAAWD,OAAOF,EAAOG,WAAa,GACtCC,EAAKN,KAAKJ,KAAKW,mBAAmB,SACpCL,EAAOM,MACTF,EAAGG,SAAS,sBAAuB,CAAEC,GAAI,IAAIR,EAAOM,UAEtDF,EAAGK,QAAQ,mBAAoB,QAC5BC,MAAMT,EAAO,GAAKE,GAClBQ,KAAKR,GACR,MAAOS,EAAMC,SAAeT,EAAGU,kBAC/B,MAAO,CAAEF,OAAMC,QACjB,CAGA,SAAME,CAAIf,EAAsDgB,GAC9D,IAAKhB,EAAOM,OAASN,EAAOiB,IAC1B,MAAM,IAAIC,MAAM,iBAElB,MAAMC,QAAcrB,KAAKJ,KAAK0B,KAC5BtB,KAAKJ,KAAK2B,OAAO,CACff,KAAMN,EAAOM,KACbW,IAAKjB,EAAOiB,IACZK,KAAMpB,OAAOF,EAAOsB,OAAS,KAQjC,aALMxB,KAAKF,aAAa2B,OAAO,CAC7BC,UAAWR,EAASS,SACpBC,OAAQ,YACRC,OAAQ,CAAEC,GAAIT,EAAMS,GAAItB,KAAMa,EAAMb,KAAMW,IAAKE,EAAMF,OAEhDE,CACT,CAGA,YAAMU,CAAO7B,EAAsCgB,GACjD,IAAKhB,EAAO4B,KAAO5B,EAAOM,KACxB,MAAM,IAAIY,MAAM,gBAQlB,aANMpB,KAAKJ,KAAKmC,OAAO7B,EAAO4B,GAAI,CAAEtB,KAAMN,EAAOM,aAC3CR,KAAKF,aAAa2B,OAAO,CAC7BC,UAAWR,EAASS,SACpBC,OAAQ,eACRC,OAAQ,CAAEC,GAAI5B,EAAO4B,GAAItB,KAAMN,EAAOM,SAEjC,CACT,CAGA,gBAAMwB,CAAWF,EAAYZ,GAC3B,MAAMe,QAAejC,KAAKJ,KAAKsC,QAAQ,CAAEC,MAAO,CAAEL,QAClD,IAAKG,EAAQ,MAAM,IAAIb,MAAM,WAS7B,aARMpB,KAAKJ,KAAKwC,OAAON,GAEvB9B,KAAKH,cAAcuC,OAAOH,EAAOd,WAC3BnB,KAAKF,aAAa2B,OAAO,CAC7BC,UAAWR,EAASS,SACpBC,OAAQ,eACRC,OAAQ,CAAEC,KAAItB,KAAMyB,EAAOzB,KAAMW,IAAKc,EAAOd,QAExC,CACT,GAvEWkB,QAAA1C,0B,qBAAAA,aAAY2C,WAAA,EADxB,EAAAlD,SAAAmD,cAGIC,QAAA,KAAAlD,UAAAmD,kBAAiBjD,eAAAkD,cAEjBF,QAAA,KAAApD,SAAAuD,SAAO,EAAAvD,SAAAwD,YAAW,IAAMnD,iBAAAoD,iB,gCADFtD,UAAAuD,WAESrD,iBAAAoD,cACDnD,gBAAAqD,gBANtBpD\",\"ignoreList\":[]}"
1
+ {"version":3,"file":"image.service.js","sourceRoot":"","sources":["../../../src/modules/image/image.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAgE;AAChE,6CAAmD;AACnD,qCAAqC;AACrC,8DAA0D;AAC1D,6DAAyD;AACzD,0DAAsD;AAS/C,IAAM,YAAY,GAAlB,MAAM,YAAY;IAGJ;IAEA;IACA;IALnB,YAEmB,IAA6B,EAE7B,aAA4B,EAC5B,YAA0B;QAH1B,SAAI,GAAJ,IAAI,CAAyB;QAE7B,kBAAa,GAAb,aAAa,CAAe;QAC5B,iBAAY,GAAZ,YAAY,CAAc;IAC1C,CAAC;IAGJ,KAAK,CAAC,OAAO,CAAC,MAA6E;QACzF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,EAAE,CAAC,QAAQ,CAAC,qBAAqB,EAAE,EAAE,EAAE,EAAE,IAAI,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC;aACnC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;aAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,eAAe,EAAE,CAAC;QACjD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAGD,KAAK,CAAC,GAAG,CAAC,MAAoD,EAAE,QAA8B;QAC5F,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAChC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YACf,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;SAC/B,CAAC,CACH,CAAC;QACF,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAC7B,SAAS,EAAE,QAAQ,CAAC,QAAQ;YAC5B,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE;SAC3D,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAGD,KAAK,CAAC,MAAM,CAAC,MAAoC,EAAE,QAA8B;QAC/E,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAC7B,SAAS,EAAE,QAAQ,CAAC,QAAQ;YAC5B,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;SAC7C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,QAA8B;QACzD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAE3B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAC7B,SAAS,EAAE,QAAQ,CAAC,QAAQ;YAC5B,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE;SACnD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAxEY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,0BAAgB,EAAC,0BAAW,CAAC,CAAA;IAE7B,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,8BAAa,CAAC,CAAC,CAAA;qCADjB,oBAAU;QAED,8BAAa;QACd,4BAAY;GANlC,YAAY,CAwExB"}
@@ -1,2 +1,59 @@
1
- "use strict";var BackendVersionProbe_1,__decorate=this&&this.__decorate||function(e,n,o,r){var t,s=arguments.length,a=s<3?n:null===r?r=Object.getOwnPropertyDescriptor(n,o):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,n,o,r);else for(var c=e.length-1;c>=0;c--)(t=e[c])&&(a=(s<3?t(a):s>3?t(n,o,a):t(n,o))||a);return s>3&&a&&Object.defineProperty(n,o,a),a};Object.defineProperty(exports,"__esModule",{value:!0}),exports.BackendVersionProbe=void 0;const common_1=require("@nestjs/common"),fs=require("fs"),path=require("path");let BackendVersionProbe=BackendVersionProbe_1=class{logger=new common_1.Logger(BackendVersionProbe_1.name);key="backend-version";name="后台版本";kind="status";async collect(){const e=(new Date).toISOString(),n=path.join(process.cwd(),"package.json"),statusResult=(o,r,t)=>({key:this.key,name:this.name,kind:"status",healthy:o,summary:r,detail:{kind:"status",items:[{label:"版本号",value:t},{label:"来源",value:n}]},collectedAt:e});if(!fs.existsSync(n))return statusResult("unknown","未找到 package.json","-");try{const e=fs.readFileSync(n,"utf8"),o=JSON.parse(e),r="string"==typeof o.version&&o.version?o.version:"";return r?statusResult(!0,`当前后台版本 ${r}`,r):statusResult("unknown","package.json 缺少 version 字段","-")}catch(e){return this.logger.warn(`读取 package.json 失败: ${e.message}`),statusResult("unknown",`读取版本失败: ${e.message}`,"-")}}};exports.BackendVersionProbe=BackendVersionProbe,exports.BackendVersionProbe=BackendVersionProbe=BackendVersionProbe_1=__decorate([(0,common_1.Injectable)()],BackendVersionProbe);
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var BackendVersionProbe_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.BackendVersionProbe = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const fs = require("fs");
13
+ const path = require("path");
14
+ let BackendVersionProbe = BackendVersionProbe_1 = class BackendVersionProbe {
15
+ logger = new common_1.Logger(BackendVersionProbe_1.name);
16
+ key = 'backend-version';
17
+ name = '后台版本';
18
+ kind = 'status';
19
+ async collect() {
20
+ const collectedAt = new Date().toISOString();
21
+ const pkgPath = path.join(process.cwd(), 'package.json');
22
+ const statusResult = (healthy, summary, version) => ({
23
+ key: this.key,
24
+ name: this.name,
25
+ kind: 'status',
26
+ healthy,
27
+ summary,
28
+ detail: {
29
+ kind: 'status',
30
+ items: [
31
+ { label: '版本号', value: version },
32
+ { label: '来源', value: pkgPath }
33
+ ]
34
+ },
35
+ collectedAt
36
+ });
37
+ if (!fs.existsSync(pkgPath)) {
38
+ return statusResult('unknown', '未找到 package.json', '-');
39
+ }
40
+ try {
41
+ const raw = fs.readFileSync(pkgPath, 'utf8');
42
+ const pkg = JSON.parse(raw);
43
+ const version = typeof pkg.version === 'string' && pkg.version ? pkg.version : '';
44
+ if (!version) {
45
+ return statusResult('unknown', 'package.json 缺少 version 字段', '-');
46
+ }
47
+ return statusResult(true, `当前后台版本 ${version}`, version);
48
+ }
49
+ catch (e) {
50
+ this.logger.warn(`读取 package.json 失败: ${e.message}`);
51
+ return statusResult('unknown', `读取版本失败: ${e.message}`, '-');
52
+ }
53
+ }
54
+ };
55
+ exports.BackendVersionProbe = BackendVersionProbe;
56
+ exports.BackendVersionProbe = BackendVersionProbe = BackendVersionProbe_1 = __decorate([
57
+ (0, common_1.Injectable)()
58
+ ], BackendVersionProbe);
2
59
  //# sourceMappingURL=backend-version.probe.js.map
@@ -1 +1 @@
1
- "{\"version\":3,\"file\":\"modules/ops/backend-version.probe.js\",\"names\":[\"common_1\",\"require\",\"fs\",\"path\",\"BackendVersionProbe\",\"BackendVersionProbe_1\",\"logger\",\"Logger\",\"name\",\"key\",\"kind\",\"collect\",\"collectedAt\",\"Date\",\"toISOString\",\"pkgPath\",\"join\",\"process\",\"cwd\",\"statusResult\",\"healthy\",\"summary\",\"version\",\"this\",\"detail\",\"items\",\"label\",\"value\",\"existsSync\",\"raw\",\"readFileSync\",\"pkg\",\"JSON\",\"parse\",\"e\",\"warn\",\"message\",\"exports\",\"__decorate\",\"Injectable\"],\"sources\":[\"../../../src/modules/ops/backend-version.probe.ts\"],\"mappings\":\"ueAAA,MAAAA,SAAAC,QAAA,kBACAC,GAAAD,QAAA,MACAE,KAAAF,QAAA,QAmBO,IAAMG,oBAAmBC,sBAAzB,MACYC,OAAS,IAAIN,SAAAO,OAAOF,sBAAoBG,MAChDC,IAAM,kBACND,KAAO,OACPE,KAAO,SAEhB,aAAMC,GACJ,MAAMC,GAAc,IAAIC,MAAOC,cACzBC,EAAUZ,KAAKa,KAAKC,QAAQC,MAAO,gBAEnCC,aAAe,CACnBC,EACAC,EACAC,KACmB,CACnBb,IAAKc,KAAKd,IACVD,KAAMe,KAAKf,KACXE,KAAM,SACNU,UACAC,UACAG,OAAQ,CACNd,KAAM,SACNe,MAAO,CACL,CAAEC,MAAO,MAAOC,MAAOL,GACvB,CAAEI,MAAO,KAAMC,MAAOZ,KAG1BH,gBAGF,IAAKV,GAAG0B,WAAWb,GACjB,OAAOI,aAAa,UAAW,mBAAoB,KAGrD,IACE,MAAMU,EAAM3B,GAAG4B,aAAaf,EAAS,QAC/BgB,EAAMC,KAAKC,MAAMJ,GACjBP,EAAiC,iBAAhBS,EAAIT,SAAwBS,EAAIT,QAAUS,EAAIT,QAAU,GAC/E,OAAKA,EAGEH,cAAa,EAAM,UAAUG,IAAWA,GAFtCH,aAAa,UAAW,6BAA8B,IAGjE,CAAE,MAAOe,GAEP,OADAX,KAAKjB,OAAO6B,KAAK,uBAAwBD,EAAYE,WAC9CjB,aAAa,UAAW,WAAYe,EAAYE,UAAW,IACpE,CACF,GA9CWC,QAAAjC,wC,4BAAAA,oBAAmBC,sBAAAiC,WAAA,EAD/B,EAAAtC,SAAAuC,eACYnC\",\"ignoreList\":[]}"
1
+ {"version":3,"file":"backend-version.probe.js","sourceRoot":"","sources":["../../../src/modules/ops/backend-version.probe.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AACpD,yBAAyB;AACzB,6BAA6B;AAmBtB,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IACb,MAAM,GAAG,IAAI,eAAM,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;IACtD,GAAG,GAAG,iBAAiB,CAAC;IACxB,IAAI,GAAG,MAAM,CAAC;IACd,IAAI,GAAG,QAAiB,CAAC;IAElC,KAAK,CAAC,OAAO;QACX,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QAEzD,MAAM,YAAY,GAAG,CACnB,OAA4B,EAC5B,OAAe,EACf,OAAe,EACC,EAAE,CAAC,CAAC;YACpB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,QAAQ;YACd,OAAO;YACP,OAAO;YACP,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE;oBACL,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;oBAChC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;iBAChC;aACF;YACD,WAAW;SACZ,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,YAAY,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,YAAY,CAAC,SAAS,EAAE,4BAA4B,EAAE,GAAG,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,YAAY,CAAC,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAwB,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,OAAO,YAAY,CAAC,SAAS,EAAE,WAAY,CAAW,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;CACF,CAAA;AA/CY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;GACA,mBAAmB,CA+C/B"}
@@ -1,2 +1,5 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.OPS_PROBE=void 0,exports.OPS_PROBE=Symbol("OPS_PROBE");
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OPS_PROBE = void 0;
4
+ exports.OPS_PROBE = Symbol('OPS_PROBE');
2
5
  //# sourceMappingURL=ops-probe.interface.js.map
@@ -1 +1 @@
1
- "{\"version\":3,\"file\":\"modules/ops/ops-probe.interface.js\",\"names\":[\"exports\",\"OPS_PROBE\",\"Symbol\"],\"sources\":[\"../../../src/modules/ops/ops-probe.interface.ts\"],\"mappings\":\"6FAkBaA,QAAAC,UAAYC,OAAO\",\"ignoreList\":[]}"
1
+ {"version":3,"file":"ops-probe.interface.js","sourceRoot":"","sources":["../../../src/modules/ops/ops-probe.interface.ts"],"names":[],"mappings":";;;AAkBa,QAAA,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC"}
@@ -1,2 +1,53 @@
1
- "use strict";var __decorate=this&&this.__decorate||function(e,t,r,o){var a,s=arguments.length,n=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,r,o);else for(var _=e.length-1;_>=0;_--)(a=e[_])&&(n=(s<3?a(n):s>3?a(t,r,n):a(t,r))||n);return s>3&&n&&Object.defineProperty(t,r,n),n},__metadata=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},__param=this&&this.__param||function(e,t){return function(r,o){t(r,o,e)}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.OpsController=void 0;const common_1=require("@nestjs/common"),swagger_1=require("@nestjs/swagger"),ops_service_1=require("./ops.service"),jwt_auth_guard_1=require("../auth/jwt-auth.guard");let OpsController=class{service;constructor(e){this.service=e}overview(){return this.service.overview()}one(e){return this.service.one(e)}};exports.OpsController=OpsController,__decorate([(0,common_1.Get)("overview"),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",void 0)],OpsController.prototype,"overview",null),__decorate([(0,common_1.Get)("probe/:key"),__param(0,(0,common_1.Param)("key")),__metadata("design:type",Function),__metadata("design:paramtypes",[String]),__metadata("design:returntype",void 0)],OpsController.prototype,"one",null),exports.OpsController=OpsController=__decorate([(0,swagger_1.ApiTags)("ops 运维监控"),(0,common_1.Controller)("ops"),(0,common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),(0,swagger_1.ApiBearerAuth)(),__metadata("design:paramtypes",[ops_service_1.OpsService])],OpsController);
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.OpsController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const swagger_1 = require("@nestjs/swagger");
18
+ const ops_service_1 = require("./ops.service");
19
+ const jwt_auth_guard_1 = require("../auth/jwt-auth.guard");
20
+ let OpsController = class OpsController {
21
+ service;
22
+ constructor(service) {
23
+ this.service = service;
24
+ }
25
+ overview() {
26
+ return this.service.overview();
27
+ }
28
+ one(key) {
29
+ return this.service.one(key);
30
+ }
31
+ };
32
+ exports.OpsController = OpsController;
33
+ __decorate([
34
+ (0, common_1.Get)('overview'),
35
+ __metadata("design:type", Function),
36
+ __metadata("design:paramtypes", []),
37
+ __metadata("design:returntype", void 0)
38
+ ], OpsController.prototype, "overview", null);
39
+ __decorate([
40
+ (0, common_1.Get)('probe/:key'),
41
+ __param(0, (0, common_1.Param)('key')),
42
+ __metadata("design:type", Function),
43
+ __metadata("design:paramtypes", [String]),
44
+ __metadata("design:returntype", void 0)
45
+ ], OpsController.prototype, "one", null);
46
+ exports.OpsController = OpsController = __decorate([
47
+ (0, swagger_1.ApiTags)('ops 运维监控'),
48
+ (0, common_1.Controller)('ops'),
49
+ (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
50
+ (0, swagger_1.ApiBearerAuth)(),
51
+ __metadata("design:paramtypes", [ops_service_1.OpsService])
52
+ ], OpsController);
2
53
  //# sourceMappingURL=ops.controller.js.map
@@ -1 +1 @@
1
- "{\"version\":3,\"file\":\"modules/ops/ops.controller.js\",\"names\":[\"common_1\",\"require\",\"swagger_1\",\"ops_service_1\",\"jwt_auth_guard_1\",\"OpsController\",\"service\",\"constructor\",\"this\",\"overview\",\"one\",\"key\",\"exports\",\"__decorate\",\"Get\",\"__param\",\"Param\",\"ApiTags\",\"Controller\",\"UseGuards\",\"JwtAuthGuard\",\"ApiBearerAuth\",\"OpsService\"],\"sources\":[\"../../../src/modules/ops/ops.controller.ts\"],\"mappings\":\"oqBAAA,MAAAA,SAAAC,QAAA,kBACAC,UAAAD,QAAA,mBACAE,cAAAF,QAAA,iBACAG,iBAAAH,QAAA,0BAeO,IAAMI,cAAN,MACwBC,QAA7B,WAAAC,CAA6BD,GAAAE,KAAAF,SAAsB,CAInD,QAAAG,GACE,OAAOD,KAAKF,QAAQG,UACtB,CAIA,GAAAC,CAAkBC,GAChB,OAAOH,KAAKF,QAAQI,IAAIC,EAC1B,GAbWC,QAAAP,4BAKXQ,WAAA,EADC,EAAAb,SAAAc,KAAI,Y,uJAOLD,WAAA,EADC,EAAAb,SAAAc,KAAI,cACAC,QAAA,KAAAf,SAAAgB,OAAM,Q,8KAXAX,cAAaQ,WAAA,EAJzB,EAAAX,UAAAe,SAAQ,aACR,EAAAjB,SAAAkB,YAAW,QACX,EAAAlB,SAAAmB,WAAUf,iBAAAgB,eACV,EAAAlB,UAAAmB,iB,gCAEuClB,cAAAmB,cAD3BjB\",\"ignoreList\":[]}"
1
+ {"version":3,"file":"ops.controller.js","sourceRoot":"","sources":["../../../src/modules/ops/ops.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAmE;AACnE,6CAAyD;AACzD,+CAA2C;AAC3C,2DAAsD;AAe/C,IAAM,aAAa,GAAnB,MAAM,aAAa;IACK;IAA7B,YAA6B,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;IAAG,CAAC;IAIpD,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAID,GAAG,CAAe,GAAW;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;CACF,CAAA;AAdY,sCAAa;AAKxB;IADC,IAAA,YAAG,EAAC,UAAU,CAAC;;;;6CAGf;AAID;IADC,IAAA,YAAG,EAAC,YAAY,CAAC;IACb,WAAA,IAAA,cAAK,EAAC,KAAK,CAAC,CAAA;;;;wCAEhB;wBAbU,aAAa;IAJzB,IAAA,iBAAO,EAAC,UAAU,CAAC;IACnB,IAAA,mBAAU,EAAC,KAAK,CAAC;IACjB,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,uBAAa,GAAE;qCAEwB,wBAAU;GADrC,aAAa,CAczB"}
@@ -1,2 +1,40 @@
1
- "use strict";var __decorate=this&&this.__decorate||function(e,o,r,t){var _,s=arguments.length,p=s<3?o:null===t?t=Object.getOwnPropertyDescriptor(o,r):t;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)p=Reflect.decorate(e,o,r,t);else for(var i=e.length-1;i>=0;i--)(_=e[i])&&(p=(s<3?_(p):s>3?_(o,r,p):_(o,r))||p);return s>3&&p&&Object.defineProperty(o,r,p),p};Object.defineProperty(exports,"__esModule",{value:!0}),exports.OpsModule=void 0;const common_1=require("@nestjs/common"),ops_service_1=require("./ops.service"),ops_controller_1=require("./ops.controller"),version_controller_1=require("./version.controller"),ops_probe_interface_1=require("./ops-probe.interface"),sqlite_backup_probe_1=require("./sqlite-backup.probe"),sqlite_backup_list_probe_1=require("./sqlite-backup-list.probe"),sqlite_backup_log_probe_1=require("./sqlite-backup-log.probe"),backend_version_probe_1=require("./backend-version.probe");let OpsModule=class{};exports.OpsModule=OpsModule,exports.OpsModule=OpsModule=__decorate([(0,common_1.Module)({providers:[ops_service_1.OpsService,sqlite_backup_probe_1.SqliteBackupProbe,sqlite_backup_list_probe_1.SqliteBackupListProbe,sqlite_backup_log_probe_1.SqliteBackupLogProbe,backend_version_probe_1.BackendVersionProbe,{provide:ops_probe_interface_1.OPS_PROBE,useFactory:(...e)=>e,inject:[sqlite_backup_probe_1.SqliteBackupProbe,sqlite_backup_list_probe_1.SqliteBackupListProbe,sqlite_backup_log_probe_1.SqliteBackupLogProbe,backend_version_probe_1.BackendVersionProbe]}],controllers:[ops_controller_1.OpsController,version_controller_1.VersionController],exports:[ops_service_1.OpsService]})],OpsModule);
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.OpsModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const ops_service_1 = require("./ops.service");
12
+ const ops_controller_1 = require("./ops.controller");
13
+ const version_controller_1 = require("./version.controller");
14
+ const ops_probe_interface_1 = require("./ops-probe.interface");
15
+ const sqlite_backup_probe_1 = require("./sqlite-backup.probe");
16
+ const sqlite_backup_list_probe_1 = require("./sqlite-backup-list.probe");
17
+ const sqlite_backup_log_probe_1 = require("./sqlite-backup-log.probe");
18
+ const backend_version_probe_1 = require("./backend-version.probe");
19
+ let OpsModule = class OpsModule {
20
+ };
21
+ exports.OpsModule = OpsModule;
22
+ exports.OpsModule = OpsModule = __decorate([
23
+ (0, common_1.Module)({
24
+ providers: [
25
+ ops_service_1.OpsService,
26
+ sqlite_backup_probe_1.SqliteBackupProbe,
27
+ sqlite_backup_list_probe_1.SqliteBackupListProbe,
28
+ sqlite_backup_log_probe_1.SqliteBackupLogProbe,
29
+ backend_version_probe_1.BackendVersionProbe,
30
+ {
31
+ provide: ops_probe_interface_1.OPS_PROBE,
32
+ useFactory: (...probes) => probes,
33
+ inject: [sqlite_backup_probe_1.SqliteBackupProbe, sqlite_backup_list_probe_1.SqliteBackupListProbe, sqlite_backup_log_probe_1.SqliteBackupLogProbe, backend_version_probe_1.BackendVersionProbe]
34
+ }
35
+ ],
36
+ controllers: [ops_controller_1.OpsController, version_controller_1.VersionController],
37
+ exports: [ops_service_1.OpsService]
38
+ })
39
+ ], OpsModule);
2
40
  //# sourceMappingURL=ops.module.js.map
@@ -1 +1 @@
1
- "{\"version\":3,\"file\":\"modules/ops/ops.module.js\",\"names\":[\"common_1\",\"require\",\"ops_service_1\",\"ops_controller_1\",\"version_controller_1\",\"ops_probe_interface_1\",\"sqlite_backup_probe_1\",\"sqlite_backup_list_probe_1\",\"sqlite_backup_log_probe_1\",\"backend_version_probe_1\",\"OpsModule\",\"exports\",\"__decorate\",\"Module\",\"providers\",\"OpsService\",\"SqliteBackupProbe\",\"SqliteBackupListProbe\",\"SqliteBackupLogProbe\",\"BackendVersionProbe\",\"provide\",\"OPS_PROBE\",\"useFactory\",\"probes\",\"inject\",\"controllers\",\"OpsController\",\"VersionController\"],\"sources\":[\"../../../src/modules/ops/ops.module.ts\"],\"mappings\":\"ucAAA,MAAAA,SAAAC,QAAA,kBACAC,cAAAD,QAAA,iBACAE,iBAAAF,QAAA,oBACAG,qBAAAH,QAAA,wBACAI,sBAAAJ,QAAA,yBACAK,sBAAAL,QAAA,yBACAM,2BAAAN,QAAA,8BACAO,0BAAAP,QAAA,6BACAQ,wBAAAR,QAAA,2BAyCO,IAAMS,UAAN,QAAMC,QAAAD,oB,kBAAAA,UAASE,WAAA,EAtBrB,EAAAZ,SAAAa,QAAO,CACNC,UAAW,CACTZ,cAAAa,WAEAT,sBAAAU,kBACAT,2BAAAU,sBACAT,0BAAAU,qBACAT,wBAAAU,oBAMA,CACEC,QAASf,sBAAAgB,UACTC,WAAY,IAAIC,IAAuBA,EACvCC,OAAQ,CAAClB,sBAAAU,kBAAmBT,2BAAAU,sBAAuBT,0BAAAU,qBAAsBT,wBAAAU,uBAG7EM,YAAa,CAACtB,iBAAAuB,cAAetB,qBAAAuB,mBAC7BhB,QAAS,CAACT,cAAAa,eAECL\",\"ignoreList\":[]}"
1
+ {"version":3,"file":"ops.module.js","sourceRoot":"","sources":["../../../src/modules/ops/ops.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,+CAA2C;AAC3C,qDAAiD;AACjD,6DAAyD;AACzD,+DAAiE;AACjE,+DAA0D;AAC1D,yEAAmE;AACnE,uEAAiE;AACjE,mEAA8D;AAyCvD,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAtBrB,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,wBAAU;YAEV,uCAAiB;YACjB,gDAAqB;YACrB,8CAAoB;YACpB,2CAAmB;YAMnB;gBACE,OAAO,EAAE,+BAAS;gBAClB,UAAU,EAAE,CAAC,GAAG,MAAkB,EAAE,EAAE,CAAC,MAAM;gBAC7C,MAAM,EAAE,CAAC,uCAAiB,EAAE,gDAAqB,EAAE,8CAAoB,EAAE,2CAAmB,CAAC;aAC9F;SACF;QACD,WAAW,EAAE,CAAC,8BAAa,EAAE,sCAAiB,CAAC;QAC/C,OAAO,EAAE,CAAC,wBAAU,CAAC;KACtB,CAAC;GACW,SAAS,CAAG"}
@@ -1,2 +1,73 @@
1
- "use strict";var OpsService_1,__decorate=this&&this.__decorate||function(e,t,r,a){var n,o=arguments.length,s=o<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,r):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,a);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},__metadata=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},__param=this&&this.__param||function(e,t){return function(r,a){t(r,a,e)}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.OpsService=void 0;const common_1=require("@nestjs/common"),ops_probe_interface_1=require("./ops-probe.interface");let OpsService=OpsService_1=class{probes;logger=new common_1.Logger(OpsService_1.name);constructor(e){this.probes=e}async overview(){const e=await Promise.all(this.probes.map(async e=>{try{return await e.collect()}catch(t){return this.logger.warn(`探针 ${e.key} 采集失败: ${t.message}`),{key:e.key,name:e.name,kind:e.kind,healthy:"unknown",summary:`探针异常: ${t.message}`,detail:{kind:"status",items:[]},collectedAt:(new Date).toISOString()}}})),t={status:0,table:1,log:2};return e.sort((e,r)=>t[e.kind]-t[r.kind]||e.key.localeCompare(r.key))}async one(e){const t=this.probes.find(t=>t.key===e);if(!t)return null;try{return await t.collect()}catch(e){return this.logger.warn(`探针 ${t.key} 采集失败: ${e.message}`),{key:t.key,name:t.name,kind:t.kind,healthy:"unknown",summary:`探针异常: ${e.message}`,detail:{kind:"status",items:[]},collectedAt:(new Date).toISOString()}}}};exports.OpsService=OpsService,exports.OpsService=OpsService=OpsService_1=__decorate([(0,common_1.Injectable)(),__param(0,(0,common_1.Inject)(ops_probe_interface_1.OPS_PROBE)),__metadata("design:paramtypes",[Array])],OpsService);
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var OpsService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.OpsService = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const ops_probe_interface_1 = require("./ops-probe.interface");
19
+ let OpsService = OpsService_1 = class OpsService {
20
+ probes;
21
+ logger = new common_1.Logger(OpsService_1.name);
22
+ constructor(probes) {
23
+ this.probes = probes;
24
+ }
25
+ async overview() {
26
+ const results = await Promise.all(this.probes.map(async (probe) => {
27
+ try {
28
+ return await probe.collect();
29
+ }
30
+ catch (e) {
31
+ this.logger.warn(`探针 ${probe.key} 采集失败: ${e.message}`);
32
+ return {
33
+ key: probe.key,
34
+ name: probe.name,
35
+ kind: probe.kind,
36
+ healthy: 'unknown',
37
+ summary: `探针异常: ${e.message}`,
38
+ detail: { kind: 'status', items: [] },
39
+ collectedAt: new Date().toISOString()
40
+ };
41
+ }
42
+ }));
43
+ const order = { status: 0, table: 1, log: 2 };
44
+ return results.sort((a, b) => (order[a.kind] - order[b.kind]) || a.key.localeCompare(b.key));
45
+ }
46
+ async one(key) {
47
+ const probe = this.probes.find((p) => p.key === key);
48
+ if (!probe)
49
+ return null;
50
+ try {
51
+ return await probe.collect();
52
+ }
53
+ catch (e) {
54
+ this.logger.warn(`探针 ${probe.key} 采集失败: ${e.message}`);
55
+ return {
56
+ key: probe.key,
57
+ name: probe.name,
58
+ kind: probe.kind,
59
+ healthy: 'unknown',
60
+ summary: `探针异常: ${e.message}`,
61
+ detail: { kind: 'status', items: [] },
62
+ collectedAt: new Date().toISOString()
63
+ };
64
+ }
65
+ }
66
+ };
67
+ exports.OpsService = OpsService;
68
+ exports.OpsService = OpsService = OpsService_1 = __decorate([
69
+ (0, common_1.Injectable)(),
70
+ __param(0, (0, common_1.Inject)(ops_probe_interface_1.OPS_PROBE)),
71
+ __metadata("design:paramtypes", [Array])
72
+ ], OpsService);
2
73
  //# sourceMappingURL=ops.service.js.map
@@ -1 +1 @@
1
- "{\"version\":3,\"file\":\"modules/ops/ops.service.js\",\"names\":[\"common_1\",\"require\",\"ops_probe_interface_1\",\"OpsService\",\"OpsService_1\",\"probes\",\"logger\",\"Logger\",\"name\",\"constructor\",\"this\",\"overview\",\"results\",\"Promise\",\"all\",\"map\",\"async\",\"probe\",\"collect\",\"e\",\"warn\",\"key\",\"message\",\"kind\",\"healthy\",\"summary\",\"detail\",\"items\",\"collectedAt\",\"Date\",\"toISOString\",\"order\",\"status\",\"table\",\"log\",\"sort\",\"a\",\"b\",\"localeCompare\",\"one\",\"find\",\"p\",\"exports\",\"__decorate\",\"Injectable\",\"__param\",\"Inject\",\"OPS_PROBE\"],\"sources\":[\"../../../src/modules/ops/ops.service.ts\"],\"mappings\":\"8qBAAA,MAAAA,SAAAC,QAAA,kBACAC,sBAAAD,QAAA,yBAYO,IAAME,WAAUC,aAAhB,MAG2CC,OAF/BC,OAAS,IAAIN,SAAAO,OAAOH,aAAWI,MAEhD,WAAAC,CAAgDJ,GAAAK,KAAAL,QAAqB,CAGrE,cAAMM,GACJ,MAAMC,QAAgBC,QAAQC,IAC5BJ,KAAKL,OAAOU,IAAIC,MAAOC,IACrB,IACE,aAAaA,EAAMC,SACrB,CAAE,MAAOC,GAEP,OADAT,KAAKJ,OAAOc,KAAK,MAAMH,EAAMI,aAAcF,EAAYG,WAChD,CACLD,IAAKJ,EAAMI,IACXb,KAAMS,EAAMT,KACZe,KAAMN,EAAMM,KACZC,QAAS,UACTC,QAAS,SAAUN,EAAYG,UAC/BI,OAAQ,CAAEH,KAAM,SAAUI,MAAO,IACjCC,aAAa,IAAIC,MAAOC,cAE5B,KAIEC,EAAgC,CAAEC,OAAQ,EAAGC,MAAO,EAAGC,IAAK,GAClE,OAAOtB,EAAQuB,KAAK,CAACC,EAAGC,IAAON,EAAMK,EAAEb,MAAQQ,EAAMM,EAAEd,OAAUa,EAAEf,IAAIiB,cAAcD,EAAEhB,KACzF,CAGA,SAAMkB,CAAIlB,GACR,MAAMJ,EAAQP,KAAKL,OAAOmC,KAAMC,GAAMA,EAAEpB,MAAQA,GAChD,IAAKJ,EAAO,OAAO,KACnB,IACE,aAAaA,EAAMC,SACrB,CAAE,MAAOC,GAEP,OADAT,KAAKJ,OAAOc,KAAK,MAAMH,EAAMI,aAAcF,EAAYG,WAChD,CACLD,IAAKJ,EAAMI,IACXb,KAAMS,EAAMT,KACZe,KAAMN,EAAMM,KACZC,QAAS,UACTC,QAAS,SAAUN,EAAYG,UAC/BI,OAAQ,CAAEH,KAAM,SAAUI,MAAO,IACjCC,aAAa,IAAIC,MAAOC,cAE5B,CACF,GAhDWY,QAAAvC,sB,mBAAAA,WAAUC,aAAAuC,WAAA,EADtB,EAAA3C,SAAA4C,cAIcC,QAAA,KAAA7C,SAAA8C,QAAO5C,sBAAA6C,Y,yCAHT5C\",\"ignoreList\":[]}"
1
+ {"version":3,"file":"ops.service.js","sourceRoot":"","sources":["../../../src/modules/ops/ops.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA4D;AAC5D,+DAAsF;AAY/E,IAAM,UAAU,kBAAhB,MAAM,UAAU;IAG2B;IAF/B,MAAM,GAAG,IAAI,eAAM,CAAC,YAAU,CAAC,IAAI,CAAC,CAAC;IAEtD,YAAgD,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;IAGtE,KAAK,CAAC,QAAQ;QACZ,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,IAAI,CAAC;gBACH,OAAO,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;YAC/B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,UAAW,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClE,OAAO;oBACL,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,OAAO,EAAE,SAAkB;oBAC3B,OAAO,EAAE,SAAU,CAAW,CAAC,OAAO,EAAE;oBACxC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAW;oBAC9C,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACb,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,KAAK,GAA2B,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QACtE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/F,CAAC;IAGD,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,CAAC;YACH,OAAO,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,UAAW,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAClE,OAAO;gBACL,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,SAAkB;gBAC3B,OAAO,EAAE,SAAU,CAAW,CAAC,OAAO,EAAE;gBACxC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAW;gBAC9C,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACtC,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAjDY,gCAAU;qBAAV,UAAU;IADtB,IAAA,mBAAU,GAAE;IAIE,WAAA,IAAA,eAAM,EAAC,+BAAS,CAAC,CAAA;;GAHnB,UAAU,CAiDtB"}
@@ -1,2 +1,106 @@
1
- "use strict";var __decorate=this&&this.__decorate||function(e,t,s,a){var i,r=arguments.length,o=r<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,s):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,s,a);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(o=(r<3?i(o):r>3?i(t,s,o):i(t,s))||o);return r>3&&o&&Object.defineProperty(t,s,o),o},__metadata=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.SqliteBackupListProbe=void 0;const common_1=require("@nestjs/common"),config_1=require("@nestjs/config"),fs=require("fs"),path=require("path");let SqliteBackupListProbe=class{config;key="sqlite-backup-list";name="备份历史";kind="table";constructor(e){this.config=e}resolveDataDir(){const e=this.config.get("database").dir;return path.isAbsolute(e)?e:path.resolve(process.cwd(),e)}async collect(){const e="prod"===process.env.NODE_ENV?"prod":"develop",t=this.resolveDataDir(),s=path.join(t,"backup"),a=(new Date).toISOString(),i={key:this.key,name:this.name,kind:"table",healthy:"unknown",summary:"",detail:{kind:"table",columns:[],rows:[]},collectedAt:a};if(!fs.existsSync(s))return i.summary="备份目录不存在",i;let r=[];try{r=fs.readdirSync(s,{withFileTypes:!0}).filter(t=>t.isDirectory()&&t.name.startsWith(`template.${e}.`)).map(e=>e.name).sort().reverse()}catch(e){return i.summary=`读取备份目录失败: ${e.message}`,i}const o=("prod"===e?"template.prod":"template.develop")+".sqlite",n=r.map(e=>{const t=path.join(s,e),a=fs.statSync(t),i=path.join(t,o);let r=0;try{r=fs.statSync(i).size}catch{}const n=fs.existsSync(path.join(t,`${o}-wal`)),c=fs.existsSync(path.join(t,`${o}-shm`)),l=e.match(/(\d{4})(\d{2})(\d{2})-(\d{2})(\d{2})(\d{2})$/);return{ts:l?`${l[1]}-${l[2]}-${l[3]} ${l[4]}:${l[5]}:${l[6]}`:e,dirName:e,mainBytes:r,wal:n?"有":"无",shm:c?"有":"无",mtime:a.mtime.toISOString()}});return i.summary=n.length?`共 ${n.length} 份备份`:"暂无备份",i.healthy=n.length>0,i.detail={kind:"table",columns:[{key:"ts",title:"备份时间"},{key:"mainBytes",title:"主库大小"},{key:"wal",title:"WAL"},{key:"shm",title:"SHM"}],rows:n},i}};exports.SqliteBackupListProbe=SqliteBackupListProbe,exports.SqliteBackupListProbe=SqliteBackupListProbe=__decorate([(0,common_1.Injectable)(),__metadata("design:paramtypes",[config_1.ConfigService])],SqliteBackupListProbe);
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SqliteBackupListProbe = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const config_1 = require("@nestjs/config");
15
+ const fs = require("fs");
16
+ const path = require("path");
17
+ let SqliteBackupListProbe = class SqliteBackupListProbe {
18
+ config;
19
+ key = 'sqlite-backup-list';
20
+ name = '备份历史';
21
+ kind = 'table';
22
+ constructor(config) {
23
+ this.config = config;
24
+ }
25
+ resolveDataDir() {
26
+ const dir = this.config.get('database').dir;
27
+ return path.isAbsolute(dir) ? dir : path.resolve(process.cwd(), dir);
28
+ }
29
+ async collect() {
30
+ const env = process.env.NODE_ENV === 'prod' ? 'prod' : 'develop';
31
+ const dataDir = this.resolveDataDir();
32
+ const backupDir = path.join(dataDir, 'backup');
33
+ const collectedAt = new Date().toISOString();
34
+ const base = {
35
+ key: this.key,
36
+ name: this.name,
37
+ kind: 'table',
38
+ healthy: 'unknown',
39
+ summary: '',
40
+ detail: { kind: 'table', columns: [], rows: [] },
41
+ collectedAt
42
+ };
43
+ if (!fs.existsSync(backupDir)) {
44
+ base.summary = '备份目录不存在';
45
+ return base;
46
+ }
47
+ let entries = [];
48
+ try {
49
+ entries = fs
50
+ .readdirSync(backupDir, { withFileTypes: true })
51
+ .filter((d) => d.isDirectory() && d.name.startsWith(`template.${env}.`))
52
+ .map((d) => d.name)
53
+ .sort()
54
+ .reverse();
55
+ }
56
+ catch (e) {
57
+ base.summary = `读取备份目录失败: ${e.message}`;
58
+ return base;
59
+ }
60
+ const baseName = (env === 'prod' ? 'template.prod' : 'template.develop') + '.sqlite';
61
+ const rows = entries.map((dirName) => {
62
+ const dirPath = path.join(backupDir, dirName);
63
+ const stat = fs.statSync(dirPath);
64
+ const mainFile = path.join(dirPath, baseName);
65
+ let mainBytes = 0;
66
+ try {
67
+ mainBytes = fs.statSync(mainFile).size;
68
+ }
69
+ catch {
70
+ }
71
+ const hasWal = fs.existsSync(path.join(dirPath, `${baseName}-wal`));
72
+ const hasShm = fs.existsSync(path.join(dirPath, `${baseName}-shm`));
73
+ const tsMatch = dirName.match(/(\d{4})(\d{2})(\d{2})-(\d{2})(\d{2})(\d{2})$/);
74
+ const tsStr = tsMatch
75
+ ? `${tsMatch[1]}-${tsMatch[2]}-${tsMatch[3]} ${tsMatch[4]}:${tsMatch[5]}:${tsMatch[6]}`
76
+ : dirName;
77
+ return {
78
+ ts: tsStr,
79
+ dirName,
80
+ mainBytes,
81
+ wal: hasWal ? '有' : '无',
82
+ shm: hasShm ? '有' : '无',
83
+ mtime: stat.mtime.toISOString()
84
+ };
85
+ });
86
+ base.summary = rows.length ? `共 ${rows.length} 份备份` : '暂无备份';
87
+ base.healthy = rows.length > 0;
88
+ base.detail = {
89
+ kind: 'table',
90
+ columns: [
91
+ { key: 'ts', title: '备份时间' },
92
+ { key: 'mainBytes', title: '主库大小' },
93
+ { key: 'wal', title: 'WAL' },
94
+ { key: 'shm', title: 'SHM' }
95
+ ],
96
+ rows
97
+ };
98
+ return base;
99
+ }
100
+ };
101
+ exports.SqliteBackupListProbe = SqliteBackupListProbe;
102
+ exports.SqliteBackupListProbe = SqliteBackupListProbe = __decorate([
103
+ (0, common_1.Injectable)(),
104
+ __metadata("design:paramtypes", [config_1.ConfigService])
105
+ ], SqliteBackupListProbe);
2
106
  //# sourceMappingURL=sqlite-backup-list.probe.js.map
@@ -1 +1 @@
1
- "{\"version\":3,\"file\":\"modules/ops/sqlite-backup-list.probe.js\",\"names\":[\"common_1\",\"require\",\"config_1\",\"fs\",\"path\",\"SqliteBackupListProbe\",\"config\",\"key\",\"name\",\"kind\",\"constructor\",\"this\",\"resolveDataDir\",\"dir\",\"get\",\"isAbsolute\",\"resolve\",\"process\",\"cwd\",\"collect\",\"env\",\"NODE_ENV\",\"dataDir\",\"backupDir\",\"join\",\"collectedAt\",\"Date\",\"toISOString\",\"base\",\"healthy\",\"summary\",\"detail\",\"columns\",\"rows\",\"existsSync\",\"entries\",\"readdirSync\",\"withFileTypes\",\"filter\",\"d\",\"isDirectory\",\"startsWith\",\"map\",\"sort\",\"reverse\",\"e\",\"message\",\"baseName\",\"dirName\",\"dirPath\",\"stat\",\"statSync\",\"mainFile\",\"mainBytes\",\"size\",\"hasWal\",\"hasShm\",\"tsMatch\",\"match\",\"ts\",\"wal\",\"shm\",\"mtime\",\"length\",\"title\",\"exports\",\"__decorate\",\"Injectable\",\"ConfigService\"],\"sources\":[\"../../../src/modules/ops/sqlite-backup-list.probe.ts\"],\"mappings\":\"kmBAAA,MAAAA,SAAAC,QAAA,kBACAC,SAAAD,QAAA,kBACAE,GAAAF,QAAA,MACAG,KAAAH,QAAA,QASO,IAAMI,sBAAN,MAKwBC,OAJpBC,IAAM,qBACNC,KAAO,OACPC,KAAO,QAEhB,WAAAC,CAA6BJ,GAAAK,KAAAL,QAAyC,CAE9D,cAAAM,GACN,MAAMC,EAAMF,KAAKL,OAAOQ,IAA2B,YAAaD,IAChE,OAAOT,KAAKW,WAAWF,GAAOA,EAAMT,KAAKY,QAAQC,QAAQC,MAAOL,EAClE,CAEA,aAAMM,GACJ,MAAMC,EAA+B,SAAzBH,QAAQG,IAAIC,SAAsB,OAAS,UACjDC,EAAUX,KAAKC,iBACfW,EAAYnB,KAAKoB,KAAKF,EAAS,UAC/BG,GAAc,IAAIC,MAAOC,cAEzBC,EAAuB,CAC3BrB,IAAKI,KAAKJ,IACVC,KAAMG,KAAKH,KACXC,KAAM,QACNoB,QAAS,UACTC,QAAS,GACTC,OAAQ,CAAEtB,KAAM,QAASuB,QAAS,GAAIC,KAAM,IAC5CR,eAGF,IAAKtB,GAAG+B,WAAWX,GAEjB,OADAK,EAAKE,QAAU,UACRF,EAGT,IAAIO,EAAoB,GACxB,IACEA,EAAUhC,GACPiC,YAAYb,EAAW,CAAEc,eAAe,IACxCC,OAAQC,GAAMA,EAAEC,eAAiBD,EAAE/B,KAAKiC,WAAW,YAAYrB,OAC/DsB,IAAKH,GAAMA,EAAE/B,MACbmC,OACAC,SACL,CAAE,MAAOC,GAEP,OADAjB,EAAKE,QAAU,aAAce,EAAYC,UAClClB,CACT,CAEA,MAAMmB,GAAoB,SAAR3B,EAAiB,gBAAkB,oBAAsB,UACrEa,EAAOE,EAAQO,IAAKM,IACxB,MAAMC,EAAU7C,KAAKoB,KAAKD,EAAWyB,GAC/BE,EAAO/C,GAAGgD,SAASF,GACnBG,EAAWhD,KAAKoB,KAAKyB,EAASF,GACpC,IAAIM,EAAY,EAChB,IACEA,EAAYlD,GAAGgD,SAASC,GAAUE,IACpC,CAAE,MAEF,CACA,MAAMC,EAASpD,GAAG+B,WAAW9B,KAAKoB,KAAKyB,EAAS,GAAGF,UAC7CS,EAASrD,GAAG+B,WAAW9B,KAAKoB,KAAKyB,EAAS,GAAGF,UAC7CU,EAAUT,EAAQU,MAAM,gDAI9B,MAAO,CACLC,GAJYF,EACV,GAAGA,EAAQ,MAAMA,EAAQ,MAAMA,EAAQ,MAAMA,EAAQ,MAAMA,EAAQ,MAAMA,EAAQ,KACjFT,EAGFA,UACAK,YACAO,IAAKL,EAAS,IAAM,IACpBM,IAAKL,EAAS,IAAM,IACpBM,MAAOZ,EAAKY,MAAMnC,iBAgBtB,OAZAC,EAAKE,QAAUG,EAAK8B,OAAS,KAAK9B,EAAK8B,aAAe,OACtDnC,EAAKC,QAAUI,EAAK8B,OAAS,EAC7BnC,EAAKG,OAAS,CACZtB,KAAM,QACNuB,QAAS,CACP,CAAEzB,IAAK,KAAMyD,MAAO,QACpB,CAAEzD,IAAK,YAAayD,MAAO,QAC3B,CAAEzD,IAAK,MAAOyD,MAAO,OACrB,CAAEzD,IAAK,MAAOyD,MAAO,QAEvB/B,QAEKL,CACT,GAtFWqC,QAAA5D,4C,8BAAAA,sBAAqB6D,WAAA,EADjC,EAAAlE,SAAAmE,c,gCAMsCjE,SAAAkE,iBAL1B/D\",\"ignoreList\":[]}"
1
+ {"version":3,"file":"sqlite-backup-list.probe.js","sourceRoot":"","sources":["../../../src/modules/ops/sqlite-backup-list.probe.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,68 @@
1
- "use strict";var __decorate=this&&this.__decorate||function(e,t,o,r){var s,i=arguments.length,n=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,o):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,o,r);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(n=(i<3?s(n):i>3?s(t,o,n):s(t,o))||n);return i>3&&n&&Object.defineProperty(t,o,n),n},__metadata=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.SqliteBackupLogProbe=void 0;const common_1=require("@nestjs/common"),config_1=require("@nestjs/config"),fs=require("fs"),path=require("path");let SqliteBackupLogProbe=class{config;key="sqlite-backup-log";name="备份日志";kind="log";MAX_LINES=50;constructor(e){this.config=e}resolveDataDir(){const e=this.config.get("database").dir;return path.isAbsolute(e)?e:path.resolve(process.cwd(),e)}async collect(){const e=this.resolveDataDir(),t=path.join(e,"logs","sqlite-backup.log"),o=(new Date).toISOString(),r={key:this.key,name:this.name,kind:"log",healthy:"unknown",summary:"",detail:{kind:"log",lines:[]},collectedAt:o};if(!fs.existsSync(t))return r.summary="日志文件不存在(cron 未跑过或未配日志重定向)",r;try{const e=fs.readFileSync(t,"utf8").split("\n").filter(e=>e.length>0&&!/测试|test/i.test(e)).slice(-this.MAX_LINES);r.summary=`最近 ${e.length} 行`;const o=e.some(e=>e.includes("✅")),s=e.some(e=>e.includes("❌"));r.healthy=!(!o||s)||!s&&"unknown",r.detail={kind:"log",lines:e}}catch(e){r.summary=`读取日志失败: ${e.message}`}return r}};exports.SqliteBackupLogProbe=SqliteBackupLogProbe,exports.SqliteBackupLogProbe=SqliteBackupLogProbe=__decorate([(0,common_1.Injectable)(),__metadata("design:paramtypes",[config_1.ConfigService])],SqliteBackupLogProbe);
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SqliteBackupLogProbe = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const config_1 = require("@nestjs/config");
15
+ const fs = require("fs");
16
+ const path = require("path");
17
+ let SqliteBackupLogProbe = class SqliteBackupLogProbe {
18
+ config;
19
+ key = 'sqlite-backup-log';
20
+ name = '备份日志';
21
+ kind = 'log';
22
+ MAX_LINES = 50;
23
+ constructor(config) {
24
+ this.config = config;
25
+ }
26
+ resolveDataDir() {
27
+ const dir = this.config.get('database').dir;
28
+ return path.isAbsolute(dir) ? dir : path.resolve(process.cwd(), dir);
29
+ }
30
+ async collect() {
31
+ const dataDir = this.resolveDataDir();
32
+ const logFile = path.join(dataDir, 'logs', 'sqlite-backup.log');
33
+ const collectedAt = new Date().toISOString();
34
+ const base = {
35
+ key: this.key,
36
+ name: this.name,
37
+ kind: 'log',
38
+ healthy: 'unknown',
39
+ summary: '',
40
+ detail: { kind: 'log', lines: [] },
41
+ collectedAt
42
+ };
43
+ if (!fs.existsSync(logFile)) {
44
+ base.summary = '日志文件不存在(cron 未跑过或未配日志重定向)';
45
+ return base;
46
+ }
47
+ try {
48
+ const content = fs.readFileSync(logFile, 'utf8');
49
+ const allLines = content.split('\n').filter((l) => l.length > 0 && !/测试|test/i.test(l));
50
+ const tail = allLines.slice(-this.MAX_LINES);
51
+ base.summary = `最近 ${tail.length} 行`;
52
+ const hasSuccess = tail.some((l) => l.includes('✅'));
53
+ const hasFail = tail.some((l) => l.includes('❌'));
54
+ base.healthy = hasSuccess && !hasFail ? true : hasFail ? false : 'unknown';
55
+ base.detail = { kind: 'log', lines: tail };
56
+ }
57
+ catch (e) {
58
+ base.summary = `读取日志失败: ${e.message}`;
59
+ }
60
+ return base;
61
+ }
62
+ };
63
+ exports.SqliteBackupLogProbe = SqliteBackupLogProbe;
64
+ exports.SqliteBackupLogProbe = SqliteBackupLogProbe = __decorate([
65
+ (0, common_1.Injectable)(),
66
+ __metadata("design:paramtypes", [config_1.ConfigService])
67
+ ], SqliteBackupLogProbe);
2
68
  //# sourceMappingURL=sqlite-backup-log.probe.js.map
@@ -1 +1 @@
1
- "{\"version\":3,\"file\":\"modules/ops/sqlite-backup-log.probe.js\",\"names\":[\"common_1\",\"require\",\"config_1\",\"fs\",\"path\",\"SqliteBackupLogProbe\",\"config\",\"key\",\"name\",\"kind\",\"MAX_LINES\",\"constructor\",\"this\",\"resolveDataDir\",\"dir\",\"get\",\"isAbsolute\",\"resolve\",\"process\",\"cwd\",\"collect\",\"dataDir\",\"logFile\",\"join\",\"collectedAt\",\"Date\",\"toISOString\",\"base\",\"healthy\",\"summary\",\"detail\",\"lines\",\"existsSync\",\"tail\",\"readFileSync\",\"split\",\"filter\",\"l\",\"length\",\"test\",\"slice\",\"hasSuccess\",\"some\",\"includes\",\"hasFail\",\"e\",\"message\",\"exports\",\"__decorate\",\"Injectable\",\"ConfigService\"],\"sources\":[\"../../../src/modules/ops/sqlite-backup-log.probe.ts\"],\"mappings\":\"imBAAA,MAAAA,SAAAC,QAAA,kBACAC,SAAAD,QAAA,kBACAE,GAAAF,QAAA,MACAG,KAAAH,QAAA,QAUO,IAAMI,qBAAN,MAMwBC,OALpBC,IAAM,oBACNC,KAAO,OACPC,KAAO,MACCC,UAAY,GAE7B,WAAAC,CAA6BL,GAAAM,KAAAN,QAAyC,CAE9D,cAAAO,GACN,MAAMC,EAAMF,KAAKN,OAAOS,IAA2B,YAAaD,IAChE,OAAOV,KAAKY,WAAWF,GAAOA,EAAMV,KAAKa,QAAQC,QAAQC,MAAOL,EAClE,CAEA,aAAMM,GACJ,MAAMC,EAAUT,KAAKC,iBACfS,EAAUlB,KAAKmB,KAAKF,EAAS,OAAQ,qBACrCG,GAAc,IAAIC,MAAOC,cAEzBC,EAAuB,CAC3BpB,IAAKK,KAAKL,IACVC,KAAMI,KAAKJ,KACXC,KAAM,MACNmB,QAAS,UACTC,QAAS,GACTC,OAAQ,CAAErB,KAAM,MAAOsB,MAAO,IAC9BP,eAGF,IAAKrB,GAAG6B,WAAWV,GAEjB,OADAK,EAAKE,QAAU,4BACRF,EAGT,IACE,MAGMM,EAHU9B,GAAG+B,aAAaZ,EAAS,QAEhBa,MAAM,MAAMC,OAAQC,GAAMA,EAAEC,OAAS,IAAM,WAAWC,KAAKF,IAC9DG,OAAO5B,KAAKF,WAClCiB,EAAKE,QAAU,MAAMI,EAAKK,WAE1B,MAAMG,EAAaR,EAAKS,KAAML,GAAMA,EAAEM,SAAS,MACzCC,EAAUX,EAAKS,KAAML,GAAMA,EAAEM,SAAS,MAC5ChB,EAAKC,WAAUa,GAAeG,KAAiBA,GAAkB,UACjEjB,EAAKG,OAAS,CAAErB,KAAM,MAAOsB,MAAOE,EACtC,CAAE,MAAOY,GACPlB,EAAKE,QAAU,WAAYgB,EAAYC,SACzC,CACA,OAAOnB,CACT,GAhDWoB,QAAA1C,0C,6BAAAA,qBAAoB2C,WAAA,EADhC,EAAAhD,SAAAiD,c,gCAOsC/C,SAAAgD,iBAN1B7C\",\"ignoreList\":[]}"
1
+ {"version":3,"file":"sqlite-backup-log.probe.js","sourceRoot":"","sources":["../../../src/modules/ops/sqlite-backup-log.probe.ts"],"names":[],"mappings":"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"}