@webiny/app-audit-logs 6.3.0 → 6.4.0-beta.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 (110) hide show
  1. package/SecurityPermission.js +11 -14
  2. package/SecurityPermission.js.map +1 -1
  3. package/components/Text.d.ts +9 -1
  4. package/components/Text.js +37 -21
  5. package/components/Text.js.map +1 -1
  6. package/config/list/AuditLogsListConfig.js +26 -27
  7. package/config/list/AuditLogsListConfig.js.map +1 -1
  8. package/config/list/Browser/Filter.js +30 -37
  9. package/config/list/Browser/Filter.js.map +1 -1
  10. package/config/list/Browser/FiltersToWhere.js +10 -13
  11. package/config/list/Browser/FiltersToWhere.js.map +1 -1
  12. package/config/list/Browser/index.js +4 -3
  13. package/config/list/Browser/index.js.map +1 -1
  14. package/config/list/index.js +0 -2
  15. package/constants/index.js +2 -1
  16. package/constants/index.js.map +1 -1
  17. package/domain/permissionsSchema.js +4 -3
  18. package/domain/permissionsSchema.js.map +1 -1
  19. package/features/permissions/abstractions.js +2 -1
  20. package/features/permissions/abstractions.js.map +1 -1
  21. package/features/permissions/feature.js +2 -1
  22. package/features/permissions/feature.js.map +1 -1
  23. package/graphql.js +4 -3
  24. package/graphql.js.map +1 -1
  25. package/hooks/graphql.js +3 -2
  26. package/hooks/graphql.js.map +1 -1
  27. package/hooks/index.js +0 -2
  28. package/hooks/schema.d.ts +4 -4
  29. package/hooks/schema.js +22 -28
  30. package/hooks/schema.js.map +1 -1
  31. package/hooks/useAuditLogsList.d.ts +3 -3
  32. package/hooks/useAuditLogsList.js +100 -93
  33. package/hooks/useAuditLogsList.js.map +1 -1
  34. package/index.js +32 -36
  35. package/index.js.map +1 -1
  36. package/package.json +12 -12
  37. package/routes.js +6 -5
  38. package/routes.js.map +1 -1
  39. package/types.js +1 -4
  40. package/utils/transformRawAuditLog.js +22 -24
  41. package/utils/transformRawAuditLog.js.map +1 -1
  42. package/views/Logs/Filters/FilterByAction.js +39 -40
  43. package/views/Logs/Filters/FilterByAction.js.map +1 -1
  44. package/views/Logs/Filters/FilterByApp.js +32 -31
  45. package/views/Logs/Filters/FilterByApp.js.map +1 -1
  46. package/views/Logs/Filters/FilterByCreatedBy.js +35 -32
  47. package/views/Logs/Filters/FilterByCreatedBy.js.map +1 -1
  48. package/views/Logs/Filters/FilterByCreatedOn.js +31 -32
  49. package/views/Logs/Filters/FilterByCreatedOn.js.map +1 -1
  50. package/views/Logs/Filters/FilterByEntity.js +39 -41
  51. package/views/Logs/Filters/FilterByEntity.js.map +1 -1
  52. package/views/Logs/Filters/FilterByEntityId.js +21 -24
  53. package/views/Logs/Filters/FilterByEntityId.js.map +1 -1
  54. package/views/Logs/Filters/FilterByInitiator.js +35 -32
  55. package/views/Logs/Filters/FilterByInitiator.js.map +1 -1
  56. package/views/Logs/Filters/FilterByTimestamp.js +31 -32
  57. package/views/Logs/Filters/FilterByTimestamp.js.map +1 -1
  58. package/views/Logs/Filters/Filters.js +17 -21
  59. package/views/Logs/Filters/Filters.js.map +1 -1
  60. package/views/Logs/Filters/index.js +0 -2
  61. package/views/Logs/Filters/styled.js +11 -15
  62. package/views/Logs/Filters/styled.js.map +1 -1
  63. package/views/Logs/Filters/types.js +0 -3
  64. package/views/Logs/Header/ButtonFilters/ButtonFilters.js +25 -44
  65. package/views/Logs/Header/ButtonFilters/ButtonFilters.js.map +1 -1
  66. package/views/Logs/Header/ButtonFilters/index.js +0 -2
  67. package/views/Logs/Header/Header.js +13 -66
  68. package/views/Logs/Header/Header.js.map +1 -1
  69. package/views/Logs/Header/index.js +0 -2
  70. package/views/Logs/LoadMoreButton/LoadMoreButton.js +9 -16
  71. package/views/Logs/LoadMoreButton/LoadMoreButton.js.map +1 -1
  72. package/views/Logs/LoadMoreButton/index.js +0 -2
  73. package/views/Logs/LoadMoreButton/styled.js +7 -15
  74. package/views/Logs/LoadMoreButton/styled.js.map +1 -1
  75. package/views/Logs/LoadingMore/index.js +12 -12
  76. package/views/Logs/LoadingMore/index.js.map +1 -1
  77. package/views/Logs/Logs.js +63 -68
  78. package/views/Logs/Logs.js.map +1 -1
  79. package/views/Logs/LogsModule.js +22 -25
  80. package/views/Logs/LogsModule.js.map +1 -1
  81. package/views/Logs/LogsView.js +64 -67
  82. package/views/Logs/LogsView.js.map +1 -1
  83. package/views/Logs/Preview/Preview.js +75 -84
  84. package/views/Logs/Preview/Preview.js.map +1 -1
  85. package/views/Logs/Preview/index.js +0 -2
  86. package/views/Logs/Preview/styled.js +29 -23
  87. package/views/Logs/Preview/styled.js.map +1 -1
  88. package/views/Logs/Table/Table.d.ts +3 -3
  89. package/views/Logs/Table/Table.js +101 -125
  90. package/views/Logs/Table/Table.js.map +1 -1
  91. package/views/Logs/Table/index.js +0 -2
  92. package/views/Logs/Table/styled.d.ts +2 -2
  93. package/views/Logs/Table/styled.js +38 -75
  94. package/views/Logs/Table/styled.js.map +1 -1
  95. package/config/list/index.js.map +0 -1
  96. package/hooks/index.js.map +0 -1
  97. package/types.js.map +0 -1
  98. package/views/Logs/Filters/index.js.map +0 -1
  99. package/views/Logs/Filters/types.js.map +0 -1
  100. package/views/Logs/Header/ButtonFilters/index.js.map +0 -1
  101. package/views/Logs/Header/index.js.map +0 -1
  102. package/views/Logs/LoadMoreButton/index.js.map +0 -1
  103. package/views/Logs/LoadingMore/styled.d.ts +0 -8
  104. package/views/Logs/LoadingMore/styled.js +0 -30
  105. package/views/Logs/LoadingMore/styled.js.map +0 -1
  106. package/views/Logs/Preview/index.js.map +0 -1
  107. package/views/Logs/Table/index.js.map +0 -1
  108. package/views/Logs/styled.d.ts +0 -8
  109. package/views/Logs/styled.js +0 -30
  110. package/views/Logs/styled.js.map +0 -1
package/hooks/schema.js CHANGED
@@ -1,34 +1,28 @@
1
1
  import zod from "zod";
2
2
  import { ActionType } from "../types.js";
