@webiny/api-audit-logs 6.4.11 → 6.6.0-alpha.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 (109) hide show
  1. package/AuditLogsFeature.d.ts +8 -0
  2. package/AuditLogsFeature.js +42 -0
  3. package/AuditLogsFeature.js.map +1 -0
  4. package/abstractions.d.ts +8 -3
  5. package/abstractions.js +2 -1
  6. package/abstractions.js.map +1 -1
  7. package/context/AuditLogsContextValue.js +5 -3
  8. package/context/AuditLogsContextValue.js.map +1 -1
  9. package/graphql/AuditLogsGraphQLSchema.d.ts +9 -0
  10. package/graphql/AuditLogsGraphQLSchema.js +134 -0
  11. package/graphql/AuditLogsGraphQLSchema.js.map +1 -0
  12. package/index.d.ts +2 -8
  13. package/index.js +1 -25
  14. package/package.json +24 -24
  15. package/storage/types.d.ts +0 -35
  16. package/subscriptions/aco/handlers/AuditLogFolderAfterDeleteHandler.js +4 -7
  17. package/subscriptions/aco/handlers/AuditLogFolderAfterDeleteHandler.js.map +1 -1
  18. package/subscriptions/ai/handlers/AuditLogAiAfterGenerateTextHandler.d.ts +11 -0
  19. package/subscriptions/ai/handlers/AuditLogAiAfterGenerateTextHandler.js +41 -0
  20. package/subscriptions/ai/handlers/AuditLogAiAfterGenerateTextHandler.js.map +1 -0
  21. package/subscriptions/ai/handlers/AuditLogAiBeforeGenerateTextHandler.d.ts +11 -0
  22. package/subscriptions/ai/handlers/AuditLogAiBeforeGenerateTextHandler.js +38 -0
  23. package/subscriptions/ai/handlers/AuditLogAiBeforeGenerateTextHandler.js.map +1 -0
  24. package/subscriptions/ai/handlers/AuditLogAiGenerateTextErrorHandler.d.ts +11 -0
  25. package/subscriptions/ai/handlers/AuditLogAiGenerateTextErrorHandler.js +40 -0
  26. package/subscriptions/ai/handlers/AuditLogAiGenerateTextErrorHandler.js.map +1 -0
  27. package/subscriptions/ai/index.d.ts +2 -0
  28. package/subscriptions/ai/index.js +11 -0
  29. package/subscriptions/ai/index.js.map +1 -0
  30. package/subscriptions/index.js +2 -0
  31. package/subscriptions/index.js.map +1 -1
  32. package/types.d.ts +1 -2
  33. package/utils/getAuditConfig.js +4 -2
  34. package/utils/getAuditConfig.js.map +1 -1
  35. package/context/index.d.ts +0 -9
  36. package/context/index.js +0 -31
  37. package/context/index.js.map +0 -1
  38. package/graphql/schema.d.ts +0 -3
  39. package/graphql/schema.js +0 -115
  40. package/graphql/schema.js.map +0 -1
  41. package/index.js.map +0 -1
  42. package/storage/AccessPatternHandler.d.ts +0 -14
  43. package/storage/AccessPatternHandler.js +0 -39
  44. package/storage/AccessPatternHandler.js.map +0 -1
  45. package/storage/Converter.d.ts +0 -16
  46. package/storage/Converter.js +0 -49
  47. package/storage/Converter.js.map +0 -1
  48. package/storage/Storage.d.ts +0 -18
  49. package/storage/Storage.js +0 -81
  50. package/storage/Storage.js.map +0 -1
  51. package/storage/abstractions/AccessPattern.d.ts +0 -24
  52. package/storage/abstractions/AccessPattern.js +0 -0
  53. package/storage/abstractions/AccessPatternHandler.d.ts +0 -13
  54. package/storage/abstractions/AccessPatternHandler.js +0 -0
  55. package/storage/abstractions/Converter.d.ts +0 -6
  56. package/storage/abstractions/Converter.js +0 -0
  57. package/storage/accessPatterns/AppAccessPattern.d.ts +0 -9
  58. package/storage/accessPatterns/AppAccessPattern.js +0 -35
  59. package/storage/accessPatterns/AppAccessPattern.js.map +0 -1
  60. package/storage/accessPatterns/AppCreatedByAccessPattern.d.ts +0 -9
  61. package/storage/accessPatterns/AppCreatedByAccessPattern.js +0 -38
  62. package/storage/accessPatterns/AppCreatedByAccessPattern.js.map +0 -1
  63. package/storage/accessPatterns/AppEntityAccessPattern.d.ts +0 -9
  64. package/storage/accessPatterns/AppEntityAccessPattern.js +0 -35
  65. package/storage/accessPatterns/AppEntityAccessPattern.js.map +0 -1
  66. package/storage/accessPatterns/AppEntityActionAccessPattern.d.ts +0 -9
  67. package/storage/accessPatterns/AppEntityActionAccessPattern.js +0 -35
  68. package/storage/accessPatterns/AppEntityActionAccessPattern.js.map +0 -1
  69. package/storage/accessPatterns/AppEntityActionCreatedByAccessPattern.d.ts +0 -9
  70. package/storage/accessPatterns/AppEntityActionCreatedByAccessPattern.js +0 -38
  71. package/storage/accessPatterns/AppEntityActionCreatedByAccessPattern.js.map +0 -1
  72. package/storage/accessPatterns/AppEntityCreatedByAccessPattern.d.ts +0 -9
  73. package/storage/accessPatterns/AppEntityCreatedByAccessPattern.js +0 -38
  74. package/storage/accessPatterns/AppEntityCreatedByAccessPattern.js.map +0 -1
  75. package/storage/accessPatterns/BaseAccessPattern.d.ts +0 -32
  76. package/storage/accessPatterns/BaseAccessPattern.js +0 -60
  77. package/storage/accessPatterns/BaseAccessPattern.js.map +0 -1
  78. package/storage/accessPatterns/CreatedByAccessPattern.d.ts +0 -9
  79. package/storage/accessPatterns/CreatedByAccessPattern.js +0 -38
  80. package/storage/accessPatterns/CreatedByAccessPattern.js.map +0 -1
  81. package/storage/accessPatterns/CreatedOnAccessPattern.d.ts +0 -9
  82. package/storage/accessPatterns/CreatedOnAccessPattern.js +0 -38
  83. package/storage/accessPatterns/CreatedOnAccessPattern.js.map +0 -1
  84. package/storage/accessPatterns/DefaultAccessPattern.d.ts +0 -15
  85. package/storage/accessPatterns/DefaultAccessPattern.js +0 -35
  86. package/storage/accessPatterns/DefaultAccessPattern.js.map +0 -1
  87. package/storage/accessPatterns/EntityIdAccessPattern.d.ts +0 -9
  88. package/storage/accessPatterns/EntityIdAccessPattern.js +0 -38
  89. package/storage/accessPatterns/EntityIdAccessPattern.js.map +0 -1
  90. package/storage/accessPatterns/index.d.ts +0 -6
  91. package/storage/accessPatterns/index.js +0 -57
  92. package/storage/accessPatterns/index.js.map +0 -1
  93. package/storage/cursorSchema.d.ts +0 -4
  94. package/storage/cursorSchema.js +0 -22
  95. package/storage/cursorSchema.js.map +0 -1
  96. package/storage/entity.d.ts +0 -36
  97. package/storage/entity.js +0 -120
  98. package/storage/entity.js.map +0 -1
  99. package/storage/results/ListErrorResult.d.ts +0 -10
  100. package/storage/results/ListErrorResult.js +0 -12
  101. package/storage/results/ListErrorResult.js.map +0 -1
  102. package/storage/results/ListSuccessResult.d.ts +0 -14
  103. package/storage/results/ListSuccessResult.js +0 -17
  104. package/storage/results/ListSuccessResult.js.map +0 -1
  105. package/storage/results/index.d.ts +0 -2
  106. package/storage/results/index.js +0 -2
  107. package/storage/startKey.d.ts +0 -6
  108. package/storage/startKey.js +0 -8
  109. package/storage/startKey.js.map +0 -1
