@webiny/api-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 (196) hide show
  1. package/abstractions.js +2 -3
  2. package/abstractions.js.map +1 -1
  3. package/config.js +2 -1
  4. package/config.js.map +1 -1
  5. package/context/AuditLogsContextValue.js +115 -125
  6. package/context/AuditLogsContextValue.js.map +1 -1
  7. package/context/index.js +21 -27
  8. package/context/index.js.map +1 -1
  9. package/events/AuditLogAfterCreateEvent.js +8 -5
  10. package/events/AuditLogAfterCreateEvent.js.map +1 -1
  11. package/events/AuditLogAfterUpdateEvent.js +8 -5
  12. package/events/AuditLogAfterUpdateEvent.js.map +1 -1
  13. package/events/AuditLogBeforeCreateEvent.js +8 -5
  14. package/events/AuditLogBeforeCreateEvent.js.map +1 -1
  15. package/events/AuditLogBeforeUpdateEvent.js +8 -5
  16. package/events/AuditLogBeforeUpdateEvent.js.map +1 -1
  17. package/events/abstractions.js +5 -24
  18. package/events/abstractions.js.map +1 -1
  19. package/events/index.js +0 -2
  20. package/graphql/schema.js +37 -48
  21. package/graphql/schema.js.map +1 -1
  22. package/graphql/validation.d.ts +3 -3
  23. package/graphql/validation.js +26 -30
  24. package/graphql/validation.js.map +1 -1
  25. package/index.js +18 -15
  26. package/index.js.map +1 -1
  27. package/package.json +26 -26
  28. package/storage/AccessPatternHandler.js +31 -52
  29. package/storage/AccessPatternHandler.js.map +1 -1
  30. package/storage/Converter.js +45 -48
  31. package/storage/Converter.js.map +1 -1
  32. package/storage/Storage.js +69 -77
  33. package/storage/Storage.js.map +1 -1
  34. package/storage/abstractions/AccessPattern.js +0 -3
  35. package/storage/abstractions/AccessPatternHandler.js +0 -3
  36. package/storage/abstractions/Converter.js +0 -3
  37. package/storage/abstractions/Storage.js +0 -3
  38. package/storage/accessPatterns/AppAccessPattern.js +31 -25
  39. package/storage/accessPatterns/AppAccessPattern.js.map +1 -1
  40. package/storage/accessPatterns/AppCreatedByAccessPattern.js +34 -28
  41. package/storage/accessPatterns/AppCreatedByAccessPattern.js.map +1 -1
  42. package/storage/accessPatterns/AppEntityAccessPattern.js +31 -25
  43. package/storage/accessPatterns/AppEntityAccessPattern.js.map +1 -1
  44. package/storage/accessPatterns/AppEntityActionAccessPattern.js +31 -25
  45. package/storage/accessPatterns/AppEntityActionAccessPattern.js.map +1 -1
  46. package/storage/accessPatterns/AppEntityActionCreatedByAccessPattern.js +34 -28
  47. package/storage/accessPatterns/AppEntityActionCreatedByAccessPattern.js.map +1 -1
  48. package/storage/accessPatterns/AppEntityCreatedByAccessPattern.js +34 -28
  49. package/storage/accessPatterns/AppEntityCreatedByAccessPattern.js.map +1 -1
  50. package/storage/accessPatterns/BaseAccessPattern.js +47 -70
  51. package/storage/accessPatterns/BaseAccessPattern.js.map +1 -1
  52. package/storage/accessPatterns/CreatedByAccessPattern.js +34 -28
  53. package/storage/accessPatterns/CreatedByAccessPattern.js.map +1 -1
  54. package/storage/accessPatterns/CreatedOnAccessPattern.js +34 -26
  55. package/storage/accessPatterns/CreatedOnAccessPattern.js.map +1 -1
  56. package/storage/accessPatterns/DefaultAccessPattern.js +31 -32
  57. package/storage/accessPatterns/DefaultAccessPattern.js.map +1 -1
  58. package/storage/accessPatterns/EntityIdAccessPattern.js +32 -27
  59. package/storage/accessPatterns/EntityIdAccessPattern.js.map +1 -1
  60. package/storage/accessPatterns/index.js +44 -34
  61. package/storage/accessPatterns/index.js.map +1 -1
  62. package/storage/cursorSchema.js +15 -18
  63. package/storage/cursorSchema.js.map +1 -1
  64. package/storage/entity.js +115 -122
  65. package/storage/entity.js.map +1 -1
  66. package/storage/results/ListErrorResult.js +9 -8
  67. package/storage/results/ListErrorResult.js.map +1 -1
  68. package/storage/results/ListSuccessResult.js +13 -12
  69. package/storage/results/ListSuccessResult.js.map +1 -1
  70. package/storage/results/index.js +0 -2
  71. package/storage/startKey.js +4 -5
  72. package/storage/startKey.js.map +1 -1
  73. package/storage/types.js +0 -3
  74. package/subscriptions/aco/handlers/AuditLogFolderAfterCreateHandler.js +26 -25
  75. package/subscriptions/aco/handlers/AuditLogFolderAfterCreateHandler.js.map +1 -1
  76. package/subscriptions/aco/handlers/AuditLogFolderAfterDeleteHandler.js +29 -28
  77. package/subscriptions/aco/handlers/AuditLogFolderAfterDeleteHandler.js.map +1 -1
  78. package/subscriptions/aco/handlers/AuditLogFolderAfterUpdateHandler.js +32 -32
  79. package/subscriptions/aco/handlers/AuditLogFolderAfterUpdateHandler.js.map +1 -1
  80. package/subscriptions/aco/index.js +5 -4
  81. package/subscriptions/aco/index.js.map +1 -1
  82. package/subscriptions/fileManager/handlers/AuditLogFileAfterCreateHandler.js +21 -20
  83. package/subscriptions/fileManager/handlers/AuditLogFileAfterCreateHandler.js.map +1 -1
  84. package/subscriptions/fileManager/handlers/AuditLogFileAfterDeleteHandler.js +21 -20
  85. package/subscriptions/fileManager/handlers/AuditLogFileAfterDeleteHandler.js.map +1 -1
  86. package/subscriptions/fileManager/handlers/AuditLogFileAfterUpdateHandler.js +24 -24
  87. package/subscriptions/fileManager/handlers/AuditLogFileAfterUpdateHandler.js.map +1 -1
  88. package/subscriptions/fileManager/handlers/AuditLogSettingsAfterUpdateHandler.js +24 -24
  89. package/subscriptions/fileManager/handlers/AuditLogSettingsAfterUpdateHandler.js.map +1 -1
  90. package/subscriptions/fileManager/index.js +6 -8
  91. package/subscriptions/fileManager/index.js.map +1 -1
  92. package/subscriptions/headlessCms/handlers/AuditLogEntryAfterCreateEventHandler.js +21 -23
  93. package/subscriptions/headlessCms/handlers/AuditLogEntryAfterCreateEventHandler.js.map +1 -1
  94. package/subscriptions/headlessCms/handlers/AuditLogEntryAfterDeleteEventHandler.js +26 -29
  95. package/subscriptions/headlessCms/handlers/AuditLogEntryAfterDeleteEventHandler.js.map +1 -1
  96. package/subscriptions/headlessCms/handlers/AuditLogEntryAfterPublishEventHandler.js +21 -23
  97. package/subscriptions/headlessCms/handlers/AuditLogEntryAfterPublishEventHandler.js.map +1 -1
  98. package/subscriptions/headlessCms/handlers/AuditLogEntryAfterRestoreFromBinEventHandler.js +21 -23
  99. package/subscriptions/headlessCms/handlers/AuditLogEntryAfterRestoreFromBinEventHandler.js.map +1 -1
  100. package/subscriptions/headlessCms/handlers/AuditLogEntryAfterUnpublishEventHandler.js +21 -23
  101. package/subscriptions/headlessCms/handlers/AuditLogEntryAfterUnpublishEventHandler.js.map +1 -1
  102. package/subscriptions/headlessCms/handlers/AuditLogEntryAfterUpdateEventHandler.js +24 -27
  103. package/subscriptions/headlessCms/handlers/AuditLogEntryAfterUpdateEventHandler.js.map +1 -1
  104. package/subscriptions/headlessCms/handlers/AuditLogEntryRevisionAfterCreateEventHandler.js +21 -23
  105. package/subscriptions/headlessCms/handlers/AuditLogEntryRevisionAfterCreateEventHandler.js.map +1 -1
  106. package/subscriptions/headlessCms/handlers/AuditLogEntryRevisionAfterDeleteEventHandler.js +21 -23
  107. package/subscriptions/headlessCms/handlers/AuditLogEntryRevisionAfterDeleteEventHandler.js.map +1 -1
  108. package/subscriptions/headlessCms/handlers/AuditLogGroupAfterCreateEventHandler.js +21 -20
  109. package/subscriptions/headlessCms/handlers/AuditLogGroupAfterCreateEventHandler.js.map +1 -1
  110. package/subscriptions/headlessCms/handlers/AuditLogGroupAfterDeleteEventHandler.js +21 -20
  111. package/subscriptions/headlessCms/handlers/AuditLogGroupAfterDeleteEventHandler.js.map +1 -1
  112. package/subscriptions/headlessCms/handlers/AuditLogGroupAfterUpdateEventHandler.js +24 -24
  113. package/subscriptions/headlessCms/handlers/AuditLogGroupAfterUpdateEventHandler.js.map +1 -1
  114. package/subscriptions/headlessCms/handlers/AuditLogModelAfterCreateEventHandler.js +21 -20
  115. package/subscriptions/headlessCms/handlers/AuditLogModelAfterCreateEventHandler.js.map +1 -1
  116. package/subscriptions/headlessCms/handlers/AuditLogModelAfterDeleteEventHandler.js +21 -20
  117. package/subscriptions/headlessCms/handlers/AuditLogModelAfterDeleteEventHandler.js.map +1 -1
  118. package/subscriptions/headlessCms/handlers/AuditLogModelAfterUpdateEventHandler.js +24 -24
  119. package/subscriptions/headlessCms/handlers/AuditLogModelAfterUpdateEventHandler.js.map +1 -1
  120. package/subscriptions/headlessCms/index.js +16 -20
  121. package/subscriptions/headlessCms/index.js.map +1 -1
  122. package/subscriptions/index.js +8 -7
  123. package/subscriptions/index.js.map +1 -1
  124. package/subscriptions/mailer/handlers/AuditLogMailerSettingsAfterSaveHandler.js +23 -22
  125. package/subscriptions/mailer/handlers/AuditLogMailerSettingsAfterSaveHandler.js.map +1 -1
  126. package/subscriptions/mailer/index.js +3 -3
  127. package/subscriptions/mailer/index.js.map +1 -1
  128. package/subscriptions/security/handlers/AuditLogApiKeyAfterCreateHandler.js +31 -37
  129. package/subscriptions/security/handlers/AuditLogApiKeyAfterCreateHandler.js.map +1 -1
  130. package/subscriptions/security/handlers/AuditLogApiKeyAfterDeleteHandler.js +31 -37
  131. package/subscriptions/security/handlers/AuditLogApiKeyAfterDeleteHandler.js.map +1 -1
  132. package/subscriptions/security/handlers/AuditLogApiKeyAfterUpdateHandler.js +35 -42
  133. package/subscriptions/security/handlers/AuditLogApiKeyAfterUpdateHandler.js.map +1 -1
  134. package/subscriptions/security/handlers/AuditLogRoleAfterCreateHandler.js +21 -20
  135. package/subscriptions/security/handlers/AuditLogRoleAfterCreateHandler.js.map +1 -1
  136. package/subscriptions/security/handlers/AuditLogRoleAfterDeleteHandler.js +21 -20
  137. package/subscriptions/security/handlers/AuditLogRoleAfterDeleteHandler.js.map +1 -1
  138. package/subscriptions/security/handlers/AuditLogRoleAfterUpdateHandler.js +24 -24
  139. package/subscriptions/security/handlers/AuditLogRoleAfterUpdateHandler.js.map +1 -1
  140. package/subscriptions/security/handlers/AuditLogTeamAfterCreateHandler.js +21 -20
  141. package/subscriptions/security/handlers/AuditLogTeamAfterCreateHandler.js.map +1 -1
  142. package/subscriptions/security/handlers/AuditLogTeamAfterDeleteHandler.js +21 -20
  143. package/subscriptions/security/handlers/AuditLogTeamAfterDeleteHandler.js.map +1 -1
  144. package/subscriptions/security/handlers/AuditLogTeamAfterUpdateHandler.js +24 -24
  145. package/subscriptions/security/handlers/AuditLogTeamAfterUpdateHandler.js.map +1 -1
  146. package/subscriptions/security/handlers/AuditLogUserAfterCreateHandler.js +21 -20
  147. package/subscriptions/security/handlers/AuditLogUserAfterCreateHandler.js.map +1 -1
  148. package/subscriptions/security/handlers/AuditLogUserAfterDeleteHandler.js +21 -20
  149. package/subscriptions/security/handlers/AuditLogUserAfterDeleteHandler.js.map +1 -1
  150. package/subscriptions/security/handlers/AuditLogUserAfterUpdateHandler.js +24 -24
  151. package/subscriptions/security/handlers/AuditLogUserAfterUpdateHandler.js.map +1 -1
  152. package/subscriptions/security/handlers/cleanupApiKey.js +10 -16
  153. package/subscriptions/security/handlers/cleanupApiKey.js.map +1 -1
  154. package/subscriptions/security/index.js +14 -20
  155. package/subscriptions/security/index.js.map +1 -1
  156. package/subscriptions/websiteBuilder/index.js +14 -16
  157. package/subscriptions/websiteBuilder/index.js.map +1 -1
  158. package/subscriptions/websiteBuilder/pages/PageAfterCreateHandler.js +20 -19
  159. package/subscriptions/websiteBuilder/pages/PageAfterCreateHandler.js.map +1 -1
  160. package/subscriptions/websiteBuilder/pages/PageAfterCreateRevisionFromHandler.js +20 -19
  161. package/subscriptions/websiteBuilder/pages/PageAfterCreateRevisionFromHandler.js.map +1 -1
  162. package/subscriptions/websiteBuilder/pages/PageAfterDeleteHandler.js +20 -19
  163. package/subscriptions/websiteBuilder/pages/PageAfterDeleteHandler.js.map +1 -1
  164. package/subscriptions/websiteBuilder/pages/PageAfterDuplicateHandler.js +23 -23
  165. package/subscriptions/websiteBuilder/pages/PageAfterDuplicateHandler.js.map +1 -1
  166. package/subscriptions/websiteBuilder/pages/PageAfterMoveHandler.js +20 -19
  167. package/subscriptions/websiteBuilder/pages/PageAfterMoveHandler.js.map +1 -1
  168. package/subscriptions/websiteBuilder/pages/PageAfterPublishHandler.js +20 -19
  169. package/subscriptions/websiteBuilder/pages/PageAfterPublishHandler.js.map +1 -1
  170. package/subscriptions/websiteBuilder/pages/PageAfterUnpublishHandler.js +20 -19
  171. package/subscriptions/websiteBuilder/pages/PageAfterUnpublishHandler.js.map +1 -1
  172. package/subscriptions/websiteBuilder/pages/PageAfterUpdateHandler.js +23 -23
  173. package/subscriptions/websiteBuilder/pages/PageAfterUpdateHandler.js.map +1 -1
  174. package/subscriptions/websiteBuilder/redirects/RedirectAfterCreateHandler.js +20 -19
  175. package/subscriptions/websiteBuilder/redirects/RedirectAfterCreateHandler.js.map +1 -1
  176. package/subscriptions/websiteBuilder/redirects/RedirectAfterDeleteHandler.js +20 -19
  177. package/subscriptions/websiteBuilder/redirects/RedirectAfterDeleteHandler.js.map +1 -1
  178. package/subscriptions/websiteBuilder/redirects/RedirectAfterMoveHandler.js +20 -19
  179. package/subscriptions/websiteBuilder/redirects/RedirectAfterMoveHandler.js.map +1 -1
  180. package/subscriptions/websiteBuilder/redirects/RedirectAfterUpdateHandler.js +23 -23
  181. package/subscriptions/websiteBuilder/redirects/RedirectAfterUpdateHandler.js.map +1 -1
  182. package/types.js +0 -3
  183. package/utils/expiresAt.js +14 -19
  184. package/utils/expiresAt.js.map +1 -1
  185. package/utils/getAuditConfig.js +79 -98
  186. package/utils/getAuditConfig.js.map +1 -1
  187. package/utils/getAuditObject.js +14 -15
  188. package/utils/getAuditObject.js.map +1 -1
  189. package/events/index.js.map +0 -1
  190. package/storage/abstractions/AccessPattern.js.map +0 -1
  191. package/storage/abstractions/AccessPatternHandler.js.map +0 -1
  192. package/storage/abstractions/Converter.js.map +0 -1
  193. package/storage/abstractions/Storage.js.map +0 -1
  194. package/storage/results/index.js.map +0 -1
  195. package/storage/types.js.map +0 -1
  196. package/types.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["convertExpiresAtToUnixTimestamp","convertToDateTime","value","Date","Converter","constructor","params","compressionHandler","patternHandler","oneFromStorage","item","data","expiresAt","content","decompress","JSON","parse","createdOn","listFromStorage","items","Promise","all","map","oneToStorage","auditLog","defaultPattern","getDefaultPattern","defaultKeys","createKeys","patterns","listIndexPatterns","keys","reduce","output","pattern","patternKeys","index","partitionKey","sortKey","PK","SK","TYPE","GSI_TENANT","tenant","toISOString","stringify","compress"],"sources":["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"],"mappings":"AAGA,SAASA,+BAA+B;AAGxC,MAAMC,iBAAiB,GAAIC,KAAa,IAAW;EAC/C,OAAO,IAAIC,IAAI,CAACD,KAAK,CAAC;AAC1B,CAAC;AAaD,OAAO,MAAME,SAAS,CAAuB;EAIlCC,WAAWA,CAACC,MAAwB,EAAE;IACzC,IAAI,CAACC,kBAAkB,GAAGD,MAAM,CAACC,kBAAkB;IACnD,IAAI,CAACC,cAAc,GAAGF,MAAM,CAACE,cAAc;EAC/C;EAEA,MAAaC,cAAcA,CAACC,IAAkB,EAAsB;IAChE,OAAO;MACH,GAAGA,IAAI,CAACC,IAAI;MACZC,SAAS,EAAEX,iBAAiB,CAACS,IAAI,CAACC,IAAI,CAACC,SAAS,CAAC;MACjDC,OAAO,EAAE,MAAM,IAAI,CAACN,kBAAkB,CAACO,UAAU,CAACC,IAAI,CAACC,KAAK,CAACN,IAAI,CAACC,IAAI,CAACE,OAAO,CAAC,CAAC;MAChFI,SAAS,EAAE,IAAId,IAAI,CAACO,IAAI,CAACC,IAAI,CAACM,SAAS;IAC3C,CAAC;EACL;EAEA,MAAaC,eAAeA,CAACC,KAAqB,EAAwB;IACtE,OAAO,MAAMC,OAAO,CAACC,GAAG,CACpBF,KAAK,CAACG,GAAG,CAAC,MAAMZ,IAAI,IAAI;MACpB,OAAO,MAAM,IAAI,CAACD,cAAc,CAACC,IAAI,CAAC;IAC1C,CAAC,CACL,CAAC;EACL;EAEA,MAAaa,YAAYA,CAACC,QAAmB,EAAyB;IAClE,MAAMC,cAAc,GAAG,IAAI,CAACjB,cAAc,CAACkB,iBAAiB,CAAC,CAAC;IAE9D,MAAMC,WAAW,GAAGF,cAAc,CAACG,UAAU,CAACJ,QAAQ,CAAC;IAEvD,MAAMK,QAAQ,GAAG,IAAI,CAACrB,cAAc,CAACsB,iBAAiB,CAAC,CAAC;IAExD,MAAMC,IAAI,GAAGF,QAAQ,CAACG,MAAM,CAAgB,CAACC,MAAM,EAAEC,OAAO,KAAK;MAC7D,MAAMC,WAAW,GAAGD,OAAO,CAACN,UAAU,CAACJ,QAAQ,CAAC;MAChD,OAAO;QACH,GAAGS,MAAM;QACT,CAAC,GAAGC,OAAO,CAACE,KAAK,KAAK,GAAGD,WAAW,CAACE,YAAY;QACjD,CAAC,GAAGH,OAAO,CAACE,KAAK,KAAK,GAAGD,WAAW,CAACG;MACzC,CAAC;IACL,CAAC,EAAE,CAAC,CAAkB,CAAC;IAEvB,OAAO;MACHC,EAAE,EAAEZ,WAAW,CAACU,YAAY;MAC5BG,EAAE,EAAEb,WAAW,CAACW,OAA4B;MAC5C,GAAGP,IAAI;MACPU,IAAI,EAAE,cAAc;MACpBC,UAAU,EAAElB,QAAQ,CAACmB,MAAM;MAC3BhC,IAAI,EAAE;QACF,GAAGa,QAAQ;QACXZ,SAAS,EAAEY,QAAQ,CAACZ,SAAS,CAACgC,WAAW,CAAC,CAAC;QAC3C/B,OAAO,EAAEE,IAAI,CAAC8B,SAAS,CAAC,MAAM,IAAI,CAACtC,kBAAkB,CAACuC,QAAQ,CAACtB,QAAQ,CAACX,OAAO,CAAC,CAAC;QACjFI,SAAS,EAAEO,QAAQ,CAACP,SAAS,CAAC2B,WAAW,CAAC;MAC9C,CAAC;MACDhC,SAAS,EAAEZ,+BAA+B,CAACwB,QAAQ,CAACZ,SAAS;IACjE,CAAC;EACL;AACJ","ignoreList":[]}
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"}
@@ -3,87 +3,79 @@ import { Converter } from "./Converter.js";
3
3
  import { createAccessPatterns } from "./accessPatterns/index.js";
