@webiny/api-audit-logs 0.0.0-unstable.6f45466a1d → 0.0.0-unstable.7be00a75a9
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.
- package/abstractions.js +2 -3
- package/abstractions.js.map +1 -1
- package/config.js +2 -1
- package/config.js.map +1 -1
- package/context/AuditLogsContextValue.d.ts +1 -1
- package/context/AuditLogsContextValue.js +115 -125
- package/context/AuditLogsContextValue.js.map +1 -1
- package/context/index.js +23 -27
- package/context/index.js.map +1 -1
- package/events/AuditLogAfterCreateEvent.d.ts +2 -2
- package/events/AuditLogAfterCreateEvent.js +9 -6
- package/events/AuditLogAfterCreateEvent.js.map +1 -1
- package/events/AuditLogAfterUpdateEvent.d.ts +2 -2
- package/events/AuditLogAfterUpdateEvent.js +9 -6
- package/events/AuditLogAfterUpdateEvent.js.map +1 -1
- package/events/AuditLogBeforeCreateEvent.d.ts +2 -2
- package/events/AuditLogBeforeCreateEvent.js +9 -6
- package/events/AuditLogBeforeCreateEvent.js.map +1 -1
- package/events/AuditLogBeforeUpdateEvent.d.ts +2 -2
- package/events/AuditLogBeforeUpdateEvent.js +9 -6
- package/events/AuditLogBeforeUpdateEvent.js.map +1 -1
- package/events/abstractions.d.ts +1 -1
- package/events/abstractions.js +5 -24
- package/events/abstractions.js.map +1 -1
- package/events/index.js +0 -2
- package/graphql/schema.js +37 -48
- package/graphql/schema.js.map +1 -1
- package/graphql/validation.d.ts +10 -53
- package/graphql/validation.js +26 -30
- package/graphql/validation.js.map +1 -1
- package/index.js +18 -15
- package/index.js.map +1 -1
- package/package.json +34 -30
- package/storage/AccessPatternHandler.js +31 -52
- package/storage/AccessPatternHandler.js.map +1 -1
- package/storage/Converter.d.ts +3 -3
- package/storage/Converter.js +45 -48
- package/storage/Converter.js.map +1 -1
- package/storage/Storage.d.ts +2 -2
- package/storage/Storage.js +69 -77
- package/storage/Storage.js.map +1 -1
- package/storage/abstractions/AccessPattern.js +0 -3
- package/storage/abstractions/AccessPatternHandler.js +0 -3
- package/storage/abstractions/Converter.js +0 -3
- package/storage/abstractions/Storage.js +0 -3
- package/storage/accessPatterns/AppAccessPattern.js +31 -25
- package/storage/accessPatterns/AppAccessPattern.js.map +1 -1
- package/storage/accessPatterns/AppCreatedByAccessPattern.js +34 -28
- package/storage/accessPatterns/AppCreatedByAccessPattern.js.map +1 -1
- package/storage/accessPatterns/AppEntityAccessPattern.js +31 -25
- package/storage/accessPatterns/AppEntityAccessPattern.js.map +1 -1
- package/storage/accessPatterns/AppEntityActionAccessPattern.js +31 -25
- package/storage/accessPatterns/AppEntityActionAccessPattern.js.map +1 -1
- package/storage/accessPatterns/AppEntityActionCreatedByAccessPattern.js +34 -28
- package/storage/accessPatterns/AppEntityActionCreatedByAccessPattern.js.map +1 -1
- package/storage/accessPatterns/AppEntityCreatedByAccessPattern.js +34 -28
- package/storage/accessPatterns/AppEntityCreatedByAccessPattern.js.map +1 -1
- package/storage/accessPatterns/BaseAccessPattern.js +47 -69
- package/storage/accessPatterns/BaseAccessPattern.js.map +1 -1
- package/storage/accessPatterns/CreatedByAccessPattern.js +34 -28
- package/storage/accessPatterns/CreatedByAccessPattern.js.map +1 -1
- package/storage/accessPatterns/CreatedOnAccessPattern.js +34 -26
- package/storage/accessPatterns/CreatedOnAccessPattern.js.map +1 -1
- package/storage/accessPatterns/DefaultAccessPattern.js +31 -32
- package/storage/accessPatterns/DefaultAccessPattern.js.map +1 -1
- package/storage/accessPatterns/EntityIdAccessPattern.js +32 -27
- package/storage/accessPatterns/EntityIdAccessPattern.js.map +1 -1
- package/storage/accessPatterns/index.js +44 -34
- package/storage/accessPatterns/index.js.map +1 -1
- package/storage/cursorSchema.js +15 -18
- package/storage/cursorSchema.js.map +1 -1
- package/storage/entity.js +115 -122
- package/storage/entity.js.map +1 -1
- package/storage/results/ListErrorResult.js +9 -8
- package/storage/results/ListErrorResult.js.map +1 -1
- package/storage/results/ListSuccessResult.js +13 -12
- package/storage/results/ListSuccessResult.js.map +1 -1
- package/storage/results/index.js +0 -2
- package/storage/startKey.js +4 -5
- package/storage/startKey.js.map +1 -1
- package/storage/types.js +0 -3
- package/subscriptions/aco/handlers/AuditLogFolderAfterCreateHandler.d.ts +4 -4
- package/subscriptions/aco/handlers/AuditLogFolderAfterCreateHandler.js +27 -26
- package/subscriptions/aco/handlers/AuditLogFolderAfterCreateHandler.js.map +1 -1
- package/subscriptions/aco/handlers/AuditLogFolderAfterDeleteHandler.d.ts +4 -4
- package/subscriptions/aco/handlers/AuditLogFolderAfterDeleteHandler.js +30 -29
- package/subscriptions/aco/handlers/AuditLogFolderAfterDeleteHandler.js.map +1 -1
- package/subscriptions/aco/handlers/AuditLogFolderAfterUpdateHandler.d.ts +4 -4
- package/subscriptions/aco/handlers/AuditLogFolderAfterUpdateHandler.js +33 -33
- package/subscriptions/aco/handlers/AuditLogFolderAfterUpdateHandler.js.map +1 -1
- package/subscriptions/aco/index.js +5 -4
- package/subscriptions/aco/index.js.map +1 -1
- package/subscriptions/fileManager/handlers/AuditLogFileAfterCreateHandler.d.ts +4 -4
- package/subscriptions/fileManager/handlers/AuditLogFileAfterCreateHandler.js +22 -21
- package/subscriptions/fileManager/handlers/AuditLogFileAfterCreateHandler.js.map +1 -1
- package/subscriptions/fileManager/handlers/AuditLogFileAfterDeleteHandler.d.ts +4 -4
- package/subscriptions/fileManager/handlers/AuditLogFileAfterDeleteHandler.js +22 -21
- package/subscriptions/fileManager/handlers/AuditLogFileAfterDeleteHandler.js.map +1 -1
- package/subscriptions/fileManager/handlers/AuditLogFileAfterUpdateHandler.d.ts +4 -4
- package/subscriptions/fileManager/handlers/AuditLogFileAfterUpdateHandler.js +25 -25
- package/subscriptions/fileManager/handlers/AuditLogFileAfterUpdateHandler.js.map +1 -1
- package/subscriptions/fileManager/handlers/AuditLogSettingsAfterUpdateHandler.d.ts +4 -4
- package/subscriptions/fileManager/handlers/AuditLogSettingsAfterUpdateHandler.js +25 -25
- package/subscriptions/fileManager/handlers/AuditLogSettingsAfterUpdateHandler.js.map +1 -1
- package/subscriptions/fileManager/index.js +6 -8
- package/subscriptions/fileManager/index.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterCreateEventHandler.d.ts +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterCreateEventHandler.js +21 -23
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterCreateEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterDeleteEventHandler.d.ts +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterDeleteEventHandler.js +26 -29
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterDeleteEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterPublishEventHandler.d.ts +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterPublishEventHandler.js +21 -23
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterPublishEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterRestoreFromBinEventHandler.d.ts +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterRestoreFromBinEventHandler.js +21 -23
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterRestoreFromBinEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterUnpublishEventHandler.d.ts +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterUnpublishEventHandler.js +21 -23
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterUnpublishEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterUpdateEventHandler.d.ts +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterUpdateEventHandler.js +24 -27
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterUpdateEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryRevisionAfterCreateEventHandler.d.ts +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryRevisionAfterCreateEventHandler.js +21 -23
- package/subscriptions/headlessCms/handlers/AuditLogEntryRevisionAfterCreateEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryRevisionAfterDeleteEventHandler.d.ts +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryRevisionAfterDeleteEventHandler.js +21 -23
- package/subscriptions/headlessCms/handlers/AuditLogEntryRevisionAfterDeleteEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogGroupAfterCreateEventHandler.d.ts +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogGroupAfterCreateEventHandler.js +21 -20
- package/subscriptions/headlessCms/handlers/AuditLogGroupAfterCreateEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogGroupAfterDeleteEventHandler.d.ts +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogGroupAfterDeleteEventHandler.js +21 -20
- package/subscriptions/headlessCms/handlers/AuditLogGroupAfterDeleteEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogGroupAfterUpdateEventHandler.d.ts +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogGroupAfterUpdateEventHandler.js +24 -24
- package/subscriptions/headlessCms/handlers/AuditLogGroupAfterUpdateEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogModelAfterCreateEventHandler.d.ts +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogModelAfterCreateEventHandler.js +21 -20
- package/subscriptions/headlessCms/handlers/AuditLogModelAfterCreateEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogModelAfterDeleteEventHandler.d.ts +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogModelAfterDeleteEventHandler.js +21 -20
- package/subscriptions/headlessCms/handlers/AuditLogModelAfterDeleteEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogModelAfterUpdateEventHandler.d.ts +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogModelAfterUpdateEventHandler.js +24 -24
- package/subscriptions/headlessCms/handlers/AuditLogModelAfterUpdateEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/index.js +16 -20
- package/subscriptions/headlessCms/index.js.map +1 -1
- package/subscriptions/index.js +8 -7
- package/subscriptions/index.js.map +1 -1
- package/subscriptions/mailer/handlers/AuditLogMailerSettingsAfterSaveHandler.d.ts +4 -4
- package/subscriptions/mailer/handlers/AuditLogMailerSettingsAfterSaveHandler.js +24 -23
- package/subscriptions/mailer/handlers/AuditLogMailerSettingsAfterSaveHandler.js.map +1 -1
- package/subscriptions/mailer/index.js +3 -3
- package/subscriptions/mailer/index.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogApiKeyAfterCreateHandler.d.ts +4 -4
- package/subscriptions/security/handlers/AuditLogApiKeyAfterCreateHandler.js +32 -38
- package/subscriptions/security/handlers/AuditLogApiKeyAfterCreateHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogApiKeyAfterDeleteHandler.d.ts +4 -4
- package/subscriptions/security/handlers/AuditLogApiKeyAfterDeleteHandler.js +32 -38
- package/subscriptions/security/handlers/AuditLogApiKeyAfterDeleteHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogApiKeyAfterUpdateHandler.d.ts +4 -4
- package/subscriptions/security/handlers/AuditLogApiKeyAfterUpdateHandler.js +36 -43
- package/subscriptions/security/handlers/AuditLogApiKeyAfterUpdateHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogRoleAfterCreateHandler.d.ts +4 -4
- package/subscriptions/security/handlers/AuditLogRoleAfterCreateHandler.js +22 -21
- package/subscriptions/security/handlers/AuditLogRoleAfterCreateHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogRoleAfterDeleteHandler.d.ts +4 -4
- package/subscriptions/security/handlers/AuditLogRoleAfterDeleteHandler.js +22 -21
- package/subscriptions/security/handlers/AuditLogRoleAfterDeleteHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogRoleAfterUpdateHandler.d.ts +4 -4
- package/subscriptions/security/handlers/AuditLogRoleAfterUpdateHandler.js +25 -25
- package/subscriptions/security/handlers/AuditLogRoleAfterUpdateHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogTeamAfterCreateHandler.d.ts +4 -4
- package/subscriptions/security/handlers/AuditLogTeamAfterCreateHandler.js +22 -21
- package/subscriptions/security/handlers/AuditLogTeamAfterCreateHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogTeamAfterDeleteHandler.d.ts +4 -4
- package/subscriptions/security/handlers/AuditLogTeamAfterDeleteHandler.js +22 -21
- package/subscriptions/security/handlers/AuditLogTeamAfterDeleteHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogTeamAfterUpdateHandler.d.ts +4 -4
- package/subscriptions/security/handlers/AuditLogTeamAfterUpdateHandler.js +25 -25
- package/subscriptions/security/handlers/AuditLogTeamAfterUpdateHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogUserAfterCreateHandler.d.ts +4 -4
- package/subscriptions/security/handlers/AuditLogUserAfterCreateHandler.js +22 -21
- package/subscriptions/security/handlers/AuditLogUserAfterCreateHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogUserAfterDeleteHandler.d.ts +4 -4
- package/subscriptions/security/handlers/AuditLogUserAfterDeleteHandler.js +22 -21
- package/subscriptions/security/handlers/AuditLogUserAfterDeleteHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogUserAfterUpdateHandler.d.ts +4 -4
- package/subscriptions/security/handlers/AuditLogUserAfterUpdateHandler.js +25 -25
- package/subscriptions/security/handlers/AuditLogUserAfterUpdateHandler.js.map +1 -1
- package/subscriptions/security/handlers/cleanupApiKey.js +10 -16
- package/subscriptions/security/handlers/cleanupApiKey.js.map +1 -1
- package/subscriptions/security/index.js +14 -20
- package/subscriptions/security/index.js.map +1 -1
- package/subscriptions/websiteBuilder/index.js +14 -16
- package/subscriptions/websiteBuilder/index.js.map +1 -1
- package/subscriptions/websiteBuilder/pages/PageAfterCreateHandler.d.ts +4 -4
- package/subscriptions/websiteBuilder/pages/PageAfterCreateHandler.js +21 -20
- package/subscriptions/websiteBuilder/pages/PageAfterCreateHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/pages/PageAfterCreateRevisionFromHandler.d.ts +4 -4
- package/subscriptions/websiteBuilder/pages/PageAfterCreateRevisionFromHandler.js +21 -20
- package/subscriptions/websiteBuilder/pages/PageAfterCreateRevisionFromHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/pages/PageAfterDeleteHandler.d.ts +4 -4
- package/subscriptions/websiteBuilder/pages/PageAfterDeleteHandler.js +21 -20
- package/subscriptions/websiteBuilder/pages/PageAfterDeleteHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/pages/PageAfterDuplicateHandler.d.ts +4 -4
- package/subscriptions/websiteBuilder/pages/PageAfterDuplicateHandler.js +24 -24
- package/subscriptions/websiteBuilder/pages/PageAfterDuplicateHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/pages/PageAfterMoveHandler.d.ts +4 -4
- package/subscriptions/websiteBuilder/pages/PageAfterMoveHandler.js +21 -20
- package/subscriptions/websiteBuilder/pages/PageAfterMoveHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/pages/PageAfterPublishHandler.d.ts +4 -4
- package/subscriptions/websiteBuilder/pages/PageAfterPublishHandler.js +21 -20
- package/subscriptions/websiteBuilder/pages/PageAfterPublishHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/pages/PageAfterUnpublishHandler.d.ts +4 -4
- package/subscriptions/websiteBuilder/pages/PageAfterUnpublishHandler.js +21 -20
- package/subscriptions/websiteBuilder/pages/PageAfterUnpublishHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/pages/PageAfterUpdateHandler.d.ts +4 -4
- package/subscriptions/websiteBuilder/pages/PageAfterUpdateHandler.js +24 -24
- package/subscriptions/websiteBuilder/pages/PageAfterUpdateHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/redirects/RedirectAfterCreateHandler.d.ts +4 -4
- package/subscriptions/websiteBuilder/redirects/RedirectAfterCreateHandler.js +21 -20
- package/subscriptions/websiteBuilder/redirects/RedirectAfterCreateHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/redirects/RedirectAfterDeleteHandler.d.ts +4 -4
- package/subscriptions/websiteBuilder/redirects/RedirectAfterDeleteHandler.js +21 -20
- package/subscriptions/websiteBuilder/redirects/RedirectAfterDeleteHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/redirects/RedirectAfterMoveHandler.d.ts +4 -4
- package/subscriptions/websiteBuilder/redirects/RedirectAfterMoveHandler.js +21 -20
- package/subscriptions/websiteBuilder/redirects/RedirectAfterMoveHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/redirects/RedirectAfterUpdateHandler.d.ts +4 -4
- package/subscriptions/websiteBuilder/redirects/RedirectAfterUpdateHandler.js +24 -24
- package/subscriptions/websiteBuilder/redirects/RedirectAfterUpdateHandler.js.map +1 -1
- package/types.js +0 -3
- package/utils/expiresAt.js +14 -19
- package/utils/expiresAt.js.map +1 -1
- package/utils/getAuditConfig.js +79 -98
- package/utils/getAuditConfig.js.map +1 -1
- package/utils/getAuditObject.js +14 -15
- package/utils/getAuditObject.js.map +1 -1
- package/events/index.js.map +0 -1
- package/storage/abstractions/AccessPattern.js.map +0 -1
- package/storage/abstractions/AccessPatternHandler.js.map +0 -1
- package/storage/abstractions/Converter.js.map +0 -1
- package/storage/abstractions/Storage.js.map +0 -1
- package/storage/results/index.js.map +0 -1
- package/storage/types.js.map +0 -1
- package/types.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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,"
|
|
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"}
|
|
@@ -1,32 +1,38 @@
|
|
|
1
1
|
import { BaseAccessPattern } from "./BaseAccessPattern.js";
|
|
2
|
-
const createPartitionKey = params
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
2
|
+
const createPartitionKey = (params)=>`T#${params.tenant}#AUDIT_LOG#APP#${params.app}#ENTITY#${params.entity}#ACTION#${params.action}#CREATEDBY#${params.createdBy}`;
|
|
3
|
+
class AppEntityActionCreatedByAccessPattern extends BaseAccessPattern {
|
|
4
|
+
handles() {
|
|
5
|
+
return {
|
|
6
|
+
mustInclude: [
|
|
7
|
+
"app",
|
|
8
|
+
"action",
|
|
9
|
+
"entity",
|
|
10
|
+
"createdBy"
|
|
11
|
+
],
|
|
12
|
+
mustNotInclude: [
|
|
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({
|
|
29
|
+
...item,
|
|
30
|
+
createdBy: item.createdBy.id
|
|
31
|
+
}),
|
|
32
|
+
sortKey: time
|
|
33
|
+
};
|
|
34
|
+
}
|
|
30
35
|
}
|
|
36
|
+
export { AppEntityActionCreatedByAccessPattern };
|
|
31
37
|
|
|
32
38
|
//# sourceMappingURL=AppEntityActionCreatedByAccessPattern.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"storage/accessPatterns/AppEntityActionCreatedByAccessPattern.js","sources":["../../../src/storage/accessPatterns/AppEntityActionCreatedByAccessPattern.ts"],"sourcesContent":["import type { IAuditLog } from \"~/storage/types.js\";\nimport type { IStorageListByAppEntityActionCreatedByParams } 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 action: string;\n entity: string;\n createdBy: string;\n}\n\nconst createPartitionKey = (params: ICreatePartitionKeyParams) => {\n return `T#${params.tenant}#AUDIT_LOG#APP#${params.app}#ENTITY#${params.entity}#ACTION#${params.action}#CREATEDBY#${params.createdBy}`;\n};\n\nexport class AppEntityActionCreatedByAccessPattern<\n T extends IStorageListByAppEntityActionCreatedByParams =\n IStorageListByAppEntityActionCreatedByParams\n> extends BaseAccessPattern<T> {\n public override handles(): IAccessPatternHandles {\n return {\n mustInclude: [\"app\", \"action\", \"entity\", \"createdBy\"],\n mustNotInclude: [\"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({\n ...item,\n createdBy: item.createdBy.id\n }),\n sortKey: time\n };\n }\n}\n"],"names":["createPartitionKey","params","AppEntityActionCreatedByAccessPattern","BaseAccessPattern","options","result","item","time"],"mappings":";AAiBA,MAAMA,qBAAqB,CAACC,SACjB,CAAC,EAAE,EAAEA,OAAO,MAAM,CAAC,eAAe,EAAEA,OAAO,GAAG,CAAC,QAAQ,EAAEA,OAAO,MAAM,CAAC,QAAQ,EAAEA,OAAO,MAAM,CAAC,WAAW,EAAEA,OAAO,SAAS,EAAE;AAGlI,MAAMC,8CAGHC;IACU,UAAiC;QAC7C,OAAO;YACH,aAAa;gBAAC;gBAAO;gBAAU;gBAAU;aAAY;YACrD,gBAAgB;gBAAC;aAAW;QAChC;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,32 +1,38 @@
|
|
|
1
1
|
import { BaseAccessPattern } from "./BaseAccessPattern.js";
|
|
2
|
-
const createPartitionKey = params
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
2
|
+
const createPartitionKey = (params)=>`T#${params.tenant}#AUDIT_LOG#APP#${params.app}#ENTITY#${params.entity}#CREATEDBY#${params.createdBy}`;
|
|
3
|
+
class AppEntityCreatedByAccessPattern extends BaseAccessPattern {
|
|
4
|
+
handles() {
|
|
5
|
+
return {
|
|
6
|
+
mustInclude: [
|
|
7
|
+
"app",
|
|
8
|
+
"createdBy",
|
|
9
|
+
"entity"
|
|
10
|
+
],
|
|
11
|
+
mustNotInclude: [
|
|
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({
|
|
29
|
+
...item,
|
|
30
|
+
createdBy: item.createdBy.id
|
|
31
|
+
}),
|
|
32
|
+
sortKey: time
|
|
33
|
+
};
|
|
34
|
+
}
|
|
30
35
|
}
|
|
36
|
+
export { AppEntityCreatedByAccessPattern };
|
|
31
37
|
|
|
32
38
|
//# sourceMappingURL=AppEntityCreatedByAccessPattern.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"storage/accessPatterns/AppEntityCreatedByAccessPattern.js","sources":["../../../src/storage/accessPatterns/AppEntityCreatedByAccessPattern.ts"],"sourcesContent":["import type { IAuditLog } from \"~/storage/types.js\";\nimport type { IStorageListByAppEntityCreatedByParams } 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 createdBy: string;\n entity: string;\n}\n\nconst createPartitionKey = (params: ICreatePartitionKeyParams) => {\n return `T#${params.tenant}#AUDIT_LOG#APP#${params.app}#ENTITY#${params.entity}#CREATEDBY#${params.createdBy}`;\n};\n\nexport class AppEntityCreatedByAccessPattern<\n T extends IStorageListByAppEntityCreatedByParams = IStorageListByAppEntityCreatedByParams\n> extends BaseAccessPattern<T> {\n public override handles(): IAccessPatternHandles {\n return {\n mustInclude: [\"app\", \"createdBy\", \"entity\"],\n mustNotInclude: [\"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({\n ...item,\n createdBy: item.createdBy.id\n }),\n sortKey: time\n };\n }\n}\n"],"names":["createPartitionKey","params","AppEntityCreatedByAccessPattern","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,WAAW,EAAEA,OAAO,SAAS,EAAE;AAG1G,MAAMC,wCAEHC;IACU,UAAiC;QAC7C,OAAO;YACH,aAAa;gBAAC;gBAAO;gBAAa;aAAS;YAC3C,gBAAgB;gBAAC;gBAAU;aAAW;QAC1C;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,82 +1,60 @@
|
|
|
1
1
|
import { createStartKey } from "../startKey.js";
|
|
2
|
-
const toGteTime = date
|
|
3
|
-
|
|
4
|
-
return
|
|
5
|
-
}
|
|
6
|
-
return date.getTime();
|
|
2
|
+
const toGteTime = (date)=>{
|
|
3
|
+
if (!date) return 0;
|
|
4
|
+
return date.getTime();
|
|
7
5
|
};
|
|
8
|
-
const toLteTime = date
|
|
9
|
-
|
|
10
|
-
return
|
|
11
|
-
}
|
|
12
|
-
return date.getTime();
|
|
6
|
+
const toLteTime = (date)=>{
|
|
7
|
+
if (!date) return Date.now();
|
|
8
|
+
return date.getTime();
|
|
13
9
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
canHandle(params) {
|
|
20
|
-
const handles = this.handles();
|
|
21
|
-
for (const key of handles.mustInclude) {
|
|
22
|
-
if (!params[key]) {
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
10
|
+
class BaseAccessPattern {
|
|
11
|
+
constructor(params){
|
|
12
|
+
this.index = params.index;
|
|
13
|
+
this.entity = params.entity;
|
|
25
14
|
}
|
|
26
|
-
|
|
27
|
-
|
|
15
|
+
canHandle(params) {
|
|
16
|
+
const handles = this.handles();
|
|
17
|
+
for (const key of handles.mustInclude)if (!params[key]) return false;
|
|
18
|
+
for (const key of handles.mustNotInclude)if (!!params[key]) return false;
|
|
19
|
+
if (!handles.shouldInclude?.length) return true;
|
|
20
|
+
for (const key of handles.shouldInclude)if (!!params[key]) return true;
|
|
28
21
|
return false;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
if (!handles.shouldInclude?.length) {
|
|
32
|
-
return true;
|
|
33
22
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
23
|
+
async query(params) {
|
|
24
|
+
return this.entity.queryPerPage({
|
|
25
|
+
partitionKey: params.partitionKey,
|
|
26
|
+
options: params.options
|
|
27
|
+
});
|
|
38
28
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
async populateResult(input) {
|
|
48
|
-
const reader = this.entity.createEntityReader({
|
|
49
|
-
read: input.items.map(item => {
|
|
29
|
+
async populateResult(input) {
|
|
30
|
+
const reader = this.entity.createEntityReader({
|
|
31
|
+
read: input.items.map((item)=>({
|
|
32
|
+
PK: item.PK,
|
|
33
|
+
SK: item.SK
|
|
34
|
+
}))
|
|
35
|
+
});
|
|
36
|
+
const result = await reader.execute();
|
|
50
37
|
return {
|
|
51
|
-
|
|
52
|
-
|
|
38
|
+
...input,
|
|
39
|
+
items: input.items.map((item)=>result.find((i)=>i.PK === item.PK && i.SK === item.SK)).filter((item)=>!!item)
|
|
53
40
|
};
|
|
54
|
-
})
|
|
55
|
-
});
|
|
56
|
-
const result = await reader.execute();
|
|
57
|
-
return {
|
|
58
|
-
...input,
|
|
59
|
-
items: input.items.map(item => {
|
|
60
|
-
return result.find(i => {
|
|
61
|
-
return i.PK === item.PK && i.SK === item.SK;
|
|
62
|
-
});
|
|
63
|
-
}).filter(item => !!item)
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
createOptions(params) {
|
|
67
|
-
const options = {
|
|
68
|
-
limit: params.limit || 25,
|
|
69
|
-
startKey: createStartKey({
|
|
70
|
-
after: params.after
|
|
71
|
-
}),
|
|
72
|
-
reverse: params.sort === "DESC",
|
|
73
|
-
index: this.index
|
|
74
|
-
};
|
|
75
|
-
if (params.createdOn_lte || params.createdOn_gte) {
|
|
76
|
-
options.between = [toGteTime(params.createdOn_gte), toLteTime(params.createdOn_lte)];
|
|
77
41
|
}
|
|
78
|
-
|
|
79
|
-
|
|
42
|
+
createOptions(params) {
|
|
43
|
+
const options = {
|
|
44
|
+
limit: params.limit || 25,
|
|
45
|
+
startKey: createStartKey({
|
|
46
|
+
after: params.after
|
|
47
|
+
}),
|
|
48
|
+
reverse: "DESC" === params.sort,
|
|
49
|
+
index: this.index
|
|
50
|
+
};
|
|
51
|
+
if (params.createdOn_lte || params.createdOn_gte) options.between = [
|
|
52
|
+
toGteTime(params.createdOn_gte),
|
|
53
|
+
toLteTime(params.createdOn_lte)
|
|
54
|
+
];
|
|
55
|
+
return options;
|
|
56
|
+
}
|
|
80
57
|
}
|
|
58
|
+
export { BaseAccessPattern };
|
|
81
59
|
|
|
82
60
|
//# sourceMappingURL=BaseAccessPattern.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"storage/accessPatterns/BaseAccessPattern.js","sources":["../../../src/storage/accessPatterns/BaseAccessPattern.ts"],"sourcesContent":["import type { IAuditLog, IIndexStorageItem, IStorageItem } from \"~/storage/types.js\";\nimport { createStartKey } from \"~/storage/startKey.js\";\nimport type { IStorageListParams } from \"../abstractions/Storage.js\";\nimport type {\n IAccessPattern,\n IAccessPatternCreateKeysResult,\n IAccessPatternHandles,\n IAccessPatternListResult\n} from \"../abstractions/AccessPattern.js\";\nimport type { AuditLogsEntity } from \"~/storage/entity.js\";\nimport type { IEntityQueryAllParams, IEntityQueryPerPageResult } from \"@webiny/db-dynamodb\";\n\nconst toGteTime = (date?: Date): number => {\n if (!date) {\n return 0;\n }\n return date.getTime();\n};\nconst toLteTime = (date?: Date): number => {\n if (!date) {\n return Date.now();\n }\n return date.getTime();\n};\n\nexport interface ICreateOptionsParams {\n limit?: number;\n sort?: \"ASC\" | \"DESC\";\n after?: string;\n createdOn_gte?: Date;\n createdOn_lte?: Date;\n}\n\nexport interface IBaseAccessPatternParams {\n index: string | undefined;\n entity: AuditLogsEntity;\n}\n\nexport interface IAccessPatternQueryParams {\n partitionKey: string;\n options: IEntityQueryAllParams[\"options\"];\n}\n\nexport abstract class BaseAccessPattern<T> implements IAccessPattern<T> {\n public readonly index;\n protected readonly entity;\n\n public constructor(params: IBaseAccessPatternParams) {\n this.index = params.index;\n this.entity = params.entity;\n }\n\n public abstract handles(): IAccessPatternHandles;\n\n public canHandle(params: IStorageListParams): boolean {\n const handles = this.handles();\n for (const key of handles.mustInclude) {\n if (!params[key]) {\n return false;\n }\n }\n for (const key of handles.mustNotInclude) {\n if (!!params[key]) {\n return false;\n }\n }\n if (!handles.shouldInclude?.length) {\n return true;\n }\n\n for (const key of handles.shouldInclude) {\n if (!!params[key]) {\n return true;\n }\n }\n return false;\n }\n\n protected async query<T extends IStorageItem = IStorageItem>(\n params: IAccessPatternQueryParams\n ) {\n return this.entity.queryPerPage<T>({\n partitionKey: params.partitionKey,\n options: params.options\n });\n }\n\n protected async populateResult(\n input: Awaited<IEntityQueryPerPageResult<IIndexStorageItem>>\n ): Promise<IEntityQueryPerPageResult<IStorageItem>> {\n const reader = this.entity.createEntityReader({\n read: input.items.map(item => {\n return {\n PK: item.PK,\n SK: item.SK\n };\n })\n });\n const result = await reader.execute();\n\n return {\n ...input,\n items: input.items\n .map(item => {\n return result.find(i => {\n return i.PK === item.PK && i.SK === item.SK;\n });\n })\n .filter((item): item is IStorageItem => !!item)\n };\n }\n\n public abstract list(params: T): Promise<IAccessPatternListResult>;\n public abstract createKeys(item: IAuditLog): IAccessPatternCreateKeysResult;\n\n protected createOptions(params: ICreateOptionsParams): IEntityQueryAllParams[\"options\"] {\n const options: IEntityQueryAllParams[\"options\"] = {\n limit: params.limit || 25,\n // @ts-expect-error\n startKey: createStartKey({\n after: params.after\n }),\n reverse: params.sort === \"DESC\",\n index: this.index\n };\n\n if (params.createdOn_lte || params.createdOn_gte) {\n options!.between = [toGteTime(params.createdOn_gte), toLteTime(params.createdOn_lte)];\n }\n\n return options;\n }\n}\n"],"names":["toGteTime","date","toLteTime","Date","BaseAccessPattern","params","handles","key","input","reader","item","result","i","options","createStartKey"],"mappings":";AAYA,MAAMA,YAAY,CAACC;IACf,IAAI,CAACA,MACD,OAAO;IAEX,OAAOA,KAAK,OAAO;AACvB;AACA,MAAMC,YAAY,CAACD;IACf,IAAI,CAACA,MACD,OAAOE,KAAK,GAAG;IAEnB,OAAOF,KAAK,OAAO;AACvB;AAoBO,MAAeG;IAIlB,YAAmBC,MAAgC,CAAE;QACjD,IAAI,CAAC,KAAK,GAAGA,OAAO,KAAK;QACzB,IAAI,CAAC,MAAM,GAAGA,OAAO,MAAM;IAC/B;IAIO,UAAUA,MAA0B,EAAW;QAClD,MAAMC,UAAU,IAAI,CAAC,OAAO;QAC5B,KAAK,MAAMC,OAAOD,QAAQ,WAAW,CACjC,IAAI,CAACD,MAAM,CAACE,IAAI,EACZ,OAAO;QAGf,KAAK,MAAMA,OAAOD,QAAQ,cAAc,CACpC,IAAI,CAAC,CAACD,MAAM,CAACE,IAAI,EACb,OAAO;QAGf,IAAI,CAACD,QAAQ,aAAa,EAAE,QACxB,OAAO;QAGX,KAAK,MAAMC,OAAOD,QAAQ,aAAa,CACnC,IAAI,CAAC,CAACD,MAAM,CAACE,IAAI,EACb,OAAO;QAGf,OAAO;IACX;IAEA,MAAgB,MACZF,MAAiC,EACnC;QACE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAI;YAC/B,cAAcA,OAAO,YAAY;YACjC,SAASA,OAAO,OAAO;QAC3B;IACJ;IAEA,MAAgB,eACZG,KAA4D,EACZ;QAChD,MAAMC,SAAS,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAC1C,MAAMD,MAAM,KAAK,CAAC,GAAG,CAACE,CAAAA,OACX;oBACH,IAAIA,KAAK,EAAE;oBACX,IAAIA,KAAK,EAAE;gBACf;QAER;QACA,MAAMC,SAAS,MAAMF,OAAO,OAAO;QAEnC,OAAO;YACH,GAAGD,KAAK;YACR,OAAOA,MAAM,KAAK,CACb,GAAG,CAACE,CAAAA,OACMC,OAAO,IAAI,CAACC,CAAAA,IACRA,EAAE,EAAE,KAAKF,KAAK,EAAE,IAAIE,EAAE,EAAE,KAAKF,KAAK,EAAE,GAGlD,MAAM,CAAC,CAACA,OAA+B,CAAC,CAACA;QAClD;IACJ;IAKU,cAAcL,MAA4B,EAAoC;QACpF,MAAMQ,UAA4C;YAC9C,OAAOR,OAAO,KAAK,IAAI;YAEvB,UAAUS,eAAe;gBACrB,OAAOT,OAAO,KAAK;YACvB;YACA,SAASA,AAAgB,WAAhBA,OAAO,IAAI;YACpB,OAAO,IAAI,CAAC,KAAK;QACrB;QAEA,IAAIA,OAAO,aAAa,IAAIA,OAAO,aAAa,EAC5CQ,QAAS,OAAO,GAAG;YAACb,UAAUK,OAAO,aAAa;YAAGH,UAAUG,OAAO,aAAa;SAAE;QAGzF,OAAOQ;IACX;AACJ"}
|
|
@@ -1,32 +1,38 @@
|
|
|
1
1
|
import { BaseAccessPattern } from "./BaseAccessPattern.js";
|
|
2
|
-
const createPartitionKey = params
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
2
|
+
const createPartitionKey = (params)=>`T#${params.tenant}#AUDIT_LOG#CREATEDBY#${params.createdBy}`;
|
|
3
|
+
class CreatedByAccessPattern extends BaseAccessPattern {
|
|
4
|
+
handles() {
|
|
5
|
+
return {
|
|
6
|
+
mustInclude: [
|
|
7
|
+
"createdBy"
|
|
8
|
+
],
|
|
9
|
+
mustNotInclude: [
|
|
10
|
+
"app",
|
|
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 { CreatedByAccessPattern };
|
|
31
37
|
|
|
32
38
|
//# sourceMappingURL=CreatedByAccessPattern.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"storage/accessPatterns/CreatedByAccessPattern.js","sources":["../../../src/storage/accessPatterns/CreatedByAccessPattern.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 { IStorageListByCreatedByParams } from \"~/storage/abstractions/Storage.js\";\n\ninterface ICreatePartitionKeyParams {\n tenant: string;\n createdBy: string;\n}\n\nconst createPartitionKey = (params: ICreatePartitionKeyParams) => {\n return `T#${params.tenant}#AUDIT_LOG#CREATEDBY#${params.createdBy}`;\n};\n\nexport class CreatedByAccessPattern<\n T extends IStorageListByCreatedByParams = IStorageListByCreatedByParams\n> extends BaseAccessPattern<T> {\n public override handles(): IAccessPatternHandles {\n return {\n mustInclude: [\"createdBy\"],\n mustNotInclude: [\"app\", \"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","CreatedByAccessPattern","BaseAccessPattern","options","result","item","time"],"mappings":";AAcA,MAAMA,qBAAqB,CAACC,SACjB,CAAC,EAAE,EAAEA,OAAO,MAAM,CAAC,qBAAqB,EAAEA,OAAO,SAAS,EAAE;AAGhE,MAAMC,+BAEHC;IACU,UAAiC;QAC7C,OAAO;YACH,aAAa;gBAAC;aAAY;YAC1B,gBAAgB;gBAAC;gBAAO;gBAAU;gBAAY;aAAS;QAC3D;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,30 +1,38 @@
|
|
|
1
1
|
import { BaseAccessPattern } from "./BaseAccessPattern.js";
|
|
2
|
-
const createPartitionKey = params
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
2
|
+
const createPartitionKey = (params)=>`T#${params.tenant}#AUDIT_LOG#CREATED_ON`;
|
|
3
|
+
class CreatedOnAccessPattern extends BaseAccessPattern {
|
|
4
|
+
handles() {
|
|
5
|
+
return {
|
|
6
|
+
shouldInclude: [
|
|
7
|
+
"createdOn_gte",
|
|
8
|
+
"createdOn_lte"
|
|
9
|
+
],
|
|
10
|
+
mustInclude: [],
|
|
11
|
+
mustNotInclude: [
|
|
12
|
+
"app",
|
|
13
|
+
"createdBy",
|
|
14
|
+
"action",
|
|
15
|
+
"entityId",
|
|
16
|
+
"entity"
|
|
17
|
+
]
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
async list(params) {
|
|
21
|
+
const options = this.createOptions(params);
|
|
22
|
+
const result = await this.query({
|
|
23
|
+
partitionKey: createPartitionKey(params),
|
|
24
|
+
options
|
|
25
|
+
});
|
|
26
|
+
return this.populateResult(result);
|
|
27
|
+
}
|
|
28
|
+
createKeys(item) {
|
|
29
|
+
const time = item.createdOn.getTime();
|
|
30
|
+
return {
|
|
31
|
+
partitionKey: createPartitionKey(item),
|
|
32
|
+
sortKey: time
|
|
33
|
+
};
|
|
34
|
+
}
|
|
28
35
|
}
|
|
36
|
+
export { CreatedOnAccessPattern };
|
|
29
37
|
|
|
30
38
|
//# sourceMappingURL=CreatedOnAccessPattern.js.map
|