@@ -0,0 +1,38 @@
1
+ import _webiny_error from "@webiny/error";
2
+ import { AiBeforeGenerateTextEventHandler } from "@webiny/api-core/features/ai/index.js";
3
+ import { AuditLogsContext } from "../../../abstractions.js";
4
+ import { AUDIT } from "../../../config.js";
5
+ import { getAuditConfig } from "../../../utils/getAuditConfig.js";
6
+ class AuditLogAiBeforeGenerateTextHandlerImpl {
7
+ constructor(context){
8
+ this.context = context;
9
+ }
10
+ async handle(event) {
11
+ try {
12
+ const { requestId, params } = event.payload;
13
+ const createAuditLog = getAuditConfig(AUDIT.AI.TEXT.GENERATE);
14
+ await createAuditLog("AI Generate Text", {
15
+ before: {
16
+ model: params.model,
17
+ system: params.system,
18
+ prompt: params.prompt,
19
+ tools: params.tools ? Object.keys(params.tools) : []
20
+ }
21
+ }, requestId, this.context);
22
+ } catch (error) {
23
+ throw _webiny_error.from(error, {
24
+ message: "Error while executing AuditLogAiBeforeGenerateTextHandler",
25
+ code: "AUDIT_LOGS_AI_BEFORE_GENERATE_TEXT"
26
+ });
27
+ }
28
+ }
29
+ }
30
+ const AuditLogAiBeforeGenerateTextHandler = AiBeforeGenerateTextEventHandler.createImplementation({
31
+ implementation: AuditLogAiBeforeGenerateTextHandlerImpl,
32
+ dependencies: [
33
+ AuditLogsContext
34
+ ]
35
+ });
36
+ export { AuditLogAiBeforeGenerateTextHandler };
37
+
38
+ //# sourceMappingURL=AuditLogAiBeforeGenerateTextHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions/ai/handlers/AuditLogAiBeforeGenerateTextHandler.js","sources":["../../../../src/subscriptions/ai/handlers/AuditLogAiBeforeGenerateTextHandler.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { AiBeforeGenerateTextEventHandler } from \"@webiny/api-core/features/ai/index.js\";\nimport { AuditLogsContext } from \"~/abstractions.js\";\nimport { AUDIT } from \"~/config.js\";\nimport { getAuditConfig } from \"~/utils/getAuditConfig.js\";\n\nclass AuditLogAiBeforeGenerateTextHandlerImpl\n implements AiBeforeGenerateTextEventHandler.Interface\n{\n constructor(private context: AuditLogsContext.Interface) {}\n\n async handle(event: AiBeforeGenerateTextEventHandler.Event): Promise<void> {\n try {\n const { requestId, params } = event.payload;\n const createAuditLog = getAuditConfig(AUDIT.AI.TEXT.GENERATE);\n\n await createAuditLog(\n \"AI Generate Text\",\n {\n before: {\n model: params.model,\n system: params.system,\n prompt: params.prompt,\n tools: params.tools ? Object.keys(params.tools) : []\n }\n },\n requestId,\n this.context\n );\n } catch (error) {\n throw WebinyError.from(error, {\n message: \"Error while executing AuditLogAiBeforeGenerateTextHandler\",\n code: \"AUDIT_LOGS_AI_BEFORE_GENERATE_TEXT\"\n });\n }\n }\n}\n\nexport const AuditLogAiBeforeGenerateTextHandler =\n AiBeforeGenerateTextEventHandler.createImplementation({\n implementation: AuditLogAiBeforeGenerateTextHandlerImpl,\n dependencies: [AuditLogsContext]\n });\n"],"names":["AuditLogAiBeforeGenerateTextHandlerImpl","context","event","requestId","params","createAuditLog","getAuditConfig","AUDIT","Object","error","WebinyError","AuditLogAiBeforeGenerateTextHandler","AiBeforeGenerateTextEventHandler","AuditLogsContext"],"mappings":";;;;;AAMA,MAAMA;IAGF,YAAoBC,OAAmC,CAAE;aAArCA,OAAO,GAAPA;IAAsC;IAE1D,MAAM,OAAOC,KAA6C,EAAiB;QACvE,IAAI;YACA,MAAM,EAAEC,SAAS,EAAEC,MAAM,EAAE,GAAGF,MAAM,OAAO;YAC3C,MAAMG,iBAAiBC,eAAeC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ;YAE5D,MAAMF,eACF,oBACA;gBACI,QAAQ;oBACJ,OAAOD,OAAO,KAAK;oBACnB,QAAQA,OAAO,MAAM;oBACrB,QAAQA,OAAO,MAAM;oBACrB,OAAOA,OAAO,KAAK,GAAGI,OAAO,IAAI,CAACJ,OAAO,KAAK,IAAI,EAAE;gBACxD;YACJ,GACAD,WACA,IAAI,CAAC,OAAO;QAEpB,EAAE,OAAOM,OAAO;YACZ,MAAMC,cAAAA,IAAgB,CAACD,OAAO;gBAC1B,SAAS;gBACT,MAAM;YACV;QACJ;IACJ;AACJ;AAEO,MAAME,sCACTC,iCAAiC,oBAAoB,CAAC;IAClD,gBAAgBZ;IAChB,cAAc;QAACa;KAAiB;AACpC"}
@@ -0,0 +1,11 @@
1
+ import { AiGenerateTextErrorEventHandler } from "@webiny/api-core/features/ai/index.js";
2
+ import { AuditLogsContext } from "../../../abstractions.js";
3
+ declare class AuditLogAiGenerateTextErrorHandlerImpl implements AiGenerateTextErrorEventHandler.Interface {
4
+ private context;
5
+ constructor(context: AuditLogsContext.Interface);
6
+ handle(event: AiGenerateTextErrorEventHandler.Event): Promise<void>;
7
+ }
8
+ export declare const AuditLogAiGenerateTextErrorHandler: typeof AuditLogAiGenerateTextErrorHandlerImpl & {
9
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-core/features/ai/events").AiGenerateTextErrorEvent>>;
10
+ };
11
+ export {};
@@ -0,0 +1,40 @@
1
+ import _webiny_error from "@webiny/error";
2
+ import { AiGenerateTextErrorEventHandler } from "@webiny/api-core/features/ai/index.js";
3
+ import { AuditLogsContext } from "../../../abstractions.js";
4
+ import { AUDIT } from "../../../config.js";
5
+ import { getAuditConfig } from "../../../utils/getAuditConfig.js";
6
+ class AuditLogAiGenerateTextErrorHandlerImpl {
7
+ constructor(context){
8
+ this.context = context;
9
+ }
10
+ async handle(event) {
11
+ try {
12
+ const { requestId, error, duration } = event.payload;
13
+ const createAuditLog = getAuditConfig(AUDIT.AI.TEXT.GENERATE);
14
+ await createAuditLog("AI Generate Text", {
15
+ after: {
16
+ status: "error",
17
+ duration: Math.round(duration),
18
+ error: {
19
+ message: error.message,
20
+ name: error.name
21
+ }
22
+ }
23
+ }, requestId, this.context);
24
+ } catch (err) {
25
+ throw _webiny_error.from(err, {
26
+ message: "Error while executing AuditLogAiGenerateTextErrorHandler",
27
+ code: "AUDIT_LOGS_AI_GENERATE_TEXT_ERROR"
28
+ });
29
+ }
30
+ }
31
+ }
32
+ const AuditLogAiGenerateTextErrorHandler = AiGenerateTextErrorEventHandler.createImplementation({
33
+ implementation: AuditLogAiGenerateTextErrorHandlerImpl,
34
+ dependencies: [
35
+ AuditLogsContext
36
+ ]
37
+ });
38
+ export { AuditLogAiGenerateTextErrorHandler };
39
+
40
+ //# sourceMappingURL=AuditLogAiGenerateTextErrorHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions/ai/handlers/AuditLogAiGenerateTextErrorHandler.js","sources":["../../../../src/subscriptions/ai/handlers/AuditLogAiGenerateTextErrorHandler.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { AiGenerateTextErrorEventHandler } from \"@webiny/api-core/features/ai/index.js\";\nimport { AuditLogsContext } from \"~/abstractions.js\";\nimport { AUDIT } from \"~/config.js\";\nimport { getAuditConfig } from \"~/utils/getAuditConfig.js\";\n\nclass AuditLogAiGenerateTextErrorHandlerImpl implements AiGenerateTextErrorEventHandler.Interface {\n constructor(private context: AuditLogsContext.Interface) {}\n\n async handle(event: AiGenerateTextErrorEventHandler.Event): Promise<void> {\n try {\n const { requestId, error, duration } = event.payload;\n const createAuditLog = getAuditConfig(AUDIT.AI.TEXT.GENERATE);\n\n await createAuditLog(\n \"AI Generate Text\",\n {\n after: {\n status: \"error\",\n duration: Math.round(duration),\n error: {\n message: error.message,\n name: error.name\n }\n }\n },\n requestId,\n this.context\n );\n } catch (err) {\n throw WebinyError.from(err, {\n message: \"Error while executing AuditLogAiGenerateTextErrorHandler\",\n code: \"AUDIT_LOGS_AI_GENERATE_TEXT_ERROR\"\n });\n }\n }\n}\n\nexport const AuditLogAiGenerateTextErrorHandler =\n AiGenerateTextErrorEventHandler.createImplementation({\n implementation: AuditLogAiGenerateTextErrorHandlerImpl,\n dependencies: [AuditLogsContext]\n });\n"],"names":["AuditLogAiGenerateTextErrorHandlerImpl","context","event","requestId","error","duration","createAuditLog","getAuditConfig","AUDIT","Math","err","WebinyError","AuditLogAiGenerateTextErrorHandler","AiGenerateTextErrorEventHandler","AuditLogsContext"],"mappings":";;;;;AAMA,MAAMA;IACF,YAAoBC,OAAmC,CAAE;aAArCA,OAAO,GAAPA;IAAsC;IAE1D,MAAM,OAAOC,KAA4C,EAAiB;QACtE,IAAI;YACA,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAGH,MAAM,OAAO;YACpD,MAAMI,iBAAiBC,eAAeC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ;YAE5D,MAAMF,eACF,oBACA;gBACI,OAAO;oBACH,QAAQ;oBACR,UAAUG,KAAK,KAAK,CAACJ;oBACrB,OAAO;wBACH,SAASD,MAAM,OAAO;wBACtB,MAAMA,MAAM,IAAI;oBACpB;gBACJ;YACJ,GACAD,WACA,IAAI,CAAC,OAAO;QAEpB,EAAE,OAAOO,KAAK;YACV,MAAMC,cAAAA,IAAgB,CAACD,KAAK;gBACxB,SAAS;gBACT,MAAM;YACV;QACJ;IACJ;AACJ;AAEO,MAAME,qCACTC,gCAAgC,oBAAoB,CAAC;IACjD,gBAAgBb;IAChB,cAAc;QAACc;KAAiB;AACpC"}
@@ -0,0 +1,2 @@
1
+ import type { AuditLogsContext } from "../../types.js";
2
+ export declare const createAiHooks: (context: AuditLogsContext) => void;
@@ -0,0 +1,11 @@
1
+ import { AuditLogAiBeforeGenerateTextHandler } from "./handlers/AuditLogAiBeforeGenerateTextHandler.js";
2
+ import { AuditLogAiAfterGenerateTextHandler } from "./handlers/AuditLogAiAfterGenerateTextHandler.js";
3
+ import { AuditLogAiGenerateTextErrorHandler } from "./handlers/AuditLogAiGenerateTextErrorHandler.js";
4
+ const createAiHooks = (context)=>{
5
+ context.container.register(AuditLogAiBeforeGenerateTextHandler);
6
+ context.container.register(AuditLogAiAfterGenerateTextHandler);
7
+ context.container.register(AuditLogAiGenerateTextErrorHandler);
8
+ };
9
+ export { createAiHooks };
10
+
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions/ai/index.js","sources":["../../../src/subscriptions/ai/index.ts"],"sourcesContent":["import { AuditLogAiBeforeGenerateTextHandler } from \"./handlers/AuditLogAiBeforeGenerateTextHandler.js\";\nimport { AuditLogAiAfterGenerateTextHandler } from \"./handlers/AuditLogAiAfterGenerateTextHandler.js\";\nimport { AuditLogAiGenerateTextErrorHandler } from \"./handlers/AuditLogAiGenerateTextErrorHandler.js\";\nimport type { AuditLogsContext } from \"~/types.js\";\n\nexport const createAiHooks = (context: AuditLogsContext) => {\n context.container.register(AuditLogAiBeforeGenerateTextHandler);\n context.container.register(AuditLogAiAfterGenerateTextHandler);\n context.container.register(AuditLogAiGenerateTextErrorHandler);\n};\n"],"names":["createAiHooks","context","AuditLogAiBeforeGenerateTextHandler","AuditLogAiAfterGenerateTextHandler","AuditLogAiGenerateTextErrorHandler"],"mappings":";;;AAKO,MAAMA,gBAAgB,CAACC;IAC1BA,QAAQ,SAAS,CAAC,QAAQ,CAACC;IAC3BD,QAAQ,SAAS,CAAC,QAAQ,CAACE;IAC3BF,QAAQ,SAAS,CAAC,QAAQ,CAACG;AAC/B"}
@@ -4,6 +4,7 @@ import { createSecurityHooks } from "./security/index.js";
4
4
  import { createMailerHooks } from "./mailer/index.js";