3
- export const auditLogSchema = zod.object({
4
- id: zod.string(),
5
- createdBy: zod.object({
3
+ const auditLogSchema = zod.object({
6
4
  id: zod.string(),
7
- displayName: zod.string().optional(),
8
- type: zod.string().optional()
9
- }),
10
- createdOn: zod.preprocess(value => {
11
- if (typeof value === "string" || value instanceof Date) {
12
- return new Date(value);
13
- }
14
- return value;
15
- }, zod.date()),
16
- app: zod.string(),
17
- action: zod.nativeEnum(ActionType),
18
- message: zod.string(),
19
- entity: zod.string(),
20
- entityId: zod.string(),
21
- tags: zod.array(zod.string()),
22
- expiresAt: zod.preprocess(value => {
23
- if (typeof value === "string" || value instanceof Date) {
24
- return new Date(value);
25
- }
26
- return undefined;
27
- }, zod.date().optional().nullish()).optional().nullish().transform(value => {
28
- return value || undefined;
29
- }),
30
- content: zod.string()
5
+ createdBy: zod.object({
6
+ id: zod.string(),
7
+ displayName: zod.string().optional(),
8
+ type: zod.string().optional()
9
+ }),
10
+ createdOn: zod.preprocess((value)=>{
11
+ if ("string" == typeof value || value instanceof Date) return new Date(value);
12
+ return value;
13
+ }, zod.date()),
14
+ app: zod.string(),
15
+ action: zod.nativeEnum(ActionType),
16
+ message: zod.string(),
17
+ entity: zod.string(),
18
+ entityId: zod.string(),
19
+ tags: zod.array(zod.string()),
20
+ expiresAt: zod.preprocess((value)=>{
21
+ if ("string" == typeof value || value instanceof Date) return new Date(value);
22
+ }, zod.date().optional().nullish()).optional().nullish().transform((value)=>value || void 0),
23
+ content: zod.string()
31
24
  });
32
- export const listAuditLogsSchema = zod.array(auditLogSchema);
25
+ const listAuditLogsSchema = zod.array(auditLogSchema);
26
+ export { auditLogSchema, listAuditLogsSchema };
33
27
 
34
28
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["zod","ActionType","auditLogSchema","object","id","string","createdBy","displayName","optional","type","createdOn","preprocess","value","Date","date","app","action","nativeEnum","message","entity","entityId","tags","array","expiresAt","undefined","nullish","transform","content","listAuditLogsSchema"],"sources":["schema.ts"],"sourcesContent":["import zod from \"zod\";\nimport { ActionType } from \"~/types.js\";\n\nexport const auditLogSchema = zod.object({\n id: zod.string(),\n createdBy: zod.object({\n id: zod.string(),\n displayName: zod.string().optional(),\n type: zod.string().optional()\n }),\n createdOn: zod.preprocess(value => {\n if (typeof value === \"string\" || value instanceof Date) {\n return new Date(value);\n }\n return value;\n }, zod.date()),\n app: zod.string(),\n action: zod.nativeEnum(ActionType),\n message: zod.string(),\n entity: zod.string(),\n entityId: zod.string(),\n tags: zod.array(zod.string()),\n expiresAt: zod\n .preprocess(value => {\n if (typeof value === \"string\" || value instanceof Date) {\n return new Date(value);\n }\n return undefined;\n }, zod.date().optional().nullish())\n .optional()\n .nullish()\n .transform(value => {\n return value || undefined;\n }),\n content: zod.string()\n});\n\nexport const listAuditLogsSchema = zod.array(auditLogSchema);\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,KAAK;AACrB,SAASC,UAAU;AAEnB,OAAO,MAAMC,cAAc,GAAGF,GAAG,CAACG,MAAM,CAAC;EACrCC,EAAE,EAAEJ,GAAG,CAACK,MAAM,CAAC,CAAC;EAChBC,SAAS,EAAEN,GAAG,CAACG,MAAM,CAAC;IAClBC,EAAE,EAAEJ,GAAG,CAACK,MAAM,CAAC,CAAC;IAChBE,WAAW,EAAEP,GAAG,CAACK,MAAM,CAAC,CAAC,CAACG,QAAQ,CAAC,CAAC;IACpCC,IAAI,EAAET,GAAG,CAACK,MAAM,CAAC,CAAC,CAACG,QAAQ,CAAC;EAChC,CAAC,CAAC;EACFE,SAAS,EAAEV,GAAG,CAACW,UAAU,CAACC,KAAK,IAAI;IAC/B,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,YAAYC,IAAI,EAAE;MACpD,OAAO,IAAIA,IAAI,CAACD,KAAK,CAAC;IAC1B;IACA,OAAOA,KAAK;EAChB,CAAC,EAAEZ,GAAG,CAACc,IAAI,CAAC,CAAC,CAAC;EACdC,GAAG,EAAEf,GAAG,CAACK,MAAM,CAAC,CAAC;EACjBW,MAAM,EAAEhB,GAAG,CAACiB,UAAU,CAAChB,UAAU,CAAC;EAClCiB,OAAO,EAAElB,GAAG,CAACK,MAAM,CAAC,CAAC;EACrBc,MAAM,EAAEnB,GAAG,CAACK,MAAM,CAAC,CAAC;EACpBe,QAAQ,EAAEpB,GAAG,CAACK,MAAM,CAAC,CAAC;EACtBgB,IAAI,EAAErB,GAAG,CAACsB,KAAK,CAACtB,GAAG,CAACK,MAAM,CAAC,CAAC,CAAC;EAC7BkB,SAAS,EAAEvB,GAAG,CACTW,UAAU,CAACC,KAAK,IAAI;IACjB,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,YAAYC,IAAI,EAAE;MACpD,OAAO,IAAIA,IAAI,CAACD,KAAK,CAAC;IAC1B;IACA,OAAOY,SAAS;EACpB,CAAC,EAAExB,GAAG,CAACc,IAAI,CAAC,CAAC,CAACN,QAAQ,CAAC,CAAC,CAACiB,OAAO,CAAC,CAAC,CAAC,CAClCjB,QAAQ,CAAC,CAAC,CACViB,OAAO,CAAC,CAAC,CACTC,SAAS,CAACd,KAAK,IAAI;IAChB,OAAOA,KAAK,IAAIY,SAAS;EAC7B,CAAC,CAAC;EACNG,OAAO,EAAE3B,GAAG,CAACK,MAAM,CAAC;AACxB,CAAC,CAAC;AAEF,OAAO,MAAMuB,mBAAmB,GAAG5B,GAAG,CAACsB,KAAK,CAACpB,cAAc,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"hooks/schema.js","sources":["../../src/hooks/schema.ts"],"sourcesContent":["import zod from \"zod\";\nimport { ActionType } from \"~/types.js\";\n\nexport const auditLogSchema = zod.object({\n id: zod.string(),\n createdBy: zod.object({\n id: zod.string(),\n displayName: zod.string().optional(),\n type: zod.string().optional()\n }),\n createdOn: zod.preprocess(value => {\n if (typeof value === \"string\" || value instanceof Date) {\n return new Date(value);\n }\n return value;\n }, zod.date()),\n app: zod.string(),\n action: zod.nativeEnum(ActionType),\n message: zod.string(),\n entity: zod.string(),\n entityId: zod.string(),\n tags: zod.array(zod.string()),\n expiresAt: zod\n .preprocess(value => {\n if (typeof value === \"string\" || value instanceof Date) {\n return new Date(value);\n }\n return undefined;\n }, zod.date().optional().nullish())\n .optional()\n .nullish()\n .transform(value => {\n return value || undefined;\n }),\n content: zod.string()\n});\n\nexport const listAuditLogsSchema = zod.array(auditLogSchema);\n"],"names":["auditLogSchema","zod","value","Date","ActionType","undefined","listAuditLogsSchema"],"mappings":";;AAGO,MAAMA,iBAAiBC,IAAI,MAAM,CAAC;IACrC,IAAIA,IAAI,MAAM;IACd,WAAWA,IAAI,MAAM,CAAC;QAClB,IAAIA,IAAI,MAAM;QACd,aAAaA,IAAI,MAAM,GAAG,QAAQ;QAClC,MAAMA,IAAI,MAAM,GAAG,QAAQ;IAC/B;IACA,WAAWA,IAAI,UAAU,CAACC,CAAAA;QACtB,IAAI,AAAiB,YAAjB,OAAOA,SAAsBA,iBAAiBC,MAC9C,OAAO,IAAIA,KAAKD;QAEpB,OAAOA;IACX,GAAGD,IAAI,IAAI;IACX,KAAKA,IAAI,MAAM;IACf,QAAQA,IAAI,UAAU,CAACG;IACvB,SAASH,IAAI,MAAM;IACnB,QAAQA,IAAI,MAAM;IAClB,UAAUA,IAAI,MAAM;IACpB,MAAMA,IAAI,KAAK,CAACA,IAAI,MAAM;IAC1B,WAAWA,IAAAA,UACI,CAACC,CAAAA;QACR,IAAI,AAAiB,YAAjB,OAAOA,SAAsBA,iBAAiBC,MAC9C,OAAO,IAAIA,KAAKD;IAGxB,GAAGD,IAAI,IAAI,GAAG,QAAQ,GAAG,OAAO,IAC/B,QAAQ,GACR,OAAO,GACP,SAAS,CAACC,CAAAA,QACAA,SAASG;IAExB,SAASJ,IAAI,MAAM;AACvB;AAEO,MAAMK,sBAAsBL,IAAI,KAAK,CAACD"}
@@ -1,6 +1,6 @@
1
1
  import { type IListAuditLogsVariablesWhere } from "../hooks/graphql.js";
2
2
  import type { IAuditLog, IAuditLogsMeta } from "../types.js";
3
- import type { OnSortingChange, Sorting } from "@webiny/ui/DataTable/index.js";
3
+ import type { OnDataTableSortingChange, DataTableSorting } from "@webiny/admin-ui";
4
4
  export interface UseAuditLogs {
5
5
  isListLoading: boolean;
6
6
  isListLoadingMore: boolean;
@@ -10,8 +10,8 @@ export interface UseAuditLogs {
10
10
  setWhere: (where: Partial<IListAuditLogsVariablesWhere>) => void;
11
11
  setLimit: (limit: number) => void;
12
12
  after?: string;
13
- sorting: Sorting;
14
- setSorting: OnSortingChange;
13
+ sorting: DataTableSorting;
14
+ setSorting: OnDataTableSortingChange;
15
15
  showingFilters: boolean;
16
16
  showFilters: () => void;
17
17
  hideFilters: () => void;
@@ -3,100 +3,107 @@ import { useQuery } from "@apollo/react-hooks";
3
3
  import { LIST_AUDIT_LOGS } from "./graphql.js";
4
4
  import { transformRawAuditLog } from "../utils/transformRawAuditLog.js";
5
5
  import { listAuditLogsSchema } from "./schema.js";
6
- export const useAuditLogsList = () => {
7
- const [variables, setVariables] = useState({
8
- where: {},
9
- after: undefined,
10
- sort: "DESC",
11
- limit: 25
12
- });
13
- const setWhere = useCallback(where => {
14
- setVariables(prev => ({
15
- ...prev,
16
- where
17
- }));
18
- }, [variables]);
19
- const setSort = useCallback(sort => {
20
- setVariables(prev => ({
21
- ...prev,
22
- sort
23
- }));
24
- }, [variables]);
25
- const setAfter = useCallback(after => {
26
- setVariables(prev => ({
27
- ...prev,
28
- after
29
- }));
30
- }, [variables]);
31
- const setLimit = useCallback(limit => {
32
- setVariables(prev => ({
33
- ...prev,
34
- limit
35
- }));
36
- }, [variables]);
37
- const [showingFilters, setShowingFilters] = useState(false);
38
- const [acoSorting, setAcoSorting] = useState([]);
39
- useEffect(() => {
40
- const sort = acoSorting[0];
41
- if (!sort) {
42
- return;
43
- }
44
- setSort(sort.desc ? "DESC" : "ASC");
45
- }, [acoSorting]);
46
- const logs = useQuery(LIST_AUDIT_LOGS, {
47
- variables,
48
- fetchPolicy: "network-only"
49
- });
50
- const records = useMemo(() => {
51
- if (!logs.data?.auditLogs.listAuditLogs.data) {
52
- return [];
53
- }
54
- const items = listAuditLogsSchema.safeParse(logs.data.auditLogs.listAuditLogs.data);
55
- if (!items.success) {
56
- console.error(items.error);
57
- return [];
58
- }
59
- return items.data.map(auditLog => {
60
- return transformRawAuditLog({
61
- auditLog
62
- });
6
+ const useAuditLogsList = ()=>{
7
+ const [variables, setVariables] = useState({
8
+ where: {},
9
+ after: void 0,
10
+ sort: "DESC",
11
+ limit: 25
63
12
  });
64
- }, [logs.data?.auditLogs]);
65
- const meta = useMemo(() => {
66
- if (!logs.data?.auditLogs.listAuditLogs.meta) {
67
- return {
68
- hasMoreItems: false,
69
- cursor: null
70
- };
71
- }
72
- return logs.data.auditLogs.listAuditLogs.meta;
73
- }, [logs.data?.auditLogs]);
74
- const sorting = useMemo(() => {
75
- return [{
76
- id: "createdOn",
77
- desc: variables.sort === "DESC"
78
- }];
79
- }, [variables.sort]);
80
- return {
81
- isListLoading: logs.loading,
82
- records,
83
- meta,
84
- listMoreRecords: () => {
85
- setAfter(meta.cursor || undefined);
86
- },
87
- setWhere,
88
- sorting,
89
- setSorting: setAcoSorting,
90
- setLimit,
91
- isListLoadingMore: logs.loading && !!variables.after,
92
- showingFilters,
93
- showFilters: () => {
94
- setShowingFilters(true);
95
- },
96
- hideFilters: () => {
97
- setShowingFilters(false);
98
- }
99
- };
13
+ const [accumulatedRecords, setAccumulatedRecords] = useState([]);
14
+ const setWhere = useCallback((where)=>{
15
+ setVariables((prev)=>({
16
+ ...prev,
17
+ where,
18
+ after: void 0
19
+ }));
20
+ setAccumulatedRecords([]);
21
+ }, []);
22
+ const setSort = useCallback((sort)=>{
23
+ setVariables((prev)=>({
24
+ ...prev,
25
+ sort,
26
+ after: void 0
27
+ }));
28
+ setAccumulatedRecords([]);
29
+ }, []);
30
+ const setAfter = useCallback((after)=>{
31
+ setVariables((prev)=>({
32
+ ...prev,
33
+ after
34
+ }));
35
+ }, []);
36
+ const setLimit = useCallback((limit)=>{
37
+ setVariables((prev)=>({
38
+ ...prev,
39
+ limit
40
+ }));
41
+ }, []);
42
+ const [showingFilters, setShowingFilters] = useState(false);
43
+ const [acoSorting, setAcoSorting] = useState([]);
44
+ useEffect(()=>{
45
+ const sort = acoSorting[0];
46
+ if (!sort) return;
47
+ setSort(sort.desc ? "DESC" : "ASC");
48
+ }, [
49
+ acoSorting
50
+ ]);
51
+ const logs = useQuery(LIST_AUDIT_LOGS, {
52
+ variables,
53
+ fetchPolicy: "network-only"
54
+ });
55
+ useEffect(()=>{
56
+ if (!logs.data?.auditLogs.listAuditLogs.data) return;
57
+ const items = listAuditLogsSchema.safeParse(logs.data.auditLogs.listAuditLogs.data);
58
+ if (!items.success) return void console.error(items.error);
59
+ const newRecords = items.data.map((auditLog)=>transformRawAuditLog({
60
+ auditLog
61
+ }));
62
+ variables.after ? setAccumulatedRecords((prev)=>[
63
+ ...prev,
64
+ ...newRecords
65
+ ]) : setAccumulatedRecords(newRecords);
66
+ }, [
67
+ logs.data?.auditLogs
68
+ ]);
69
+ const meta = useMemo(()=>{
70
+ if (!logs.data?.auditLogs.listAuditLogs.meta) return {
71
+ hasMoreItems: false,
72
+ cursor: null
73
+ };
74
+ return logs.data.auditLogs.listAuditLogs.meta;
75
+ }, [
76
+ logs.data?.auditLogs
77
+ ]);
78
+ const sorting = useMemo(()=>[
79
+ {
80
+ id: "createdOn",
81
+ desc: "DESC" === variables.sort
82
+ }
83
+ ], [
84
+ variables.sort
85
+ ]);
86
+ return {
87
+ isListLoading: logs.loading,
88
+ records: accumulatedRecords,
89
+ meta,
90
+ listMoreRecords: ()=>{
91
+ setAfter(meta.cursor || void 0);
92
+ },
93
+ setWhere,
94
+ sorting,
95
+ setSorting: setAcoSorting,
96
+ setLimit,
97
+ isListLoadingMore: logs.loading && !!variables.after,
98
+ showingFilters,
99
+ showFilters: ()=>{
100
+ setShowingFilters(true);
101
+ },
102
+ hideFilters: ()=>{
103
+ setShowingFilters(false);
104
+ }
105
+ };
100
106
  };
107
+ export { useAuditLogsList };
101
108
 
102
109
  //# sourceMappingURL=useAuditLogsList.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useMemo","useState","useQuery","LIST_AUDIT_LOGS","transformRawAuditLog","listAuditLogsSchema","useAuditLogsList","variables","setVariables","where","after","undefined","sort","limit","setWhere","prev","setSort","setAfter","setLimit","showingFilters","setShowingFilters","acoSorting","setAcoSorting","desc","logs","fetchPolicy","records","data","auditLogs","listAuditLogs","items","safeParse","success","console","error","map","auditLog","meta","hasMoreItems","cursor","sorting","id","isListLoading","loading","listMoreRecords","setSorting","isListLoadingMore","showFilters","hideFilters"],"sources":["useAuditLogsList.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useQuery } from \"@apollo/react-hooks\";\nimport {\n type IListAuditLogsResponse,\n type IListAuditLogsVariablesPartial,\n type IListAuditLogsVariablesWhere,\n LIST_AUDIT_LOGS\n} from \"~/hooks/graphql.js\";\nimport type { IAuditLog, IAuditLogsMeta } from \"~/types.js\";\nimport type { OnSortingChange, Sorting } from \"@webiny/ui/DataTable/index.js\";\nimport { transformRawAuditLog } from \"~/utils/transformRawAuditLog.js\";\nimport { listAuditLogsSchema } from \"~/hooks/schema.js\";\n\nexport interface UseAuditLogs {\n isListLoading: boolean;\n isListLoadingMore: boolean;\n records: IAuditLog[];\n meta: IAuditLogsMeta;\n listMoreRecords: () => void;\n setWhere: (where: Partial<IListAuditLogsVariablesWhere>) => void;\n setLimit: (limit: number) => void;\n after?: string;\n sorting: Sorting;\n setSorting: OnSortingChange;\n showingFilters: boolean;\n showFilters: () => void;\n hideFilters: () => void;\n}\n\nexport const useAuditLogsList = (): UseAuditLogs => {\n const [variables, setVariables] = useState<IListAuditLogsVariablesPartial>({\n where: {},\n after: undefined,\n sort: \"DESC\",\n limit: 25\n });\n\n const setWhere = useCallback(\n (where: Partial<IListAuditLogsVariablesWhere>) => {\n setVariables(prev => ({\n ...prev,\n where\n }));\n },\n [variables]\n );\n const setSort = useCallback(\n (sort: \"ASC\" | \"DESC\") => {\n setVariables(prev => ({\n ...prev,\n sort\n }));\n },\n [variables]\n );\n const setAfter = useCallback(\n (after?: string) => {\n setVariables(prev => ({\n ...prev,\n after\n }));\n },\n [variables]\n );\n const setLimit = useCallback(\n (limit: number) => {\n setVariables(prev => ({\n ...prev,\n limit\n }));\n },\n [variables]\n );\n\n const [showingFilters, setShowingFilters] = useState(false);\n const [acoSorting, setAcoSorting] = useState<Sorting>([]);\n\n useEffect(() => {\n const sort = acoSorting[0];\n if (!sort) {\n return;\n }\n setSort(sort.desc ? \"DESC\" : \"ASC\");\n }, [acoSorting]);\n\n const logs = useQuery<IListAuditLogsResponse, IListAuditLogsVariablesPartial>(LIST_AUDIT_LOGS, {\n variables,\n fetchPolicy: \"network-only\"\n });\n\n const records = useMemo((): IAuditLog[] => {\n if (!logs.data?.auditLogs.listAuditLogs.data) {\n return [];\n }\n const items = listAuditLogsSchema.safeParse(logs.data.auditLogs.listAuditLogs.data);\n if (!items.success) {\n console.error(items.error);\n return [];\n }\n return items.data.map(auditLog => {\n return transformRawAuditLog({\n auditLog\n });\n });\n }, [logs.data?.auditLogs]);\n const meta = useMemo(() => {\n if (!logs.data?.auditLogs.listAuditLogs.meta) {\n return {\n hasMoreItems: false,\n cursor: null\n };\n }\n return logs.data.auditLogs.listAuditLogs.meta;\n }, [logs.data?.auditLogs]);\n\n const sorting = useMemo((): Sorting => {\n return [\n {\n id: \"createdOn\",\n desc: variables.sort === \"DESC\"\n }\n ];\n }, [variables.sort]);\n\n return {\n isListLoading: logs.loading,\n records,\n meta,\n listMoreRecords: () => {\n setAfter(meta.cursor || undefined);\n },\n setWhere,\n sorting,\n setSorting: setAcoSorting,\n setLimit,\n isListLoadingMore: logs.loading && !!variables.after,\n showingFilters,\n showFilters: () => {\n setShowingFilters(true);\n },\n hideFilters: () => {\n setShowingFilters(false);\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"hooks/useAuditLogsList.js","sources":["../../src/hooks/useAuditLogsList.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useQuery } from \"@apollo/react-hooks\";\nimport {\n type IListAuditLogsResponse,\n type IListAuditLogsVariablesPartial,\n type IListAuditLogsVariablesWhere,\n LIST_AUDIT_LOGS\n} from \"~/hooks/graphql.js\";\nimport type { IAuditLog, IAuditLogsMeta } from \"~/types.js\";\nimport type { OnDataTableSortingChange, DataTableSorting } from \"@webiny/admin-ui\";\nimport { transformRawAuditLog } from \"~/utils/transformRawAuditLog.js\";\nimport { listAuditLogsSchema } from \"~/hooks/schema.js\";\n\nexport interface UseAuditLogs {\n isListLoading: boolean;\n isListLoadingMore: boolean;\n records: IAuditLog[];\n meta: IAuditLogsMeta;\n listMoreRecords: () => void;\n setWhere: (where: Partial<IListAuditLogsVariablesWhere>) => void;\n setLimit: (limit: number) => void;\n after?: string;\n sorting: DataTableSorting;\n setSorting: OnDataTableSortingChange;\n showingFilters: boolean;\n showFilters: () => void;\n hideFilters: () => void;\n}\n\nexport const useAuditLogsList = (): UseAuditLogs => {\n const [variables, setVariables] = useState<IListAuditLogsVariablesPartial>({\n where: {},\n after: undefined,\n sort: \"DESC\",\n limit: 25\n });\n\n const [accumulatedRecords, setAccumulatedRecords] = useState<IAuditLog[]>([]);\n\n const setWhere = useCallback((where: Partial<IListAuditLogsVariablesWhere>) => {\n setVariables(prev => ({ ...prev, where, after: undefined }));\n setAccumulatedRecords([]);\n }, []);\n\n const setSort = useCallback((sort: \"ASC\" | \"DESC\") => {\n setVariables(prev => ({ ...prev, sort, after: undefined }));\n setAccumulatedRecords([]);\n }, []);\n\n const setAfter = useCallback((after?: string) => {\n setVariables(prev => ({ ...prev, after }));\n }, []);\n\n const setLimit = useCallback((limit: number) => {\n setVariables(prev => ({ ...prev, limit }));\n }, []);\n\n const [showingFilters, setShowingFilters] = useState(false);\n const [acoSorting, setAcoSorting] = useState<DataTableSorting>([]);\n\n useEffect(() => {\n const sort = acoSorting[0];\n if (!sort) {\n return;\n }\n setSort(sort.desc ? \"DESC\" : \"ASC\");\n }, [acoSorting]);\n\n const logs = useQuery<IListAuditLogsResponse, IListAuditLogsVariablesPartial>(LIST_AUDIT_LOGS, {\n variables,\n fetchPolicy: \"network-only\"\n });\n\n useEffect(() => {\n if (!logs.data?.auditLogs.listAuditLogs.data) {\n return;\n }\n const items = listAuditLogsSchema.safeParse(logs.data.auditLogs.listAuditLogs.data);\n if (!items.success) {\n console.error(items.error);\n return;\n }\n const newRecords = items.data.map(auditLog => transformRawAuditLog({ auditLog }));\n if (variables.after) {\n setAccumulatedRecords(prev => [...prev, ...newRecords]);\n } else {\n setAccumulatedRecords(newRecords);\n }\n }, [logs.data?.auditLogs]);\n\n const meta = useMemo(() => {\n if (!logs.data?.auditLogs.listAuditLogs.meta) {\n return {\n hasMoreItems: false,\n cursor: null\n };\n }\n return logs.data.auditLogs.listAuditLogs.meta;\n }, [logs.data?.auditLogs]);\n\n const sorting = useMemo((): DataTableSorting => {\n return [\n {\n id: \"createdOn\",\n desc: variables.sort === \"DESC\"\n }\n ];\n }, [variables.sort]);\n\n return {\n isListLoading: logs.loading,\n records: accumulatedRecords,\n meta,\n listMoreRecords: () => {\n setAfter(meta.cursor || undefined);\n },\n setWhere,\n sorting,\n setSorting: setAcoSorting,\n setLimit,\n isListLoadingMore: logs.loading && !!variables.after,\n showingFilters,\n showFilters: () => {\n setShowingFilters(true);\n },\n hideFilters: () => {\n setShowingFilters(false);\n }\n };\n};\n"],"names":["useAuditLogsList","variables","setVariables","useState","undefined","accumulatedRecords","setAccumulatedRecords","setWhere","useCallback","where","prev","setSort","sort","setAfter","after","setLimit","limit","showingFilters","setShowingFilters","acoSorting","setAcoSorting","useEffect","logs","useQuery","LIST_AUDIT_LOGS","items","listAuditLogsSchema","console","newRecords","auditLog","transformRawAuditLog","meta","useMemo","sorting"],"mappings":";;;;;AA6BO,MAAMA,mBAAmB;IAC5B,MAAM,CAACC,WAAWC,aAAa,GAAGC,SAAyC;QACvE,OAAO,CAAC;QACR,OAAOC;QACP,MAAM;QACN,OAAO;IACX;IAEA,MAAM,CAACC,oBAAoBC,sBAAsB,GAAGH,SAAsB,EAAE;IAE5E,MAAMI,WAAWC,YAAY,CAACC;QAC1BP,aAAaQ,CAAAA,OAAS;gBAAE,GAAGA,IAAI;gBAAED;gBAAO,OAAOL;YAAU;QACzDE,sBAAsB,EAAE;IAC5B,GAAG,EAAE;IAEL,MAAMK,UAAUH,YAAY,CAACI;QACzBV,aAAaQ,CAAAA,OAAS;gBAAE,GAAGA,IAAI;gBAAEE;gBAAM,OAAOR;YAAU;QACxDE,sBAAsB,EAAE;IAC5B,GAAG,EAAE;IAEL,MAAMO,WAAWL,YAAY,CAACM;QAC1BZ,aAAaQ,CAAAA,OAAS;gBAAE,GAAGA,IAAI;gBAAEI;YAAM;IAC3C,GAAG,EAAE;IAEL,MAAMC,WAAWP,YAAY,CAACQ;QAC1Bd,aAAaQ,CAAAA,OAAS;gBAAE,GAAGA,IAAI;gBAAEM;YAAM;IAC3C,GAAG,EAAE;IAEL,MAAM,CAACC,gBAAgBC,kBAAkB,GAAGf,SAAS;IACrD,MAAM,CAACgB,YAAYC,cAAc,GAAGjB,SAA2B,EAAE;IAEjEkB,UAAU;QACN,MAAMT,OAAOO,UAAU,CAAC,EAAE;QAC1B,IAAI,CAACP,MACD;QAEJD,QAAQC,KAAK,IAAI,GAAG,SAAS;IACjC,GAAG;QAACO;KAAW;IAEf,MAAMG,OAAOC,SAAiEC,iBAAiB;QAC3FvB;QACA,aAAa;IACjB;IAEAoB,UAAU;QACN,IAAI,CAACC,KAAK,IAAI,EAAE,UAAU,cAAc,MACpC;QAEJ,MAAMG,QAAQC,oBAAoB,SAAS,CAACJ,KAAK,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI;QAClF,IAAI,CAACG,MAAM,OAAO,EAAE,YAChBE,QAAQ,KAAK,CAACF,MAAM,KAAK;QAG7B,MAAMG,aAAaH,MAAM,IAAI,CAAC,GAAG,CAACI,CAAAA,WAAYC,qBAAqB;gBAAED;YAAS;QAC1E5B,UAAU,KAAK,GACfK,sBAAsBI,CAAAA,OAAQ;mBAAIA;mBAASkB;aAAW,IAEtDtB,sBAAsBsB;IAE9B,GAAG;QAACN,KAAK,IAAI,EAAE;KAAU;IAEzB,MAAMS,OAAOC,QAAQ;QACjB,IAAI,CAACV,KAAK,IAAI,EAAE,UAAU,cAAc,MACpC,OAAO;YACH,cAAc;YACd,QAAQ;QACZ;QAEJ,OAAOA,KAAK,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI;IACjD,GAAG;QAACA,KAAK,IAAI,EAAE;KAAU;IAEzB,MAAMW,UAAUD,QAAQ,IACb;YACH;gBACI,IAAI;gBACJ,MAAM/B,AAAmB,WAAnBA,UAAU,IAAI;YACxB;SACH,EACF;QAACA,UAAU,IAAI;KAAC;IAEnB,OAAO;QACH,eAAeqB,KAAK,OAAO;QAC3B,SAASjB;QACT0B;QACA,iBAAiB;YACblB,SAASkB,KAAK,MAAM,IAAI3B;QAC5B;QACAG;QACA0B;QACA,YAAYb;QACZL;QACA,mBAAmBO,KAAK,OAAO,IAAI,CAAC,CAACrB,UAAU,KAAK;QACpDgB;QACA,aAAa;YACTC,kBAAkB;QACtB;QACA,aAAa;YACTA,kBAAkB;QACtB;IACJ;AACJ"}
package/index.js CHANGED
@@ -1,45 +1,41 @@
1
- import React from "react";
2
- import { useRouter } from "@webiny/app-admin";
3
- import { ReactComponent as Icon } from "@webiny/icons/manage_search.svg";
4
- import { AdminConfig, AdminLayout, RegisterFeature, useWcp } from "@webiny/app-admin";
5
- import { HasPermission } from "@webiny/app-admin";
1
+ import react from "react";
2
+ import { AdminConfig, AdminLayout, HasPermission, RegisterFeature, useRouter, useWcp } from "@webiny/app-admin";
3
+ import { ReactComponent } from "@webiny/icons/manage_search.svg";
6
4
  import { LogsModule } from "./views/Logs/LogsModule.js";
7
5
  import { SecurityPermission } from "./SecurityPermission.js";
8
6
  import { LogsView } from "./views/Logs/LogsView.js";
9
7
  import { AuditLogsListWithConfig } from "./config/list/index.js";
10
8
  import { Routes } from "./routes.js";
11
9
  import { AlPermissionsFeature } from "./features/permissions/feature.js";
12
- const {
13
- Menu,
14
- Route
15
- } = AdminConfig;
16
- export const AuditLogs = () => {
17
- const wcp = useWcp();
18
- const router = useRouter();
19
- if (!wcp.canUseAuditLogs()) {
20
- return null;
21
- }
22
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(RegisterFeature, {
23
- feature: AlPermissionsFeature
24
- }), /*#__PURE__*/React.createElement(LogsModule, null), /*#__PURE__*/React.createElement(SecurityPermission, null), /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(HasPermission, {
25
- any: ["al.*"]
26
- }, /*#__PURE__*/React.createElement(Menu, {
27
- name: "auditLogs",
28
- pinnable: true,
29
- element: /*#__PURE__*/React.createElement(Menu.Link, {
30
- text: "Audit Logs",
31
- icon: /*#__PURE__*/React.createElement(Menu.Link.Icon, {
32
- element: /*#__PURE__*/React.createElement(Icon, null),
33
- label: "Audit Logs"
34
- }),
35
- to: router.getLink(Routes.AuditLogsList)
36
- })
37
- }), /*#__PURE__*/React.createElement(Route, {
38
- route: Routes.AuditLogsList,
39
- element: /*#__PURE__*/React.createElement(AdminLayout, {
40
- title: "Audit Logs - Logs"
41
- }, /*#__PURE__*/React.createElement(AuditLogsListWithConfig, null, /*#__PURE__*/React.createElement(LogsView, null)))
42
- }))));
10
+ const { Menu: Menu, Route: Route } = AdminConfig;
11
+ const AuditLogs = ()=>{
12
+ const wcp = useWcp();
13
+ const router = useRouter();
14
+ if (!wcp.canUseAuditLogs()) return null;
15
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(RegisterFeature, {
16
+ feature: AlPermissionsFeature
17
+ }), /*#__PURE__*/ react.createElement(LogsModule, null), /*#__PURE__*/ react.createElement(SecurityPermission, null), /*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(HasPermission, {
18
+ any: [
19
+ "al.*"
20
+ ]
21
+ }, /*#__PURE__*/ react.createElement(Menu, {
22
+ name: "auditLogs",
23
+ pinnable: true,
24
+ element: /*#__PURE__*/ react.createElement(Menu.Link, {
25
+ text: "Audit Logs",
26
+ icon: /*#__PURE__*/ react.createElement(Menu.Link.Icon, {
27
+ element: /*#__PURE__*/ react.createElement(ReactComponent, null),
28
+ label: "Audit Logs"
29
+ }),
30
+ to: router.getLink(Routes.AuditLogsList)
31
+ })
32
+ }), /*#__PURE__*/ react.createElement(Route, {
33
+ route: Routes.AuditLogsList,
34
+ element: /*#__PURE__*/ react.createElement(AdminLayout, {
35
+ title: "Audit Logs - Logs"
36
+ }, /*#__PURE__*/ react.createElement(AuditLogsListWithConfig, null, /*#__PURE__*/ react.createElement(LogsView, null)))
37
+ }))));
43
38
  };
39
+ export { AuditLogs };
44
40
 
45
41
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["React","useRouter","ReactComponent","Icon","AdminConfig","AdminLayout","RegisterFeature","useWcp","HasPermission","LogsModule","SecurityPermission","LogsView","AuditLogsListWithConfig","Routes","AlPermissionsFeature","Menu","Route","AuditLogs","wcp","router","canUseAuditLogs","createElement","Fragment","feature","any","name","pinnable","element","Link","text","icon","label","to","getLink","AuditLogsList","route","title"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { ReactComponent as Icon } from \"@webiny/icons/manage_search.svg\";\nimport { AdminConfig, AdminLayout, RegisterFeature, useWcp } from \"@webiny/app-admin\";\nimport { HasPermission } from \"@webiny/app-admin\";\nimport { LogsModule } from \"~/views/Logs/LogsModule.js\";\nimport { SecurityPermission } from \"~/SecurityPermission.js\";\nimport { LogsView } from \"~/views/Logs/LogsView.js\";\nimport { AuditLogsListWithConfig } from \"~/config/list/index.js\";\nimport { Routes } from \"~/routes.js\";\nimport { AlPermissionsFeature } from \"~/features/permissions/feature.js\";\n\nconst { Menu, Route } = AdminConfig;\n\nexport const AuditLogs = () => {\n const wcp = useWcp();\n const router = useRouter();\n\n if (!wcp.canUseAuditLogs()) {\n return null;\n }\n\n return (\n <>\n <RegisterFeature feature={AlPermissionsFeature} />\n <LogsModule />\n <SecurityPermission />\n <AdminConfig>\n <HasPermission any={[\"al.*\"]}>\n <Menu\n name=\"auditLogs\"\n pinnable\n element={\n <Menu.Link\n text={\"Audit Logs\"}\n icon={<Menu.Link.Icon element={<Icon />} label={\"Audit Logs\"} />}\n to={router.getLink(Routes.AuditLogsList)}\n />\n }\n />\n <Route\n route={Routes.AuditLogsList}\n element={\n <AdminLayout title={\"Audit Logs - Logs\"}>\n <AuditLogsListWithConfig>\n <LogsView />\n </AuditLogsListWithConfig>\n </AdminLayout>\n }\n />\n </HasPermission>\n </AdminConfig>\n </>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,cAAc,IAAIC,IAAI,QAAQ,iCAAiC;AACxE,SAASC,WAAW,EAAEC,WAAW,EAAEC,eAAe,EAAEC,MAAM,QAAQ,mBAAmB;AACrF,SAASC,aAAa,QAAQ,mBAAmB;AACjD,SAASC,UAAU;AACnB,SAASC,kBAAkB;AAC3B,SAASC,QAAQ;AACjB,SAASC,uBAAuB;AAChC,SAASC,MAAM;AACf,SAASC,oBAAoB;AAE7B,MAAM;EAAEC,IAAI;EAAEC;AAAM,CAAC,GAAGZ,WAAW;AAEnC,OAAO,MAAMa,SAAS,GAAGA,CAAA,KAAM;EAC3B,MAAMC,GAAG,GAAGX,MAAM,CAAC,CAAC;EACpB,MAAMY,MAAM,GAAGlB,SAAS,CAAC,CAAC;EAE1B,IAAI,CAACiB,GAAG,CAACE,eAAe,CAAC,CAAC,EAAE;IACxB,OAAO,IAAI;EACf;EAEA,oBACIpB,KAAA,CAAAqB,aAAA,CAAArB,KAAA,CAAAsB,QAAA,qBACItB,KAAA,CAAAqB,aAAA,CAACf,eAAe;IAACiB,OAAO,EAAET;EAAqB,CAAE,CAAC,eAClDd,KAAA,CAAAqB,aAAA,CAACZ,UAAU,MAAE,CAAC,eACdT,KAAA,CAAAqB,aAAA,CAACX,kBAAkB,MAAE,CAAC,eACtBV,KAAA,CAAAqB,aAAA,CAACjB,WAAW,qBACRJ,KAAA,CAAAqB,aAAA,CAACb,aAAa;IAACgB,GAAG,EAAE,CAAC,MAAM;EAAE,gBACzBxB,KAAA,CAAAqB,aAAA,CAACN,IAAI;IACDU,IAAI,EAAC,WAAW;IAChBC,QAAQ;IACRC,OAAO,eACH3B,KAAA,CAAAqB,aAAA,CAACN,IAAI,CAACa,IAAI;MACNC,IAAI,EAAE,YAAa;MACnBC,IAAI,eAAE9B,KAAA,CAAAqB,aAAA,CAACN,IAAI,CAACa,IAAI,CAACzB,IAAI;QAACwB,OAAO,eAAE3B,KAAA,CAAAqB,aAAA,CAAClB,IAAI,MAAE,CAAE;QAAC4B,KAAK,EAAE;MAAa,CAAE,CAAE;MACjEC,EAAE,EAAEb,MAAM,CAACc,OAAO,CAACpB,MAAM,CAACqB,aAAa;IAAE,CAC5C;EACJ,CACJ,CAAC,eACFlC,KAAA,CAAAqB,aAAA,CAACL,KAAK;IACFmB,KAAK,EAAEtB,MAAM,CAACqB,aAAc;IAC5BP,OAAO,eACH3B,KAAA,CAAAqB,aAAA,CAAChB,WAAW;MAAC+B,KAAK,EAAE;IAAoB,gBACpCpC,KAAA,CAAAqB,aAAA,CAACT,uBAAuB,qBACpBZ,KAAA,CAAAqB,aAAA,CAACV,QAAQ,MAAE,CACU,CAChB;EAChB,CACJ,CACU,CACN,CACf,CAAC;AAEX,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { ReactComponent as Icon } from \"@webiny/icons/manage_search.svg\";\nimport { AdminConfig, AdminLayout, RegisterFeature, useWcp } from \"@webiny/app-admin\";\nimport { HasPermission } from \"@webiny/app-admin\";\nimport { LogsModule } from \"~/views/Logs/LogsModule.js\";\nimport { SecurityPermission } from \"~/SecurityPermission.js\";\nimport { LogsView } from \"~/views/Logs/LogsView.js\";\nimport { AuditLogsListWithConfig } from \"~/config/list/index.js\";\nimport { Routes } from \"~/routes.js\";\nimport { AlPermissionsFeature } from \"~/features/permissions/feature.js\";\n\nconst { Menu, Route } = AdminConfig;\n\nexport const AuditLogs = () => {\n const wcp = useWcp();\n const router = useRouter();\n\n if (!wcp.canUseAuditLogs()) {\n return null;\n }\n\n return (\n <>\n <RegisterFeature feature={AlPermissionsFeature} />\n <LogsModule />\n <SecurityPermission />\n <AdminConfig>\n <HasPermission any={[\"al.*\"]}>\n <Menu\n name=\"auditLogs\"\n pinnable\n element={\n <Menu.Link\n text={\"Audit Logs\"}\n icon={<Menu.Link.Icon element={<Icon />} label={\"Audit Logs\"} />}\n to={router.getLink(Routes.AuditLogsList)}\n />\n }\n />\n <Route\n route={Routes.AuditLogsList}\n element={\n <AdminLayout title={\"Audit Logs - Logs\"}>\n <AuditLogsListWithConfig>\n <LogsView />\n </AuditLogsListWithConfig>\n </AdminLayout>\n }\n />\n </HasPermission>\n </AdminConfig>\n </>\n );\n};\n"],"names":["Menu","Route","AdminConfig","AuditLogs","wcp","useWcp","router","useRouter","RegisterFeature","AlPermissionsFeature","LogsModule","SecurityPermission","HasPermission","Icon","Routes","AdminLayout","AuditLogsListWithConfig","LogsView"],"mappings":";;;;;;;;;AAYA,MAAM,EAAEA,MAAAA,IAAI,EAAEC,OAAAA,KAAK,EAAE,GAAGC;AAEjB,MAAMC,YAAY;IACrB,MAAMC,MAAMC;IACZ,MAAMC,SAASC;IAEf,IAAI,CAACH,IAAI,eAAe,IACpB,OAAO;IAGX,OAAO,WAAP,GACI,wDACI,oBAACI,iBAAeA;QAAC,SAASC;sBAC1B,oBAACC,YAAUA,OAAAA,WAAAA,GACX,oBAACC,oBAAkBA,OAAAA,WAAAA,GACnB,oBAACT,aAAWA,MAAAA,WAAAA,GACR,oBAACU,eAAaA;QAAC,KAAK;YAAC;SAAO;qBACxB,oBAACZ,MAAIA;QACD,MAAK;QACL;QACA,uBACI,oBAACA,KAAK,IAAI;YACN,MAAM;YACN,oBAAM,oBAACA,KAAK,IAAI,CAAC,IAAI;gBAAC,uBAAS,oBAACa,gBAAIA;gBAAK,OAAO;;YAChD,IAAIP,OAAO,OAAO,CAACQ,OAAO,aAAa;;sBAInD,oBAACb,OAAKA;QACF,OAAOa,OAAO,aAAa;QAC3B,uBACI,oBAACC,aAAWA;YAAC,OAAO;yBAChB,oBAACC,yBAAuBA,MAAAA,WAAAA,GACpB,oBAACC,UAAQA;;AAS7C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-audit-logs",
3
- "version": "6.3.0",
3
+ "version": "6.4.0-beta.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -17,25 +17,25 @@
17
17
  "@emotion/css": "11.13.5",
18
18
  "@emotion/react": "11.14.0",
19
19
  "@emotion/styled": "11.14.1",
20
- "@webiny/app": "6.3.0",
21
- "@webiny/app-admin": "6.3.0",
22
- "@webiny/common-audit-logs": "6.3.0",
23
- "@webiny/form": "6.3.0",
24
- "@webiny/icons": "6.3.0",
25
- "@webiny/react-composition": "6.3.0",
26
- "@webiny/react-properties": "6.3.0",
27
- "@webiny/ui": "6.3.0",
20
+ "@webiny/admin-ui": "6.4.0-beta.1",
21
+ "@webiny/app": "6.4.0-beta.1",
22
+ "@webiny/app-admin": "6.4.0-beta.1",
23
+ "@webiny/common-audit-logs": "6.4.0-beta.1",
24
+ "@webiny/form": "6.4.0-beta.1",
25
+ "@webiny/icons": "6.4.0-beta.1",
26
+ "@webiny/react-composition": "6.4.0-beta.1",
27
+ "@webiny/react-properties": "6.4.0-beta.1",
28
28
  "date-fns": "4.1.0",
29
29
  "graphql-tag": "2.12.6",
30
30
  "lodash": "4.18.1",
31
- "zod": "4.3.6"
31
+ "zod": "4.4.3"
32
32
  },
33
33
  "peerDependencies": {
34
34
  "react": "18.3.1"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/react": "18.3.28",
38
- "@webiny/build-tools": "6.3.0",
38
+ "@webiny/build-tools": "6.4.0-beta.1",
39
39
  "execa": "5.1.1",
40
40
  "rimraf": "6.1.3",
41
41
  "typescript": "6.0.3"
@@ -44,5 +44,5 @@
44
44
  "access": "public",
45
45
  "directory": "dist"
46
46
  },
47
- "gitHead": "7cefe15431dbd65504e1f58147dc9e55bcbfa693"
47
+ "gitHead": "73237b8243693038c072bae1c0b783387448cbbe"
48
48
  }
