@gadmin2n/schematics 0.0.55

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 (320) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/dist/collection.json +122 -0
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.js +18 -0
  6. package/dist/lib/application/application.factory.d.ts +3 -0
  7. package/dist/lib/application/application.factory.js +92 -0
  8. package/dist/lib/application/files/gadmin2-game-angle-demo/.dockerignore +33 -0
  9. package/dist/lib/application/files/gadmin2-game-angle-demo/Dockerfile +14 -0
  10. package/dist/lib/application/files/gadmin2-game-angle-demo/Jenkinsfile +44 -0
  11. package/dist/lib/application/files/gadmin2-game-angle-demo/build.sh +18 -0
  12. package/dist/lib/application/files/gadmin2-game-angle-demo/config/.types.d.ts +143 -0
  13. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/sample.prisma +65 -0
  14. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Game.ts +58 -0
  15. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Log.ts +56 -0
  16. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Role.ts +58 -0
  17. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Source.ts +76 -0
  18. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Tasklog.ts +76 -0
  19. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/_common.ts +16 -0
  20. package/dist/lib/application/files/gadmin2-game-angle-demo/readme.md +49 -0
  21. package/dist/lib/application/files/gadmin2-game-angle-demo/server/.env +20 -0
  22. package/dist/lib/application/files/gadmin2-game-angle-demo/server/.eslintrc.js +25 -0
  23. package/dist/lib/application/files/gadmin2-game-angle-demo/server/.prettierrc +4 -0
  24. package/dist/lib/application/files/gadmin2-game-angle-demo/server/README.md +71 -0
  25. package/dist/lib/application/files/gadmin2-game-angle-demo/server/config/ac.config.ts +24 -0
  26. package/dist/lib/application/files/gadmin2-game-angle-demo/server/config/index.ts +60 -0
  27. package/dist/lib/application/files/gadmin2-game-angle-demo/server/gadmin-cli.json +17 -0
  28. package/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +106 -0
  29. package/dist/lib/application/files/gadmin2-game-angle-demo/server/prisma/.generator.prisma +32 -0
  30. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/games.ts +71 -0
  31. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/index.ts +27 -0
  32. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/roles.ts +4 -0
  33. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/app.controller.spec.ts +22 -0
  34. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/app.controller.ts +52 -0
  35. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/app.module.ts +75 -0
  36. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/app.service.ts +50 -0
  37. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/auth.guard.ts +108 -0
  38. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/roles.guard.ts +47 -0
  39. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/utils.ts +54 -0
  40. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/woaAuth.ts +82 -0
  41. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/yufuid.ts +160 -0
  42. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/main.ts +119 -0
  43. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/index.ts +3 -0
  44. package/dist/lib/application/files/gadmin2-game-angle-demo/server/test/app.e2e-spec.ts +24 -0
  45. package/dist/lib/application/files/gadmin2-game-angle-demo/server/test/jest-e2e.json +9 -0
  46. package/dist/lib/application/files/gadmin2-game-angle-demo/server/tsconfig.build.json +4 -0
  47. package/dist/lib/application/files/gadmin2-game-angle-demo/server/tsconfig.json +21 -0
  48. package/dist/lib/application/files/gadmin2-game-angle-demo/web/README.MD +48 -0
  49. package/dist/lib/application/files/gadmin2-game-angle-demo/web/craco.config.js +27 -0
  50. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +81 -0
  51. package/dist/lib/application/files/gadmin2-game-angle-demo/web/public/favicon.ico +0 -0
  52. package/dist/lib/application/files/gadmin2-game-angle-demo/web/public/images/flags/en.svg +1 -0
  53. package/dist/lib/application/files/gadmin2-game-angle-demo/web/public/images/flags/zh_CN.svg +11 -0
  54. package/dist/lib/application/files/gadmin2-game-angle-demo/web/public/index.html +53 -0
  55. package/dist/lib/application/files/gadmin2-game-angle-demo/web/public/locales/en/common.json +128 -0
  56. package/dist/lib/application/files/gadmin2-game-angle-demo/web/public/locales/zh_CN/common.json +130 -0
  57. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/App.tsx +185 -0
  58. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/auditLogProvider.ts +87 -0
  59. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/authProvider.ts +124 -0
  60. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/BulkActions.tsx +236 -0
  61. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/ListPageHeader.tsx +56 -0
  62. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/RowActions.tsx +292 -0
  63. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/SearchBar.tsx +294 -0
  64. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/VanillaJSONEditor/index.css +10 -0
  65. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/VanillaJSONEditor/index.js +53 -0
  66. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/AgentContext.tsx +201 -0
  67. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/AgentPanel.tsx +497 -0
  68. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/ElementInspector.tsx +282 -0
  69. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/agentAttributes.ts +61 -0
  70. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/index.ts +18 -0
  71. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/inspectorActions.ts +111 -0
  72. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/promptGenerator.ts +75 -0
  73. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/skills.ts +464 -0
  74. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/eventList/index.tsx +62 -0
  75. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/index.ts +4 -0
  76. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logButton/index.tsx +96 -0
  77. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logList/index.tsx +73 -0
  78. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/modalDiffViewer/index.tsx +104 -0
  79. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/index.tsx +2 -0
  80. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/business/index.tsx +65 -0
  81. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/index.tsx +60 -0
  82. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/index.ts +4 -0
  83. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/header/index.tsx +130 -0
  84. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/index.ts +2 -0
  85. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/sider.tsx +218 -0
  86. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/styles.ts +10 -0
  87. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/offLayoutArea/index.tsx +5 -0
  88. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/form.tsx +419 -0
  89. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/index.tsx +3 -0
  90. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/list.tsx +465 -0
  91. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/login.ts +124 -0
  92. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/show.tsx +182 -0
  93. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/utils.ts +76 -0
  94. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/index.ts +7 -0
  95. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/types.ts +138 -0
  96. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchDelete.ts +191 -0
  97. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchOperations.ts +152 -0
  98. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchOperationsCore.ts +193 -0
  99. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchUpdate.ts +182 -0
  100. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useListPageState.ts +303 -0
  101. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useRowSelection.ts +38 -0
  102. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/i18n.ts +19 -0
  103. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/index.tsx +28 -0
  104. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/meta.json +4 -0
  105. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/react-app-env.d.ts +1 -0
  106. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/reportWebVitals.ts +15 -0
  107. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/setupTests.ts +5 -0
  108. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/antd.less +79 -0
  109. package/dist/lib/application/files/gadmin2-game-angle-demo/web/tsconfig.json +27 -0
  110. package/dist/lib/application/schema.json +99 -0
  111. package/dist/lib/class/class.factory.d.ts +3 -0
  112. package/dist/lib/class/class.factory.js +42 -0
  113. package/dist/lib/class/files/js/__name__.js +1 -0
  114. package/dist/lib/class/files/js/__name__.spec.js +7 -0
  115. package/dist/lib/class/files/ts/__name__.spec.ts +7 -0
  116. package/dist/lib/class/files/ts/__name__.ts +1 -0
  117. package/dist/lib/class/schema.json +45 -0
  118. package/dist/lib/client-app/angular/angular.factory.d.ts +3 -0
  119. package/dist/lib/client-app/angular/angular.factory.js +98 -0
  120. package/dist/lib/client-app/angular/files/angular.constants.ts +4 -0
  121. package/dist/lib/client-app/angular/files/angular.module.ts +41 -0
  122. package/dist/lib/client-app/angular/files/angular.providers.ts +27 -0
  123. package/dist/lib/client-app/angular/files/angular.utils.ts +19 -0
  124. package/dist/lib/client-app/angular/files/interfaces/angular-options.interface.ts +87 -0
  125. package/dist/lib/client-app/angular/files/loaders/abstract.loader.ts +16 -0
  126. package/dist/lib/client-app/angular/files/loaders/express.loader.ts +25 -0
  127. package/dist/lib/client-app/angular/files/loaders/fastify.loader.ts +34 -0
  128. package/dist/lib/client-app/angular/files/loaders/noop.loader.ts +12 -0
  129. package/dist/lib/client-app/angular/schema.json +24 -0
  130. package/dist/lib/configuration/configuration.factory.d.ts +3 -0
  131. package/dist/lib/configuration/configuration.factory.js +24 -0
  132. package/dist/lib/configuration/files/js/nest-cli.json +6 -0
  133. package/dist/lib/configuration/files/ts/nest-cli.json +5 -0
  134. package/dist/lib/controller/controller.factory.d.ts +3 -0
  135. package/dist/lib/controller/controller.factory.js +118 -0
  136. package/dist/lib/controller/files/js/__name__.controller.js +4 -0
  137. package/dist/lib/controller/files/js/__name__.controller.spec.js +18 -0
  138. package/dist/lib/controller/files/ts/__name__.controller.spec.ts +18 -0
  139. package/dist/lib/controller/files/ts/__name__.controller.ts +137 -0
  140. package/dist/lib/controller/schema.json +51 -0
  141. package/dist/lib/decorator/decorator.factory.d.ts +3 -0
  142. package/dist/lib/decorator/decorator.factory.js +33 -0
  143. package/dist/lib/decorator/files/js/__name__.decorator.js +3 -0
  144. package/dist/lib/decorator/files/ts/__name__.decorator.ts +3 -0
  145. package/dist/lib/decorator/schema.json +36 -0
  146. package/dist/lib/defaults.d.ts +16 -0
  147. package/dist/lib/defaults.js +19 -0
  148. package/dist/lib/filter/files/js/__name__.filter.js +6 -0
  149. package/dist/lib/filter/files/js/__name__.filter.spec.js +7 -0
  150. package/dist/lib/filter/files/ts/__name__.filter.spec.ts +7 -0
  151. package/dist/lib/filter/files/ts/__name__.filter.ts +6 -0
  152. package/dist/lib/filter/filter.factory.d.ts +3 -0
  153. package/dist/lib/filter/filter.factory.js +34 -0
  154. package/dist/lib/filter/schema.json +41 -0
  155. package/dist/lib/gateway/files/js/__name__.gateway.js +9 -0
  156. package/dist/lib/gateway/files/js/__name__.gateway.spec.js +18 -0
  157. package/dist/lib/gateway/files/ts/__name__.gateway.spec.ts +18 -0
  158. package/dist/lib/gateway/files/ts/__name__.gateway.ts +9 -0
  159. package/dist/lib/gateway/gateway.factory.d.ts +3 -0
  160. package/dist/lib/gateway/gateway.factory.js +62 -0
  161. package/dist/lib/gateway/schema.json +41 -0
  162. package/dist/lib/guard/files/js/__name__.guard.js +8 -0
  163. package/dist/lib/guard/files/js/__name__.guard.spec.js +7 -0
  164. package/dist/lib/guard/files/ts/__name__.guard.spec.ts +7 -0
  165. package/dist/lib/guard/files/ts/__name__.guard.ts +11 -0
  166. package/dist/lib/guard/guard.factory.d.ts +3 -0
  167. package/dist/lib/guard/guard.factory.js +34 -0
  168. package/dist/lib/guard/schema.json +41 -0
  169. package/dist/lib/interceptor/files/js/__name__.interceptor.js +8 -0
  170. package/dist/lib/interceptor/files/js/__name__.interceptor.spec.js +7 -0
  171. package/dist/lib/interceptor/files/ts/default/__name__.interceptor.spec.ts +7 -0
  172. package/dist/lib/interceptor/files/ts/default/__name__.interceptor.ts +9 -0
  173. package/dist/lib/interceptor/files/ts/generated/__name__.interceptor.spec.ts +7 -0
  174. package/dist/lib/interceptor/files/ts/generated/__name__.interceptor.ts +13 -0
  175. package/dist/lib/interceptor/interceptor.factory.d.ts +3 -0
  176. package/dist/lib/interceptor/interceptor.factory.js +116 -0
  177. package/dist/lib/interceptor/schema.json +50 -0
  178. package/dist/lib/interface/files/__name__.interface.ts +1 -0
  179. package/dist/lib/interface/interface.factory.d.ts +3 -0
  180. package/dist/lib/interface/interface.factory.js +32 -0
  181. package/dist/lib/interface/schema.json +32 -0
  182. package/dist/lib/library/files/js/.babelrc +4 -0
  183. package/dist/lib/library/files/js/jsconfig.json +9 -0
  184. package/dist/lib/library/files/js/src/__name__.module.js +8 -0
  185. package/dist/lib/library/files/js/src/__name__.service.js +4 -0
  186. package/dist/lib/library/files/js/src/__name__.service.spec.js +18 -0
  187. package/dist/lib/library/files/js/src/index.js +2 -0
  188. package/dist/lib/library/files/ts/src/__name__.module.ts +8 -0
  189. package/dist/lib/library/files/ts/src/__name__.service.spec.ts +18 -0
  190. package/dist/lib/library/files/ts/src/__name__.service.ts +4 -0
  191. package/dist/lib/library/files/ts/src/index.ts +2 -0
  192. package/dist/lib/library/files/ts/tsconfig.lib.json +9 -0
  193. package/dist/lib/library/library.factory.d.ts +3 -0
  194. package/dist/lib/library/library.factory.js +190 -0
  195. package/dist/lib/library/schema.json +37 -0
  196. package/dist/lib/middleware/files/js/__name__.middleware.js +8 -0
  197. package/dist/lib/middleware/files/js/__name__.middleware.spec.js +7 -0
  198. package/dist/lib/middleware/files/ts/__name__.middleware.spec.ts +7 -0
  199. package/dist/lib/middleware/files/ts/__name__.middleware.ts +8 -0
  200. package/dist/lib/middleware/middleware.factory.d.ts +3 -0
  201. package/dist/lib/middleware/middleware.factory.js +34 -0
  202. package/dist/lib/middleware/schema.json +41 -0
  203. package/dist/lib/module/files/js/__name__.module.js +4 -0
  204. package/dist/lib/module/files/ts/__name__.module.ts +4 -0
  205. package/dist/lib/module/module.factory.d.ts +3 -0
  206. package/dist/lib/module/module.factory.js +58 -0
  207. package/dist/lib/module/schema.json +46 -0
  208. package/dist/lib/pipe/files/js/__name__.pipe.js +8 -0
  209. package/dist/lib/pipe/files/js/__name__.pipe.spec.js +7 -0
  210. package/dist/lib/pipe/files/ts/__name__.pipe.spec.ts +7 -0
  211. package/dist/lib/pipe/files/ts/__name__.pipe.ts +8 -0
  212. package/dist/lib/pipe/pipe.factory.d.ts +3 -0
  213. package/dist/lib/pipe/pipe.factory.js +34 -0
  214. package/dist/lib/pipe/schema.json +41 -0
  215. package/dist/lib/prisma-resource/files/ts/__name__.controller.spec.ts +20 -0
  216. package/dist/lib/prisma-resource/files/ts/__name__.controller.ts +63 -0
  217. package/dist/lib/prisma-resource/files/ts/__name__.module.ts +9 -0
  218. package/dist/lib/prisma-resource/files/ts/__name__.service.spec.ts +18 -0
  219. package/dist/lib/prisma-resource/files/ts/__name__.service.ts +28 -0
  220. package/dist/lib/prisma-resource/files/ts/dto/create-__name@singular__.dto.ts +1 -0
  221. package/dist/lib/prisma-resource/files/ts/dto/create-__name@singular__.input.ts +7 -0
  222. package/dist/lib/prisma-resource/files/ts/dto/update-__name@singular__.dto.ts +6 -0
  223. package/dist/lib/prisma-resource/files/ts/dto/update-__name@singular__.input.ts +13 -0
  224. package/dist/lib/prisma-resource/files/ts/entities/__name@singular@ent__.ts +7 -0
  225. package/dist/lib/prisma-resource/prisma-resource.factory.d.ts +3 -0
  226. package/dist/lib/prisma-resource/prisma-resource.factory.js +131 -0
  227. package/dist/lib/prisma-resource/schema.json +91 -0
  228. package/dist/lib/provider/files/js/__name__.js +4 -0
  229. package/dist/lib/provider/files/js/__name__.spec.js +18 -0
  230. package/dist/lib/provider/files/ts/__name__.spec.ts +18 -0
  231. package/dist/lib/provider/files/ts/__name__.ts +4 -0
  232. package/dist/lib/provider/provider.factory.d.ts +3 -0
  233. package/dist/lib/provider/provider.factory.js +67 -0
  234. package/dist/lib/provider/schema.json +45 -0
  235. package/dist/lib/resolver/files/js/__name__.resolver.js +4 -0
  236. package/dist/lib/resolver/files/js/__name__.resolver.spec.js +18 -0
  237. package/dist/lib/resolver/files/ts/__name__.resolver.spec.ts +18 -0
  238. package/dist/lib/resolver/files/ts/__name__.resolver.ts +4 -0
  239. package/dist/lib/resolver/resolver.factory.d.ts +3 -0
  240. package/dist/lib/resolver/resolver.factory.js +62 -0
  241. package/dist/lib/resolver/schema.json +41 -0
  242. package/dist/lib/resource/files/ts/__name__.controller.spec.ts +20 -0
  243. package/dist/lib/resource/files/ts/__name__.controller.ts +63 -0
  244. package/dist/lib/resource/files/ts/__name__.gateway.spec.ts +19 -0
  245. package/dist/lib/resource/files/ts/__name__.gateway.ts +34 -0
  246. package/dist/lib/resource/files/ts/__name__.graphql +24 -0
  247. package/dist/lib/resource/files/ts/__name__.module.ts +9 -0
  248. package/dist/lib/resource/files/ts/__name__.resolver.spec.ts +19 -0
  249. package/dist/lib/resource/files/ts/__name__.resolver.ts +60 -0
  250. package/dist/lib/resource/files/ts/__name__.service.spec.ts +18 -0
  251. package/dist/lib/resource/files/ts/__name__.service.ts +28 -0
  252. package/dist/lib/resource/files/ts/dto/create-__name@singular__.dto.ts +1 -0
  253. package/dist/lib/resource/files/ts/dto/create-__name@singular__.input.ts +7 -0
  254. package/dist/lib/resource/files/ts/dto/update-__name@singular__.dto.ts +6 -0
  255. package/dist/lib/resource/files/ts/dto/update-__name@singular__.input.ts +13 -0
  256. package/dist/lib/resource/files/ts/entities/__name@singular@ent__.ts +7 -0
  257. package/dist/lib/resource/resource.factory.d.ts +3 -0
  258. package/dist/lib/resource/resource.factory.js +131 -0
  259. package/dist/lib/resource/schema.json +90 -0
  260. package/dist/lib/service/files/js/__name__.service.js +4 -0
  261. package/dist/lib/service/files/js/__name__.service.spec.js +18 -0
  262. package/dist/lib/service/files/ts/__name__.service.spec.ts +18 -0
  263. package/dist/lib/service/files/ts/__name__.service.ts +4 -0
  264. package/dist/lib/service/schema.json +41 -0
  265. package/dist/lib/service/service.factory.d.ts +3 -0
  266. package/dist/lib/service/service.factory.js +63 -0
  267. package/dist/lib/sub-app/files/js/.babelrc +4 -0
  268. package/dist/lib/sub-app/files/js/index.js +2 -0
  269. package/dist/lib/sub-app/files/js/jsconfig.json +10 -0
  270. package/dist/lib/sub-app/files/js/src/app.controller.js +15 -0
  271. package/dist/lib/sub-app/files/js/src/app.controller.spec.js +22 -0
  272. package/dist/lib/sub-app/files/js/src/app.module.js +10 -0
  273. package/dist/lib/sub-app/files/js/src/app.service.js +8 -0
  274. package/dist/lib/sub-app/files/js/src/main.js +8 -0
  275. package/dist/lib/sub-app/files/js/test/app.e2e-spec.js +23 -0
  276. package/dist/lib/sub-app/files/js/test/jest-e2e.json +5 -0
  277. package/dist/lib/sub-app/files/ts/src/__name__.controller.spec.ts +22 -0
  278. package/dist/lib/sub-app/files/ts/src/__name__.controller.ts +12 -0
  279. package/dist/lib/sub-app/files/ts/src/__name__.module.ts +10 -0
  280. package/dist/lib/sub-app/files/ts/src/__name__.service.ts +8 -0
  281. package/dist/lib/sub-app/files/ts/src/main.ts +8 -0
  282. package/dist/lib/sub-app/files/ts/test/app.e2e-spec.ts +24 -0
  283. package/dist/lib/sub-app/files/ts/test/jest-e2e.json +9 -0
  284. package/dist/lib/sub-app/files/ts/tsconfig.app.json +9 -0
  285. package/dist/lib/sub-app/schema.json +32 -0
  286. package/dist/lib/sub-app/sub-app.factory.d.ts +3 -0
  287. package/dist/lib/sub-app/sub-app.factory.js +245 -0
  288. package/dist/lib/sub-app/workspace/js/.babelrc +4 -0
  289. package/dist/lib/sub-app/workspace/js/index.js +2 -0
  290. package/dist/lib/sub-app/workspace/js/jsconfig.json +10 -0
  291. package/dist/lib/sub-app/workspace/ts/tsconfig.app.json +9 -0
  292. package/dist/utils/change.d.ts +46 -0
  293. package/dist/utils/change.js +95 -0
  294. package/dist/utils/dependencies.utils.d.ts +15 -0
  295. package/dist/utils/dependencies.utils.js +42 -0
  296. package/dist/utils/export-from.declarator.d.ts +10 -0
  297. package/dist/utils/export-from.declarator.js +39 -0
  298. package/dist/utils/formatting.d.ts +1 -0
  299. package/dist/utils/formatting.js +12 -0
  300. package/dist/utils/index.d.ts +9 -0
  301. package/dist/utils/index.js +25 -0
  302. package/dist/utils/json-file.util.d.ts +15 -0
  303. package/dist/utils/json-file.util.js +68 -0
  304. package/dist/utils/metadata.manager.d.ts +13 -0
  305. package/dist/utils/metadata.manager.js +162 -0
  306. package/dist/utils/module-import.declarator.d.ts +10 -0
  307. package/dist/utils/module-import.declarator.js +39 -0
  308. package/dist/utils/module-metadata.declarator.d.ts +4 -0
  309. package/dist/utils/module-metadata.declarator.js +12 -0
  310. package/dist/utils/module.declarator.d.ts +23 -0
  311. package/dist/utils/module.declarator.js +32 -0
  312. package/dist/utils/module.finder.d.ts +13 -0
  313. package/dist/utils/module.finder.js +24 -0
  314. package/dist/utils/name.parser.d.ts +12 -0
  315. package/dist/utils/name.parser.js +17 -0
  316. package/dist/utils/path.solver.d.ts +4 -0
  317. package/dist/utils/path.solver.js +14 -0
  318. package/dist/utils/source-root.helpers.d.ts +8 -0
  319. package/dist/utils/source-root.helpers.js +35 -0
  320. package/package.json +99 -0