5
5
  import { createAcoHooks } from "./aco/index.js";
6
6
  import { createWebsiteBuilderHooks } from "./websiteBuilder/index.js";
7
+ import { createAiHooks } from "./ai/index.js";
7
8
  const createSubscriptionHooks = (context)=>{
8
9
  createFileManagerHooks(context);
9
10
  createHeadlessCmsHooks(context);
@@ -11,6 +12,7 @@ const createSubscriptionHooks = (context)=>{
11
12
  createMailerHooks(context);
12
13
  createAcoHooks(context);
13
14
  createWebsiteBuilderHooks(context);
15
+ createAiHooks(context);
14
16
  };
15
17
  export { createSubscriptionHooks };
16
18
 
@@ -1 +1 @@
1
- {"version":3,"file":"subscriptions/index.js","sources":["../../src/subscriptions/index.ts"],"sourcesContent":["import { createFileManagerHooks } from \"./fileManager/index.js\";\nimport { createHeadlessCmsHooks } from \"./headlessCms/index.js\";\nimport { createSecurityHooks } from \"./security/index.js\";\nimport { createMailerHooks } from \"./mailer/index.js\";\nimport { createAcoHooks } from \"./aco/index.js\";\nimport { createWebsiteBuilderHooks } from \"~/subscriptions/websiteBuilder/index.js\";\nimport type { AuditLogsContext } from \"~/types.js\";\n\nexport const createSubscriptionHooks = (context: AuditLogsContext) => {\n createFileManagerHooks(context);\n createHeadlessCmsHooks(context);\n createSecurityHooks(context);\n createMailerHooks(context);\n createAcoHooks(context);\n createWebsiteBuilderHooks(context);\n};\n"],"names":["createSubscriptionHooks","context","createFileManagerHooks","createHeadlessCmsHooks","createSecurityHooks","createMailerHooks","createAcoHooks","createWebsiteBuilderHooks"],"mappings":";;;;;;AAQO,MAAMA,0BAA0B,CAACC;IACpCC,uBAAuBD;IACvBE,uBAAuBF;IACvBG,oBAAoBH;IACpBI,kBAAkBJ;IAClBK,eAAeL;IACfM,0BAA0BN;AAC9B"}
1
+ {"version":3,"file":"subscriptions/index.js","sources":["../../src/subscriptions/index.ts"],"sourcesContent":["import { createFileManagerHooks } from \"./fileManager/index.js\";\nimport { createHeadlessCmsHooks } from \"./headlessCms/index.js\";\nimport { createSecurityHooks } from \"./security/index.js\";\nimport { createMailerHooks } from \"./mailer/index.js\";\nimport { createAcoHooks } from \"./aco/index.js\";\nimport { createWebsiteBuilderHooks } from \"~/subscriptions/websiteBuilder/index.js\";\nimport { createAiHooks } from \"./ai/index.js\";\nimport type { AuditLogsContext } from \"~/types.js\";\n\nexport const createSubscriptionHooks = (context: AuditLogsContext) => {\n createFileManagerHooks(context);\n createHeadlessCmsHooks(context);\n createSecurityHooks(context);\n createMailerHooks(context);\n createAcoHooks(context);\n createWebsiteBuilderHooks(context);\n createAiHooks(context);\n};\n"],"names":["createSubscriptionHooks","context","createFileManagerHooks","createHeadlessCmsHooks","createSecurityHooks","createMailerHooks","createAcoHooks","createWebsiteBuilderHooks","createAiHooks"],"mappings":";;;;;;;AASO,MAAMA,0BAA0B,CAACC;IACpCC,uBAAuBD;IACvBE,uBAAuBF;IACvBG,oBAAoBH;IACpBI,kBAAkBJ;IAClBK,eAAeL;IACfM,0BAA0BN;IAC1BO,cAAcP;AAClB"}
package/types.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import type { GenericRecord } from "@webiny/api/types.js";
2
2
  import type { Action, App, Entity } from "@webiny/common-audit-logs/types.js";
3
- import type { DbContext } from "@webiny/handler-db/types.js";
4
3
  import type { ApiCoreContext } from "@webiny/api-core/types/core.js";
5
4
  import type { IAuditLog } from "./storage/types.js";
6
5
  import type { IStorageListParams } from "./storage/abstractions/Storage.js";
@@ -33,7 +32,7 @@ export interface AuditLogsContextValue {
33
32
  getAuditLog(id: string): Promise<IAuditLog | null>;
34
33
  listAuditLogs(params: IListAuditLogsParams): Promise<IListAuditLogsResult>;
35
34
  }
36
- export interface AuditLogsContext extends ApiCoreContext, Pick<DbContext, "db"> {
35
+ export interface AuditLogsContext extends ApiCoreContext {
37
36
  auditLogs: AuditLogsContextValue;
38
37
  }
39
38
  export interface AuditObject {
@@ -1,4 +1,5 @@
1
1
  import _webiny_error from "@webiny/error";
2
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/abstractions.js";
2
3
  const createAuditLog = async (params)=>{
3
4
  const { context, payload } = params;
4
5
  try {
@@ -60,11 +61,12 @@ const getAuditConfig = (audit)=>async (message, content, entityId, context)=>{
60
61
  tags: []
61
62
  };
62
63
  const delay = audit.action.newEntryDelay || 0;
63
- if (!context.security.getIdentity()?.id) {
64
+ const identityContext = context.container.resolve(IdentityContext);
65
+ if (!identityContext.getIdentity()?.id) {
64
66
  console.log("No identity - skipping audit log creation.");
65
67
  return null;
66
68
  }
67
- return await context.security.withoutAuthorization(async ()=>{
69
+ return await identityContext.withoutAuthorization(async ()=>{
68
70
  if (delay > 0) {
69
71
  try {
70
72
  return await createOrMergeAuditLog({
@@ -1 +1 @@
1
- {"version":3,"file":"utils/getAuditConfig.js","sources":["../../src/utils/getAuditConfig.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type { AuditAction, AuditLogPayload, AuditLogsContext } from \"~/types.js\";\nimport type { IAuditLog } from \"~/storage/types.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\n\ninterface CreateAuditLogParams {\n context: Pick<AuditLogsContext, \"auditLogs\">;\n payload: AuditLogPayload;\n}\n\nconst createAuditLog = async (params: CreateAuditLogParams): Promise<IAuditLog> => {\n const { context, payload } = params;\n\n try {\n return await context.auditLogs.createAuditLog(payload);\n } catch (error) {\n throw WebinyError.from(error);\n }\n};\n\ninterface CreateOrMergeAuditLogParams {\n context: AuditLogsContext;\n payload: AuditLogPayload;\n delay: number;\n}\n\nconst createAuditLogDelayDate = (delay: number | undefined) => {\n if (!delay) {\n return undefined;\n }\n const date = new Date();\n date.setTime(date.getTime() - delay * 1000);\n return date;\n};\n\nconst createOrMergeAuditLog = async (params: CreateOrMergeAuditLogParams): Promise<IAuditLog> => {\n const { context, payload, delay } = params;\n\n const results = await context.auditLogs.listAuditLogs({\n app: payload.app,\n entityId: payload.entityId,\n limit: 1,\n createdOn_gte: createAuditLogDelayDate(delay),\n sort: \"DESC\"\n });\n if (results.error) {\n throw WebinyError.from(results.error);\n }\n const original = results.items?.[0];\n if (!original) {\n return createAuditLog(params);\n }\n // Update latest audit log with new \"after\" payload.\n const beforePayloadData = original.content ? JSON.parse(original.content)?.before : undefined;\n /**\n * We can assume that there is a possible \"after\" in the payload data.\n */\n const afterPayloadData = payload.content?.after;\n const updatedPayloadData = beforePayloadData\n ? {\n before: beforePayloadData,\n after: afterPayloadData\n }\n : payload.content;\n\n try {\n return await context.auditLogs.updateAuditLog(original, {\n ...payload,\n content: updatedPayloadData\n });\n } catch (ex) {\n throw WebinyError.from(ex);\n }\n};\n\nexport const getAuditConfig = (audit: AuditAction) => {\n return async (\n message: string,\n content: GenericRecord,\n entityId: string,\n context: AuditLogsContext\n ): Promise<IAuditLog | null> => {\n if (!context.auditLogs) {\n console.log(\"No AuditLogs defined.\");\n return null;\n } else if (!audit) {\n console.log(`No Audit Action defined!`);\n return null;\n }\n\n const payload: AuditLogPayload = {\n message,\n app: audit.app.app,\n entityId,\n entity: audit.entity.type,\n action: audit.action.type,\n content,\n tags: []\n };\n\n const delay = audit.action.newEntryDelay || 0;\n\n if (!context.security.getIdentity()?.id) {\n console.log(\"No identity - skipping audit log creation.\");\n return null;\n }\n\n return await context.security.withoutAuthorization(async () => {\n // Check if there is delay on audit log creation for this action.\n if (delay > 0) {\n try {\n return await createOrMergeAuditLog({\n context,\n payload,\n delay\n });\n } catch {\n // Don't care at this point!\n }\n return null;\n }\n return await createAuditLog({\n context,\n payload\n });\n });\n };\n};\n"],"names":["createAuditLog","params","context","payload","error","WebinyError","createAuditLogDelayDate","delay","date","Date","createOrMergeAuditLog","results","original","beforePayloadData","JSON","undefined","afterPayloadData","updatedPayloadData","ex","getAuditConfig","audit","message","content","entityId","console"],"mappings":";AAUA,MAAMA,iBAAiB,OAAOC;IAC1B,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGF;IAE7B,IAAI;QACA,OAAO,MAAMC,QAAQ,SAAS,CAAC,cAAc,CAACC;IAClD,EAAE,OAAOC,OAAO;QACZ,MAAMC,cAAAA,IAAgB,CAACD;IAC3B;AACJ;AAQA,MAAME,0BAA0B,CAACC;IAC7B,IAAI,CAACA,OACD;IAEJ,MAAMC,OAAO,IAAIC;IACjBD,KAAK,OAAO,CAACA,KAAK,OAAO,KAAKD,AAAQ,OAARA;IAC9B,OAAOC;AACX;AAEA,MAAME,wBAAwB,OAAOT;IACjC,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAEI,KAAK,EAAE,GAAGN;IAEpC,MAAMU,UAAU,MAAMT,QAAQ,SAAS,CAAC,aAAa,CAAC;QAClD,KAAKC,QAAQ,GAAG;QAChB,UAAUA,QAAQ,QAAQ;QAC1B,OAAO;QACP,eAAeG,wBAAwBC;QACvC,MAAM;IACV;IACA,IAAII,QAAQ,KAAK,EACb,MAAMN,cAAAA,IAAgB,CAACM,QAAQ,KAAK;IAExC,MAAMC,WAAWD,QAAQ,KAAK,EAAE,CAAC,EAAE;IACnC,IAAI,CAACC,UACD,OAAOZ,eAAeC;IAG1B,MAAMY,oBAAoBD,SAAS,OAAO,GAAGE,KAAK,KAAK,CAACF,SAAS,OAAO,GAAG,SAASG;IAIpF,MAAMC,mBAAmBb,QAAQ,OAAO,EAAE;IAC1C,MAAMc,qBAAqBJ,oBACrB;QACI,QAAQA;QACR,OAAOG;IACX,IACAb,QAAQ,OAAO;IAErB,IAAI;QACA,OAAO,MAAMD,QAAQ,SAAS,CAAC,cAAc,CAACU,UAAU;YACpD,GAAGT,OAAO;YACV,SAASc;QACb;IACJ,EAAE,OAAOC,IAAI;QACT,MAAMb,cAAAA,IAAgB,CAACa;IAC3B;AACJ;AAEO,MAAMC,iBAAiB,CAACC,QACpB,OACHC,SACAC,SACAC,UACArB;QAEA,IAAKA,QAAQ,SAAS,EAGf;YAAA,IAAI,CAACkB,OAAO;gBACfI,QAAQ,GAAG,CAAC;gBACZ,OAAO;YACX;QAAA,OANwB;YACpBA,QAAQ,GAAG,CAAC;YACZ,OAAO;QACX;QAKA,MAAMrB,UAA2B;YAC7BkB;YACA,KAAKD,MAAM,GAAG,CAAC,GAAG;YAClBG;YACA,QAAQH,MAAM,MAAM,CAAC,IAAI;YACzB,QAAQA,MAAM,MAAM,CAAC,IAAI;YACzBE;YACA,MAAM,EAAE;QACZ;QAEA,MAAMf,QAAQa,MAAM,MAAM,CAAC,aAAa,IAAI;QAE5C,IAAI,CAAClB,QAAQ,QAAQ,CAAC,WAAW,IAAI,IAAI;YACrCsB,QAAQ,GAAG,CAAC;YACZ,OAAO;QACX;QAEA,OAAO,MAAMtB,QAAQ,QAAQ,CAAC,oBAAoB,CAAC;YAE/C,IAAIK,QAAQ,GAAG;gBACX,IAAI;oBACA,OAAO,MAAMG,sBAAsB;wBAC/BR;wBACAC;wBACAI;oBACJ;gBACJ,EAAE,OAAM,CAER;gBACA,OAAO;YACX;YACA,OAAO,MAAMP,eAAe;gBACxBE;gBACAC;YACJ;QACJ;IACJ"}
1
+ {"version":3,"file":"utils/getAuditConfig.js","sources":["../../src/utils/getAuditConfig.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/abstractions.js\";\nimport type { AuditAction, AuditLogPayload, AuditLogsContext } from \"~/types.js\";\nimport type { IAuditLog } from \"~/storage/types.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\n\ninterface CreateAuditLogParams {\n context: Pick<AuditLogsContext, \"auditLogs\">;\n payload: AuditLogPayload;\n}\n\nconst createAuditLog = async (params: CreateAuditLogParams): Promise<IAuditLog> => {\n const { context, payload } = params;\n\n try {\n return await context.auditLogs.createAuditLog(payload);\n } catch (error) {\n throw WebinyError.from(error);\n }\n};\n\ninterface CreateOrMergeAuditLogParams {\n context: AuditLogsContext;\n payload: AuditLogPayload;\n delay: number;\n}\n\nconst createAuditLogDelayDate = (delay: number | undefined) => {\n if (!delay) {\n return undefined;\n }\n const date = new Date();\n date.setTime(date.getTime() - delay * 1000);\n return date;\n};\n\nconst createOrMergeAuditLog = async (params: CreateOrMergeAuditLogParams): Promise<IAuditLog> => {\n const { context, payload, delay } = params;\n\n const results = await context.auditLogs.listAuditLogs({\n app: payload.app,\n entityId: payload.entityId,\n limit: 1,\n createdOn_gte: createAuditLogDelayDate(delay),\n sort: \"DESC\"\n });\n if (results.error) {\n throw WebinyError.from(results.error);\n }\n const original = results.items?.[0];\n if (!original) {\n return createAuditLog(params);\n }\n // Update latest audit log with new \"after\" payload.\n const beforePayloadData = original.content ? JSON.parse(original.content)?.before : undefined;\n /**\n * We can assume that there is a possible \"after\" in the payload data.\n */\n const afterPayloadData = payload.content?.after;\n const updatedPayloadData = beforePayloadData\n ? {\n before: beforePayloadData,\n after: afterPayloadData\n }\n : payload.content;\n\n try {\n return await context.auditLogs.updateAuditLog(original, {\n ...payload,\n content: updatedPayloadData\n });\n } catch (ex) {\n throw WebinyError.from(ex);\n }\n};\n\nexport const getAuditConfig = (audit: AuditAction) => {\n return async (\n message: string,\n content: GenericRecord,\n entityId: string,\n context: AuditLogsContext\n ): Promise<IAuditLog | null> => {\n if (!context.auditLogs) {\n console.log(\"No AuditLogs defined.\");\n return null;\n } else if (!audit) {\n console.log(`No Audit Action defined!`);\n return null;\n }\n\n const payload: AuditLogPayload = {\n message,\n app: audit.app.app,\n entityId,\n entity: audit.entity.type,\n action: audit.action.type,\n content,\n tags: []\n };\n\n const delay = audit.action.newEntryDelay || 0;\n\n const identityContext = context.container.resolve(IdentityContext);\n if (!identityContext.getIdentity()?.id) {\n console.log(\"No identity - skipping audit log creation.\");\n return null;\n }\n\n return await identityContext.withoutAuthorization(async () => {\n // Check if there is delay on audit log creation for this action.\n if (delay > 0) {\n try {\n return await createOrMergeAuditLog({\n context,\n payload,\n delay\n });\n } catch {\n // Don't care at this point!\n }\n return null;\n }\n return await createAuditLog({\n context,\n payload\n });\n });\n };\n};\n"],"names":["createAuditLog","params","context","payload","error","WebinyError","createAuditLogDelayDate","delay","date","Date","createOrMergeAuditLog","results","original","beforePayloadData","JSON","undefined","afterPayloadData","updatedPayloadData","ex","getAuditConfig","audit","message","content","entityId","console","identityContext","IdentityContext"],"mappings":";;AAWA,MAAMA,iBAAiB,OAAOC;IAC1B,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGF;IAE7B,IAAI;QACA,OAAO,MAAMC,QAAQ,SAAS,CAAC,cAAc,CAACC;IAClD,EAAE,OAAOC,OAAO;QACZ,MAAMC,cAAAA,IAAgB,CAACD;IAC3B;AACJ;AAQA,MAAME,0BAA0B,CAACC;IAC7B,IAAI,CAACA,OACD;IAEJ,MAAMC,OAAO,IAAIC;IACjBD,KAAK,OAAO,CAACA,KAAK,OAAO,KAAKD,AAAQ,OAARA;IAC9B,OAAOC;AACX;AAEA,MAAME,wBAAwB,OAAOT;IACjC,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAEI,KAAK,EAAE,GAAGN;IAEpC,MAAMU,UAAU,MAAMT,QAAQ,SAAS,CAAC,aAAa,CAAC;QAClD,KAAKC,QAAQ,GAAG;QAChB,UAAUA,QAAQ,QAAQ;QAC1B,OAAO;QACP,eAAeG,wBAAwBC;QACvC,MAAM;IACV;IACA,IAAII,QAAQ,KAAK,EACb,MAAMN,cAAAA,IAAgB,CAACM,QAAQ,KAAK;IAExC,MAAMC,WAAWD,QAAQ,KAAK,EAAE,CAAC,EAAE;IACnC,IAAI,CAACC,UACD,OAAOZ,eAAeC;IAG1B,MAAMY,oBAAoBD,SAAS,OAAO,GAAGE,KAAK,KAAK,CAACF,SAAS,OAAO,GAAG,SAASG;IAIpF,MAAMC,mBAAmBb,QAAQ,OAAO,EAAE;IAC1C,MAAMc,qBAAqBJ,oBACrB;QACI,QAAQA;QACR,OAAOG;IACX,IACAb,QAAQ,OAAO;IAErB,IAAI;QACA,OAAO,MAAMD,QAAQ,SAAS,CAAC,cAAc,CAACU,UAAU;YACpD,GAAGT,OAAO;YACV,SAASc;QACb;IACJ,EAAE,OAAOC,IAAI;QACT,MAAMb,cAAAA,IAAgB,CAACa;IAC3B;AACJ;AAEO,MAAMC,iBAAiB,CAACC,QACpB,OACHC,SACAC,SACAC,UACArB;QAEA,IAAKA,QAAQ,SAAS,EAGf;YAAA,IAAI,CAACkB,OAAO;gBACfI,QAAQ,GAAG,CAAC;gBACZ,OAAO;YACX;QAAA,OANwB;YACpBA,QAAQ,GAAG,CAAC;YACZ,OAAO;QACX;QAKA,MAAMrB,UAA2B;YAC7BkB;YACA,KAAKD,MAAM,GAAG,CAAC,GAAG;YAClBG;YACA,QAAQH,MAAM,MAAM,CAAC,IAAI;YACzB,QAAQA,MAAM,MAAM,CAAC,IAAI;YACzBE;YACA,MAAM,EAAE;QACZ;QAEA,MAAMf,QAAQa,MAAM,MAAM,CAAC,aAAa,IAAI;QAE5C,MAAMK,kBAAkBvB,QAAQ,SAAS,CAAC,OAAO,CAACwB;QAClD,IAAI,CAACD,gBAAgB,WAAW,IAAI,IAAI;YACpCD,QAAQ,GAAG,CAAC;YACZ,OAAO;QACX;QAEA,OAAO,MAAMC,gBAAgB,oBAAoB,CAAC;YAE9C,IAAIlB,QAAQ,GAAG;gBACX,IAAI;oBACA,OAAO,MAAMG,sBAAsB;wBAC/BR;wBACAC;wBACAI;oBACJ;gBACJ,EAAE,OAAM,CAER;gBACA,OAAO;YACX;YACA,OAAO,MAAMP,eAAe;gBACxBE;gBACAC;YACJ;QACJ;IACJ"}
@@ -1,9 +0,0 @@
1
- import { ContextPlugin } from "@webiny/api";
2
- import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js";
3
- import type { AuditLogsContext } from "../types.js";
4
- export interface ISetupContextOptions {
5
- deleteLogsAfterDays: number | undefined;
6
- tableName: string | undefined;
7
- documentClient: DynamoDBDocument | undefined;
8
- }
9
- export declare const createAuditLogsContext: (params?: ISetupContextOptions) => ContextPlugin<AuditLogsContext>;
package/context/index.js DELETED
@@ -1,31 +0,0 @@
1
- import { ContextPlugin } from "@webiny/api";
2
- import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
3
- import { createAuditLogsContextValue } from "./AuditLogsContextValue.js";
4
- import { createStorage } from "../storage/Storage.js";
5
- import { CompressionHandler } from "@webiny/utils/exports/api.js";
6
- const getDeleteLogsAfterDays = (days)=>{
7
- if (days && days > 0) return days;
8
- return 60;
9
- };
10
- const createAuditLogsContext = (params)=>{
11
- const plugin = new ContextPlugin(async (context)=>{
12
- const compressionHandler = context.container.resolve(CompressionHandler);
13
- const storage = createStorage({
14
- tableName: params?.tableName,
15
- client: params?.documentClient || context.db.driver.getClient(),
16
- compressionHandler
17
- });
18
- const eventPublisher = context.container.resolve(EventPublisher);
19
- context.auditLogs = createAuditLogsContextValue({
20
- getContext: ()=>context,
21
- deleteLogsAfterDays: getDeleteLogsAfterDays(params?.deleteLogsAfterDays),
22
- storage,
23
- eventPublisher
24
- });
25
- });
26
- plugin.name = "audit-logs.createContext";
27
- return plugin;
28
- };
29
- export { createAuditLogsContext };
30
-
31
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context/index.js","sources":["../../src/context/index.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport type { AuditLogsContext } from \"~/types.js\";\nimport { createAuditLogsContextValue } from \"./AuditLogsContextValue.js\";\nimport { createStorage } from \"~/storage/Storage.js\";\nimport { CompressionHandler } from \"@webiny/utils/exports/api.js\";\n\nexport interface ISetupContextOptions {\n deleteLogsAfterDays: number | undefined;\n tableName: string | undefined;\n documentClient: DynamoDBDocument | undefined;\n}\n\nconst getDeleteLogsAfterDays = (days?: number): number => {\n if (days && days > 0) {\n return days;\n }\n /**\n * Default days to delete logs after.\n */\n return 60;\n};\n\nexport const createAuditLogsContext = (params?: ISetupContextOptions) => {\n const plugin = new ContextPlugin<AuditLogsContext>(async context => {\n const compressionHandler = context.container.resolve(CompressionHandler);\n\n const storage = createStorage({\n tableName: params?.tableName,\n client: params?.documentClient || (context.db.driver.getClient() as DynamoDBDocument),\n compressionHandler\n });\n\n const eventPublisher = context.container.resolve(EventPublisher);\n\n context.auditLogs = createAuditLogsContextValue({\n getContext: () => {\n return context;\n },\n deleteLogsAfterDays: getDeleteLogsAfterDays(params?.deleteLogsAfterDays),\n storage,\n eventPublisher\n });\n });\n\n plugin.name = \"audit-logs.createContext\";\n\n return plugin;\n};\n"],"names":["getDeleteLogsAfterDays","days","createAuditLogsContext","params","plugin","ContextPlugin","context","compressionHandler","CompressionHandler","storage","createStorage","eventPublisher","EventPublisher","createAuditLogsContextValue"],"mappings":";;;;;AAcA,MAAMA,yBAAyB,CAACC;IAC5B,IAAIA,QAAQA,OAAO,GACf,OAAOA;IAKX,OAAO;AACX;AAEO,MAAMC,yBAAyB,CAACC;IACnC,MAAMC,SAAS,IAAIC,cAAgC,OAAMC;QACrD,MAAMC,qBAAqBD,QAAQ,SAAS,CAAC,OAAO,CAACE;QAErD,MAAMC,UAAUC,cAAc;YAC1B,WAAWP,QAAQ;YACnB,QAAQA,QAAQ,kBAAmBG,QAAQ,EAAE,CAAC,MAAM,CAAC,SAAS;YAC9DC;QACJ;QAEA,MAAMI,iBAAiBL,QAAQ,SAAS,CAAC,OAAO,CAACM;QAEjDN,QAAQ,SAAS,GAAGO,4BAA4B;YAC5C,YAAY,IACDP;YAEX,qBAAqBN,uBAAuBG,QAAQ;YACpDM;YACAE;QACJ;IACJ;IAEAP,OAAO,IAAI,GAAG;IAEd,OAAOA;AACX"}
@@ -1,3 +0,0 @@
1
- import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
2
- import type { AuditLogsContext } from "../types.js";
3
- export declare const createGraphQLSchema: () => GraphQLSchemaPlugin<AuditLogsContext>;
package/graphql/schema.js DELETED
@@ -1,115 +0,0 @@
1
- import { GraphQLSchemaPlugin, NotFoundError, resolve, resolveList } from "@webiny/handler-graphql";
2
- import { getValidationSchema, listValidationSchema } from "./validation.js";
3
- import { createZodError } from "@webiny/utils";
4
- const createGraphQLSchema = ()=>new GraphQLSchemaPlugin({
5
- isApplicable: (context)=>!!context.auditLogs,
6
- typeDefs: `
7
- type AuditLogCreatedBy {
8
- id: ID!
9
- displayName: String
10
- type: String
11
- }
12
- type AuditLog {
13
- id: ID!
14
- createdBy: AuditLogCreatedBy!
15
- createdOn: DateTime!
16
- app: String!
17
- action: String!
18
- message: String!
19
- entity: String!
20
- entityId: String!
21
- tags: [String!]!
22
- expiresAt: DateTime!
23
- content: String
24
- }
25
-
26
- type AuditLogListMeta {
27
- cursor: String
28
- hasMoreItems: Boolean!
29
- }
30
-
31
- type AuditLogError {
32
- code: String
33
- message: String!
34
- data: JSON
35
- stack: String
36
- }
37
-
38
- type AuditLogListResponse {
39
- data: [AuditLog!]
40
- meta: AuditLogListMeta
41
- error: AuditLogError
42
- }
43
-
44
- type AuditLogGetResponse {
45
- data: AuditLog
46
- error: AuditLogError
47
- }
48
-
49
- enum AuditLogsSort {
50
- ASC
51
- DESC
52
- }
53
-
54
- input ListAuditLogsWhere {
55
- app: String
56
- action: String
57
- createdBy: String
58
- entity: String
59
- entityId: String
60
- createdOn_gte: DateTime
61
- createdOn_lte: DateTime
62
- }
63
-
64
- type AuditLogsQuery {
65
- getAuditLog(id: ID!): AuditLogGetResponse
66
- listAuditLogs(
67
- where: ListAuditLogsWhere
68
- sort: AuditLogsSort
69
- limit: Number
70
- after: String
71
- ): AuditLogListResponse!
72
- }
73
-
74
- extend type Query {
75
- auditLogs: AuditLogsQuery
76
- }
77
- `,
78
- resolvers: {
79
- Query: {
80
- auditLogs: ()=>({})
81
- },
82
- AuditLogsQuery: {
83
- async getAuditLog (_, args, context) {
84
- return resolve(async ()=>{
85
- const validation = await getValidationSchema.safeParseAsync(args);
86
- if (!validation.success) throw createZodError(validation.error);
87
- const result = await context.auditLogs.getAuditLog(validation.data.id);
88
- if (!result) throw new NotFoundError(`Audit log with id "${validation.data.id}" not found.`);
89
- return result;
90
- });
91
- },
92
- async listAuditLogs (_, args, context) {
93
- return resolveList(async ()=>{
94
- const validation = await listValidationSchema.safeParseAsync(args);
95
- if (!validation.success) throw createZodError(validation.error);
96
- const result = await context.auditLogs.listAuditLogs({
97
- ...validation.data,
98
- ...validation.data.where
99
- });
100
- if (result.error) throw result.error;
101
- return {
102
- items: result.items,
103
- meta: {
104
- ...result.meta,
105
- totalCount: 0
106
- }
107
- };
108
- });
109
- }
110
- }
111
- }
112
- });
113
- export { createGraphQLSchema };
114
-
115
- //# sourceMappingURL=schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graphql/schema.js","sources":["../../src/graphql/schema.ts"],"sourcesContent":["import { GraphQLSchemaPlugin, NotFoundError, resolve, resolveList } from \"@webiny/handler-graphql\";\nimport type { AuditLogsContext } from \"~/types.js\";\nimport { getValidationSchema, listValidationSchema } from \"./validation.js\";\nimport { createZodError } from \"@webiny/utils\";\n\ninterface IListAuditLogsWhere {\n app?: string;\n action?: string;\n createdBy?: string;\n entity?: string;\n entityId?: string;\n createdOn_gte?: Date;\n createdOn_lte?: Date;\n}\n\ninterface IListAuditLogsArgs {\n where?: IListAuditLogsWhere;\n sort?: \"ASC\" | \"DESC\";\n limit?: number;\n after?: string;\n}\n\nexport const createGraphQLSchema = () => {\n return new GraphQLSchemaPlugin<AuditLogsContext>({\n isApplicable: context => {\n return !!context.auditLogs;\n },\n typeDefs: `\n type AuditLogCreatedBy {\n id: ID!\n displayName: String\n type: String\n }\n type AuditLog {\n id: ID!\n createdBy: AuditLogCreatedBy!\n createdOn: DateTime!\n app: String!\n action: String!\n message: String!\n entity: String!\n entityId: String!\n tags: [String!]!\n expiresAt: DateTime!\n content: String\n }\n \n type AuditLogListMeta {\n cursor: String\n hasMoreItems: Boolean!\n }\n \n type AuditLogError {\n code: String\n message: String!\n data: JSON\n stack: String\n }\n \n type AuditLogListResponse {\n data: [AuditLog!]\n meta: AuditLogListMeta\n error: AuditLogError\n }\n \n type AuditLogGetResponse {\n data: AuditLog\n error: AuditLogError\n }\n \n enum AuditLogsSort {\n ASC\n DESC\n }\n \n input ListAuditLogsWhere {\n app: String\n action: String\n createdBy: String\n entity: String\n entityId: String\n createdOn_gte: DateTime\n createdOn_lte: DateTime\n }\n \n type AuditLogsQuery {\n getAuditLog(id: ID!): AuditLogGetResponse\n listAuditLogs(\n where: ListAuditLogsWhere\n sort: AuditLogsSort\n limit: Number\n after: String\n ): AuditLogListResponse!\n }\n \n extend type Query {\n auditLogs: AuditLogsQuery\n }\n `,\n resolvers: {\n Query: {\n auditLogs: () => ({})\n },\n AuditLogsQuery: {\n async getAuditLog(_, args, context) {\n return resolve(async () => {\n const validation = await getValidationSchema.safeParseAsync(args);\n\n if (!validation.success) {\n throw createZodError(validation.error);\n }\n\n const result = await context.auditLogs.getAuditLog(validation.data.id);\n if (!result) {\n throw new NotFoundError(\n `Audit log with id \"${validation.data.id}\" not found.`\n );\n }\n return result;\n });\n },\n async listAuditLogs(_, args: IListAuditLogsArgs, context) {\n return resolveList(async () => {\n const validation = await listValidationSchema.safeParseAsync(args);\n if (!validation.success) {\n throw createZodError(validation.error);\n }\n const result = await context.auditLogs.listAuditLogs({\n ...validation.data,\n ...validation.data.where\n });\n if (result.error) {\n throw result.error;\n }\n return {\n items: result.items,\n meta: {\n ...result.meta,\n totalCount: 0\n }\n };\n });\n }\n }\n }\n });\n};\n"],"names":["createGraphQLSchema","GraphQLSchemaPlugin","context","_","args","resolve","validation","getValidationSchema","createZodError","result","NotFoundError","resolveList","listValidationSchema"],"mappings":";;;AAsBO,MAAMA,sBAAsB,IACxB,IAAIC,oBAAsC;QAC7C,cAAcC,CAAAA,UACH,CAAC,CAACA,QAAQ,SAAS;QAE9B,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAuEX,CAAC;QACD,WAAW;YACP,OAAO;gBACH,WAAW,IAAO,EAAC;YACvB;YACA,gBAAgB;gBACZ,MAAM,aAAYC,CAAC,EAAEC,IAAI,EAAEF,OAAO;oBAC9B,OAAOG,QAAQ;wBACX,MAAMC,aAAa,MAAMC,oBAAoB,cAAc,CAACH;wBAE5D,IAAI,CAACE,WAAW,OAAO,EACnB,MAAME,eAAeF,WAAW,KAAK;wBAGzC,MAAMG,SAAS,MAAMP,QAAQ,SAAS,CAAC,WAAW,CAACI,WAAW,IAAI,CAAC,EAAE;wBACrE,IAAI,CAACG,QACD,MAAM,IAAIC,cACN,CAAC,mBAAmB,EAAEJ,WAAW,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;wBAG9D,OAAOG;oBACX;gBACJ;gBACA,MAAM,eAAcN,CAAC,EAAEC,IAAwB,EAAEF,OAAO;oBACpD,OAAOS,YAAY;wBACf,MAAML,aAAa,MAAMM,qBAAqB,cAAc,CAACR;wBAC7D,IAAI,CAACE,WAAW,OAAO,EACnB,MAAME,eAAeF,WAAW,KAAK;wBAEzC,MAAMG,SAAS,MAAMP,QAAQ,SAAS,CAAC,aAAa,CAAC;4BACjD,GAAGI,WAAW,IAAI;4BAClB,GAAGA,WAAW,IAAI,CAAC,KAAK;wBAC5B;wBACA,IAAIG,OAAO,KAAK,EACZ,MAAMA,OAAO,KAAK;wBAEtB,OAAO;4BACH,OAAOA,OAAO,KAAK;4BACnB,MAAM;gCACF,GAAGA,OAAO,IAAI;gCACd,YAAY;4BAChB;wBACJ;oBACJ;gBACJ;YACJ;QACJ;IACJ"}
package/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport { createSubscriptionHooks } from \"~/subscriptions/index.js\";\nimport { createAuditLogsContext } from \"~/context/index.js\";\nimport { createGraphQLSchema } from \"~/graphql/schema.js\";\nimport type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport { AuditLogsContext } from \"./abstractions.js\";\n\nexport interface ICreateAuditLogsParams {\n deleteLogsAfterDays: number | undefined;\n tableName?: string;\n documentClient?: DynamoDBDocument;\n}\n\nexport const createAuditLogs = (params?: ICreateAuditLogsParams) => {\n const subscriptionsPlugin = new ContextPlugin<AuditLogsContext.Interface>(context => {\n if (!context.wcp.canUseFeature(\"auditLogs\")) {\n return;\n }\n\n context.container.registerInstance(AuditLogsContext, context);\n\n createSubscriptionHooks(context);\n });\n\n subscriptionsPlugin.name = \"auditLogs.context.subscriptions\";\n return [\n subscriptionsPlugin,\n createGraphQLSchema(),\n createAuditLogsContext({\n tableName: params?.tableName,\n deleteLogsAfterDays: params?.deleteLogsAfterDays,\n documentClient: params?.documentClient\n })\n ];\n};\nexport * from \"~/config.js\";\n"],"names":["createAuditLogs","params","subscriptionsPlugin","ContextPlugin","context","AuditLogsContext","createSubscriptionHooks","createGraphQLSchema","createAuditLogsContext"],"mappings":";;;;;;AAaO,MAAMA,kBAAkB,CAACC;IAC5B,MAAMC,sBAAsB,IAAIC,cAA0CC,CAAAA;QACtE,IAAI,CAACA,QAAQ,GAAG,CAAC,aAAa,CAAC,cAC3B;QAGJA,QAAQ,SAAS,CAAC,gBAAgB,CAACC,kBAAkBD;QAErDE,wBAAwBF;IAC5B;IAEAF,oBAAoB,IAAI,GAAG;IAC3B,OAAO;QACHA;QACAK;QACAC,uBAAuB;YACnB,WAAWP,QAAQ;YACnB,qBAAqBA,QAAQ;YAC7B,gBAAgBA,QAAQ;QAC5B;KACH;AACL"}
@@ -1,14 +0,0 @@
1
- import type { IStorageListParams } from "../storage/abstractions/Storage.js";
2
- import type { IAccessPatternHandler, IAccessPatternHandlerHandleResult } from "../storage/abstractions/AccessPatternHandler.js";
3
- import type { IAccessPattern } from "../storage/abstractions/AccessPattern.js";
4
- export interface IAccessPatternHandlerParams {
5
- patterns: IAccessPattern<unknown>[];
6
- }
7
- export declare class AccessPatternHandler implements IAccessPatternHandler {
8
- private readonly patterns;
9
- constructor(params: IAccessPatternHandlerParams);
10
- handle(params: IStorageListParams): Promise<IAccessPatternHandlerHandleResult>;
11
- getDefaultPattern(): IAccessPattern<unknown>;
12
- listIndexPatterns(): IAccessPattern<unknown>[];
13
- private find;
14
- }
@@ -1,39 +0,0 @@
1
- import { WebinyError } from "@webiny/error";
2
- class AccessPatternHandler {
3
- constructor(params){
4
- if (0 === params.patterns.length) throw new WebinyError({
5
- message: "At least one access pattern must be provided.",
6
- code: "ACCESS_PATTERN_NOT_PROVIDED"
7
- });
8
- this.patterns = params.patterns;
9
- }
10
- async handle(params) {
11
- const pattern = this.find(params);
12
- if (!pattern) throw new WebinyError({
13
- message: "No access pattern found for the given parameters.",
14
- code: "ACCESS_PATTERN_NOT_FOUND",
15
- data: {
16
- ...params
17
- }
18
- });
19
- return await pattern.list(params);
20
- }
21
- getDefaultPattern() {
22
- const pattern = this.patterns.find((pattern)=>void 0 === pattern.index);
23
- if (!pattern) throw new WebinyError({
24
- message: "No default access pattern found.",
25
- code: "DEFAULT_ACCESS_PATTERN_NOT_FOUND"
26
- });
27
- return pattern;
28
- }
29
- listIndexPatterns() {
30
- return this.patterns.filter((pattern)=>void 0 !== pattern.index);
31
- }
32
- find(params) {
33
- for (const pattern of this.patterns)if (pattern.canHandle(params)) return pattern;
34
- return this.patterns.find((pattern)=>void 0 === pattern.index);
35
- }
36
- }
37
- export { AccessPatternHandler };
38
-
39
- //# sourceMappingURL=AccessPatternHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage/AccessPatternHandler.js","sources":["../../src/storage/AccessPatternHandler.ts"],"sourcesContent":["import { WebinyError } from \"@webiny/error\";\nimport type { IStorageListParams } from \"~/storage/abstractions/Storage.js\";\nimport type {\n IAccessPatternHandler,\n IAccessPatternHandlerHandleResult\n} from \"~/storage/abstractions/AccessPatternHandler.js\";\nimport type { IAccessPattern } from \"~/storage/abstractions/AccessPattern.js\";\n\nexport interface IAccessPatternHandlerParams {\n patterns: IAccessPattern<unknown>[];\n}\n\nexport class AccessPatternHandler implements IAccessPatternHandler {\n private readonly patterns;\n\n public constructor(params: IAccessPatternHandlerParams) {\n if (params.patterns.length === 0) {\n throw new WebinyError({\n message: \"At least one access pattern must be provided.\",\n code: \"ACCESS_PATTERN_NOT_PROVIDED\"\n });\n }\n this.patterns = params.patterns;\n }\n\n public async handle(params: IStorageListParams): Promise<IAccessPatternHandlerHandleResult> {\n const pattern = this.find(params);\n if (!pattern) {\n throw new WebinyError({\n message: \"No access pattern found for the given parameters.\",\n code: \"ACCESS_PATTERN_NOT_FOUND\",\n data: {\n ...params\n }\n });\n }\n\n return await pattern.list(params);\n }\n\n public getDefaultPattern(): IAccessPattern<unknown> {\n const pattern = this.patterns.find(pattern => {\n return pattern.index === undefined;\n });\n if (!pattern) {\n throw new WebinyError({\n message: \"No default access pattern found.\",\n code: \"DEFAULT_ACCESS_PATTERN_NOT_FOUND\"\n });\n }\n return pattern;\n }\n\n public listIndexPatterns(): IAccessPattern<unknown>[] {\n return this.patterns.filter(pattern => {\n return pattern.index !== undefined;\n });\n }\n\n private find(params: IStorageListParams): IAccessPattern<unknown> | undefined {\n /**\n * First we need to go through all the patterns and find the one that can handle the given params.\n */\n for (const pattern of this.patterns) {\n if (pattern.canHandle(params)) {\n return pattern;\n }\n }\n /**\n * If none can handle, let's find one which has index set to undefined (default pattern).\n */\n return this.patterns.find(pattern => {\n return pattern.index === undefined;\n });\n }\n}\n"],"names":["AccessPatternHandler","params","WebinyError","pattern","undefined"],"mappings":";AAYO,MAAMA;IAGT,YAAmBC,MAAmC,CAAE;QACpD,IAAIA,AAA2B,MAA3BA,OAAO,QAAQ,CAAC,MAAM,EACtB,MAAM,IAAIC,YAAY;YAClB,SAAS;YACT,MAAM;QACV;QAEJ,IAAI,CAAC,QAAQ,GAAGD,OAAO,QAAQ;IACnC;IAEA,MAAa,OAAOA,MAA0B,EAA8C;QACxF,MAAME,UAAU,IAAI,CAAC,IAAI,CAACF;QAC1B,IAAI,CAACE,SACD,MAAM,IAAID,YAAY;YAClB,SAAS;YACT,MAAM;YACN,MAAM;gBACF,GAAGD,MAAM;YACb;QACJ;QAGJ,OAAO,MAAME,QAAQ,IAAI,CAACF;IAC9B;IAEO,oBAA6C;QAChD,MAAME,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,CAACA,CAAAA,UACxBA,AAAkBC,WAAlBD,QAAQ,KAAK;QAExB,IAAI,CAACA,SACD,MAAM,IAAID,YAAY;YAClB,SAAS;YACT,MAAM;QACV;QAEJ,OAAOC;IACX;IAEO,oBAA+C;QAClD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAACA,CAAAA,UACjBA,AAAkBC,WAAlBD,QAAQ,KAAK;IAE5B;IAEQ,KAAKF,MAA0B,EAAuC;QAI1E,KAAK,MAAME,WAAW,IAAI,CAAC,QAAQ,CAC/B,IAAIA,QAAQ,SAAS,CAACF,SAClB,OAAOE;QAMf,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAACA,CAAAA,UACfA,AAAkBC,WAAlBD,QAAQ,KAAK;IAE5B;AACJ"}
@@ -1,16 +0,0 @@
1
- import type { IConverter } from "../storage/abstractions/Converter.js";
2
- import type { IAuditLog, IStorageItem } from "../storage/types.js";
3
- import type { IAccessPatternHandler } from "../storage/abstractions/AccessPatternHandler.js";
4
- import { CompressionHandler } from "@webiny/utils/exports/api.js";
5
- export interface IConverterParams {
6
- compressionHandler: CompressionHandler.Interface;
7
- patternHandler: IAccessPatternHandler;
8
- }
9
- export declare class Converter implements IConverter {
10
- private readonly compressionHandler;
11
- private readonly patternHandler;
12
- constructor(params: IConverterParams);
13
- oneFromStorage(item: IStorageItem): Promise<IAuditLog>;
14
- listFromStorage(items: IStorageItem[]): Promise<IAuditLog[]>;
15
- oneToStorage(auditLog: IAuditLog): Promise<IStorageItem>;
16
- }
@@ -1,49 +0,0 @@
1
- import { convertExpiresAtToUnixTimestamp } from "../utils/expiresAt.js";
2
- const convertToDateTime = (value)=>new Date(value);
3
- class Converter {
4
- constructor(params){
5
- this.compressionHandler = params.compressionHandler;
6
- this.patternHandler = params.patternHandler;
7
- }
8
- async oneFromStorage(item) {
9
- return {
10
- ...item.data,
11
- expiresAt: convertToDateTime(item.data.expiresAt),
12
- content: await this.compressionHandler.decompress(JSON.parse(item.data.content)),
13
- createdOn: new Date(item.data.createdOn)
14
- };
15
- }
16
- async listFromStorage(items) {
17
- return await Promise.all(items.map(async (item)=>await this.oneFromStorage(item)));
18
- }
19
- async oneToStorage(auditLog) {
20
- const defaultPattern = this.patternHandler.getDefaultPattern();
21
- const defaultKeys = defaultPattern.createKeys(auditLog);
22
- const patterns = this.patternHandler.listIndexPatterns();
23
- const keys = patterns.reduce((output, pattern)=>{
24
- const patternKeys = pattern.createKeys(auditLog);
25
- return {
26
- ...output,
27
- [`${pattern.index}_PK`]: patternKeys.partitionKey,
28
- [`${pattern.index}_SK`]: patternKeys.sortKey
29
- };
30
- }, {});
31
- return {
32
- PK: defaultKeys.partitionKey,
33
- SK: defaultKeys.sortKey,
34
- ...keys,
35
- TYPE: "auditLog.log",
36
- GSI_TENANT: auditLog.tenant,
37
- data: {
38
- ...auditLog,
39
- expiresAt: auditLog.expiresAt.toISOString(),
40
- content: JSON.stringify(await this.compressionHandler.compress(auditLog.content)),
41
- createdOn: auditLog.createdOn.toISOString()
42
- },
43
- expiresAt: convertExpiresAtToUnixTimestamp(auditLog.expiresAt)
44
- };
45
- }
46
- }
47
- export { Converter };
48
-
49
- //# sourceMappingURL=Converter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage/Converter.js","sources":["../../src/storage/Converter.ts"],"sourcesContent":["import type { IConverter } from \"~/storage/abstractions/Converter.js\";\nimport type { IAuditLog, IStorageItem } from \"~/storage/types.js\";\nimport type { IAccessPatternHandler } from \"~/storage/abstractions/AccessPatternHandler.js\";\nimport { convertExpiresAtToUnixTimestamp } from \"~/utils/expiresAt.js\";\nimport { CompressionHandler } from \"@webiny/utils/exports/api.js\";\n\nconst convertToDateTime = (value: string): Date => {\n return new Date(value);\n};\n\nexport interface IConverterParams {\n compressionHandler: CompressionHandler.Interface;\n patternHandler: IAccessPatternHandler;\n}\n\ntype PickOnlyGSIKeys<T> = {\n [K in keyof T]: K extends `GSI${string}` ? K : never;\n}[keyof T];\n\ntype PickedGSIKeys = Pick<IStorageItem, PickOnlyGSIKeys<IStorageItem>>;\n\nexport class Converter implements IConverter {\n private readonly compressionHandler;\n private readonly patternHandler;\n\n public constructor(params: IConverterParams) {\n this.compressionHandler = params.compressionHandler;\n this.patternHandler = params.patternHandler;\n }\n\n public async oneFromStorage(item: IStorageItem): Promise<IAuditLog> {\n return {\n ...item.data,\n expiresAt: convertToDateTime(item.data.expiresAt),\n content: await this.compressionHandler.decompress(JSON.parse(item.data.content)),\n createdOn: new Date(item.data.createdOn)\n };\n }\n\n public async listFromStorage(items: IStorageItem[]): Promise<IAuditLog[]> {\n return await Promise.all(\n items.map(async item => {\n return await this.oneFromStorage(item);\n })\n );\n }\n\n public async oneToStorage(auditLog: IAuditLog): Promise<IStorageItem> {\n const defaultPattern = this.patternHandler.getDefaultPattern();\n\n const defaultKeys = defaultPattern.createKeys(auditLog);\n\n const patterns = this.patternHandler.listIndexPatterns();\n\n const keys = patterns.reduce<PickedGSIKeys>((output, pattern) => {\n const patternKeys = pattern.createKeys(auditLog);\n return {\n ...output,\n [`${pattern.index}_PK`]: patternKeys.partitionKey,\n [`${pattern.index}_SK`]: patternKeys.sortKey\n };\n }, {} as PickedGSIKeys);\n\n return {\n PK: defaultKeys.partitionKey,\n SK: defaultKeys.sortKey as unknown as string,\n ...keys,\n TYPE: \"auditLog.log\",\n GSI_TENANT: auditLog.tenant,\n data: {\n ...auditLog,\n expiresAt: auditLog.expiresAt.toISOString(),\n content: JSON.stringify(await this.compressionHandler.compress(auditLog.content)),\n createdOn: auditLog.createdOn.toISOString()\n },\n expiresAt: convertExpiresAtToUnixTimestamp(auditLog.expiresAt)\n };\n }\n}\n"],"names":["convertToDateTime","value","Date","Converter","params","item","JSON","items","Promise","auditLog","defaultPattern","defaultKeys","patterns","keys","output","pattern","patternKeys","convertExpiresAtToUnixTimestamp"],"mappings":";AAMA,MAAMA,oBAAoB,CAACC,QAChB,IAAIC,KAAKD;AAcb,MAAME;IAIT,YAAmBC,MAAwB,CAAE;QACzC,IAAI,CAAC,kBAAkB,GAAGA,OAAO,kBAAkB;QACnD,IAAI,CAAC,cAAc,GAAGA,OAAO,cAAc;IAC/C;IAEA,MAAa,eAAeC,IAAkB,EAAsB;QAChE,OAAO;YACH,GAAGA,KAAK,IAAI;YACZ,WAAWL,kBAAkBK,KAAK,IAAI,CAAC,SAAS;YAChD,SAAS,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAACC,KAAK,KAAK,CAACD,KAAK,IAAI,CAAC,OAAO;YAC9E,WAAW,IAAIH,KAAKG,KAAK,IAAI,CAAC,SAAS;QAC3C;IACJ;IAEA,MAAa,gBAAgBE,KAAqB,EAAwB;QACtE,OAAO,MAAMC,QAAQ,GAAG,CACpBD,MAAM,GAAG,CAAC,OAAMF,OACL,MAAM,IAAI,CAAC,cAAc,CAACA;IAG7C;IAEA,MAAa,aAAaI,QAAmB,EAAyB;QAClE,MAAMC,iBAAiB,IAAI,CAAC,cAAc,CAAC,iBAAiB;QAE5D,MAAMC,cAAcD,eAAe,UAAU,CAACD;QAE9C,MAAMG,WAAW,IAAI,CAAC,cAAc,CAAC,iBAAiB;QAEtD,MAAMC,OAAOD,SAAS,MAAM,CAAgB,CAACE,QAAQC;YACjD,MAAMC,cAAcD,QAAQ,UAAU,CAACN;YACvC,OAAO;gBACH,GAAGK,MAAM;gBACT,CAAC,GAAGC,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,EAAEC,YAAY,YAAY;gBACjD,CAAC,GAAGD,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,EAAEC,YAAY,OAAO;YAChD;QACJ,GAAG,CAAC;QAEJ,OAAO;YACH,IAAIL,YAAY,YAAY;YAC5B,IAAIA,YAAY,OAAO;YACvB,GAAGE,IAAI;YACP,MAAM;YACN,YAAYJ,SAAS,MAAM;YAC3B,MAAM;gBACF,GAAGA,QAAQ;gBACX,WAAWA,SAAS,SAAS,CAAC,WAAW;gBACzC,SAASH,KAAK,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAACG,SAAS,OAAO;gBAC/E,WAAWA,SAAS,SAAS,CAAC,WAAW;YAC7C;YACA,WAAWQ,gCAAgCR,SAAS,SAAS;QACjE;IACJ;AACJ"}
@@ -1,18 +0,0 @@
1
- import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js";
2
- import type { IStorage, IStorageFetchParams, IStorageFetchResult, IStorageListParams, IStorageListResult, IStorageStoreParams, IStorageStoreResult } from "../storage/abstractions/Storage.js";
3
- import { CompressionHandler } from "@webiny/utils/exports/api.js";
4
- export interface IStorageParams {
5
- compressionHandler: CompressionHandler.Interface;
6
- client: DynamoDBDocument;
7
- tableName: string | undefined;
8
- }
9
- export declare class Storage implements IStorage {
10
- private readonly entity;
11
- private readonly converter;
12
- private readonly patternHandler;
13
- constructor(params: IStorageParams);
14
- fetch(params: IStorageFetchParams): Promise<IStorageFetchResult>;
15
- store(params: IStorageStoreParams): Promise<IStorageStoreResult>;
16
- list(params: IStorageListParams): Promise<IStorageListResult>;
17
- }
18
- export declare const createStorage: (params: IStorageParams) => IStorage;