package/routes.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import { Route } from "@webiny/app-admin";
2
- export const Routes = {
3
- AuditLogsList: new Route({
4
- name: "AuditLogs/List",
5
- path: "/audit-logs"
6
- })
2
+ const Routes = {
3
+ AuditLogsList: new Route({
4
+ name: "AuditLogs/List",
5
+ path: "/audit-logs"
6
+ })
7
7
  };
8
+ export { Routes };
8
9
 
9
10
  //# sourceMappingURL=routes.js.map
package/routes.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["Route","Routes","AuditLogsList","name","path"],"sources":["routes.ts"],"sourcesContent":["import { Route } from \"@webiny/app-admin\";\n\nexport const Routes = {\n AuditLogsList: new Route({\n name: \"AuditLogs/List\",\n path: \"/audit-logs\"\n })\n};\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,mBAAmB;AAEzC,OAAO,MAAMC,MAAM,GAAG;EAClBC,aAAa,EAAE,IAAIF,KAAK,CAAC;IACrBG,IAAI,EAAE,gBAAgB;IACtBC,IAAI,EAAE;EACV,CAAC;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"routes.js","sources":["../src/routes.ts"],"sourcesContent":["import { Route } from \"@webiny/app-admin\";\n\nexport const Routes = {\n AuditLogsList: new Route({\n name: \"AuditLogs/List\",\n path: \"/audit-logs\"\n })\n};\n"],"names":["Routes","Route"],"mappings":";AAEO,MAAMA,SAAS;IAClB,eAAe,IAAIC,MAAM;QACrB,MAAM;QACN,MAAM;IACV;AACJ"}
package/types.js CHANGED
@@ -1,4 +1 @@
1
- import { ActionType } from "@webiny/common-audit-logs";
2
- export { ActionType };
3
-
4
- //# sourceMappingURL=types.js.map
1
+ export { ActionType } from "@webiny/common-audit-logs";
@@ -1,28 +1,26 @@
1
1
  import { apps } from "@webiny/common-audit-logs";
