@reskin/core 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/README.md +25 -0
  2. package/bundles/reskin-core-classes.umd.js +48 -0
  3. package/bundles/reskin-core-classes.umd.js.map +1 -0
  4. package/bundles/reskin-core-directives.umd.js +147 -0
  5. package/bundles/reskin-core-directives.umd.js.map +1 -0
  6. package/bundles/reskin-core-entity-dictionary.umd.js +11 -0
  7. package/bundles/reskin-core-entity-dictionary.umd.js.map +1 -0
  8. package/bundles/reskin-core-entity-field.umd.js +49 -0
  9. package/bundles/reskin-core-entity-field.umd.js.map +1 -0
  10. package/bundles/reskin-core-entity-file.umd.js +11 -0
  11. package/bundles/reskin-core-entity-file.umd.js.map +1 -0
  12. package/bundles/reskin-core-entity-menu.umd.js +40 -0
  13. package/bundles/reskin-core-entity-menu.umd.js.map +1 -0
  14. package/bundles/reskin-core-entity-org.umd.js +50 -0
  15. package/bundles/reskin-core-entity-org.umd.js.map +1 -0
  16. package/bundles/reskin-core-entity-scheme.umd.js +63 -0
  17. package/bundles/reskin-core-entity-scheme.umd.js.map +1 -0
  18. package/bundles/reskin-core-entity-user.umd.js +11 -0
  19. package/bundles/reskin-core-entity-user.umd.js.map +1 -0
  20. package/bundles/reskin-core-entity.umd.js +11 -0
  21. package/bundles/reskin-core-entity.umd.js.map +1 -0
  22. package/bundles/reskin-core-guards.umd.js +89 -0
  23. package/bundles/reskin-core-guards.umd.js.map +1 -0
  24. package/bundles/reskin-core-interceptors.umd.js +702 -0
  25. package/bundles/reskin-core-interceptors.umd.js.map +1 -0
  26. package/bundles/reskin-core-services.umd.js +1188 -0
  27. package/bundles/reskin-core-services.umd.js.map +1 -0
  28. package/bundles/reskin-core-utils.umd.js +130 -0
  29. package/bundles/reskin-core-utils.umd.js.map +1 -0
  30. package/bundles/reskin-core.umd.js +13 -0
  31. package/bundles/reskin-core.umd.js.map +1 -0
  32. package/classes/package.json +10 -0
  33. package/classes/public-api.d.ts +1 -0
  34. package/classes/reskin-core-classes.d.ts +5 -0
  35. package/classes/table.helper.d.ts +23 -0
  36. package/directives/auth.directive.d.ts +27 -0
  37. package/directives/directives.module.d.ts +7 -0
  38. package/directives/package.json +10 -0
  39. package/directives/public-api.d.ts +2 -0
  40. package/directives/reskin-core-directives.d.ts +5 -0
  41. package/entity/Env.d.ts +66 -0
  42. package/entity/IPage.d.ts +35 -0
  43. package/entity/R.d.ts +25 -0
  44. package/entity/WC.d.ts +51 -0
  45. package/entity/dictionary/IDictionaryBaseInfo.d.ts +29 -0
  46. package/entity/dictionary/IDictionaryItem.d.ts +50 -0
  47. package/entity/dictionary/package.json +10 -0
  48. package/entity/dictionary/public-api.d.ts +2 -0
  49. package/entity/dictionary/reskin-core-entity-dictionary.d.ts +5 -0
  50. package/entity/field/ColumnTypeEnum.d.ts +33 -0
  51. package/entity/field/ITableField.d.ts +27 -0
  52. package/entity/field/package.json +10 -0
  53. package/entity/field/public-api.d.ts +2 -0
  54. package/entity/field/reskin-core-entity-field.d.ts +5 -0
  55. package/entity/file/IUploadFileData.d.ts +25 -0
  56. package/entity/file/package.json +10 -0
  57. package/entity/file/public-api.d.ts +1 -0
  58. package/entity/file/reskin-core-entity-file.d.ts +5 -0
  59. package/entity/menu/IMenu.d.ts +57 -0
  60. package/entity/menu/MenuTypeEnum.d.ts +24 -0
  61. package/entity/menu/package.json +10 -0
  62. package/entity/menu/public-api.d.ts +2 -0
  63. package/entity/menu/reskin-core-entity-menu.d.ts +5 -0
  64. package/entity/org/IOrgTreeNode.d.ts +58 -0
  65. package/entity/org/OrgTypeEnum.d.ts +31 -0
  66. package/entity/org/package.json +10 -0
  67. package/entity/org/public-api.d.ts +2 -0
  68. package/entity/org/reskin-core-entity-org.d.ts +5 -0
  69. package/entity/package.json +10 -0
  70. package/entity/public-api.d.ts +4 -0
  71. package/entity/reskin-core-entity.d.ts +5 -0
  72. package/entity/scheme/IFieldScheme.d.ts +97 -0
  73. package/entity/scheme/IScheme.d.ts +200 -0
  74. package/entity/scheme/SchemeEditTypeEnum.d.ts +25 -0
  75. package/entity/scheme/package.json +10 -0
  76. package/entity/scheme/public-api.d.ts +3 -0
  77. package/entity/scheme/reskin-core-entity-scheme.d.ts +5 -0
  78. package/entity/user/IAuth.d.ts +13 -0
  79. package/entity/user/IAuthAccount.d.ts +126 -0
  80. package/entity/user/package.json +10 -0
  81. package/entity/user/public-api.d.ts +2 -0
  82. package/entity/user/reskin-core-entity-user.d.ts +5 -0
  83. package/esm2015/classes/public-api.js +2 -0
  84. package/esm2015/classes/reskin-core-classes.js +5 -0
  85. package/esm2015/classes/table.helper.js +32 -0
  86. package/esm2015/directives/auth.directive.js +83 -0
  87. package/esm2015/directives/directives.module.js +16 -0
  88. package/esm2015/directives/public-api.js +3 -0
  89. package/esm2015/directives/reskin-core-directives.js +5 -0
  90. package/esm2015/entity/Env.js +2 -0
  91. package/esm2015/entity/IPage.js +2 -0
  92. package/esm2015/entity/R.js +2 -0
  93. package/esm2015/entity/WC.js +2 -0
  94. package/esm2015/entity/dictionary/IDictionaryBaseInfo.js +2 -0
  95. package/esm2015/entity/dictionary/IDictionaryItem.js +2 -0
  96. package/esm2015/entity/dictionary/public-api.js +3 -0
  97. package/esm2015/entity/dictionary/reskin-core-entity-dictionary.js +5 -0
  98. package/esm2015/entity/field/ColumnTypeEnum.js +35 -0
  99. package/esm2015/entity/field/ITableField.js +2 -0
  100. package/esm2015/entity/field/public-api.js +3 -0
  101. package/esm2015/entity/field/reskin-core-entity-field.js +5 -0
  102. package/esm2015/entity/file/IUploadFileData.js +2 -0
  103. package/esm2015/entity/file/public-api.js +2 -0
  104. package/esm2015/entity/file/reskin-core-entity-file.js +5 -0
  105. package/esm2015/entity/menu/IMenu.js +2 -0
  106. package/esm2015/entity/menu/MenuTypeEnum.js +26 -0
  107. package/esm2015/entity/menu/public-api.js +3 -0
  108. package/esm2015/entity/menu/reskin-core-entity-menu.js +5 -0
  109. package/esm2015/entity/org/IOrgTreeNode.js +2 -0
  110. package/esm2015/entity/org/OrgTypeEnum.js +33 -0
  111. package/esm2015/entity/org/public-api.js +3 -0
  112. package/esm2015/entity/org/reskin-core-entity-org.js +5 -0
  113. package/esm2015/entity/public-api.js +5 -0
  114. package/esm2015/entity/reskin-core-entity.js +5 -0
  115. package/esm2015/entity/scheme/IFieldScheme.js +2 -0
  116. package/esm2015/entity/scheme/IScheme.js +22 -0
  117. package/esm2015/entity/scheme/SchemeEditTypeEnum.js +27 -0
  118. package/esm2015/entity/scheme/public-api.js +4 -0
  119. package/esm2015/entity/scheme/reskin-core-entity-scheme.js +5 -0
  120. package/esm2015/entity/user/IAuth.js +2 -0
  121. package/esm2015/entity/user/IAuthAccount.js +2 -0
  122. package/esm2015/entity/user/public-api.js +3 -0
  123. package/esm2015/entity/user/reskin-core-entity-user.js +5 -0
  124. package/esm2015/guards/auth.guard.js +53 -0
  125. package/esm2015/guards/public-api.js +2 -0
  126. package/esm2015/guards/reskin-core-guards.js +5 -0
  127. package/esm2015/interceptors/blob.interceptor.js +66 -0
  128. package/esm2015/interceptors/cache.interceptor.js +36 -0
  129. package/esm2015/interceptors/error.interceptor.js +35 -0
  130. package/esm2015/interceptors/public-api.js +5 -0
  131. package/esm2015/interceptors/reskin-core-interceptors.js +5 -0
  132. package/esm2015/interceptors/token.interceptor.js +48 -0
  133. package/esm2015/public-api.js +2 -0
  134. package/esm2015/reskin-core.js +5 -0
  135. package/esm2015/services/account.service.js +58 -0
  136. package/esm2015/services/app.config.js +60 -0
  137. package/esm2015/services/auth.service.js +56 -0
  138. package/esm2015/services/cache.http.service.js +58 -0
  139. package/esm2015/services/destroy.service.js +15 -0
  140. package/esm2015/services/dictionary.service.js +107 -0
  141. package/esm2015/services/down.file.service.js +79 -0
  142. package/esm2015/services/field.scheme.service.js +37 -0
  143. package/esm2015/services/file.service.js +57 -0
  144. package/esm2015/services/menu.service.js +36 -0
  145. package/esm2015/services/org.service.js +46 -0
  146. package/esm2015/services/public-api.js +13 -0
  147. package/esm2015/services/reskin-core-services.js +5 -0
  148. package/esm2015/services/scheme.service.js +37 -0
  149. package/esm2015/utils/array.js +29 -0
  150. package/esm2015/utils/dom.js +18 -0
  151. package/esm2015/utils/public-api.js +4 -0
  152. package/esm2015/utils/reskin-core-utils.js +5 -0
  153. package/esm2015/utils/store.js +64 -0
  154. package/fesm2015/reskin-core-classes.js +39 -0
  155. package/fesm2015/reskin-core-classes.js.map +1 -0
  156. package/fesm2015/reskin-core-directives.js +103 -0
  157. package/fesm2015/reskin-core-directives.js.map +1 -0
  158. package/fesm2015/reskin-core-entity-dictionary.js +4 -0
  159. package/fesm2015/reskin-core-entity-dictionary.js.map +1 -0
  160. package/fesm2015/reskin-core-entity-field.js +41 -0
  161. package/fesm2015/reskin-core-entity-field.js.map +1 -0
  162. package/fesm2015/reskin-core-entity-file.js +4 -0
  163. package/fesm2015/reskin-core-entity-file.js.map +1 -0
  164. package/fesm2015/reskin-core-entity-menu.js +32 -0
  165. package/fesm2015/reskin-core-entity-menu.js.map +1 -0
  166. package/fesm2015/reskin-core-entity-org.js +39 -0
  167. package/fesm2015/reskin-core-entity-org.js.map +1 -0
  168. package/fesm2015/reskin-core-entity-scheme.js +55 -0
  169. package/fesm2015/reskin-core-entity-scheme.js.map +1 -0
  170. package/fesm2015/reskin-core-entity-user.js +4 -0
  171. package/fesm2015/reskin-core-entity-user.js.map +1 -0
  172. package/fesm2015/reskin-core-entity.js +4 -0
  173. package/fesm2015/reskin-core-entity.js.map +1 -0
  174. package/fesm2015/reskin-core-guards.js +60 -0
  175. package/fesm2015/reskin-core-guards.js.map +1 -0
  176. package/fesm2015/reskin-core-interceptors.js +179 -0
  177. package/fesm2015/reskin-core-interceptors.js.map +1 -0
  178. package/fesm2015/reskin-core-services.js +605 -0
  179. package/fesm2015/reskin-core-services.js.map +1 -0
  180. package/fesm2015/reskin-core-utils.js +118 -0
  181. package/fesm2015/reskin-core-utils.js.map +1 -0
  182. package/fesm2015/reskin-core.js +6 -0
  183. package/fesm2015/reskin-core.js.map +1 -0
  184. package/guards/auth.guard.d.ts +15 -0
  185. package/guards/package.json +10 -0
  186. package/guards/public-api.d.ts +1 -0
  187. package/guards/reskin-core-guards.d.ts +5 -0
  188. package/interceptors/blob.interceptor.d.ts +20 -0
  189. package/interceptors/cache.interceptor.d.ts +19 -0
  190. package/interceptors/error.interceptor.d.ts +19 -0
  191. package/interceptors/package.json +10 -0
  192. package/interceptors/public-api.d.ts +4 -0
  193. package/interceptors/reskin-core-interceptors.d.ts +5 -0
  194. package/interceptors/token.interceptor.d.ts +28 -0
  195. package/package.json +22 -0
  196. package/public-api.d.ts +2 -0
  197. package/reskin-core.d.ts +5 -0
  198. package/services/account.service.d.ts +33 -0
  199. package/services/app.config.d.ts +40 -0
  200. package/services/auth.service.d.ts +26 -0
  201. package/services/cache.http.service.d.ts +37 -0
  202. package/services/destroy.service.d.ts +8 -0
  203. package/services/dictionary.service.d.ts +57 -0
  204. package/services/down.file.service.d.ts +29 -0
  205. package/services/field.scheme.service.d.ts +17 -0
  206. package/services/file.service.d.ts +33 -0
  207. package/services/menu.service.d.ts +16 -0
  208. package/services/org.service.d.ts +31 -0
  209. package/services/package.json +10 -0
  210. package/services/public-api.d.ts +12 -0
  211. package/services/reskin-core-services.d.ts +5 -0
  212. package/services/scheme.service.d.ts +17 -0
  213. package/utils/array.d.ts +5 -0
  214. package/utils/dom.d.ts +6 -0
  215. package/utils/package.json +10 -0
  216. package/utils/public-api.d.ts +3 -0
  217. package/utils/reskin-core-utils.d.ts +5 -0
  218. package/utils/store.d.ts +42 -0