@@ -0,0 +1,182 @@
1
+ import {
2
+ FieldDataType,
3
+ I18N_T,
4
+ ModelsFieldsTypeMap,
5
+ ModelType,
6
+ convertPrismaDecimal,
7
+ } from "@gadmin2/react-common";
8
+ import {
9
+ TagField,
10
+ MarkdownField,
11
+ TextField,
12
+ ImageField,
13
+ FileField,
14
+ DateField,
15
+ UrlField,
16
+ EmailField,
17
+ BooleanField,
18
+ NumberField,
19
+ ShowButton,
20
+ } from "@refinedev/antd";
21
+ import { CheckCircleTwoTone, CloseCircleTwoTone } from "@ant-design/icons";
22
+ import { Space, Typography } from "antd";
23
+ import React from "react";
24
+ import { agentAttrs } from "../components/agentPanel/agentAttributes";
25
+
26
+ const { Title, Text } = Typography;
27
+
28
+ export function getShowField(
29
+ field: FieldDataType,
30
+ resourceName: string,
31
+ record: any,
32
+ t: I18N_T,
33
+ model: ModelType,
34
+ modelsMap: ModelsFieldsTypeMap
35
+ ) {
36
+ const { type: fieldType, args } = field.uiType.formItem;
37
+ const fieldName = field.name;
38
+ let value = (record as any)?.[fieldName];
39
+ if (fieldName.includes(".")) {
40
+ const attrs = fieldName.split(".");
41
+ value = (record as any)?.[attrs[0]]?.[attrs[1]];
42
+ }
43
+ let element = <Text>{value}</Text>;
44
+ if (field.render) {
45
+ element = field.render(value);
46
+ } else if (
47
+ !fieldName.includes(".") &&
48
+ field.kind === "object" &&
49
+ !field.isList &&
50
+ value !== undefined &&
51
+ value !== null
52
+ ) {
53
+ const nameKey = modelsMap[model[fieldName].type]?.meta?.nameKeys?.[0];
54
+ element = (
55
+ <ShowButton
56
+ icon={false}
57
+ type="link"
58
+ size="small"
59
+ resource={model[fieldName]?.type?.toLowerCase()}
60
+ recordItemId={value?.id}
61
+ >
62
+ {(record as any)?.[fieldName]?.[nameKey]}
63
+ </ShowButton>
64
+ );
65
+ } else if (fieldType === "Markdown") {
66
+ element = <MarkdownField value={value} />;
67
+ } else if (fieldType === "Text") {
68
+ element = (
69
+ <>
70
+ {(value || "").split("\n").map((row: string) => (
71
+ <TextField style={{ display: "block" }} value={row} />
72
+ ))}
73
+ </>
74
+ );
75
+ } else if (fieldType === "Image") {
76
+ element = (
77
+ <Space wrap>
78
+ {JSON.parse(value || "[]")?.map?.((img: any) => (
79
+ <ImageField
80
+ key={img?.response?.name}
81
+ value={img?.thumbUrl}
82
+ title={img?.name}
83
+ width={200}
84
+ />
85
+ ))}
86
+ </Space>
87
+ );
88
+ } else if (fieldType === "File") {
89
+ element = (
90
+ <Space wrap>
91
+ {JSON.parse(value || "[]")?.map?.((file: any) => (
92
+ <FileField
93
+ key={file?.response?.name}
94
+ src={file?.thumbUrl}
95
+ title={file?.name}
96
+ />
97
+ ))}
98
+ </Space>
99
+ );
100
+ } else if (fieldType === "Select") {
101
+ if (args.mode === "multiple") {
102
+ element = (
103
+ <Space>
104
+ {JSON.parse(value || "[]")?.map?.((v: string) => (
105
+ <TagField
106
+ value={t(`resources.${resourceName}.enums.${fieldName}.${v}`, String(v))}
107
+ />
108
+ ))}
109
+ </Space>
110
+ );
111
+ } else {
112
+ element = <TagField value={t(
113
+ `resources.${resourceName}.enums.${fieldName}.${value}`,
114
+ String(value)
115
+ )} />;
116
+ }
117
+ } else if (fieldType === "Radio" || field.kind === "enum") {
118
+ element = (
119
+ <TagField
120
+ value={t(
121
+ `resources.${resourceName}.enums.${fieldName}.${value}`,
122
+ String(value)
123
+ )}
124
+ />
125
+ );
126
+ } else if (fieldType === "CheckBox") {
127
+ element = (
128
+ <Space>
129
+ {JSON.parse(value || "[]")?.map?.((v: string) => (
130
+ <TagField
131
+ value={t(`resources.${resourceName}.enums.${fieldName}.${v}`, String(v))}
132
+ />
133
+ ))}
134
+ </Space>
135
+ );
136
+ } else if (fieldType === "DateTime") {
137
+ element = <DateField value={value} format="YYYY-MM-DD HH:mm:ss" />;
138
+ } else if (fieldType === "Url") {
139
+ element = <UrlField value={value} />;
140
+ } else if (fieldType === "Email") {
141
+ element = <EmailField value={value} />;
142
+ } else if (fieldType === "Boolean") {
143
+ element = (
144
+ <BooleanField
145
+ value={value}
146
+ trueIcon={<CheckCircleTwoTone twoToneColor="#52c41a" />}
147
+ falseIcon={<CloseCircleTwoTone twoToneColor="red" />}
148
+ />
149
+ );
150
+ } else if (["Int", "BigInt", "Float", "Decimal"].includes(fieldType)) {
151
+ const displayValue = convertPrismaDecimal(value);
152
+ if (displayValue !== undefined && displayValue !== null && !isNaN(Number(displayValue))) {
153
+ element = <NumberField value={displayValue ?? ""} />;
154
+ }
155
+ }
156
+ return (
157
+ <div
158
+ key={fieldName}
159
+ {...agentAttrs({
160
+ type: 'show-field',
161
+ field: fieldName,
162
+ resource: resourceName,
163
+ meta: { fieldType },
164
+ })}
165
+ >
166
+ <Title level={5}>
167
+ {t(
168
+ `resources.${resourceName}.fields.${fieldName}`,
169
+ fieldName.startsWith("_count.")
170
+ ? "Count " +
171
+ t(
172
+ `resources.${model[fieldName.split(".")[1]]?.type?.toLowerCase() || ""
173
+ }.name`,
174
+ fieldName
175
+ )
176
+ : fieldName
177
+ )}
178
+ </Title>
179
+ {element}
180
+ </div>
181
+ );
182
+ }
@@ -0,0 +1,76 @@
1
+ import { requestHeaders } from "helpers/login";
2
+
3
+ // Re-export Prisma helpers from react-common for backward compatibility
4
+ export { convertPrismaDecimal, isPrismaDecimal } from "@gadmin2/react-common";
5
+
6
+ export function getApiUrl() {
7
+ return `${window.location.origin.replace("3000", "8000")}/api`;
8
+ }
9
+
10
+ export function trimString(str = "") {
11
+ // 将多种分隔符替换成\n
12
+ str = str.replace(/[\s,;]+/g, "\n");
13
+ // 去掉开头和结尾的\n
14
+ str = str.replace(/^\s+|\s+$/g, "");
15
+
16
+ return str;
17
+ }
18
+
19
+ export async function findMany<T>(
20
+ resource: string,
21
+ params: Record<string, any>
22
+ ) {
23
+ const url = `${getApiUrl()}/${resource}/findMany`;
24
+ const res = await fetch(url, {
25
+ method: "POST",
26
+ headers: {
27
+ "Content-Type": "application/json",
28
+ ...requestHeaders(),
29
+ },
30
+ // credentials: 'include',
31
+ body: JSON.stringify(params),
32
+ });
33
+ const data = await res.json();
34
+ return data.data as T[];
35
+ }
36
+
37
+ export function getUrlParams(search = window.location.search) {
38
+ const hashes = search.slice(search.indexOf("?") + 1).split("&");
39
+ return hashes.reduce((acc, hash) => {
40
+ const [key, val] = hash.split("=");
41
+ if (val) acc[key] = decodeURIComponent(val);
42
+ return acc;
43
+ }, {} as Record<string, string>);
44
+ }
45
+
46
+ export interface Option {
47
+ value: string | number;
48
+ label: string;
49
+ children?: Option[];
50
+ }
51
+ export function transformTaskType(
52
+ originalData: Record<string, string>
53
+ ): Option[] {
54
+ const result = new Map();
55
+
56
+ for (const [key, value] of Object.entries(originalData)) {
57
+ const parts = key.split("/");
58
+ const platform = parts[0];
59
+ const attribute = parts[1];
60
+
61
+ if (!result.has(platform)) {
62
+ result.set(platform, {
63
+ value: platform,
64
+ label: platform,
65
+ children: [],
66
+ });
67
+ }
68
+
69
+ result.get(platform).children.push({
70
+ value: attribute,
71
+ label: `${attribute}(spider_type:${value})`,
72
+ });
73
+ }
74
+
75
+ return Array.from(result.values());
76
+ }
@@ -0,0 +1,7 @@
1
+ export * from './types';
2
+ export * from './useRowSelection';
3
+ export * from './useBatchUpdate';
4
+ export * from './useBatchDelete';
5
+ export * from './useBatchOperations';
6
+ export * from './useBatchOperationsCore';
7
+ export * from './useListPageState';
@@ -0,0 +1,138 @@
1
+ import {
2
+ FieldDataType,
3
+ ModelsFieldsTypeMap,
4
+ ModelType,
5
+ } from "@gadmin2/react-common";
6
+ import { CrudFilters, CrudSorting } from "@refinedev/core";
7
+ import { FormProps, SelectProps, TableProps } from "antd";
8
+ import { DefaultOptionType } from "antd/es/select";
9
+
10
+ export interface ListPageConfig {
11
+ resourceName: string;
12
+ model: ModelType;
13
+ tableConfig: {
14
+ fields: string[];
15
+ toolbar: {
16
+ searchBar: {
17
+ fields: string[];
18
+ placeholder?: string;
19
+ containsFields?: string[];
20
+ };
21
+ };
22
+ header: {
23
+ filter: string[];
24
+ sorter: string[];
25
+ };
26
+ rowSelection: {
27
+ actions: RowAction[];
28
+ };
29
+ rowActions: {
30
+ actions: RowAction[];
31
+ };
32
+ };
33
+ prismaSelect?: any;
34
+ modelsMap: ModelsFieldsTypeMap;
35
+ modelsEnum: Record<string, Record<string, string>>;
36
+ }
37
+
38
+ export interface RowAction {
39
+ action:
40
+ | "CHANGE_STATUS"
41
+ | "DELETE"
42
+ | "EXPORT"
43
+ | "CUSTOM"
44
+ | "INSERT"
45
+ | "JUMP"
46
+ | "EDIT"
47
+ | "DETAIL";
48
+ desc: string;
49
+ values?: Record<string, any>;
50
+ when?: Record<string, any> | "*" | ((record: any) => boolean);
51
+ fields?: string[];
52
+ }
53
+
54
+ export interface BatchOperationsConfig {
55
+ resourceName: string;
56
+ apiUrl: string;
57
+ requestHeaders?: () => Record<string, string>;
58
+ onSuccess?: () => void;
59
+ }
60
+
61
+ export interface BatchOperationsResult {
62
+ selectedRowKeys: React.Key[];
63
+ setSelectedRowKeys: React.Dispatch<React.SetStateAction<React.Key[]>>;
64
+ rowSelection: {
65
+ selectedRowKeys: React.Key[];
66
+ onChange: (keys: React.Key[]) => void;
67
+ };
68
+ hasSelected: boolean;
69
+ updateSelectedItems: (values: any) => Promise<void>;
70
+ deleteSelectedItems: () => Promise<void>;
71
+ updateManyIsLoading: boolean;
72
+ deleteManyIsLoading: boolean;
73
+ }
74
+
75
+ export interface SearchFormConfig {
76
+ searchFields: string[];
77
+ dateRangeFields?: string[];
78
+ model: ModelType;
79
+ tableConfig: ListPageConfig["tableConfig"];
80
+ }
81
+
82
+ export interface ListPageContextValue {
83
+ resourceName: string;
84
+ t: (key: string, defaultValue?: string) => string;
85
+ model: ModelType;
86
+ modelsMap: ModelsFieldsTypeMap;
87
+ modelsEnum: Record<string, Record<string, string>>;
88
+ tableConfig: ListPageConfig["tableConfig"];
89
+ apiUrl: string;
90
+ relationSelectProps: Record<
91
+ string,
92
+ SelectProps<{ value: string; label: string }, DefaultOptionType>
93
+ >;
94
+ }
95
+
96
+ export interface UseListPageStateResult {
97
+ // Table related
98
+ tableProps: TableProps<any>;
99
+ columns: FieldDataType[];
100
+ model: ModelType;
101
+ sorter: CrudSorting | undefined;
102
+ filters: CrudFilters | undefined;
103
+
104
+ // Search related
105
+ searchFormProps: FormProps;
106
+
107
+ // Selection related
108
+ selectedRowKeys: React.Key[];
109
+ setSelectedRowKeys: React.Dispatch<React.SetStateAction<React.Key[]>>;
110
+ rowSelection: {
111
+ selectedRowKeys: React.Key[];
112
+ onChange: (keys: React.Key[]) => void;
113
+ };
114
+ hasSelected: boolean;
115
+
116
+ // Batch operations
117
+ updateSelectedItems: (values: any) => Promise<void>;
118
+ deleteSelectedItems: () => Promise<void>;
119
+ updateManyIsLoading: boolean;
120
+ deleteManyIsLoading: boolean;
121
+
122
+ // Export/Import
123
+ triggerExportAll: () => void;
124
+ triggerExportSelected: () => void;
125
+ exportLoading: boolean;
126
+ exportSelectedLoading: boolean;
127
+ importProps: any;
128
+
129
+ // Row operations
130
+ updateRowData: (id: number, values: any) => void;
131
+ isUpdateRowLoading: boolean;
132
+
133
+ // Context
134
+ context: ListPageContextValue;
135
+
136
+ // Refetch
137
+ refetch: () => void;
138
+ }
@@ -0,0 +1,191 @@
1
+ import { useState, useCallback } from "react";
2
+ import { useDelete } from "@refinedev/core";
3
+ import { notification } from "antd";
4
+
5
+ export interface BatchDeleteResult {
6
+ successIds: React.Key[];
7
+ failedIds: React.Key[];
8
+ successCount: number;
9
+ failedCount: number;
10
+ }
11
+
12
+ export interface UseBatchDeleteConfig {
13
+ resourceName: string;
14
+ /** Called after all deletes complete (regardless of success/failure) */
15
+ onComplete?: (result: BatchDeleteResult) => void;
16
+ /** Called only when at least one delete succeeds */
17
+ onSuccess?: (result: BatchDeleteResult) => void;
18
+ /** Called only when at least one delete fails */
19
+ onError?: (result: BatchDeleteResult) => void;
20
+ /** i18n translation function */
21
+ t?: (key: string, defaultValue?: string) => string;
22
+ /** Whether to show notification (default: true) */
23
+ showNotification?: boolean;
24
+ /** Custom notification handler - if provided, replaces default notification */
25
+ customNotification?: (result: BatchDeleteResult) => void;
26
+ /** Custom delete function - if provided, replaces default refine useDelete */
27
+ customDeleteFn?: (id: number) => Promise<void>;
28
+ /** Confirmation handler - return true to proceed, false to cancel */
29
+ confirmDelete?: (selectedKeys: React.Key[]) => Promise<boolean>;
30
+ }
31
+
32
+ export interface UseBatchDeleteResult {
33
+ /** Delete selected items and return failed IDs */
34
+ deleteSelectedItems: (selectedKeys: React.Key[]) => Promise<React.Key[]>;
35
+ /** Delete a single item */
36
+ deleteOne: (id: number) => Promise<void>;
37
+ /** Loading state */
38
+ deleteManyIsLoading: boolean;
39
+ }
40
+
41
+ /**
42
+ * Hook for batch deleting selected items
43
+ *
44
+ * @example
45
+ * // Basic usage
46
+ * const { deleteSelectedItems, deleteManyIsLoading } = useBatchDelete({
47
+ * resourceName: 'audit',
48
+ * });
49
+ *
50
+ * @example
51
+ * // With custom confirmation
52
+ * const { deleteSelectedItems } = useBatchDelete({
53
+ * resourceName: 'audit',
54
+ * confirmDelete: async (keys) => {
55
+ * return await myConfirmDialog(`Delete ${keys.length} items?`);
56
+ * },
57
+ * });
58
+ *
59
+ * @example
60
+ * // With custom notification
61
+ * const { deleteSelectedItems } = useBatchDelete({
62
+ * resourceName: 'audit',
63
+ * showNotification: false,
64
+ * onComplete: (result) => {
65
+ * toast.info(`Deleted ${result.successCount} items`);
66
+ * },
67
+ * });
68
+ */
69
+ export function useBatchDelete({
70
+ resourceName,
71
+ onComplete,
72
+ onSuccess,
73
+ onError,
74
+ t = (key, defaultValue) => defaultValue || key,
75
+ showNotification = true,
76
+ customNotification,
77
+ customDeleteFn,
78
+ confirmDelete,
79
+ }: UseBatchDeleteConfig): UseBatchDeleteResult {
80
+ const [deleteManyIsLoading, setDeleteManyIsLoading] = useState(false);
81
+ const { mutate: refineDeleteOne } = useDelete();
82
+
83
+ const deleteOne = useCallback(
84
+ (id: number): Promise<void> => {
85
+ if (customDeleteFn) {
86
+ return customDeleteFn(id);
87
+ }
88
+
89
+ return new Promise((resolve, reject) =>
90
+ refineDeleteOne(
91
+ {
92
+ resource: resourceName,
93
+ id,
94
+ successNotification: false,
95
+ errorNotification: false,
96
+ },
97
+ {
98
+ onError: (error) => {
99
+ console.error("deleteOne error:", error);
100
+ reject(error);
101
+ },
102
+ onSuccess: () => {
103
+ resolve();
104
+ },
105
+ }
106
+ )
107
+ );
108
+ },
109
+ [refineDeleteOne, resourceName, customDeleteFn]
110
+ );
111
+
112
+ const deleteSelectedItems = useCallback(
113
+ async (selectedKeys: React.Key[]): Promise<React.Key[]> => {
114
+ // Confirmation check
115
+ if (confirmDelete) {
116
+ const confirmed = await confirmDelete(selectedKeys);
117
+ if (!confirmed) {
118
+ return selectedKeys; // Return all keys as "not deleted"
119
+ }
120
+ }
121
+
122
+ setDeleteManyIsLoading(true);
123
+
124
+ const successIds: React.Key[] = [];
125
+ const failedIds: React.Key[] = [];
126
+
127
+ for (const id of selectedKeys) {
128
+ try {
129
+ await deleteOne(Number(id));
130
+ successIds.push(id);
131
+ } catch {
132
+ failedIds.push(id);
133
+ }
134
+ }
135
+
136
+ setDeleteManyIsLoading(false);
137
+
138
+ const result: BatchDeleteResult = {
139
+ successIds,
140
+ failedIds,
141
+ successCount: successIds.length,
142
+ failedCount: failedIds.length,
143
+ };
144
+
145
+ // Callbacks
146
+ onComplete?.(result);
147
+ if (result.successCount > 0) {
148
+ onSuccess?.(result);
149
+ }
150
+ if (result.failedCount > 0) {
151
+ onError?.(result);
152
+ }
153
+
154
+ // Notification
155
+ if (customNotification) {
156
+ customNotification(result);
157
+ } else if (showNotification) {
158
+ const message = t(
159
+ "batch.deleteResult",
160
+ `Delete success: ${result.successCount}, failed: ${result.failedCount}`
161
+ );
162
+
163
+ if (result.failedCount === selectedKeys.length) {
164
+ notification.error({ message });
165
+ } else if (result.failedCount > 0) {
166
+ notification.warning({ message });
167
+ } else {
168
+ notification.success({ message });
169
+ }
170
+ }
171
+
172
+ return failedIds;
173
+ },
174
+ [
175
+ deleteOne,
176
+ onComplete,
177
+ onSuccess,
178
+ onError,
179
+ t,
180
+ showNotification,
181
+ customNotification,
182
+ confirmDelete,
183
+ ]
184
+ );
185
+
186
+ return {
187
+ deleteSelectedItems,
188
+ deleteOne,
189
+ deleteManyIsLoading,
190
+ };
191
+ }