4
4
  import { AccessPatternHandler } from "./AccessPatternHandler.js";
5
5
  import { ListSuccessResult } from "./results/index.js";
6
- export class Storage {
7
- constructor(params) {
8
- const {
9
- entity
10
- } = createEntity({
11
- client: params.client,
12
- tableName: params.tableName,
13
- gsiAmount: 10
14
- });
15
- this.entity = entity;
16
- const patterns = createAccessPatterns({
17
- entity
18
- });
19
- this.patternHandler = new AccessPatternHandler({
20
- patterns
21
- });
22
- this.converter = new Converter({
23
- compressionHandler: params.compressionHandler,
24
- patternHandler: this.patternHandler
25
- });
26
- }
27
- async fetch(params) {
28
- const {
29
- id,
30
- tenant
31
- } = params;
32
- try {
33
- const result = await this.entity.get({
34
- PK: `T#${tenant}#AUDIT_LOG`,
35
- SK: `${id}`
36
- });
37
- if (!result) {
6
+ class Storage {
7
+ constructor(params){
8
+ const { entity } = createEntity({
9
+ client: params.client,
10
+ tableName: params.tableName,
11
+ gsiAmount: 10
12
+ });
13
+ this.entity = entity;
14
+ const patterns = createAccessPatterns({
15
+ entity
16
+ });
17
+ this.patternHandler = new AccessPatternHandler({
18
+ patterns
19
+ });
20
+ this.converter = new Converter({
21
+ compressionHandler: params.compressionHandler,
22
+ patternHandler: this.patternHandler
23
+ });
24
+ }
25
+ async fetch(params) {
26
+ const { id, tenant } = params;
27
+ try {
28
+ const result = await this.entity.get({
29
+ PK: `T#${tenant}#AUDIT_LOG`,
30
+ SK: `${id}`
31
+ });
32
+ if (!result) return {
33
+ error: new Error(`Audit log entry "${id}" not found.`),
34
+ success: false
35
+ };
36
+ return {
37
+ data: await this.converter.oneFromStorage(result),
38
+ success: true
39
+ };
40
+ } catch (ex) {
41
+ return {
42
+ error: ex,
43
+ success: false
44
+ };
45
+ }
46
+ }
47
+ async store(params) {
48
+ const auditLog = structuredClone(params.data);
49
+ try {
50
+ const item = await this.converter.oneToStorage(auditLog);
51
+ await this.entity.put(item);
52
+ } catch (ex) {
53
+ return {
54
+ error: ex,
55
+ success: false
56
+ };
57
+ }
38
58
  return {
39
- error: new Error(`Audit log entry "${id}" not found.`),
40
- success: false
59
+ success: true,
60
+ data: auditLog
41
61
  };
42
- }
43
- return {
44
- data: await this.converter.oneFromStorage(result),
45
- success: true
46
- };
47
- } catch (ex) {
48
- return {
49
- error: ex,
50
- success: false
51
- };
52
- }
53
- }
54
- async store(params) {
55
- const auditLog = structuredClone(params.data);
56
- try {
57
- const item = await this.converter.oneToStorage(auditLog);
58
- await this.entity.put(item);
59
- } catch (ex) {
60
- return {
61
- error: ex,
62
- success: false
63
- };
64
62
  }
65
- return {
66
- success: true,
67
- data: auditLog
68
- };
69
- }
70
- async list(params) {
71
- try {
72
- const result = await this.patternHandler.handle(params);
73
- return ListSuccessResult.create({
74
- data: await this.converter.listFromStorage(result.items),
75
- lastEvaluatedKey: result.lastEvaluatedKey
76
- });
77
- } catch (ex) {
78
- return {
79
- error: ex,
80
- success: false
81
- };
63
+ async list(params) {
64
+ try {
65
+ const result = await this.patternHandler.handle(params);
66
+ return ListSuccessResult.create({
67
+ data: await this.converter.listFromStorage(result.items),
68
+ lastEvaluatedKey: result.lastEvaluatedKey
69
+ });
70
+ } catch (ex) {
71
+ return {
72
+ error: ex,
73
+ success: false
74
+ };
75
+ }
82
76
  }
83
- }
84
77
  }
85
- export const createStorage = params => {
86
- return new Storage(params);
87
- };
78
+ const createStorage = (params)=>new Storage(params);
79
+ export { Storage, createStorage };
88
80
 
89
81
  //# sourceMappingURL=Storage.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createEntity","Converter","createAccessPatterns","AccessPatternHandler","ListSuccessResult","Storage","constructor","params","entity","client","tableName","gsiAmount","patterns","patternHandler","converter","compressionHandler","fetch","id","tenant","result","get","PK","SK","error","Error","success","data","oneFromStorage","ex","store","auditLog","structuredClone","item","oneToStorage","put","list","handle","create","listFromStorage","items","lastEvaluatedKey","createStorage"],"sources":["Storage.ts"],"sourcesContent":["import type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport { createEntity } from \"~/storage/entity.js\";\nimport type {\n IStorage,\n IStorageFetchParams,\n IStorageFetchResult,\n IStorageListParams,\n IStorageListResult,\n IStorageStoreParams,\n IStorageStoreResult\n} from \"~/storage/abstractions/Storage.js\";\nimport { Converter } from \"~/storage/Converter.js\";\nimport { createAccessPatterns } from \"~/storage/accessPatterns/index.js\";\nimport { AccessPatternHandler } from \"~/storage/AccessPatternHandler.js\";\nimport { ListSuccessResult } from \"~/storage/results/index.js\";\nimport { CompressionHandler } from \"@webiny/utils/exports/api.js\";\n\nexport interface IStorageParams {\n compressionHandler: CompressionHandler.Interface;\n client: DynamoDBDocument;\n tableName: string | undefined;\n}\n\nexport class Storage implements IStorage {\n private readonly entity;\n private readonly converter;\n private readonly patternHandler;\n\n public constructor(params: IStorageParams) {\n const { entity } = createEntity({\n client: params.client,\n tableName: params.tableName,\n gsiAmount: 10\n });\n\n this.entity = entity;\n\n const patterns = createAccessPatterns({\n entity\n });\n this.patternHandler = new AccessPatternHandler({\n patterns\n });\n\n this.converter = new Converter({\n compressionHandler: params.compressionHandler,\n patternHandler: this.patternHandler\n });\n }\n\n public async fetch(params: IStorageFetchParams): Promise<IStorageFetchResult> {\n const { id, tenant } = params;\n\n try {\n const result = await this.entity.get({\n PK: `T#${tenant}#AUDIT_LOG`,\n SK: `${id}`\n });\n if (!result) {\n return {\n error: new Error(`Audit log entry \"${id}\" not found.`),\n success: false\n };\n }\n return {\n data: await this.converter.oneFromStorage(result),\n success: true\n };\n } catch (ex) {\n return {\n error: ex,\n success: false\n };\n }\n }\n\n public async store(params: IStorageStoreParams): Promise<IStorageStoreResult> {\n const auditLog = structuredClone(params.data);\n\n try {\n const item = await this.converter.oneToStorage(auditLog);\n await this.entity.put(item);\n } catch (ex) {\n return {\n error: ex,\n success: false\n };\n }\n\n return {\n success: true,\n data: auditLog\n };\n }\n\n public async list(params: IStorageListParams): Promise<IStorageListResult> {\n try {\n const result = await this.patternHandler.handle(params);\n\n return ListSuccessResult.create({\n data: await this.converter.listFromStorage(result.items),\n lastEvaluatedKey: result.lastEvaluatedKey\n });\n } catch (ex) {\n return {\n error: ex,\n success: false\n };\n }\n }\n}\n\nexport const createStorage = (params: IStorageParams): IStorage => {\n return new Storage(params);\n};\n"],"mappings":"AACA,SAASA,YAAY;AAUrB,SAASC,SAAS;AAClB,SAASC,oBAAoB;AAC7B,SAASC,oBAAoB;AAC7B,SAASC,iBAAiB;AAS1B,OAAO,MAAMC,OAAO,CAAqB;EAK9BC,WAAWA,CAACC,MAAsB,EAAE;IACvC,MAAM;MAAEC;IAAO,CAAC,GAAGR,YAAY,CAAC;MAC5BS,MAAM,EAAEF,MAAM,CAACE,MAAM;MACrBC,SAAS,EAAEH,MAAM,CAACG,SAAS;MAC3BC,SAAS,EAAE;IACf,CAAC,CAAC;IAEF,IAAI,CAACH,MAAM,GAAGA,MAAM;IAEpB,MAAMI,QAAQ,GAAGV,oBAAoB,CAAC;MAClCM;IACJ,CAAC,CAAC;IACF,IAAI,CAACK,cAAc,GAAG,IAAIV,oBAAoB,CAAC;MAC3CS;IACJ,CAAC,CAAC;IAEF,IAAI,CAACE,SAAS,GAAG,IAAIb,SAAS,CAAC;MAC3Bc,kBAAkB,EAAER,MAAM,CAACQ,kBAAkB;MAC7CF,cAAc,EAAE,IAAI,CAACA;IACzB,CAAC,CAAC;EACN;EAEA,MAAaG,KAAKA,CAACT,MAA2B,EAAgC;IAC1E,MAAM;MAAEU,EAAE;MAAEC;IAAO,CAAC,GAAGX,MAAM;IAE7B,IAAI;MACA,MAAMY,MAAM,GAAG,MAAM,IAAI,CAACX,MAAM,CAACY,GAAG,CAAC;QACjCC,EAAE,EAAE,KAAKH,MAAM,YAAY;QAC3BI,EAAE,EAAE,GAAGL,EAAE;MACb,CAAC,CAAC;MACF,IAAI,CAACE,MAAM,EAAE;QACT,OAAO;UACHI,KAAK,EAAE,IAAIC,KAAK,CAAC,oBAAoBP,EAAE,cAAc,CAAC;UACtDQ,OAAO,EAAE;QACb,CAAC;MACL;MACA,OAAO;QACHC,IAAI,EAAE,MAAM,IAAI,CAACZ,SAAS,CAACa,cAAc,CAACR,MAAM,CAAC;QACjDM,OAAO,EAAE;MACb,CAAC;IACL,CAAC,CAAC,OAAOG,EAAE,EAAE;MACT,OAAO;QACHL,KAAK,EAAEK,EAAE;QACTH,OAAO,EAAE;MACb,CAAC;IACL;EACJ;EAEA,MAAaI,KAAKA,CAACtB,MAA2B,EAAgC;IAC1E,MAAMuB,QAAQ,GAAGC,eAAe,CAACxB,MAAM,CAACmB,IAAI,CAAC;IAE7C,IAAI;MACA,MAAMM,IAAI,GAAG,MAAM,IAAI,CAAClB,SAAS,CAACmB,YAAY,CAACH,QAAQ,CAAC;MACxD,MAAM,IAAI,CAACtB,MAAM,CAAC0B,GAAG,CAACF,IAAI,CAAC;IAC/B,CAAC,CAAC,OAAOJ,EAAE,EAAE;MACT,OAAO;QACHL,KAAK,EAAEK,EAAE;QACTH,OAAO,EAAE;MACb,CAAC;IACL;IAEA,OAAO;MACHA,OAAO,EAAE,IAAI;MACbC,IAAI,EAAEI;IACV,CAAC;EACL;EAEA,MAAaK,IAAIA,CAAC5B,MAA0B,EAA+B;IACvE,IAAI;MACA,MAAMY,MAAM,GAAG,MAAM,IAAI,CAACN,cAAc,CAACuB,MAAM,CAAC7B,MAAM,CAAC;MAEvD,OAAOH,iBAAiB,CAACiC,MAAM,CAAC;QAC5BX,IAAI,EAAE,MAAM,IAAI,CAACZ,SAAS,CAACwB,eAAe,CAACnB,MAAM,CAACoB,KAAK,CAAC;QACxDC,gBAAgB,EAAErB,MAAM,CAACqB;MAC7B,CAAC,CAAC;IACN,CAAC,CAAC,OAAOZ,EAAE,EAAE;MACT,OAAO;QACHL,KAAK,EAAEK,EAAE;QACTH,OAAO,EAAE;MACb,CAAC;IACL;EACJ;AACJ;AAEA,OAAO,MAAMgB,aAAa,GAAIlC,MAAsB,IAAe;EAC/D,OAAO,IAAIF,OAAO,CAACE,MAAM,CAAC;AAC9B,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"storage/Storage.js","sources":["../../src/storage/Storage.ts"],"sourcesContent":["import type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport { createEntity } from \"~/storage/entity.js\";\nimport type {\n IStorage,\n IStorageFetchParams,\n IStorageFetchResult,\n IStorageListParams,\n IStorageListResult,\n IStorageStoreParams,\n IStorageStoreResult\n} from \"~/storage/abstractions/Storage.js\";\nimport { Converter } from \"~/storage/Converter.js\";\nimport { createAccessPatterns } from \"~/storage/accessPatterns/index.js\";\nimport { AccessPatternHandler } from \"~/storage/AccessPatternHandler.js\";\nimport { ListSuccessResult } from \"~/storage/results/index.js\";\nimport { CompressionHandler } from \"@webiny/utils/exports/api.js\";\n\nexport interface IStorageParams {\n compressionHandler: CompressionHandler.Interface;\n client: DynamoDBDocument;\n tableName: string | undefined;\n}\n\nexport class Storage implements IStorage {\n private readonly entity;\n private readonly converter;\n private readonly patternHandler;\n\n public constructor(params: IStorageParams) {\n const { entity } = createEntity({\n client: params.client,\n tableName: params.tableName,\n gsiAmount: 10\n });\n\n this.entity = entity;\n\n const patterns = createAccessPatterns({\n entity\n });\n this.patternHandler = new AccessPatternHandler({\n patterns\n });\n\n this.converter = new Converter({\n compressionHandler: params.compressionHandler,\n patternHandler: this.patternHandler\n });\n }\n\n public async fetch(params: IStorageFetchParams): Promise<IStorageFetchResult> {\n const { id, tenant } = params;\n\n try {\n const result = await this.entity.get({\n PK: `T#${tenant}#AUDIT_LOG`,\n SK: `${id}`\n });\n if (!result) {\n return {\n error: new Error(`Audit log entry \"${id}\" not found.`),\n success: false\n };\n }\n return {\n data: await this.converter.oneFromStorage(result),\n success: true\n };\n } catch (ex) {\n return {\n error: ex,\n success: false\n };\n }\n }\n\n public async store(params: IStorageStoreParams): Promise<IStorageStoreResult> {\n const auditLog = structuredClone(params.data);\n\n try {\n const item = await this.converter.oneToStorage(auditLog);\n await this.entity.put(item);\n } catch (ex) {\n return {\n error: ex,\n success: false\n };\n }\n\n return {\n success: true,\n data: auditLog\n };\n }\n\n public async list(params: IStorageListParams): Promise<IStorageListResult> {\n try {\n const result = await this.patternHandler.handle(params);\n\n return ListSuccessResult.create({\n data: await this.converter.listFromStorage(result.items),\n lastEvaluatedKey: result.lastEvaluatedKey\n });\n } catch (ex) {\n return {\n error: ex,\n success: false\n };\n }\n }\n}\n\nexport const createStorage = (params: IStorageParams): IStorage => {\n return new Storage(params);\n};\n"],"names":["Storage","params","entity","createEntity","patterns","createAccessPatterns","AccessPatternHandler","Converter","id","tenant","result","Error","ex","auditLog","structuredClone","item","ListSuccessResult","createStorage"],"mappings":";;;;;AAuBO,MAAMA;IAKT,YAAmBC,MAAsB,CAAE;QACvC,MAAM,EAAEC,MAAM,EAAE,GAAGC,aAAa;YAC5B,QAAQF,OAAO,MAAM;YACrB,WAAWA,OAAO,SAAS;YAC3B,WAAW;QACf;QAEA,IAAI,CAAC,MAAM,GAAGC;QAEd,MAAME,WAAWC,qBAAqB;YAClCH;QACJ;QACA,IAAI,CAAC,cAAc,GAAG,IAAII,qBAAqB;YAC3CF;QACJ;QAEA,IAAI,CAAC,SAAS,GAAG,IAAIG,UAAU;YAC3B,oBAAoBN,OAAO,kBAAkB;YAC7C,gBAAgB,IAAI,CAAC,cAAc;QACvC;IACJ;IAEA,MAAa,MAAMA,MAA2B,EAAgC;QAC1E,MAAM,EAAEO,EAAE,EAAEC,MAAM,EAAE,GAAGR;QAEvB,IAAI;YACA,MAAMS,SAAS,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;gBACjC,IAAI,CAAC,EAAE,EAAED,OAAO,UAAU,CAAC;gBAC3B,IAAI,GAAGD,IAAI;YACf;YACA,IAAI,CAACE,QACD,OAAO;gBACH,OAAO,IAAIC,MAAM,CAAC,iBAAiB,EAAEH,GAAG,YAAY,CAAC;gBACrD,SAAS;YACb;YAEJ,OAAO;gBACH,MAAM,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAACE;gBAC1C,SAAS;YACb;QACJ,EAAE,OAAOE,IAAI;YACT,OAAO;gBACH,OAAOA;gBACP,SAAS;YACb;QACJ;IACJ;IAEA,MAAa,MAAMX,MAA2B,EAAgC;QAC1E,MAAMY,WAAWC,gBAAgBb,OAAO,IAAI;QAE5C,IAAI;YACA,MAAMc,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAACF;YAC/C,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAACE;QAC1B,EAAE,OAAOH,IAAI;YACT,OAAO;gBACH,OAAOA;gBACP,SAAS;YACb;QACJ;QAEA,OAAO;YACH,SAAS;YACT,MAAMC;QACV;IACJ;IAEA,MAAa,KAAKZ,MAA0B,EAA+B;QACvE,IAAI;YACA,MAAMS,SAAS,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAACT;YAEhD,OAAOe,kBAAkB,MAAM,CAAC;gBAC5B,MAAM,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAACN,OAAO,KAAK;gBACvD,kBAAkBA,OAAO,gBAAgB;YAC7C;QACJ,EAAE,OAAOE,IAAI;YACT,OAAO;gBACH,OAAOA;gBACP,SAAS;YACb;QACJ;IACJ;AACJ;AAEO,MAAMK,gBAAgB,CAAChB,SACnB,IAAID,QAAQC"}
@@ -1,3 +0,0 @@
1
- export {};
2
-
3
- //# sourceMappingURL=AccessPattern.js.map
@@ -1,3 +0,0 @@
1
- export {};
2
-
3
- //# sourceMappingURL=AccessPatternHandler.js.map
@@ -1,3 +0,0 @@
1
- export {};
2
-
3
- //# sourceMappingURL=Converter.js.map
@@ -1,3 +0,0 @@
1
- export {};
2
-
3
- //# sourceMappingURL=Storage.js.map
@@ -1,29 +1,35 @@
1
1
  import { BaseAccessPattern } from "./BaseAccessPattern.js";
2
- const createPartitionKey = params => {
3
- return `T#${params.tenant}#AUDIT_LOG#APP#${params.app}`;
4
- };
5
- export class AppAccessPattern extends BaseAccessPattern {
6
- handles() {
7
- return {
8
- mustInclude: ["app"],
9
- mustNotInclude: ["createdBy", "action", "entityId", "entity"]
10
- };
11
- }
12
- async list(params) {
13
- const options = this.createOptions(params);
14
- const result = await this.query({
15
- partitionKey: createPartitionKey(params),
16
- options
17
- });
18
- return this.populateResult(result);
19
- }
20
- createKeys(item) {
21
- const time = item.createdOn.getTime();
22
- return {
23
- partitionKey: createPartitionKey(item),
24
- sortKey: time
25
- };
26
- }
2
+ const createPartitionKey = (params)=>`T#${params.tenant}#AUDIT_LOG#APP#${params.app}`;
3
+ class AppAccessPattern extends BaseAccessPattern {
4
+ handles() {
5
+ return {
6
+ mustInclude: [
7
+ "app"
8
+ ],
9
+ mustNotInclude: [
10
+ "createdBy",
11
+ "action",
12
+ "entityId",
13
+ "entity"
14
+ ]
15
+ };
16
+ }
17
+ async list(params) {
18
+ const options = this.createOptions(params);
19
+ const result = await this.query({
20
+ partitionKey: createPartitionKey(params),
21
+ options
22
+ });
23
+ return this.populateResult(result);
24
+ }
25
+ createKeys(item) {
26
+ const time = item.createdOn.getTime();
27
+ return {
28
+ partitionKey: createPartitionKey(item),
29
+ sortKey: time
30
+ };
31
+ }
27
32
  }
33
+ export { AppAccessPattern };
28
34
 
29
35
  //# sourceMappingURL=AppAccessPattern.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["BaseAccessPattern","createPartitionKey","params","tenant","app","AppAccessPattern","handles","mustInclude","mustNotInclude","list","options","createOptions","result","query","partitionKey","populateResult","createKeys","item","time","createdOn","getTime","sortKey"],"sources":["AppAccessPattern.ts"],"sourcesContent":["import type { IAuditLog } from \"~/storage/types.js\";\nimport type { IStorageListByAppParams } from \"~/storage/abstractions/Storage.js\";\nimport { BaseAccessPattern } from \"~/storage/accessPatterns/BaseAccessPattern.js\";\nimport type {\n IAccessPatternCreateKeysResult,\n IAccessPatternHandles,\n IAccessPatternListResult\n} from \"~/storage/abstractions/AccessPattern.js\";\n\ninterface ICreatePartitionKeyParams {\n tenant: string;\n app: string;\n}\n\nconst createPartitionKey = (params: ICreatePartitionKeyParams) => {\n return `T#${params.tenant}#AUDIT_LOG#APP#${params.app}`;\n};\n\nexport class AppAccessPattern<\n T extends IStorageListByAppParams = IStorageListByAppParams\n> extends BaseAccessPattern<T> {\n public override handles(): IAccessPatternHandles {\n return {\n mustInclude: [\"app\"],\n mustNotInclude: [\"createdBy\", \"action\", \"entityId\", \"entity\"]\n };\n }\n\n public async list(params: T): Promise<IAccessPatternListResult> {\n const options = this.createOptions(params);\n\n const result = await this.query({\n partitionKey: createPartitionKey(params),\n options\n });\n return this.populateResult(result);\n }\n\n public createKeys(item: IAuditLog): IAccessPatternCreateKeysResult {\n const time = item.createdOn.getTime();\n return {\n partitionKey: createPartitionKey(item),\n sortKey: time\n };\n }\n}\n"],"mappings":"AAEA,SAASA,iBAAiB;AAY1B,MAAMC,kBAAkB,GAAIC,MAAiC,IAAK;EAC9D,OAAO,KAAKA,MAAM,CAACC,MAAM,kBAAkBD,MAAM,CAACE,GAAG,EAAE;AAC3D,CAAC;AAED,OAAO,MAAMC,gBAAgB,SAEnBL,iBAAiB,CAAI;EACXM,OAAOA,CAAA,EAA0B;IAC7C,OAAO;MACHC,WAAW,EAAE,CAAC,KAAK,CAAC;MACpBC,cAAc,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ;IAChE,CAAC;EACL;EAEA,MAAaC,IAAIA,CAACP,MAAS,EAAqC;IAC5D,MAAMQ,OAAO,GAAG,IAAI,CAACC,aAAa,CAACT,MAAM,CAAC;IAE1C,MAAMU,MAAM,GAAG,MAAM,IAAI,CAACC,KAAK,CAAC;MAC5BC,YAAY,EAAEb,kBAAkB,CAACC,MAAM,CAAC;MACxCQ;IACJ,CAAC,CAAC;IACF,OAAO,IAAI,CAACK,cAAc,CAACH,MAAM,CAAC;EACtC;EAEOI,UAAUA,CAACC,IAAe,EAAkC;IAC/D,MAAMC,IAAI,GAAGD,IAAI,CAACE,SAAS,CAACC,OAAO,CAAC,CAAC;IACrC,OAAO;MACHN,YAAY,EAAEb,kBAAkB,CAACgB,IAAI,CAAC;MACtCI,OAAO,EAAEH;IACb,CAAC;EACL;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"storage/accessPatterns/AppAccessPattern.js","sources":["../../../src/storage/accessPatterns/AppAccessPattern.ts"],"sourcesContent":["import type { IAuditLog } from \"~/storage/types.js\";\nimport type { IStorageListByAppParams } from \"~/storage/abstractions/Storage.js\";\nimport { BaseAccessPattern } from \"~/storage/accessPatterns/BaseAccessPattern.js\";\nimport type {\n IAccessPatternCreateKeysResult,\n IAccessPatternHandles,\n IAccessPatternListResult\n} from \"~/storage/abstractions/AccessPattern.js\";\n\ninterface ICreatePartitionKeyParams {\n tenant: string;\n app: string;\n}\n\nconst createPartitionKey = (params: ICreatePartitionKeyParams) => {\n return `T#${params.tenant}#AUDIT_LOG#APP#${params.app}`;\n};\n\nexport class AppAccessPattern<\n T extends IStorageListByAppParams = IStorageListByAppParams\n> extends BaseAccessPattern<T> {\n public override handles(): IAccessPatternHandles {\n return {\n mustInclude: [\"app\"],\n mustNotInclude: [\"createdBy\", \"action\", \"entityId\", \"entity\"]\n };\n }\n\n public async list(params: T): Promise<IAccessPatternListResult> {\n const options = this.createOptions(params);\n\n const result = await this.query({\n partitionKey: createPartitionKey(params),\n options\n });\n return this.populateResult(result);\n }\n\n public createKeys(item: IAuditLog): IAccessPatternCreateKeysResult {\n const time = item.createdOn.getTime();\n return {\n partitionKey: createPartitionKey(item),\n sortKey: time\n };\n }\n}\n"],"names":["createPartitionKey","params","AppAccessPattern","BaseAccessPattern","options","result","item","time"],"mappings":";AAcA,MAAMA,qBAAqB,CAACC,SACjB,CAAC,EAAE,EAAEA,OAAO,MAAM,CAAC,eAAe,EAAEA,OAAO,GAAG,EAAE;AAGpD,MAAMC,yBAEHC;IACU,UAAiC;QAC7C,OAAO;YACH,aAAa;gBAAC;aAAM;YACpB,gBAAgB;gBAAC;gBAAa;gBAAU;gBAAY;aAAS;QACjE;IACJ;IAEA,MAAa,KAAKF,MAAS,EAAqC;QAC5D,MAAMG,UAAU,IAAI,CAAC,aAAa,CAACH;QAEnC,MAAMI,SAAS,MAAM,IAAI,CAAC,KAAK,CAAC;YAC5B,cAAcL,mBAAmBC;YACjCG;QACJ;QACA,OAAO,IAAI,CAAC,cAAc,CAACC;IAC/B;IAEO,WAAWC,IAAe,EAAkC;QAC/D,MAAMC,OAAOD,KAAK,SAAS,CAAC,OAAO;QACnC,OAAO;YACH,cAAcN,mBAAmBM;YACjC,SAASC;QACb;IACJ;AACJ"}
@@ -1,32 +1,38 @@
1
1
  import { BaseAccessPattern } from "./BaseAccessPattern.js";
2
- const createPartitionKey = params => {
3
- return `T#${params.tenant}#AUDIT_LOG#APP#${params.app}#CREATEDBY#${params.createdBy}`;
4
- };
5
- export class AppCreatedByAccessPattern extends BaseAccessPattern {
6
- handles() {
7
- return {
8
- mustInclude: ["app", "createdBy"],
9
- mustNotInclude: ["action", "entityId", "entity"]
10
- };
11
- }
12
- async list(params) {
13
- const options = this.createOptions(params);
14
- const result = await this.query({
15
- partitionKey: createPartitionKey(params),
16
- options
17
- });
18
- return this.populateResult(result);
19
- }
20
- createKeys(item) {
21
- const time = item.createdOn.getTime();
22
- return {
23
- partitionKey: createPartitionKey({
24
- ...item,
25
- createdBy: item.createdBy.id
26
- }),
27
- sortKey: time
28
- };
29
- }
2
+ const createPartitionKey = (params)=>`T#${params.tenant}#AUDIT_LOG#APP#${params.app}#CREATEDBY#${params.createdBy}`;
3
+ class AppCreatedByAccessPattern extends BaseAccessPattern {
4
+ handles() {
5
+ return {
6
+ mustInclude: [
7
+ "app",
8
+ "createdBy"
9
+ ],
10
+ mustNotInclude: [
11
+ "action",
12
+ "entityId",
13
+ "entity"
14
+ ]
15
+ };
16
+ }
17
+ async list(params) {
18
+ const options = this.createOptions(params);
19
+ const result = await this.query({
20
+ partitionKey: createPartitionKey(params),
21
+ options
22
+ });
23
+ return this.populateResult(result);
24
+ }
25
+ createKeys(item) {
26
+ const time = item.createdOn.getTime();
27
+ return {
28
+ partitionKey: createPartitionKey({
29
+ ...item,
30
+ createdBy: item.createdBy.id
31
+ }),
32
+ sortKey: time
33
+ };
34
+ }
30
35
  }
36
+ export { AppCreatedByAccessPattern };
31
37
 
32
38
  //# sourceMappingURL=AppCreatedByAccessPattern.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["BaseAccessPattern","createPartitionKey","params","tenant","app","createdBy","AppCreatedByAccessPattern","handles","mustInclude","mustNotInclude","list","options","createOptions","result","query","partitionKey","populateResult","createKeys","item","time","createdOn","getTime","id","sortKey"],"sources":["AppCreatedByAccessPattern.ts"],"sourcesContent":["import type { IAuditLog } from \"~/storage/types.js\";\nimport { BaseAccessPattern } from \"~/storage/accessPatterns/BaseAccessPattern.js\";\nimport type {\n IAccessPatternCreateKeysResult,\n IAccessPatternHandles,\n IAccessPatternListResult\n} from \"~/storage/abstractions/AccessPattern.js\";\nimport type { IStorageListByAppCreatedByParams } from \"~/storage/abstractions/Storage.js\";\n\ninterface ICreatePartitionKeyParams {\n tenant: string;\n app: string;\n createdBy: string;\n}\n\nconst createPartitionKey = (params: ICreatePartitionKeyParams) => {\n return `T#${params.tenant}#AUDIT_LOG#APP#${params.app}#CREATEDBY#${params.createdBy}`;\n};\n\nexport class AppCreatedByAccessPattern<\n T extends IStorageListByAppCreatedByParams = IStorageListByAppCreatedByParams\n> extends BaseAccessPattern<T> {\n public override handles(): IAccessPatternHandles {\n return {\n mustInclude: [\"app\", \"createdBy\"],\n mustNotInclude: [\"action\", \"entityId\", \"entity\"]\n };\n }\n\n public async list(params: T): Promise<IAccessPatternListResult> {\n const options = this.createOptions(params);\n\n const result = await this.query({\n partitionKey: createPartitionKey(params),\n options\n });\n return this.populateResult(result);\n }\n\n public createKeys(item: IAuditLog): IAccessPatternCreateKeysResult {\n const time = item.createdOn.getTime();\n\n return {\n partitionKey: createPartitionKey({\n ...item,\n createdBy: item.createdBy.id\n }),\n sortKey: time\n };\n }\n}\n"],"mappings":"AACA,SAASA,iBAAiB;AAc1B,MAAMC,kBAAkB,GAAIC,MAAiC,IAAK;EAC9D,OAAO,KAAKA,MAAM,CAACC,MAAM,kBAAkBD,MAAM,CAACE,GAAG,cAAcF,MAAM,CAACG,SAAS,EAAE;AACzF,CAAC;AAED,OAAO,MAAMC,yBAAyB,SAE5BN,iBAAiB,CAAI;EACXO,OAAOA,CAAA,EAA0B;IAC7C,OAAO;MACHC,WAAW,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;MACjCC,cAAc,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ;IACnD,CAAC;EACL;EAEA,MAAaC,IAAIA,CAACR,MAAS,EAAqC;IAC5D,MAAMS,OAAO,GAAG,IAAI,CAACC,aAAa,CAACV,MAAM,CAAC;IAE1C,MAAMW,MAAM,GAAG,MAAM,IAAI,CAACC,KAAK,CAAC;MAC5BC,YAAY,EAAEd,kBAAkB,CAACC,MAAM,CAAC;MACxCS;IACJ,CAAC,CAAC;IACF,OAAO,IAAI,CAACK,cAAc,CAACH,MAAM,CAAC;EACtC;EAEOI,UAAUA,CAACC,IAAe,EAAkC;IAC/D,MAAMC,IAAI,GAAGD,IAAI,CAACE,SAAS,CAACC,OAAO,CAAC,CAAC;IAErC,OAAO;MACHN,YAAY,EAAEd,kBAAkB,CAAC;QAC7B,GAAGiB,IAAI;QACPb,SAAS,EAAEa,IAAI,CAACb,SAAS,CAACiB;MAC9B,CAAC,CAAC;MACFC,OAAO,EAAEJ;IACb,CAAC;EACL;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"storage/accessPatterns/AppCreatedByAccessPattern.js","sources":["../../../src/storage/accessPatterns/AppCreatedByAccessPattern.ts"],"sourcesContent":["import type { IAuditLog } from \"~/storage/types.js\";\nimport { BaseAccessPattern } from \"~/storage/accessPatterns/BaseAccessPattern.js\";\nimport type {\n IAccessPatternCreateKeysResult,\n IAccessPatternHandles,\n IAccessPatternListResult\n} from \"~/storage/abstractions/AccessPattern.js\";\nimport type { IStorageListByAppCreatedByParams } from \"~/storage/abstractions/Storage.js\";\n\ninterface ICreatePartitionKeyParams {\n tenant: string;\n app: string;\n createdBy: string;\n}\n\nconst createPartitionKey = (params: ICreatePartitionKeyParams) => {\n return `T#${params.tenant}#AUDIT_LOG#APP#${params.app}#CREATEDBY#${params.createdBy}`;\n};\n\nexport class AppCreatedByAccessPattern<\n T extends IStorageListByAppCreatedByParams = IStorageListByAppCreatedByParams\n> extends BaseAccessPattern<T> {\n public override handles(): IAccessPatternHandles {\n return {\n mustInclude: [\"app\", \"createdBy\"],\n mustNotInclude: [\"action\", \"entityId\", \"entity\"]\n };\n }\n\n public async list(params: T): Promise<IAccessPatternListResult> {\n const options = this.createOptions(params);\n\n const result = await this.query({\n partitionKey: createPartitionKey(params),\n options\n });\n return this.populateResult(result);\n }\n\n public createKeys(item: IAuditLog): IAccessPatternCreateKeysResult {\n const time = item.createdOn.getTime();\n\n return {\n partitionKey: createPartitionKey({\n ...item,\n createdBy: item.createdBy.id\n }),\n sortKey: time\n };\n }\n}\n"],"names":["createPartitionKey","params","AppCreatedByAccessPattern","BaseAccessPattern","options","result","item","time"],"mappings":";AAeA,MAAMA,qBAAqB,CAACC,SACjB,CAAC,EAAE,EAAEA,OAAO,MAAM,CAAC,eAAe,EAAEA,OAAO,GAAG,CAAC,WAAW,EAAEA,OAAO,SAAS,EAAE;AAGlF,MAAMC,kCAEHC;IACU,UAAiC;QAC7C,OAAO;YACH,aAAa;gBAAC;gBAAO;aAAY;YACjC,gBAAgB;gBAAC;gBAAU;gBAAY;aAAS;QACpD;IACJ;IAEA,MAAa,KAAKF,MAAS,EAAqC;QAC5D,MAAMG,UAAU,IAAI,CAAC,aAAa,CAACH;QAEnC,MAAMI,SAAS,MAAM,IAAI,CAAC,KAAK,CAAC;YAC5B,cAAcL,mBAAmBC;YACjCG;QACJ;QACA,OAAO,IAAI,CAAC,cAAc,CAACC;IAC/B;IAEO,WAAWC,IAAe,EAAkC;QAC/D,MAAMC,OAAOD,KAAK,SAAS,CAAC,OAAO;QAEnC,OAAO;YACH,cAAcN,mBAAmB;gBAC7B,GAAGM,IAAI;gBACP,WAAWA,KAAK,SAAS,CAAC,EAAE;YAChC;YACA,SAASC;QACb;IACJ;AACJ"}
@@ -1,29 +1,35 @@
1
1
  import { BaseAccessPattern } from "./BaseAccessPattern.js";
2
- const createPartitionKey = params => {
3
- return `T#${params.tenant}#AUDIT_LOG#APP#${params.app}#ENTITY#${params.entity}`;
4
- };
5
- export class AppEntityAccessPattern extends BaseAccessPattern {
6
- handles() {
7
- return {
8
- mustInclude: ["app", "entity"],
9
- mustNotInclude: ["createdBy", "action", "entityId"]
10
- };
11
- }
12
- async list(params) {
13
- const options = this.createOptions(params);
14
- const result = await this.query({
15
- partitionKey: createPartitionKey(params),
16
- options
17
- });
18
- return this.populateResult(result);
19
- }
20
- createKeys(item) {
21
- const time = item.createdOn.getTime();
22
- return {
23
- partitionKey: createPartitionKey(item),
24
- sortKey: time
25
- };
26
- }
2
+ const createPartitionKey = (params)=>`T#${params.tenant}#AUDIT_LOG#APP#${params.app}#ENTITY#${params.entity}`;
3
+ class AppEntityAccessPattern extends BaseAccessPattern {
4
+ handles() {
5
+ return {
6
+ mustInclude: [
7
+ "app",
8
+ "entity"
9
+ ],
10
+ mustNotInclude: [
11
+ "createdBy",
12
+ "action",
13
+ "entityId"
14
+ ]
15
+ };
16
+ }
17
+ async list(params) {
18
+ const options = this.createOptions(params);
19
+ const result = await this.query({
20
+ partitionKey: createPartitionKey(params),
21
+ options
22
+ });
23
+ return this.populateResult(result);
24
+ }
25
+ createKeys(item) {
26
+ const time = item.createdOn.getTime();
27
+ return {
28
+ partitionKey: createPartitionKey(item),
29
+ sortKey: time
30
+ };
31
+ }
27
32
  }
33
+ export { AppEntityAccessPattern };
28
34
 
29
35
  //# sourceMappingURL=AppEntityAccessPattern.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["BaseAccessPattern","createPartitionKey","params","tenant","app","entity","AppEntityAccessPattern","handles","mustInclude","mustNotInclude","list","options","createOptions","result","query","partitionKey","populateResult","createKeys","item","time","createdOn","getTime","sortKey"],"sources":["AppEntityAccessPattern.ts"],"sourcesContent":["import type { IAuditLog } from \"~/storage/types.js\";\nimport type { IStorageListByAppEntityParams } from \"~/storage/abstractions/Storage.js\";\nimport { BaseAccessPattern } from \"~/storage/accessPatterns/BaseAccessPattern.js\";\nimport type {\n IAccessPatternCreateKeysResult,\n IAccessPatternHandles,\n IAccessPatternListResult\n} from \"~/storage/abstractions/AccessPattern.js\";\n\ninterface ICreatePartitionKeyParams {\n tenant: string;\n app: string;\n entity: string;\n}\n\nconst createPartitionKey = (params: ICreatePartitionKeyParams) => {\n return `T#${params.tenant}#AUDIT_LOG#APP#${params.app}#ENTITY#${params.entity}`;\n};\nexport class AppEntityAccessPattern<\n T extends IStorageListByAppEntityParams = IStorageListByAppEntityParams\n> extends BaseAccessPattern<T> {\n public override handles(): IAccessPatternHandles {\n return {\n mustInclude: [\"app\", \"entity\"],\n mustNotInclude: [\"createdBy\", \"action\", \"entityId\"]\n };\n }\n\n public async list(params: T): Promise<IAccessPatternListResult> {\n const options = this.createOptions(params);\n\n const result = await this.query({\n partitionKey: createPartitionKey(params),\n options\n });\n return this.populateResult(result);\n }\n\n public createKeys(item: IAuditLog): IAccessPatternCreateKeysResult {\n const time = item.createdOn.getTime();\n\n return {\n partitionKey: createPartitionKey(item),\n sortKey: time\n };\n }\n}\n"],"mappings":"AAEA,SAASA,iBAAiB;AAa1B,MAAMC,kBAAkB,GAAIC,MAAiC,IAAK;EAC9D,OAAO,KAAKA,MAAM,CAACC,MAAM,kBAAkBD,MAAM,CAACE,GAAG,WAAWF,MAAM,CAACG,MAAM,EAAE;AACnF,CAAC;AACD,OAAO,MAAMC,sBAAsB,SAEzBN,iBAAiB,CAAI;EACXO,OAAOA,CAAA,EAA0B;IAC7C,OAAO;MACHC,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;MAC9BC,cAAc,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU;IACtD,CAAC;EACL;EAEA,MAAaC,IAAIA,CAACR,MAAS,EAAqC;IAC5D,MAAMS,OAAO,GAAG,IAAI,CAACC,aAAa,CAACV,MAAM,CAAC;IAE1C,MAAMW,MAAM,GAAG,MAAM,IAAI,CAACC,KAAK,CAAC;MAC5BC,YAAY,EAAEd,kBAAkB,CAACC,MAAM,CAAC;MACxCS;IACJ,CAAC,CAAC;IACF,OAAO,IAAI,CAACK,cAAc,CAACH,MAAM,CAAC;EACtC;EAEOI,UAAUA,CAACC,IAAe,EAAkC;IAC/D,MAAMC,IAAI,GAAGD,IAAI,CAACE,SAAS,CAACC,OAAO,CAAC,CAAC;IAErC,OAAO;MACHN,YAAY,EAAEd,kBAAkB,CAACiB,IAAI,CAAC;MACtCI,OAAO,EAAEH;IACb,CAAC;EACL;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"storage/accessPatterns/AppEntityAccessPattern.js","sources":["../../../src/storage/accessPatterns/AppEntityAccessPattern.ts"],"sourcesContent":["import type { IAuditLog } from \"~/storage/types.js\";\nimport type { IStorageListByAppEntityParams } from \"~/storage/abstractions/Storage.js\";\nimport { BaseAccessPattern } from \"~/storage/accessPatterns/BaseAccessPattern.js\";\nimport type {\n IAccessPatternCreateKeysResult,\n IAccessPatternHandles,\n IAccessPatternListResult\n} from \"~/storage/abstractions/AccessPattern.js\";\n\ninterface ICreatePartitionKeyParams {\n tenant: string;\n app: string;\n entity: string;\n}\n\nconst createPartitionKey = (params: ICreatePartitionKeyParams) => {\n return `T#${params.tenant}#AUDIT_LOG#APP#${params.app}#ENTITY#${params.entity}`;\n};\nexport class AppEntityAccessPattern<\n T extends IStorageListByAppEntityParams = IStorageListByAppEntityParams\n> extends BaseAccessPattern<T> {\n public override handles(): IAccessPatternHandles {\n return {\n mustInclude: [\"app\", \"entity\"],\n mustNotInclude: [\"createdBy\", \"action\", \"entityId\"]\n };\n }\n\n public async list(params: T): Promise<IAccessPatternListResult> {\n const options = this.createOptions(params);\n\n const result = await this.query({\n partitionKey: createPartitionKey(params),\n options\n });\n return this.populateResult(result);\n }\n\n public createKeys(item: IAuditLog): IAccessPatternCreateKeysResult {\n const time = item.createdOn.getTime();\n\n return {\n partitionKey: createPartitionKey(item),\n sortKey: time\n };\n }\n}\n"],"names":["createPartitionKey","params","AppEntityAccessPattern","BaseAccessPattern","options","result","item","time"],"mappings":";AAeA,MAAMA,qBAAqB,CAACC,SACjB,CAAC,EAAE,EAAEA,OAAO,MAAM,CAAC,eAAe,EAAEA,OAAO,GAAG,CAAC,QAAQ,EAAEA,OAAO,MAAM,EAAE;AAE5E,MAAMC,+BAEHC;IACU,UAAiC;QAC7C,OAAO;YACH,aAAa;gBAAC;gBAAO;aAAS;YAC9B,gBAAgB;gBAAC;gBAAa;gBAAU;aAAW;QACvD;IACJ;IAEA,MAAa,KAAKF,MAAS,EAAqC;QAC5D,MAAMG,UAAU,IAAI,CAAC,aAAa,CAACH;QAEnC,MAAMI,SAAS,MAAM,IAAI,CAAC,KAAK,CAAC;YAC5B,cAAcL,mBAAmBC;YACjCG;QACJ;QACA,OAAO,IAAI,CAAC,cAAc,CAACC;IAC/B;IAEO,WAAWC,IAAe,EAAkC;QAC/D,MAAMC,OAAOD,KAAK,SAAS,CAAC,OAAO;QAEnC,OAAO;YACH,cAAcN,mBAAmBM;YACjC,SAASC;QACb;IACJ;AACJ"}
@@ -1,29 +1,35 @@
1
1
  import { BaseAccessPattern } from "./BaseAccessPattern.js";
2
- const createPartitionKey = params => {
3
- return `T#${params.tenant}#AUDIT_LOG#APP#${params.app}#ENTITY#${params.entity}#ACTION#${params.action}`;
4
- };
5
- export class AppEntityActionAccessPattern extends BaseAccessPattern {
6
- handles() {
7
- return {
8
- mustInclude: ["app", "entity", "action"],
9
- mustNotInclude: ["entityId", "createdBy"]
10
- };
11
- }
12
- async list(params) {
13
- const options = this.createOptions(params);
14
- const result = await this.query({
15
- partitionKey: createPartitionKey(params),
16
- options
17
- });
18
- return this.populateResult(result);
19
- }
20
- createKeys(item) {
21
- const time = item.createdOn.getTime();
22
- return {
23
- partitionKey: createPartitionKey(item),
24
- sortKey: time
25
- };
26
- }
2
+ const createPartitionKey = (params)=>`T#${params.tenant}#AUDIT_LOG#APP#${params.app}#ENTITY#${params.entity}#ACTION#${params.action}`;
3
+ class AppEntityActionAccessPattern extends BaseAccessPattern {
4
+ handles() {
5
+ return {
6
+ mustInclude: [
7
+ "app",
8
+ "entity",
9
+ "action"
10
+ ],
11
+ mustNotInclude: [
12
+ "entityId",
13
+ "createdBy"
14
+ ]
15
+ };
16
+ }
17
+ async list(params) {
18
+ const options = this.createOptions(params);
19
+ const result = await this.query({
20
+ partitionKey: createPartitionKey(params),
21
+ options
22
+ });
23
+ return this.populateResult(result);
24
+ }
25
+ createKeys(item) {
26
+ const time = item.createdOn.getTime();
27
+ return {
28
+ partitionKey: createPartitionKey(item),
29
+ sortKey: time
30
+ };
31
+ }
27
32
  }
33
+ export { AppEntityActionAccessPattern };
28
34
 
29
35
  //# sourceMappingURL=AppEntityActionAccessPattern.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["BaseAccessPattern","createPartitionKey","params","tenant","app","entity","action","AppEntityActionAccessPattern","handles","mustInclude","mustNotInclude","list","options","createOptions","result","query","partitionKey","populateResult","createKeys","item","time","createdOn","getTime","sortKey"],"sources":["AppEntityActionAccessPattern.ts"],"sourcesContent":["import type { IAuditLog } from \"~/storage/types.js\";\nimport type { IStorageListByAppEntityActionParams } from \"~/storage/abstractions/Storage.js\";\nimport { BaseAccessPattern } from \"~/storage/accessPatterns/BaseAccessPattern.js\";\nimport type {\n IAccessPatternCreateKeysResult,\n IAccessPatternHandles,\n IAccessPatternListResult\n} from \"~/storage/abstractions/AccessPattern.js\";\n\ninterface ICreatePartitionKeyParams {\n tenant: string;\n app: string;\n entity: string;\n action: string;\n}\n\nconst createPartitionKey = (params: ICreatePartitionKeyParams) => {\n return `T#${params.tenant}#AUDIT_LOG#APP#${params.app}#ENTITY#${params.entity}#ACTION#${params.action}`;\n};\n\nexport class AppEntityActionAccessPattern<\n T extends IStorageListByAppEntityActionParams = IStorageListByAppEntityActionParams\n> extends BaseAccessPattern<T> {\n public override handles(): IAccessPatternHandles {\n return {\n mustInclude: [\"app\", \"entity\", \"action\"],\n mustNotInclude: [\"entityId\", \"createdBy\"]\n };\n }\n\n public async list(params: T): Promise<IAccessPatternListResult> {\n const options = this.createOptions(params);\n\n const result = await this.query({\n partitionKey: createPartitionKey(params),\n options\n });\n return this.populateResult(result);\n }\n\n public createKeys(item: IAuditLog): IAccessPatternCreateKeysResult {\n const time = item.createdOn.getTime();\n\n return {\n partitionKey: createPartitionKey(item),\n sortKey: time\n };\n }\n}\n"],"mappings":"AAEA,SAASA,iBAAiB;AAc1B,MAAMC,kBAAkB,GAAIC,MAAiC,IAAK;EAC9D,OAAO,KAAKA,MAAM,CAACC,MAAM,kBAAkBD,MAAM,CAACE,GAAG,WAAWF,MAAM,CAACG,MAAM,WAAWH,MAAM,CAACI,MAAM,EAAE;AAC3G,CAAC;AAED,OAAO,MAAMC,4BAA4B,SAE/BP,iBAAiB,CAAI;EACXQ,OAAOA,CAAA,EAA0B;IAC7C,OAAO;MACHC,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;MACxCC,cAAc,EAAE,CAAC,UAAU,EAAE,WAAW;IAC5C,CAAC;EACL;EAEA,MAAaC,IAAIA,CAACT,MAAS,EAAqC;IAC5D,MAAMU,OAAO,GAAG,IAAI,CAACC,aAAa,CAACX,MAAM,CAAC;IAE1C,MAAMY,MAAM,GAAG,MAAM,IAAI,CAACC,KAAK,CAAC;MAC5BC,YAAY,EAAEf,kBAAkB,CAACC,MAAM,CAAC;MACxCU;IACJ,CAAC,CAAC;IACF,OAAO,IAAI,CAACK,cAAc,CAACH,MAAM,CAAC;EACtC;EAEOI,UAAUA,CAACC,IAAe,EAAkC;IAC/D,MAAMC,IAAI,GAAGD,IAAI,CAACE,SAAS,CAACC,OAAO,CAAC,CAAC;IAErC,OAAO;MACHN,YAAY,EAAEf,kBAAkB,CAACkB,IAAI,CAAC;MACtCI,OAAO,EAAEH;IACb,CAAC;EACL;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"storage/accessPatterns/AppEntityActionAccessPattern.js","sources":["../../../src/storage/accessPatterns/AppEntityActionAccessPattern.ts"],"sourcesContent":["import type { IAuditLog } from \"~/storage/types.js\";\nimport type { IStorageListByAppEntityActionParams } from \"~/storage/abstractions/Storage.js\";\nimport { BaseAccessPattern } from \"~/storage/accessPatterns/BaseAccessPattern.js\";\nimport type {\n IAccessPatternCreateKeysResult,\n IAccessPatternHandles,\n IAccessPatternListResult\n} from \"~/storage/abstractions/AccessPattern.js\";\n\ninterface ICreatePartitionKeyParams {\n tenant: string;\n app: string;\n entity: string;\n action: string;\n}\n\nconst createPartitionKey = (params: ICreatePartitionKeyParams) => {\n return `T#${params.tenant}#AUDIT_LOG#APP#${params.app}#ENTITY#${params.entity}#ACTION#${params.action}`;\n};\n\nexport class AppEntityActionAccessPattern<\n T extends IStorageListByAppEntityActionParams = IStorageListByAppEntityActionParams\n> extends BaseAccessPattern<T> {\n public override handles(): IAccessPatternHandles {\n return {\n mustInclude: [\"app\", \"entity\", \"action\"],\n mustNotInclude: [\"entityId\", \"createdBy\"]\n };\n }\n\n public async list(params: T): Promise<IAccessPatternListResult> {\n const options = this.createOptions(params);\n\n const result = await this.query({\n partitionKey: createPartitionKey(params),\n options\n });\n return this.populateResult(result);\n }\n\n public createKeys(item: IAuditLog): IAccessPatternCreateKeysResult {\n const time = item.createdOn.getTime();\n\n return {\n partitionKey: createPartitionKey(item),\n sortKey: time\n };\n }\n}\n"],"names":["createPartitionKey","params","AppEntityActionAccessPattern","BaseAccessPattern","options","result","item","time"],"mappings":";AAgBA,MAAMA,qBAAqB,CAACC,SACjB,CAAC,EAAE,EAAEA,OAAO,MAAM,CAAC,eAAe,EAAEA,OAAO,GAAG,CAAC,QAAQ,EAAEA,OAAO,MAAM,CAAC,QAAQ,EAAEA,OAAO,MAAM,EAAE;AAGpG,MAAMC,qCAEHC;IACU,UAAiC;QAC7C,OAAO;YACH,aAAa;gBAAC;gBAAO;gBAAU;aAAS;YACxC,gBAAgB;gBAAC;gBAAY;aAAY;QAC7C;IACJ;IAEA,MAAa,KAAKF,MAAS,EAAqC;QAC5D,MAAMG,UAAU,IAAI,CAAC,aAAa,CAACH;QAEnC,MAAMI,SAAS,MAAM,IAAI,CAAC,KAAK,CAAC;YAC5B,cAAcL,mBAAmBC;YACjCG;QACJ;QACA,OAAO,IAAI,CAAC,cAAc,CAACC;IAC/B;IAEO,WAAWC,IAAe,EAAkC;QAC/D,MAAMC,OAAOD,KAAK,SAAS,CAAC,OAAO;QAEnC,OAAO;YACH,cAAcN,mBAAmBM;YACjC,SAASC;QACb;IACJ;AACJ"}