2
- export const transformRawAuditLog = params => {
3
- const {
4
- auditLog
5
- } = params;
6
- const app = apps.find(app => app.app === auditLog.app);
7
- const entity = app?.entities?.find(entity => entity.type === auditLog.entity);
8
- const action = entity?.actions?.find(action => action.type === auditLog.action);
9
- return {
10
- ...auditLog,
11
- createdBy: {
12
- ...auditLog.createdBy,
13
- // TODO load users?
14
- role: "-"
15
- },
16
- action: {
17
- label: action?.displayName || "-",
18
- value: auditLog.action
19
- },
20
- entity: {
21
- label: entity?.displayName || "-",
22
- value: auditLog.entity,
23
- link: entity?.linkToEntity && entity.linkToEntity(encodeURIComponent(auditLog.entityId))
24
- }
25
- };
2
+ const transformRawAuditLog = (params)=>{
3
+ const { auditLog } = params;
4
+ const app = apps.find((app)=>app.app === auditLog.app);
5
+ const entity = app?.entities?.find((entity)=>entity.type === auditLog.entity);
6
+ const action = entity?.actions?.find((action)=>action.type === auditLog.action);
7
+ return {
8
+ ...auditLog,
9
+ createdBy: {
10
+ ...auditLog.createdBy,
11
+ role: "-"
12
+ },
13
+ action: {
14
+ label: action?.displayName || "-",
15
+ value: auditLog.action
16
+ },
17
+ entity: {
18
+ label: entity?.displayName || "-",
19
+ value: auditLog.entity,
20
+ link: entity?.linkToEntity && entity.linkToEntity(encodeURIComponent(auditLog.entityId))
21
+ }
22
+ };
26
23
  };
24
+ export { transformRawAuditLog };
27
25
 
28
26
  //# sourceMappingURL=transformRawAuditLog.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["apps","transformRawAuditLog","params","auditLog","app","find","entity","entities","type","action","actions","createdBy","role","label","displayName","value","link","linkToEntity","encodeURIComponent","entityId"],"sources":["transformRawAuditLog.ts"],"sourcesContent":["import { apps } from \"@webiny/common-audit-logs\";\nimport type { IAuditLog, IAuditLogRaw } from \"~/types.js\";\n\nexport interface ITransformRawAuditLogParams {\n auditLog: IAuditLogRaw;\n}\n\nexport const transformRawAuditLog = (params: ITransformRawAuditLogParams): IAuditLog => {\n const { auditLog } = params;\n\n const app = apps.find(app => app.app === auditLog.app);\n const entity = app?.entities?.find(entity => entity.type === auditLog.entity);\n const action = entity?.actions?.find(action => action.type === auditLog.action);\n return {\n ...auditLog,\n createdBy: {\n ...auditLog.createdBy,\n // TODO load users?\n role: \"-\"\n },\n action: {\n label: action?.displayName || \"-\",\n value: auditLog.action\n },\n entity: {\n label: entity?.displayName || \"-\",\n value: auditLog.entity,\n link: entity?.linkToEntity && entity.linkToEntity(encodeURIComponent(auditLog.entityId))\n }\n };\n};\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,2BAA2B;AAOhD,OAAO,MAAMC,oBAAoB,GAAIC,MAAmC,IAAgB;EACpF,MAAM;IAAEC;EAAS,CAAC,GAAGD,MAAM;EAE3B,MAAME,GAAG,GAAGJ,IAAI,CAACK,IAAI,CAACD,GAAG,IAAIA,GAAG,CAACA,GAAG,KAAKD,QAAQ,CAACC,GAAG,CAAC;EACtD,MAAME,MAAM,GAAGF,GAAG,EAAEG,QAAQ,EAAEF,IAAI,CAACC,MAAM,IAAIA,MAAM,CAACE,IAAI,KAAKL,QAAQ,CAACG,MAAM,CAAC;EAC7E,MAAMG,MAAM,GAAGH,MAAM,EAAEI,OAAO,EAAEL,IAAI,CAACI,MAAM,IAAIA,MAAM,CAACD,IAAI,KAAKL,QAAQ,CAACM,MAAM,CAAC;EAC/E,OAAO;IACH,GAAGN,QAAQ;IACXQ,SAAS,EAAE;MACP,GAAGR,QAAQ,CAACQ,SAAS;MACrB;MACAC,IAAI,EAAE;IACV,CAAC;IACDH,MAAM,EAAE;MACJI,KAAK,EAAEJ,MAAM,EAAEK,WAAW,IAAI,GAAG;MACjCC,KAAK,EAAEZ,QAAQ,CAACM;IACpB,CAAC;IACDH,MAAM,EAAE;MACJO,KAAK,EAAEP,MAAM,EAAEQ,WAAW,IAAI,GAAG;MACjCC,KAAK,EAAEZ,QAAQ,CAACG,MAAM;MACtBU,IAAI,EAAEV,MAAM,EAAEW,YAAY,IAAIX,MAAM,CAACW,YAAY,CAACC,kBAAkB,CAACf,QAAQ,CAACgB,QAAQ,CAAC;IAC3F;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"utils/transformRawAuditLog.js","sources":["../../src/utils/transformRawAuditLog.ts"],"sourcesContent":["import { apps } from \"@webiny/common-audit-logs\";\nimport type { IAuditLog, IAuditLogRaw } from \"~/types.js\";\n\nexport interface ITransformRawAuditLogParams {\n auditLog: IAuditLogRaw;\n}\n\nexport const transformRawAuditLog = (params: ITransformRawAuditLogParams): IAuditLog => {\n const { auditLog } = params;\n\n const app = apps.find(app => app.app === auditLog.app);\n const entity = app?.entities?.find(entity => entity.type === auditLog.entity);\n const action = entity?.actions?.find(action => action.type === auditLog.action);\n return {\n ...auditLog,\n createdBy: {\n ...auditLog.createdBy,\n // TODO load users?\n role: \"-\"\n },\n action: {\n label: action?.displayName || \"-\",\n value: auditLog.action\n },\n entity: {\n label: entity?.displayName || \"-\",\n value: auditLog.entity,\n link: entity?.linkToEntity && entity.linkToEntity(encodeURIComponent(auditLog.entityId))\n }\n };\n};\n"],"names":["transformRawAuditLog","params","auditLog","app","apps","entity","action","encodeURIComponent"],"mappings":";AAOO,MAAMA,uBAAuB,CAACC;IACjC,MAAM,EAAEC,QAAQ,EAAE,GAAGD;IAErB,MAAME,MAAMC,KAAK,IAAI,CAACD,CAAAA,MAAOA,IAAI,GAAG,KAAKD,SAAS,GAAG;IACrD,MAAMG,SAASF,KAAK,UAAU,KAAKE,CAAAA,SAAUA,OAAO,IAAI,KAAKH,SAAS,MAAM;IAC5E,MAAMI,SAASD,QAAQ,SAAS,KAAKC,CAAAA,SAAUA,OAAO,IAAI,KAAKJ,SAAS,MAAM;IAC9E,OAAO;QACH,GAAGA,QAAQ;QACX,WAAW;YACP,GAAGA,SAAS,SAAS;YAErB,MAAM;QACV;QACA,QAAQ;YACJ,OAAOI,QAAQ,eAAe;YAC9B,OAAOJ,SAAS,MAAM;QAC1B;QACA,QAAQ;YACJ,OAAOG,QAAQ,eAAe;YAC9B,OAAOH,SAAS,MAAM;YACtB,MAAMG,QAAQ,gBAAgBA,OAAO,YAAY,CAACE,mBAAmBL,SAAS,QAAQ;QAC1F;IACJ;AACJ"}