@@ -0,0 +1,32 @@
1
+ /**
2
+ * 系统菜单
3
+ *
4
+ * @export
5
+ * @enum {number}
6
+ */
7
+ var MenuTypeEnum;
8
+ (function (MenuTypeEnum) {
9
+ /**
10
+ * 目录
11
+ */
12
+ MenuTypeEnum[MenuTypeEnum["CATALOG"] = 0] = "CATALOG";
13
+ /**
14
+ * 菜单
15
+ */
16
+ MenuTypeEnum[MenuTypeEnum["MENU"] = 1] = "MENU";
17
+ /**
18
+ * 按钮
19
+ */
20
+ MenuTypeEnum[MenuTypeEnum["BUTTON"] = 2] = "BUTTON";
21
+ /**
22
+ * 元素
23
+ */
24
+ MenuTypeEnum[MenuTypeEnum["ELEMENT"] = 3] = "ELEMENT";
25
+ })(MenuTypeEnum || (MenuTypeEnum = {}));
26
+
27
+ /**
28
+ * Generated bundle index. Do not edit.
29
+ */
30
+
31
+ export { MenuTypeEnum };
32
+ //# sourceMappingURL=reskin-core-entity-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reskin-core-entity-menu.js","sources":["../../../library/core/entity/menu/MenuTypeEnum.ts","../../../library/core/entity/menu/reskin-core-entity-menu.ts"],"sourcesContent":["/**\r\n * 系统菜单\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum MenuTypeEnum {\r\n /**\r\n * 目录\r\n */\r\n CATALOG = 0,\r\n /**\r\n * 菜单\r\n */\r\n MENU = 1,\r\n /**\r\n * 按钮\r\n */\r\n BUTTON = 2,\r\n /**\r\n * 元素\r\n */\r\n ELEMENT = 3,\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA;;;;;AAKG;IACS,aAiBX;AAjBD,CAAA,UAAY,YAAY,EAAA;AACpB;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACf,CAAC,EAjBW,YAAY,KAAZ,YAAY,GAiBvB,EAAA,CAAA,CAAA;;ACvBD;;AAEG;;;;"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * 机构类型
3
+ */
4
+ var OrgTypeEnum;
5
+ (function (OrgTypeEnum) {
6
+ /**
7
+ * 虚拟节点
8
+ */
9
+ OrgTypeEnum[OrgTypeEnum["VIRTUAL_NODE"] = 0] = "VIRTUAL_NODE";
10
+ /**
11
+ * 单位
12
+ */
13
+ OrgTypeEnum[OrgTypeEnum["UNIT"] = 1] = "UNIT";
14
+ /**
15
+ * 部门
16
+ */
17
+ OrgTypeEnum[OrgTypeEnum["DEPARTMENT"] = 2] = "DEPARTMENT";
18
+ })(OrgTypeEnum || (OrgTypeEnum = {}));
19
+ /**
20
+ * 机构类型对应中文
21
+ */
22
+ const OrgTypeCName = {
23
+ [OrgTypeEnum.VIRTUAL_NODE]: {
24
+ label: '虚拟节点',
25
+ },
26
+ [OrgTypeEnum.UNIT]: {
27
+ label: '单位',
28
+ },
29
+ [OrgTypeEnum.DEPARTMENT]: {
30
+ label: '部门',
31
+ },
32
+ };
33
+
34
+ /**
35
+ * Generated bundle index. Do not edit.
36
+ */
37
+
38
+ export { OrgTypeCName, OrgTypeEnum };
39
+ //# sourceMappingURL=reskin-core-entity-org.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reskin-core-entity-org.js","sources":["../../../library/core/entity/org/OrgTypeEnum.ts","../../../library/core/entity/org/reskin-core-entity-org.ts"],"sourcesContent":["/**\r\n * 机构类型\r\n */\r\nexport enum OrgTypeEnum {\r\n /**\r\n * 虚拟节点\r\n */\r\n VIRTUAL_NODE = 0,\r\n /**\r\n * 单位\r\n */\r\n UNIT = 1,\r\n /**\r\n * 部门\r\n */\r\n DEPARTMENT = 2,\r\n}\r\n\r\n/**\r\n * 机构类型对应中文\r\n */\r\nexport const OrgTypeCName = {\r\n [OrgTypeEnum.VIRTUAL_NODE]: {\r\n label: '虚拟节点',\r\n },\r\n [OrgTypeEnum.UNIT]: {\r\n label: '单位',\r\n },\r\n [OrgTypeEnum.DEPARTMENT]: {\r\n label: '部门',\r\n },\r\n};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA;;AAEG;IACS,YAaX;AAbD,CAAA,UAAY,WAAW,EAAA;AACnB;;AAEG;AACH,IAAA,WAAA,CAAA,WAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;AAChB;;AAEG;AACH,IAAA,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,WAAA,CAAA,WAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;AAClB,CAAC,EAbW,WAAW,KAAX,WAAW,GAatB,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;AACU,MAAA,YAAY,GAAG;AACxB,IAAA,CAAC,WAAW,CAAC,YAAY,GAAG;AACxB,QAAA,KAAK,EAAE,MAAM;AAChB,KAAA;AACD,IAAA,CAAC,WAAW,CAAC,IAAI,GAAG;AAChB,QAAA,KAAK,EAAE,IAAI;AACd,KAAA;AACD,IAAA,CAAC,WAAW,CAAC,UAAU,GAAG;AACtB,QAAA,KAAK,EAAE,IAAI;AACd,KAAA;;;AC9BL;;AAEG;;;;"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * 对齐方式
3
+ *
4
+ * @export
5
+ * @enum {number}
6
+ */
7
+ var AlignTypeEnum;
8
+ (function (AlignTypeEnum) {
9
+ /**
10
+ * 左对齐
11
+ */
12
+ AlignTypeEnum[AlignTypeEnum["LEFT"] = 0] = "LEFT";
13
+ /**
14
+ * 居中对齐
15
+ */
16
+ AlignTypeEnum[AlignTypeEnum["CENTER"] = 1] = "CENTER";
17
+ /**
18
+ * 右对齐
19
+ */
20
+ AlignTypeEnum[AlignTypeEnum["RIGHT"] = 2] = "RIGHT";
21
+ })(AlignTypeEnum || (AlignTypeEnum = {}));
22
+
23
+ /**
24
+ * 字段显示类型
25
+ */
26
+ var SchemeEditTypeEnum;
27
+ (function (SchemeEditTypeEnum) {
28
+ /**
29
+ * 文本
30
+ */
31
+ SchemeEditTypeEnum[SchemeEditTypeEnum["TEXT"] = 1] = "TEXT";
32
+ /**
33
+ * 数字
34
+ */
35
+ SchemeEditTypeEnum[SchemeEditTypeEnum["INT"] = 2] = "INT";
36
+ /**
37
+ * 时间
38
+ */
39
+ SchemeEditTypeEnum[SchemeEditTypeEnum["DATE"] = 3] = "DATE";
40
+ /**
41
+ * 备注
42
+ */
43
+ SchemeEditTypeEnum[SchemeEditTypeEnum["MEMO"] = 4] = "MEMO";
44
+ /**
45
+ * 下拉代码
46
+ */
47
+ SchemeEditTypeEnum[SchemeEditTypeEnum["SELECT"] = 5] = "SELECT";
48
+ })(SchemeEditTypeEnum || (SchemeEditTypeEnum = {}));
49
+
50
+ /**
51
+ * Generated bundle index. Do not edit.
52
+ */
53
+
54
+ export { AlignTypeEnum, SchemeEditTypeEnum };
55
+ //# sourceMappingURL=reskin-core-entity-scheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reskin-core-entity-scheme.js","sources":["../../../library/core/entity/scheme/IScheme.ts","../../../library/core/entity/scheme/SchemeEditTypeEnum.ts","../../../library/core/entity/scheme/reskin-core-entity-scheme.ts"],"sourcesContent":["import { SchemeEditTypeEnum } from './SchemeEditTypeEnum';\r\nimport { ITableField } from '@reskin/core/entity/field';\r\n\r\n/**\r\n * 界面方案\r\n */\r\nexport interface IScheme {\r\n /**\r\n * 界面方案基本信息\r\n */\r\n sysPageScheme: IPageScheme;\r\n /**\r\n * 界面方案配置内容\r\n */\r\n systemSchemeList: ISchemeListItem[];\r\n}\r\n\r\n/**\r\n * 界面方案基本信息\r\n */\r\nexport interface IPageScheme {\r\n /**\r\n * 列数\r\n */\r\n SCHEME_COLUMN_COUNT: number;\r\n /**\r\n * 说明\r\n */\r\n SCHEME_DESC: string;\r\n /**\r\n * 说明\r\n */\r\n SCHEME_NAME: string;\r\n /**\r\n * 标识符\r\n */\r\n SCHEME_PERMISSION: string;\r\n /**\r\n * 方案类型\r\n */\r\n SCHEME_TYPE: number;\r\n}\r\n\r\n/**\r\n * 界面方案配置内容项\r\n */\r\nexport interface ISchemeListItem {\r\n /**\r\n * 界面方案字段编辑配置\r\n */\r\n systemSchemeEdit: ISchemeEditItem[];\r\n /**\r\n * 界面方案字段列头配置\r\n */\r\n systemSchemeHeader: ISchemeHeaderItem[];\r\n /**\r\n * 界面方案指标集信息\r\n */\r\n systemSchemeTable: ISchemeTable;\r\n}\r\n\r\n/**\r\n * 界面方案字段编辑配置项\r\n */\r\nexport interface ISchemeEditItem extends ITableField {\r\n /**\r\n * 校验脚本\r\n */\r\n SCHEME_EDIT_CHECK_SCRIPT: string;\r\n /**\r\n * 触发脚本\r\n */\r\n SCHEME_EDIT_TRIGGER_SCRIPT: string;\r\n /**\r\n * 列编码\r\n */\r\n SCHEME_EDIT_COLUMN_ID: string;\r\n /**\r\n * 显示标题\r\n */\r\n SCHEME_EDIT_DISPLAY_NAME: string;\r\n /**\r\n * 编辑框宽度\r\n */\r\n SCHEME_EDIT_EDIT_WIDTH: number;\r\n /**\r\n * 是否必录\r\n */\r\n SCHEME_EDIT_IS_MUST_INPUT: boolean;\r\n /**\r\n * 是否只读\r\n */\r\n SCHEME_EDIT_IS_READONLY: boolean;\r\n /**\r\n * 标题宽度\r\n */\r\n SCHEME_EDIT_LABEL_WIDTH: number;\r\n /**\r\n * 界面方案ID\r\n */\r\n SCHEME_EDIT_SCHEME_ID: string;\r\n /**\r\n * 表编码\r\n */\r\n SCHEME_EDIT_TABLE_ID: string;\r\n /**\r\n * 显示类型\r\n */\r\n SCHEME_EDIT_VIEW_TYPE: SchemeEditTypeEnum;\r\n /**\r\n * 配置信息\r\n */\r\n SCHEME_EDIT_CONFIG: string;\r\n /**\r\n * 主键ID\r\n */\r\n SYSTEM_SCHEME_EDIT_ID: string;\r\n}\r\n\r\n/**\r\n * 界面方案字段列头配置项\r\n */\r\nexport interface ISchemeHeaderItem extends ITableField {\r\n /**\r\n * 对齐方式\r\n */\r\n SCHEME_HEADER_ALIGN_TYPE: AlignTypeEnum;\r\n /**\r\n * 列编码\r\n */\r\n SCHEME_HEADER_COLUMN_ID: string;\r\n /**\r\n * 显示名称\r\n */\r\n SCHEME_HEADER_DISPLAY_NAME: string;\r\n /**\r\n * 显示宽度\r\n */\r\n SCHEME_HEADER_DISPLAY_WIDTH: number;\r\n /**\r\n * 界面方案ID\r\n */\r\n SCHEME_HEADER_SCHEME_ID: string;\r\n /**\r\n * 表编码\r\n */\r\n SCHEME_HEADER_TABLE_ID: string;\r\n}\r\n\r\n/**\r\n * 界面方案指标集信息\r\n */\r\nexport interface ISchemeTable {\r\n /**\r\n * 备注\r\n */\r\n SCHEME_TABLE_DESC: string;\r\n /**\r\n * 显示名称\r\n */\r\n SCHEME_TABLE_DISPLAY_NAME: string;\r\n /**\r\n * 显示方式\r\n */\r\n SCHEME_TABLE_DISPLAY_TYPE: number;\r\n /**\r\n * 界面方案ID\r\n */\r\n SCHEME_TABLE_SCHEME_ID: string;\r\n /**\r\n * 表编码\r\n */\r\n SCHEME_TABLE_TABLE_ID: string;\r\n /**\r\n * 指标集编码\r\n */\r\n TABLE_CODE: string;\r\n /**\r\n * 指标集名称\r\n */\r\n TABLE_NAME: string;\r\n /**\r\n * 指标集对应主集\r\n */\r\n TABLE_PARENT_CODES: string;\r\n}\r\n\r\n/**\r\n * 对齐方式\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum AlignTypeEnum {\r\n /**\r\n * 左对齐\r\n */\r\n LEFT,\r\n /**\r\n * 居中对齐\r\n */\r\n CENTER,\r\n /**\r\n * 右对齐\r\n */\r\n RIGHT,\r\n}\r\n","/**\r\n * 字段显示类型\r\n */\r\nexport enum SchemeEditTypeEnum {\r\n /**\r\n * 文本\r\n */\r\n TEXT = 1,\r\n /**\r\n * 数字\r\n */\r\n INT = 2,\r\n /**\r\n * 时间\r\n */\r\n DATE = 3,\r\n /**\r\n * 备注\r\n */\r\n MEMO = 4,\r\n /**\r\n * 下拉代码\r\n */\r\n SELECT = 5,\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AA2LA;;;;;AAKG;IACS,cAaX;AAbD,CAAA,UAAY,aAAa,EAAA;AACrB;;AAEG;AACH,IAAA,aAAA,CAAA,aAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ;;AAEG;AACH,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN;;AAEG;AACH,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACT,CAAC,EAbW,aAAa,KAAb,aAAa,GAaxB,EAAA,CAAA,CAAA;;AC9MD;;AAEG;IACS,mBAqBX;AArBD,CAAA,UAAY,kBAAkB,EAAA;AAC1B;;AAEG;AACH,IAAA,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,kBAAA,CAAA,kBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO,CAAA;AACP;;AAEG;AACH,IAAA,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,kBAAA,CAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACd,CAAC,EArBW,kBAAkB,KAAlB,kBAAkB,GAqB7B,EAAA,CAAA,CAAA;;ACxBD;;AAEG;;;;"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ //# sourceMappingURL=reskin-core-entity-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reskin-core-entity-user.js","sources":["../../../library/core/entity/user/reskin-core-entity-user.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA;;AAEG"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ //# sourceMappingURL=reskin-core-entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reskin-core-entity.js","sources":["../../../library/core/entity/reskin-core-entity.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA;;AAEG"}
@@ -0,0 +1,60 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable } from '@angular/core';
3
+ import { filter, map, catchError } from 'rxjs/operators';
4
+ import * as i1 from '@reskin/core/services';
5
+ import * as i2 from '@angular/router';
6
+
7
+ class RkAuthGuard {
8
+ constructor(menu, router) {
9
+ this.menu = menu;
10
+ this.router = router;
11
+ }
12
+ canActivateChild(childRoute, state) {
13
+ return this.menu.requestData().pipe(filter((json) => json.code === 0), map((json) => json.data), map((menus) => this.checkAccess(menus, childRoute, state.url)), catchError(() => {
14
+ this.handleNoAccess(state.url);
15
+ return [false];
16
+ }));
17
+ }
18
+ checkAccess(menus, childRoute, url) {
19
+ if (!menus.length) {
20
+ throw new Error(`此账号无任何功能权限.`);
21
+ }
22
+ const cleanUrl = url.replace(/\?.*/, '');
23
+ const authRoutes = new Set(menus.map((m) => m.SYSTEM_RESOURCE_URL));
24
+ if (authRoutes.has(cleanUrl)) {
25
+ return true;
26
+ }
27
+ const { extendAuth, extendRoutes } = childRoute.data;
28
+ if (extendAuth && extendRoutes) {
29
+ const hasWildcardMatch = extendRoutes.some((route) => route.includes('**') ? this.match(route, cleanUrl) : route === cleanUrl);
30
+ if (hasWildcardMatch) {
31
+ return true;
32
+ }
33
+ }
34
+ this.handleNoAccess(url);
35
+ return false;
36
+ }
37
+ match(pattern, path) {
38
+ const regexPattern = pattern.replace(/\*\*/g, '.*');
39
+ return new RegExp(`^${regexPattern}$`).test(path);
40
+ }
41
+ handleNoAccess(url) {
42
+ console.error(`无权限访问路由地址: ${url}`);
43
+ this.router.navigate(['/errors/401']).then();
44
+ }
45
+ }
46
+ RkAuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkAuthGuard, deps: [{ token: i1.RkMenuService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
47
+ RkAuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkAuthGuard, providedIn: 'root' });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkAuthGuard, decorators: [{
49
+ type: Injectable,
50
+ args: [{
51
+ providedIn: 'root',
52
+ }]
53
+ }], ctorParameters: function () { return [{ type: i1.RkMenuService }, { type: i2.Router }]; } });
54
+
55
+ /**
56
+ * Generated bundle index. Do not edit.
57
+ */
58
+
59
+ export { RkAuthGuard };
60
+ //# sourceMappingURL=reskin-core-guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reskin-core-guards.js","sources":["../../../library/core/guards/auth.guard.ts","../../../library/core/guards/reskin-core-guards.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivateChild, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map, catchError } from 'rxjs/operators';\r\nimport { RkMenuService } from '@reskin/core/services';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RkAuthGuard implements CanActivateChild {\r\n constructor(\r\n private menu: RkMenuService,\r\n private router: Router,\r\n ) {}\r\n\r\n canActivateChild(\r\n childRoute: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n return this.menu.requestData().pipe(\r\n filter((json) => json.code === 0),\r\n map((json) => json.data),\r\n map((menus) => this.checkAccess(menus, childRoute, state.url)),\r\n catchError(() => {\r\n this.handleNoAccess(state.url);\r\n return [false];\r\n }),\r\n );\r\n }\r\n\r\n private checkAccess(menus: any[], childRoute: ActivatedRouteSnapshot, url: string): boolean | UrlTree {\r\n if (!menus.length) {\r\n throw new Error(`此账号无任何功能权限.`);\r\n }\r\n\r\n const cleanUrl = url.replace(/\\?.*/, '');\r\n const authRoutes = new Set<string>(menus.map((m) => m.SYSTEM_RESOURCE_URL));\r\n\r\n if (authRoutes.has(cleanUrl)) {\r\n return true;\r\n }\r\n\r\n const { extendAuth, extendRoutes } = childRoute.data;\r\n if (extendAuth && extendRoutes) {\r\n const hasWildcardMatch = extendRoutes.some((route: string) =>\r\n route.includes('**') ? this.match(route, cleanUrl) : route === cleanUrl,\r\n );\r\n if (hasWildcardMatch) {\r\n return true;\r\n }\r\n }\r\n\r\n this.handleNoAccess(url);\r\n return false;\r\n }\r\n\r\n private match(pattern: string, path: string): boolean {\r\n const regexPattern = pattern.replace(/\\*\\*/g, '.*');\r\n return new RegExp(`^${regexPattern}$`).test(path);\r\n }\r\n\r\n private handleNoAccess(url: string): void {\r\n console.error(`无权限访问路由地址: ${url}`);\r\n this.router.navigate(['/errors/401']).then();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,179 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable } from '@angular/core';
3
+ import { HTTP_INTERCEPTORS, HttpHeaders, HttpEventType, HttpResponse } from '@angular/common/http';
4
+ import * as i1 from '@reskin/core/services';
5
+ import { of, Observable } from 'rxjs';
6
+ import { catchError, shareReplay, switchMap } from 'rxjs/operators';
7
+ import * as i1$1 from '@angular/router';
8
+
9
+ class TokenInterceptor {
10
+ constructor(service) {
11
+ this.service = service;
12
+ }
13
+ intercept(request, next) {
14
+ const tc = request.headers.get('Token-Control');
15
+ const auth = this.service.token;
16
+ // 当 header 中 Token-Control 为 no-token 时不携带 token
17
+ if (tc !== 'no-token' && auth.token) {
18
+ request = request.clone({
19
+ setHeaders: {
20
+ 'Authorization': auth.token,
21
+ 'X-Auth-Id': auth.id,
22
+ },
23
+ });
24
+ }
25
+ return next.handle(request);
26
+ }
27
+ }
28
+ TokenInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TokenInterceptor, deps: [{ token: i1.RkAuthService }], target: i0.ɵɵFactoryTarget.Injectable });
29
+ TokenInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TokenInterceptor });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TokenInterceptor, decorators: [{
31
+ type: Injectable
32
+ }], ctorParameters: function () { return [{ type: i1.RkAuthService }]; } });
33
+ /**
34
+ * 请求头增加token验证拦截器
35
+ */
36
+ function providerAuthToken() {
37
+ return { provide: HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true };
38
+ }
39
+ /**
40
+ * 不带token验证信息请求
41
+ * @param urls 地址
42
+ * @param params 参数
43
+ * @constructor
44
+ */
45
+ function NoAuthTokenTemplate(urls, ...params) {
46
+ let [url] = urls;
47
+ if (params.length > 0) {
48
+ url = String.raw(urls, ...params);
49
+ }
50
+ return [url, { headers: new HttpHeaders({ 'Token-Control': 'no-token' }) }];
51
+ }
52
+
53
+ class ErrorInterceptor {
54
+ constructor(router) {
55
+ this.router = router;
56
+ }
57
+ intercept(request, next) {
58
+ return next.handle(request).pipe(catchError((result) => {
59
+ var _a;
60
+ if (result.status === 401) {
61
+ this.router.navigateByUrl('/').then();
62
+ }
63
+ if (result.error.code) {
64
+ return of(result.error);
65
+ }
66
+ throw (_a = result.error.msg) !== null && _a !== void 0 ? _a : result.message;
67
+ }));
68
+ }
69
+ }
70
+ ErrorInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ErrorInterceptor, deps: [{ token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
71
+ ErrorInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ErrorInterceptor });
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ErrorInterceptor, decorators: [{
73
+ type: Injectable
74
+ }], ctorParameters: function () { return [{ type: i1$1.Router }]; } });
75
+ /**
76
+ * 请求错误拦截器
77
+ */
78
+ function providerHttpError() {
79
+ return { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true };
80
+ }
81
+
82
+ class CacheInterceptor {
83
+ constructor(cacheHttp) {
84
+ this.cacheHttp = cacheHttp;
85
+ }
86
+ intercept(request, next) {
87
+ // 1.判断是GET
88
+ // 2.header中添加 Cache-Map: Storage
89
+ const cacheMap = request.headers.get('Cache-Map');
90
+ if (request.method === 'GET' && cacheMap === 'Storage') {
91
+ let response = this.cacheHttp.get(request.url);
92
+ if (!response) {
93
+ response = next.handle(request).pipe(shareReplay(1));
94
+ this.cacheHttp.set(request.url, response);
95
+ }
96
+ return response;
97
+ }
98
+ return next.handle(request);
99
+ }
100
+ }
101
+ CacheInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CacheInterceptor, deps: [{ token: i1.RkCacheHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
102
+ CacheInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CacheInterceptor });
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CacheInterceptor, decorators: [{
104
+ type: Injectable
105
+ }], ctorParameters: function () { return [{ type: i1.RkCacheHttpService }]; } });
106
+ /**
107
+ * GET请求缓存拦截器
108
+ */
109
+ function providerHttpCache() {
110
+ return { provide: HTTP_INTERCEPTORS, useClass: CacheInterceptor, multi: true };
111
+ }
112
+
113
+ class BlobInterceptor {
114
+ intercept(request, next) {
115
+ if (request.responseType !== 'blob') {
116
+ return next.handle(request);
117
+ }
118
+ return next.handle(request).pipe(switchMap((response) => this.handleBlobResponse(response)), catchError((response) => this.handleBlobError(response)));
119
+ }
120
+ handleBlobResponse(response) {
121
+ if (response.type !== HttpEventType.Response) {
122
+ return new Observable((subscriber) => {
123
+ subscriber.next(response);
124
+ subscriber.complete();
125
+ });
126
+ }
127
+ if (response instanceof HttpResponse && response.body && response.body.type === 'application/json') {
128
+ return new Observable((subscriber) => this.blobToJson(response.body, subscriber));
129
+ }
130
+ return new Observable((subscriber) => {
131
+ subscriber.next(response);
132
+ subscriber.complete();
133
+ });
134
+ }
135
+ handleBlobError(response) {
136
+ if (response.error && response.error.type === 'application/json') {
137
+ return new Observable((subscriber) => this.blobToJson(response.error, subscriber));
138
+ }
139
+ return new Observable((subscriber) => {
140
+ subscriber.error(response);
141
+ subscriber.complete();
142
+ });
143
+ }
144
+ blobToJson(blob, subscriber) {
145
+ const reader = new FileReader();
146
+ reader.addEventListener('loadend', () => {
147
+ try {
148
+ const json = JSON.parse(reader.result);
149
+ subscriber.error(json);
150
+ }
151
+ catch (error) {
152
+ subscriber.error(error);
153
+ }
154
+ finally {
155
+ subscriber.complete();
156
+ }
157
+ });
158
+ reader.readAsText(blob, 'utf-8');
159
+ }
160
+ }
161
+ BlobInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BlobInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
162
+ BlobInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BlobInterceptor });
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BlobInterceptor, decorators: [{
164
+ type: Injectable
165
+ }] });
166
+ /**
167
+ * 下载文件拦截器
168
+ * blob类型的请求会被处理
169
+ */
170
+ function providerDownBlob() {
171
+ return { provide: HTTP_INTERCEPTORS, useClass: BlobInterceptor, multi: true };
172
+ }
173
+
174
+ /**
175
+ * Generated bundle index. Do not edit.
176
+ */
177
+
178
+ export { BlobInterceptor, CacheInterceptor, ErrorInterceptor, NoAuthTokenTemplate, TokenInterceptor, providerAuthToken, providerDownBlob, providerHttpCache, providerHttpError };
179
+ //# sourceMappingURL=reskin-core-interceptors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reskin-core-interceptors.js","sources":["../../../library/core/interceptors/token.interceptor.ts","../../../library/core/interceptors/error.interceptor.ts","../../../library/core/interceptors/cache.interceptor.ts","../../../library/core/interceptors/blob.interceptor.ts","../../../library/core/interceptors/reskin-core-interceptors.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HTTP_INTERCEPTORS, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { RkAuthService } from '@reskin/core/services';\r\nimport { IAuth } from '@reskin/core/entity/user';\r\n\r\n@Injectable()\r\nexport class TokenInterceptor implements HttpInterceptor {\r\n constructor(private service: RkAuthService) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n const tc = request.headers.get('Token-Control');\r\n const auth: IAuth = this.service.token;\r\n // 当 header 中 Token-Control 为 no-token 时不携带 token\r\n if (tc !== 'no-token' && auth.token) {\r\n request = request.clone({\r\n setHeaders: {\r\n 'Authorization': auth.token,\r\n 'X-Auth-Id': auth.id,\r\n },\r\n });\r\n }\r\n return next.handle(request);\r\n }\r\n}\r\n\r\n/**\r\n * 请求头增加token验证拦截器\r\n */\r\nexport function providerAuthToken() {\r\n return { provide: HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true };\r\n}\r\n\r\n/**\r\n * 不带token验证信息请求\r\n * @param urls 地址\r\n * @param params 参数\r\n * @constructor\r\n */\r\nexport function NoAuthTokenTemplate(urls: TemplateStringsArray, ...params: any[]): [string, { headers: HttpHeaders }] {\r\n let [url] = urls;\r\n if (params.length > 0) {\r\n url = String.raw(urls, ...params);\r\n }\r\n return [url, { headers: new HttpHeaders({ 'Token-Control': 'no-token' }) }];\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { Router } from '@angular/router';\r\n\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n constructor(private router: Router) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n return next.handle(request).pipe(\r\n catchError((result) => {\r\n if (result.status === 401) {\r\n this.router.navigateByUrl('/').then();\r\n }\r\n if (result.error.code) {\r\n return of(result.error);\r\n }\r\n throw result.error.msg ?? result.message;\r\n }),\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * 请求错误拦截器\r\n */\r\nexport function providerHttpError() {\r\n return { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpResponse, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { shareReplay } from 'rxjs/operators';\r\nimport { RkCacheHttpService } from '@reskin/core/services';\r\n\r\n@Injectable()\r\nexport class CacheInterceptor implements HttpInterceptor {\r\n constructor(private cacheHttp: RkCacheHttpService) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n // 1.判断是GET\r\n // 2.header中添加 Cache-Map: Storage\r\n const cacheMap = request.headers.get('Cache-Map');\r\n if (request.method === 'GET' && cacheMap === 'Storage') {\r\n let response = this.cacheHttp.get(request.url);\r\n if (!response) {\r\n response = next.handle(request).pipe(shareReplay(1));\r\n this.cacheHttp.set(request.url, response);\r\n }\r\n return response;\r\n }\r\n return next.handle(request);\r\n }\r\n}\r\n\r\n/**\r\n * GET请求缓存拦截器\r\n */\r\nexport function providerHttpCache() {\r\n return { provide: HTTP_INTERCEPTORS, useClass: CacheInterceptor, multi: true };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpEventType,\r\n HttpResponse,\r\n HttpErrorResponse,\r\n HTTP_INTERCEPTORS,\r\n} from '@angular/common/http';\r\nimport { Observable, Subscriber } from 'rxjs';\r\nimport { catchError, switchMap } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class BlobInterceptor implements HttpInterceptor {\r\n intercept<T>(request: HttpRequest<T>, next: HttpHandler): Observable<HttpEvent<T>> {\r\n if (request.responseType !== 'blob') {\r\n return next.handle(request);\r\n }\r\n return next.handle(request).pipe(\r\n switchMap((response: HttpEvent<any>) => this.handleBlobResponse(response)),\r\n catchError((response: HttpErrorResponse) => this.handleBlobError(response)),\r\n );\r\n }\r\n\r\n private handleBlobResponse<T>(response: HttpEvent<any>): Observable<HttpEvent<any>> {\r\n if (response.type !== HttpEventType.Response) {\r\n return new Observable((subscriber) => {\r\n subscriber.next(response);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n if (response instanceof HttpResponse && response.body && response.body.type === 'application/json') {\r\n return new Observable((subscriber) => this.blobToJson<T>(response.body, subscriber));\r\n }\r\n\r\n return new Observable((subscriber) => {\r\n subscriber.next(response);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n private handleBlobError<T>(response: HttpErrorResponse): Observable<HttpEvent<any>> {\r\n if (response.error && response.error.type === 'application/json') {\r\n return new Observable((subscriber) => this.blobToJson<T>(response.error, subscriber));\r\n }\r\n\r\n return new Observable((subscriber) => {\r\n subscriber.error(response);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n private blobToJson<T>(blob: Blob, subscriber: Subscriber<HttpEvent<T>>) {\r\n const reader = new FileReader();\r\n reader.addEventListener('loadend', () => {\r\n try {\r\n const json: T = JSON.parse(reader.result as string);\r\n subscriber.error(json);\r\n } catch (error) {\r\n subscriber.error(error);\r\n } finally {\r\n subscriber.complete();\r\n }\r\n });\r\n reader.readAsText(blob, 'utf-8');\r\n }\r\n}\r\n\r\n/**\r\n * 下载文件拦截器\r\n * blob类型的请求会被处理\r\n */\r\nexport function providerDownBlob() {\r\n return { provide: HTTP_INTERCEPTORS, useClass: BlobInterceptor, multi: true };\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}