@revisium/core 2.2.0 → 2.3.0-alpha.2
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/dist/package.json +16 -7
- package/dist/src/api/graphql-api/branch/model/branch.model.js +2 -1
- package/dist/src/api/graphql-api/branch/model/branch.model.js.map +1 -1
- package/dist/src/api/graphql-api/branch/parent-branch.resolver.d.ts +15 -2
- package/dist/src/api/graphql-api/branch/parent-branch.resolver.js +6 -4
- package/dist/src/api/graphql-api/branch/parent-branch.resolver.js.map +1 -1
- package/dist/src/api/graphql-api/draft/input/create-row.input.js +2 -2
- package/dist/src/api/graphql-api/draft/input/create-row.input.js.map +1 -1
- package/dist/src/api/graphql-api/draft/input/create-table.input.js +2 -2
- package/dist/src/api/graphql-api/draft/input/create-table.input.js.map +1 -1
- package/dist/src/api/graphql-api/draft/input/patch-row.input.js +2 -2
- package/dist/src/api/graphql-api/draft/input/patch-row.input.js.map +1 -1
- package/dist/src/api/graphql-api/draft/input/update-row.input.js +2 -2
- package/dist/src/api/graphql-api/draft/input/update-row.input.js.map +1 -1
- package/dist/src/api/graphql-api/draft/input/update-table.input.js +2 -2
- package/dist/src/api/graphql-api/draft/input/update-table.input.js.map +1 -1
- package/dist/src/api/graphql-api/endpoint/model/endpoint.model.js +2 -1
- package/dist/src/api/graphql-api/endpoint/model/endpoint.model.js.map +1 -1
- package/dist/src/api/graphql-api/graphql-api.module.js +2 -2
- package/dist/src/api/graphql-api/graphql-api.module.js.map +1 -1
- package/dist/src/api/graphql-api/project/model/project.model.js +2 -1
- package/dist/src/api/graphql-api/project/model/project.model.js.map +1 -1
- package/dist/src/api/graphql-api/revision/child-branch.resolver.d.ts +15 -2
- package/dist/src/api/graphql-api/revision/child-branch.resolver.js +6 -4
- package/dist/src/api/graphql-api/revision/child-branch.resolver.js.map +1 -1
- package/dist/src/api/graphql-api/revision/model/revision.model.js +2 -1
- package/dist/src/api/graphql-api/revision/model/revision.model.js.map +1 -1
- package/dist/src/api/graphql-api/revision/revision.resolver.d.ts +15 -2
- package/dist/src/api/graphql-api/revision/revision.resolver.js +6 -4
- package/dist/src/api/graphql-api/revision/revision.resolver.js.map +1 -1
- package/dist/src/api/graphql-api/row/inputs/get-rows.input.js +5 -5
- package/dist/src/api/graphql-api/row/inputs/get-rows.input.js.map +1 -1
- package/dist/src/api/graphql-api/row/model/row.model.js +5 -5
- package/dist/src/api/graphql-api/row/model/row.model.js.map +1 -1
- package/dist/src/api/graphql-api/row/row.resolver.js +7 -3
- package/dist/src/api/graphql-api/row/row.resolver.js.map +1 -1
- package/dist/src/api/graphql-api/table/model/table.model.js +4 -4
- package/dist/src/api/graphql-api/table/model/table.model.js.map +1 -1
- package/dist/src/api/rest-api/revision/revision-by-id.controller.js +1 -1
- package/dist/src/api/rest-api/revision/revision-by-id.controller.js.map +1 -1
- package/dist/src/api/rest-api/row/row-by-id.controller.d.ts +2 -3
- package/dist/src/api/rest-api/row/row-by-id.controller.js +2 -4
- package/dist/src/api/rest-api/row/row-by-id.controller.js.map +1 -1
- package/dist/src/core/core.module.js +2 -0
- package/dist/src/core/core.module.js.map +1 -1
- package/dist/src/features/auth/auth.module.js +3 -1
- package/dist/src/features/auth/auth.module.js.map +1 -1
- package/dist/src/features/auth/casl-ability.factory.d.ts +3 -1
- package/dist/src/features/auth/casl-ability.factory.js +6 -3
- package/dist/src/features/auth/casl-ability.factory.js.map +1 -1
- package/dist/src/features/auth/commands/auth-api.service.d.ts +11 -0
- package/dist/src/features/auth/commands/auth-api.service.js +44 -0
- package/dist/src/features/auth/commands/auth-api.service.js.map +1 -0
- package/dist/src/features/auth/commands/handlers/check-organization-permission.handler.d.ts +2 -2
- package/dist/src/features/auth/commands/handlers/check-organization-permission.handler.js.map +1 -1
- package/dist/src/features/auth/commands/handlers/check-project-permission.handler.d.ts +2 -2
- package/dist/src/features/auth/commands/handlers/check-project-permission.handler.js.map +1 -1
- package/dist/src/features/auth/commands/impl/check-organization-permission.command.d.ts +2 -0
- package/dist/src/features/auth/commands/impl/check-project-permission.command.d.ts +2 -0
- package/dist/src/features/auth/commands/impl/check-system-permission.command.d.ts +1 -0
- package/dist/src/features/auth/guards/base-persmission.guard.d.ts +4 -2
- package/dist/src/features/auth/guards/base-persmission.guard.js +6 -4
- package/dist/src/features/auth/guards/base-persmission.guard.js.map +1 -1
- package/dist/src/features/auth/guards/organization.guard.d.ts +2 -3
- package/dist/src/features/auth/guards/organization.guard.js +2 -3
- package/dist/src/features/auth/guards/organization.guard.js.map +1 -1
- package/dist/src/features/auth/guards/project.guard.d.ts +29 -3
- package/dist/src/features/auth/guards/project.guard.js +11 -8
- package/dist/src/features/auth/guards/project.guard.js.map +1 -1
- package/dist/src/features/auth/guards/system.guard.d.ts +1 -2
- package/dist/src/features/auth/guards/system.guard.js +2 -3
- package/dist/src/features/auth/guards/system.guard.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/__tests__/utils.d.ts +2 -0
- package/dist/src/features/draft/commands/handlers/__tests__/utils.js +8 -0
- package/dist/src/features/draft/commands/handlers/__tests__/utils.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/api-base-row.handler.d.ts +2 -1
- package/dist/src/features/draft/commands/handlers/api-base-row.handler.js +2 -1
- package/dist/src/features/draft/commands/handlers/api-base-row.handler.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/api-create-revision.handler.d.ts +16 -4
- package/dist/src/features/draft/commands/handlers/api-create-revision.handler.js +6 -6
- package/dist/src/features/draft/commands/handlers/api-create-revision.handler.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/api-create-row.handler.js +1 -0
- package/dist/src/features/draft/commands/handlers/api-create-row.handler.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/api-patch-row.handler.js +1 -0
- package/dist/src/features/draft/commands/handlers/api-patch-row.handler.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/api-rename-row.handler.js +1 -0
- package/dist/src/features/draft/commands/handlers/api-rename-row.handler.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/api-update-row.handler.js +1 -0
- package/dist/src/features/draft/commands/handlers/api-update-row.handler.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/api-upload-file.handler.js +1 -0
- package/dist/src/features/draft/commands/handlers/api-upload-file.handler.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/create-revision.handler.d.ts +13 -6
- package/dist/src/features/draft/commands/handlers/create-revision.handler.js +17 -2
- package/dist/src/features/draft/commands/handlers/create-revision.handler.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/create-row.handler.d.ts +4 -2
- package/dist/src/features/draft/commands/handlers/create-row.handler.js +9 -1
- package/dist/src/features/draft/commands/handlers/create-row.handler.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/patch-row.handler.d.ts +4 -2
- package/dist/src/features/draft/commands/handlers/patch-row.handler.js +9 -1
- package/dist/src/features/draft/commands/handlers/patch-row.handler.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/remove-row.handler.d.ts +4 -1
- package/dist/src/features/draft/commands/handlers/remove-row.handler.js +9 -1
- package/dist/src/features/draft/commands/handlers/remove-row.handler.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/remove-table.handler.d.ts +4 -2
- package/dist/src/features/draft/commands/handlers/remove-table.handler.js +9 -1
- package/dist/src/features/draft/commands/handlers/remove-table.handler.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/rename-table.handler.d.ts +4 -2
- package/dist/src/features/draft/commands/handlers/rename-table.handler.js +9 -1
- package/dist/src/features/draft/commands/handlers/rename-table.handler.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/revert-changes.handler.d.ts +4 -1
- package/dist/src/features/draft/commands/handlers/revert-changes.handler.js +10 -2
- package/dist/src/features/draft/commands/handlers/revert-changes.handler.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/transactional/internal-rename-row.handler.d.ts +4 -2
- package/dist/src/features/draft/commands/handlers/transactional/internal-rename-row.handler.js +10 -2
- package/dist/src/features/draft/commands/handlers/transactional/internal-rename-row.handler.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/transactional/internal-update-row.handler.d.ts +4 -1
- package/dist/src/features/draft/commands/handlers/transactional/internal-update-row.handler.js +10 -2
- package/dist/src/features/draft/commands/handlers/transactional/internal-update-row.handler.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/transactional/resolve-draft-revision.handler.d.ts +5 -1
- package/dist/src/features/draft/commands/handlers/transactional/resolve-draft-revision.handler.js +32 -18
- package/dist/src/features/draft/commands/handlers/transactional/resolve-draft-revision.handler.js.map +1 -1
- package/dist/src/features/draft/commands/handlers/update-table.handler.d.ts +4 -2
- package/dist/src/features/draft/commands/handlers/update-table.handler.js +9 -1
- package/dist/src/features/draft/commands/handlers/update-table.handler.js.map +1 -1
- package/dist/src/features/draft/commands/types/create-revision.handler.types.d.ts +2 -0
- package/dist/src/features/draft/draft.handler.d.ts +1 -1
- package/dist/src/features/draft/draft.module.js +2 -0
- package/dist/src/features/draft/draft.module.js.map +1 -1
- package/dist/src/features/revision/index.d.ts +2 -0
- package/dist/src/{utils/prisma-sql-generator → features/revision}/index.js +2 -5
- package/dist/src/features/revision/index.js.map +1 -0
- package/dist/src/features/revision/internal-revisions-api.service.d.ts +19 -0
- package/dist/src/features/revision/internal-revisions-api.service.js +32 -0
- package/dist/src/features/revision/internal-revisions-api.service.js.map +1 -0
- package/dist/src/features/revision/queries/impl/get-revision.query.d.ts +1 -0
- package/dist/src/features/revision/revision.module.js +6 -1
- package/dist/src/features/revision/revision.module.js.map +1 -1
- package/dist/src/features/revision/revisions-api.service.d.ts +19 -5
- package/dist/src/features/revision/revisions-api.service.js +11 -6
- package/dist/src/features/revision/revisions-api.service.js.map +1 -1
- package/dist/src/features/row/index.d.ts +2 -0
- package/dist/src/features/row/index.js +19 -0
- package/dist/src/features/row/index.js.map +1 -0
- package/dist/src/features/row/internal-row-api.service.d.ts +13 -0
- package/dist/src/features/row/internal-row-api.service.js +47 -0
- package/dist/src/features/row/internal-row-api.service.js.map +1 -0
- package/dist/src/features/row/queries/handlers/get-rows.handler.d.ts +2 -4
- package/dist/src/features/row/queries/handlers/get-rows.handler.js +9 -29
- package/dist/src/features/row/queries/handlers/get-rows.handler.js.map +1 -1
- package/dist/src/features/row/queries/impl/get-row-by-id.query.d.ts +2 -0
- package/dist/src/features/row/queries/impl/get-row-by-id.query.js.map +1 -1
- package/dist/src/features/row/queries/impl/get-rows.query.d.ts +3 -3
- package/dist/src/features/row/queries/impl/get-rows.query.js.map +1 -1
- package/dist/src/features/row/row-api.service.d.ts +13 -9
- package/dist/src/features/row/row-api.service.js +27 -14
- package/dist/src/features/row/row-api.service.js.map +1 -1
- package/dist/src/features/row/row.module.js +2 -1
- package/dist/src/features/row/row.module.js.map +1 -1
- package/dist/src/features/row/utils/get-rows-sql.d.ts +5 -0
- package/dist/src/features/row/utils/get-rows-sql.js +70 -0
- package/dist/src/features/row/utils/get-rows-sql.js.map +1 -0
- package/dist/src/infrastructure/cache/constants/auth-cache.constants.d.ts +18 -0
- package/dist/src/infrastructure/cache/constants/auth-cache.constants.js +22 -0
- package/dist/src/infrastructure/cache/constants/auth-cache.constants.js.map +1 -0
- package/dist/src/infrastructure/cache/constants/revision-cache.constants.d.ts +10 -0
- package/dist/src/infrastructure/cache/constants/revision-cache.constants.js +14 -0
- package/dist/src/infrastructure/cache/constants/revision-cache.constants.js.map +1 -0
- package/dist/src/infrastructure/cache/constants/row-cache.constants.d.ts +13 -0
- package/dist/src/infrastructure/cache/constants/row-cache.constants.js +17 -0
- package/dist/src/infrastructure/cache/constants/row-cache.constants.js.map +1 -0
- package/dist/src/infrastructure/cache/events/base.event.d.ts +4 -0
- package/dist/src/infrastructure/cache/events/base.event.js +10 -0
- package/dist/src/infrastructure/cache/events/base.event.js.map +1 -0
- package/dist/src/infrastructure/cache/events/index.d.ts +10 -0
- package/dist/src/infrastructure/cache/events/index.js +27 -0
- package/dist/src/infrastructure/cache/events/index.js.map +1 -0
- package/dist/src/infrastructure/cache/events/revision/revision-committed.event.d.ts +6 -0
- package/dist/src/infrastructure/cache/events/revision/revision-committed.event.js +13 -0
- package/dist/src/infrastructure/cache/events/revision/revision-committed.event.js.map +1 -0
- package/dist/src/infrastructure/cache/events/revision/revision-reverted.event.d.ts +5 -0
- package/dist/src/infrastructure/cache/events/revision/revision-reverted.event.js +12 -0
- package/dist/src/infrastructure/cache/events/revision/revision-reverted.event.js.map +1 -0
- package/dist/src/infrastructure/cache/events/row/row-created.event.d.ts +7 -0
- package/dist/src/infrastructure/cache/events/row/row-created.event.js +14 -0
- package/dist/src/infrastructure/cache/events/row/row-created.event.js.map +1 -0
- package/dist/src/infrastructure/cache/events/row/row-deleted.event.d.ts +7 -0
- package/dist/src/infrastructure/cache/events/row/row-deleted.event.js +14 -0
- package/dist/src/infrastructure/cache/events/row/row-deleted.event.js.map +1 -0
- package/dist/src/infrastructure/cache/events/row/row-renamed.event.d.ts +8 -0
- package/dist/src/infrastructure/cache/events/row/row-renamed.event.js +15 -0
- package/dist/src/infrastructure/cache/events/row/row-renamed.event.js.map +1 -0
- package/dist/src/infrastructure/cache/events/row/row-updated.event.d.ts +7 -0
- package/dist/src/infrastructure/cache/events/row/row-updated.event.js +14 -0
- package/dist/src/infrastructure/cache/events/row/row-updated.event.js.map +1 -0
- package/dist/src/infrastructure/cache/events/table/table-deleted.event.d.ts +6 -0
- package/dist/src/infrastructure/cache/events/table/table-deleted.event.js +13 -0
- package/dist/src/infrastructure/cache/events/table/table-deleted.event.js.map +1 -0
- package/dist/src/infrastructure/cache/events/table/table-renamed.event.d.ts +7 -0
- package/dist/src/infrastructure/cache/events/table/table-renamed.event.js +14 -0
- package/dist/src/infrastructure/cache/events/table/table-renamed.event.js.map +1 -0
- package/dist/src/infrastructure/cache/events/table/table-schema-updated.event.d.ts +6 -0
- package/dist/src/infrastructure/cache/events/table/table-schema-updated.event.js +13 -0
- package/dist/src/infrastructure/cache/events/table/table-schema-updated.event.js.map +1 -0
- package/dist/src/infrastructure/cache/handlers/index.d.ts +10 -0
- package/dist/src/infrastructure/cache/handlers/index.js +24 -0
- package/dist/src/infrastructure/cache/handlers/index.js.map +1 -0
- package/dist/src/infrastructure/cache/handlers/revision/revision-committed.handler.d.ts +8 -0
- package/dist/src/infrastructure/cache/handlers/revision/revision-committed.handler.js +32 -0
- package/dist/src/infrastructure/cache/handlers/revision/revision-committed.handler.js.map +1 -0
- package/dist/src/infrastructure/cache/handlers/revision/revision-reverted.handler.d.ts +8 -0
- package/dist/src/infrastructure/cache/handlers/revision/revision-reverted.handler.js +29 -0
- package/dist/src/infrastructure/cache/handlers/revision/revision-reverted.handler.js.map +1 -0
- package/dist/src/infrastructure/cache/handlers/row/row-created.handler.d.ts +8 -0
- package/dist/src/infrastructure/cache/handlers/row/row-created.handler.js +29 -0
- package/dist/src/infrastructure/cache/handlers/row/row-created.handler.js.map +1 -0
- package/dist/src/infrastructure/cache/handlers/row/row-deleted.handler.d.ts +8 -0
- package/dist/src/infrastructure/cache/handlers/row/row-deleted.handler.js +30 -0
- package/dist/src/infrastructure/cache/handlers/row/row-deleted.handler.js.map +1 -0
- package/dist/src/infrastructure/cache/handlers/row/row-renamed.handler.d.ts +8 -0
- package/dist/src/infrastructure/cache/handlers/row/row-renamed.handler.js +34 -0
- package/dist/src/infrastructure/cache/handlers/row/row-renamed.handler.js.map +1 -0
- package/dist/src/infrastructure/cache/handlers/row/row-updated.handler.d.ts +8 -0
- package/dist/src/infrastructure/cache/handlers/row/row-updated.handler.js +30 -0
- package/dist/src/infrastructure/cache/handlers/row/row-updated.handler.js.map +1 -0
- package/dist/src/infrastructure/cache/handlers/table/table-deleted.handler.d.ts +8 -0
- package/dist/src/infrastructure/cache/handlers/table/table-deleted.handler.js +29 -0
- package/dist/src/infrastructure/cache/handlers/table/table-deleted.handler.js.map +1 -0
- package/dist/src/infrastructure/cache/handlers/table/table-renamed.handler.d.ts +8 -0
- package/dist/src/infrastructure/cache/handlers/table/table-renamed.handler.js +32 -0
- package/dist/src/infrastructure/cache/handlers/table/table-renamed.handler.js.map +1 -0
- package/dist/src/infrastructure/cache/handlers/table/table-schema-updated.handler.d.ts +8 -0
- package/dist/src/infrastructure/cache/handlers/table/table-schema-updated.handler.js +29 -0
- package/dist/src/infrastructure/cache/handlers/table/table-schema-updated.handler.js.map +1 -0
- package/dist/src/infrastructure/cache/index.d.ts +7 -0
- package/dist/src/infrastructure/cache/index.js +24 -0
- package/dist/src/infrastructure/cache/index.js.map +1 -0
- package/dist/src/infrastructure/cache/pg-bus/pg-bus.driver.d.ts +37 -0
- package/dist/src/infrastructure/cache/pg-bus/pg-bus.driver.js +228 -0
- package/dist/src/infrastructure/cache/pg-bus/pg-bus.driver.js.map +1 -0
- package/dist/src/infrastructure/cache/revisium-cache.module.d.ts +4 -0
- package/dist/src/infrastructure/cache/revisium-cache.module.js +140 -0
- package/dist/src/infrastructure/cache/revisium-cache.module.js.map +1 -0
- package/dist/src/infrastructure/cache/services/auth-cache.service.d.ts +22 -0
- package/dist/src/infrastructure/cache/services/auth-cache.service.js +112 -0
- package/dist/src/infrastructure/cache/services/auth-cache.service.js.map +1 -0
- package/dist/src/infrastructure/cache/services/cache.service.d.ts +11 -0
- package/dist/src/infrastructure/cache/services/cache.service.js +38 -0
- package/dist/src/infrastructure/cache/services/cache.service.js.map +1 -0
- package/dist/src/infrastructure/cache/services/cache.tokens.d.ts +1 -0
- package/dist/src/infrastructure/cache/services/cache.tokens.js +5 -0
- package/dist/src/infrastructure/cache/services/cache.tokens.js.map +1 -0
- package/dist/src/infrastructure/cache/services/noop-cache.service.d.ts +6 -0
- package/dist/src/infrastructure/cache/services/noop-cache.service.js +24 -0
- package/dist/src/infrastructure/cache/services/noop-cache.service.js.map +1 -0
- package/dist/src/infrastructure/cache/services/revision-cache.service.d.ts +10 -0
- package/dist/src/infrastructure/cache/services/revision-cache.service.js +39 -0
- package/dist/src/infrastructure/cache/services/revision-cache.service.js.map +1 -0
- package/dist/src/infrastructure/cache/services/row-cache.service.d.ts +26 -0
- package/dist/src/infrastructure/cache/services/row-cache.service.js +68 -0
- package/dist/src/infrastructure/cache/services/row-cache.service.js.map +1 -0
- package/dist/src/utils/utils/parse-bool.d.ts +1 -0
- package/dist/src/utils/utils/parse-bool.js +10 -0
- package/dist/src/utils/utils/parse-bool.js.map +1 -0
- package/dist/src/utils/utils/stable-cache-key.d.ts +12 -0
- package/dist/src/utils/utils/stable-cache-key.js +46 -0
- package/dist/src/utils/utils/stable-cache-key.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +16 -7
- package/dist/src/utils/prisma-sql-generator/__tests__/shared-helpers.d.ts +0 -16
- package/dist/src/utils/prisma-sql-generator/__tests__/shared-helpers.js +0 -70
- package/dist/src/utils/prisma-sql-generator/__tests__/shared-helpers.js.map +0 -1
- package/dist/src/utils/prisma-sql-generator/__tests__/test-helpers.d.ts +0 -52
- package/dist/src/utils/prisma-sql-generator/__tests__/test-helpers.js +0 -531
- package/dist/src/utils/prisma-sql-generator/__tests__/test-helpers.js.map +0 -1
- package/dist/src/utils/prisma-sql-generator/index.d.ts +0 -2
- package/dist/src/utils/prisma-sql-generator/index.js.map +0 -1
- package/dist/src/utils/prisma-sql-generator/json-path.d.ts +0 -14
- package/dist/src/utils/prisma-sql-generator/json-path.js +0 -121
- package/dist/src/utils/prisma-sql-generator/json-path.js.map +0 -1
- package/dist/src/utils/prisma-sql-generator/types.d.ts +0 -105
- package/dist/src/utils/prisma-sql-generator/types.js +0 -3
- package/dist/src/utils/prisma-sql-generator/types.js.map +0 -1
- package/dist/src/utils/prisma-sql-generator/where-generator.prisma.d.ts +0 -21
- package/dist/src/utils/prisma-sql-generator/where-generator.prisma.js +0 -499
- package/dist/src/utils/prisma-sql-generator/where-generator.prisma.js.map +0 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.TableSchemaUpdatedEventHandler = void 0;
|
|
13
|
+
const cqrs_1 = require("@nestjs/cqrs");
|
|
14
|
+
const events_1 = require("../../events");
|
|
15
|
+
const row_cache_service_1 = require("../../services/row-cache.service");
|
|
16
|
+
let TableSchemaUpdatedEventHandler = class TableSchemaUpdatedEventHandler {
|
|
17
|
+
constructor(rowCache) {
|
|
18
|
+
this.rowCache = rowCache;
|
|
19
|
+
}
|
|
20
|
+
async handle(event) {
|
|
21
|
+
await this.rowCache.invalidateTableRelatives(event);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
exports.TableSchemaUpdatedEventHandler = TableSchemaUpdatedEventHandler;
|
|
25
|
+
exports.TableSchemaUpdatedEventHandler = TableSchemaUpdatedEventHandler = __decorate([
|
|
26
|
+
(0, cqrs_1.EventsHandler)(events_1.TableSchemaUpdatedEvent),
|
|
27
|
+
__metadata("design:paramtypes", [row_cache_service_1.RowCacheService])
|
|
28
|
+
], TableSchemaUpdatedEventHandler);
|
|
29
|
+
//# sourceMappingURL=table-schema-updated.handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-schema-updated.handler.js","sourceRoot":"","sources":["../../../../../../src/infrastructure/cache/handlers/table/table-schema-updated.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAA4D;AAC5D,yCAA0E;AAC1E,wEAAsF;AAG/E,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IAGzC,YAA6B,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAAG,CAAC;IAE1D,KAAK,CAAC,MAAM,CAAC,KAA8B;QACzC,MAAM,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;CACF,CAAA;AARY,wEAA8B;yCAA9B,8BAA8B;IAD1C,IAAA,oBAAa,EAAC,gCAAuB,CAAC;qCAIE,mCAAe;GAH3C,8BAA8B,CAQ1C"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './revisium-cache.module';
|
|
2
|
+
export * from './services/cache.service';
|
|
3
|
+
export * from './services/row-cache.service';
|
|
4
|
+
export * from './services/revision-cache.service';
|
|
5
|
+
export * from './services/auth-cache.service';
|
|
6
|
+
export * from './events';
|
|
7
|
+
export * from './handlers';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./revisium-cache.module"), exports);
|
|
18
|
+
__exportStar(require("./services/cache.service"), exports);
|
|
19
|
+
__exportStar(require("./services/row-cache.service"), exports);
|
|
20
|
+
__exportStar(require("./services/revision-cache.service"), exports);
|
|
21
|
+
__exportStar(require("./services/auth-cache.service"), exports);
|
|
22
|
+
__exportStar(require("./events"), exports);
|
|
23
|
+
__exportStar(require("./handlers"), exports);
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/infrastructure/cache/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,2DAAyC;AACzC,+DAA6C;AAC7C,oEAAkD;AAClD,gEAA8C;AAC9C,2CAAyB;AACzB,6CAA2B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BusDriver, BusOptions, CacheBusMessage, CreateBusDriverResult } from 'bentocache/types';
|
|
2
|
+
export type PgBusDriverOptions = {
|
|
3
|
+
connectionString: string;
|
|
4
|
+
applicationName?: string;
|
|
5
|
+
reconnectDelayMs?: number;
|
|
6
|
+
log?: Pick<Console, 'log' | 'warn' | 'error'>;
|
|
7
|
+
debug?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare class PgBusDriver implements BusDriver {
|
|
10
|
+
private listener?;
|
|
11
|
+
private publisher;
|
|
12
|
+
private handlers;
|
|
13
|
+
private reconnectCallbacks;
|
|
14
|
+
private connecting;
|
|
15
|
+
private destroyed;
|
|
16
|
+
private connectingPromise?;
|
|
17
|
+
private id?;
|
|
18
|
+
setId: (id: string) => this;
|
|
19
|
+
private readonly cs;
|
|
20
|
+
private readonly app;
|
|
21
|
+
private readonly delay;
|
|
22
|
+
private readonly log;
|
|
23
|
+
private readonly debug;
|
|
24
|
+
constructor(opts: PgBusDriverOptions);
|
|
25
|
+
publish(channel: string, message: CacheBusMessage): Promise<void>;
|
|
26
|
+
subscribe(channel: string, handler: (m: CacheBusMessage) => void): Promise<void>;
|
|
27
|
+
unsubscribe(channel: string): Promise<void>;
|
|
28
|
+
disconnect(): Promise<void>;
|
|
29
|
+
onReconnect(cb: () => void): void;
|
|
30
|
+
private assertChannel;
|
|
31
|
+
private ensureConnected;
|
|
32
|
+
private listen;
|
|
33
|
+
private onNotification;
|
|
34
|
+
private reconnectSoon;
|
|
35
|
+
private sleep;
|
|
36
|
+
}
|
|
37
|
+
export declare function pgBusDriver(opts: PgBusDriverOptions, busOptions?: BusOptions): CreateBusDriverResult;
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PgBusDriver = void 0;
|
|
4
|
+
exports.pgBusDriver = pgBusDriver;
|
|
5
|
+
const pg_1 = require("pg");
|
|
6
|
+
const CHANNEL_NAME_RE = /^[a-z_][a-z0-9_$.:]{0,62}$/i;
|
|
7
|
+
const MAX_PAYLOAD_BYTES = 8000;
|
|
8
|
+
function escapeIdentifier(str) {
|
|
9
|
+
return '"' + str.replace(/"/g, '""') + '"';
|
|
10
|
+
}
|
|
11
|
+
class PgBusDriver {
|
|
12
|
+
constructor(opts) {
|
|
13
|
+
this.handlers = new Map();
|
|
14
|
+
this.reconnectCallbacks = [];
|
|
15
|
+
this.connecting = false;
|
|
16
|
+
this.destroyed = false;
|
|
17
|
+
this.setId = (id) => {
|
|
18
|
+
this.id = id;
|
|
19
|
+
return this;
|
|
20
|
+
};
|
|
21
|
+
this.cs = opts.connectionString;
|
|
22
|
+
this.app = opts.applicationName ?? 'pg-bus';
|
|
23
|
+
this.delay = opts.reconnectDelayMs ?? 1000;
|
|
24
|
+
this.log = opts.log ?? console;
|
|
25
|
+
this.debug = opts.debug ?? false;
|
|
26
|
+
this.publisher = new pg_1.Pool({
|
|
27
|
+
connectionString: this.cs,
|
|
28
|
+
application_name: `${this.app}:pub`,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async publish(channel, message) {
|
|
32
|
+
this.assertChannel(channel);
|
|
33
|
+
if (!this.id) {
|
|
34
|
+
throw new Error('You must set an id before publishing a message');
|
|
35
|
+
}
|
|
36
|
+
const wrappedMessage = {
|
|
37
|
+
payload: message ?? {},
|
|
38
|
+
busId: this.id,
|
|
39
|
+
};
|
|
40
|
+
const payload = JSON.stringify(wrappedMessage);
|
|
41
|
+
const bytes = Buffer.byteLength(payload, 'utf8');
|
|
42
|
+
if (bytes > MAX_PAYLOAD_BYTES) {
|
|
43
|
+
throw new Error(`NOTIFY payload too large: ${bytes} > ${MAX_PAYLOAD_BYTES}`);
|
|
44
|
+
}
|
|
45
|
+
await this.publisher.query('SELECT pg_notify($1::text, $2::text)', [
|
|
46
|
+
channel,
|
|
47
|
+
payload,
|
|
48
|
+
]);
|
|
49
|
+
}
|
|
50
|
+
async subscribe(channel, handler) {
|
|
51
|
+
this.assertChannel(channel);
|
|
52
|
+
this.handlers.set(channel, handler);
|
|
53
|
+
await this.ensureConnected();
|
|
54
|
+
if (this.handlers.get(channel) !== handler)
|
|
55
|
+
return;
|
|
56
|
+
await this.listen(channel);
|
|
57
|
+
}
|
|
58
|
+
async unsubscribe(channel) {
|
|
59
|
+
this.handlers.delete(channel);
|
|
60
|
+
if (!this.listener)
|
|
61
|
+
return;
|
|
62
|
+
try {
|
|
63
|
+
this.assertChannel(channel);
|
|
64
|
+
await this.listener.query(`UNLISTEN ${escapeIdentifier(channel)}`);
|
|
65
|
+
}
|
|
66
|
+
catch (e) {
|
|
67
|
+
this.log.warn('[pg-bus] failed to UNLISTEN:', e);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async disconnect() {
|
|
71
|
+
this.destroyed = true;
|
|
72
|
+
if (this.listener) {
|
|
73
|
+
try {
|
|
74
|
+
await this.listener.query('UNLISTEN *');
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
this.log.warn('[pg-bus] failed to UNLISTEN * on disconnect:', e);
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
await this.listener.end();
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
this.log.warn('[pg-bus] failed to close listener connection:', e);
|
|
84
|
+
}
|
|
85
|
+
this.listener = undefined;
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
await this.publisher.end();
|
|
89
|
+
}
|
|
90
|
+
catch (e) {
|
|
91
|
+
this.log.warn('[pg-bus] failed to close publisher pool:', e);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
onReconnect(cb) {
|
|
95
|
+
this.reconnectCallbacks.push(cb);
|
|
96
|
+
}
|
|
97
|
+
assertChannel(name) {
|
|
98
|
+
if (!CHANNEL_NAME_RE.test(name)) {
|
|
99
|
+
throw new Error(`Invalid channel "${name}"`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
async ensureConnected() {
|
|
103
|
+
if (this.listener || this.destroyed)
|
|
104
|
+
return;
|
|
105
|
+
if (this.connecting && this.connectingPromise) {
|
|
106
|
+
await this.connectingPromise;
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
this.connecting = true;
|
|
110
|
+
this.connectingPromise = (async () => {
|
|
111
|
+
const client = new pg_1.Client({
|
|
112
|
+
connectionString: this.cs,
|
|
113
|
+
application_name: `${this.app}:listen`,
|
|
114
|
+
});
|
|
115
|
+
client.on('error', (err) => {
|
|
116
|
+
this.log.error('[pg-bus] listener error:', err);
|
|
117
|
+
this.reconnectSoon();
|
|
118
|
+
});
|
|
119
|
+
client.on('end', () => {
|
|
120
|
+
this.log.warn('[pg-bus] listener ended');
|
|
121
|
+
this.reconnectSoon();
|
|
122
|
+
});
|
|
123
|
+
try {
|
|
124
|
+
await client.connect();
|
|
125
|
+
client.on('notification', (n) => this.onNotification(n.channel, n.payload ?? ''));
|
|
126
|
+
this.listener = client;
|
|
127
|
+
for (const ch of this.handlers.keys()) {
|
|
128
|
+
await this.listen(ch);
|
|
129
|
+
}
|
|
130
|
+
for (const cb of this.reconnectCallbacks) {
|
|
131
|
+
try {
|
|
132
|
+
cb();
|
|
133
|
+
}
|
|
134
|
+
catch (e) {
|
|
135
|
+
this.log.warn('[pg-bus] onReconnect cb error:', e);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (this.debug) {
|
|
139
|
+
this.log.log('[pg-bus] LISTEN connected');
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (e) {
|
|
143
|
+
this.log.error('[pg-bus] connect failed:', e);
|
|
144
|
+
await this.sleep(this.delay);
|
|
145
|
+
this.reconnectSoon();
|
|
146
|
+
}
|
|
147
|
+
finally {
|
|
148
|
+
this.connecting = false;
|
|
149
|
+
}
|
|
150
|
+
})();
|
|
151
|
+
try {
|
|
152
|
+
await this.connectingPromise;
|
|
153
|
+
}
|
|
154
|
+
finally {
|
|
155
|
+
this.connectingPromise = undefined;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
async listen(channel) {
|
|
159
|
+
if (!this.listener)
|
|
160
|
+
return;
|
|
161
|
+
try {
|
|
162
|
+
this.assertChannel(channel);
|
|
163
|
+
await this.listener.query(`LISTEN ${escapeIdentifier(channel)}`);
|
|
164
|
+
}
|
|
165
|
+
catch (e) {
|
|
166
|
+
this.log.warn(`[pg-bus] failed to LISTEN ${channel}:`, e);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
onNotification(channel, raw) {
|
|
170
|
+
const h = this.handlers.get(channel);
|
|
171
|
+
if (!h)
|
|
172
|
+
return;
|
|
173
|
+
try {
|
|
174
|
+
const wrappedMsg = raw ? JSON.parse(raw) : { payload: {}, busId: null };
|
|
175
|
+
if (wrappedMsg.busId === this.id) {
|
|
176
|
+
if (this.debug) {
|
|
177
|
+
this.log?.log?.('[pg-bus] ignoring message published by the same bus instance');
|
|
178
|
+
}
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const payload = wrappedMsg.payload;
|
|
182
|
+
h(payload);
|
|
183
|
+
}
|
|
184
|
+
catch (e) {
|
|
185
|
+
const rawStr = String(raw ?? '');
|
|
186
|
+
const preview = rawStr.length > 256
|
|
187
|
+
? `${rawStr.slice(0, 256)}…(+${rawStr.length - 256} bytes)`
|
|
188
|
+
: rawStr;
|
|
189
|
+
this.log.warn(`[pg-bus] invalid JSON payload on ${channel}:`, preview, e);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
async reconnectSoon() {
|
|
193
|
+
if (this.destroyed)
|
|
194
|
+
return;
|
|
195
|
+
try {
|
|
196
|
+
if (this.listener) {
|
|
197
|
+
try {
|
|
198
|
+
await this.listener.end();
|
|
199
|
+
}
|
|
200
|
+
catch (e) {
|
|
201
|
+
this.log.warn('[pg-bus] failed to close listener during reconnect:', e);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
catch (e) {
|
|
206
|
+
this.log.warn('[pg-bus] unexpected error in reconnectSoon:', e);
|
|
207
|
+
}
|
|
208
|
+
this.listener = undefined;
|
|
209
|
+
await this.sleep(this.delay);
|
|
210
|
+
await this.ensureConnected();
|
|
211
|
+
}
|
|
212
|
+
sleep(ms) {
|
|
213
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
exports.PgBusDriver = PgBusDriver;
|
|
217
|
+
function pgBusDriver(opts, busOptions) {
|
|
218
|
+
return {
|
|
219
|
+
factory: () => new PgBusDriver(opts),
|
|
220
|
+
options: {
|
|
221
|
+
retryQueue: {
|
|
222
|
+
enabled: busOptions?.retryQueue?.enabled ?? true,
|
|
223
|
+
maxSize: busOptions?.retryQueue?.maxSize,
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=pg-bus.driver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pg-bus.driver.js","sourceRoot":"","sources":["../../../../../src/infrastructure/cache/pg-bus/pg-bus.driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var RevisiumCacheModule_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.RevisiumCacheModule = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const config_1 = require("@nestjs/config");
|
|
13
|
+
const cqrs_1 = require("@nestjs/cqrs");
|
|
14
|
+
const pg_bus_driver_1 = require("./pg-bus/pg-bus.driver");
|
|
15
|
+
const auth_cache_service_1 = require("./services/auth-cache.service");
|
|
16
|
+
const cache_service_1 = require("./services/cache.service");
|
|
17
|
+
const revision_cache_service_1 = require("./services/revision-cache.service");
|
|
18
|
+
const row_cache_service_1 = require("./services/row-cache.service");
|
|
19
|
+
const parse_bool_1 = require("../../utils/utils/parse-bool");
|
|
20
|
+
const noop_cache_service_1 = require("./services/noop-cache.service");
|
|
21
|
+
const cache_tokens_1 = require("./services/cache.tokens");
|
|
22
|
+
const handlers_1 = require("./handlers");
|
|
23
|
+
const ioredis_1 = require("ioredis");
|
|
24
|
+
async function loadBentoCacheCore() {
|
|
25
|
+
const { BentoCache, bentostore } = await Promise.resolve().then(() => require('bentocache'));
|
|
26
|
+
const { memoryDriver } = await Promise.resolve().then(() => require('bentocache/drivers/memory'));
|
|
27
|
+
return { BentoCache, bentostore, memoryDriver };
|
|
28
|
+
}
|
|
29
|
+
async function loadBentoCacheRedis() {
|
|
30
|
+
const { redisBusDriver, redisDriver } = await Promise.resolve().then(() => require('bentocache/drivers/redis'));
|
|
31
|
+
return { redisBusDriver, redisDriver };
|
|
32
|
+
}
|
|
33
|
+
let RevisiumCacheModule = RevisiumCacheModule_1 = class RevisiumCacheModule {
|
|
34
|
+
static forRootAsync() {
|
|
35
|
+
return {
|
|
36
|
+
module: RevisiumCacheModule_1,
|
|
37
|
+
global: true,
|
|
38
|
+
imports: [config_1.ConfigModule, cqrs_1.CqrsModule],
|
|
39
|
+
providers: [
|
|
40
|
+
{
|
|
41
|
+
provide: cache_tokens_1.CACHE_SERVICE,
|
|
42
|
+
useFactory: async (cfg) => {
|
|
43
|
+
const logger = new common_1.Logger('RevisiumCacheModule');
|
|
44
|
+
const enabled = (0, parse_bool_1.parseBool)(cfg.get('EXPERIMENTAL_CACHE'));
|
|
45
|
+
if (!enabled) {
|
|
46
|
+
logger.warn('⚠️ Cache disabled (NoopBentoCache). Set EXPERIMENTAL_CACHE=1 to enable.');
|
|
47
|
+
return new noop_cache_service_1.NoopCacheService();
|
|
48
|
+
}
|
|
49
|
+
const l1MaxSize = cfg.get('EXPERIMENTAL_CACHE_L1_MAX_SIZE') || undefined;
|
|
50
|
+
if (l1MaxSize) {
|
|
51
|
+
logger.log(`L1_MAX_SIZE: ${l1MaxSize}`);
|
|
52
|
+
}
|
|
53
|
+
const redisUrl = cfg.get('EXPERIMENTAL_CACHE_L2_REDIS_URL') || null;
|
|
54
|
+
try {
|
|
55
|
+
let bento;
|
|
56
|
+
if (!redisUrl) {
|
|
57
|
+
const datebaseUrl = cfg.getOrThrow('DATABASE_URL');
|
|
58
|
+
const debug = (0, parse_bool_1.parseBool)(cfg.get('EXPERIMENTAL_CACHE_DEBUG'));
|
|
59
|
+
const { BentoCache, bentostore, memoryDriver } = await loadBentoCacheCore();
|
|
60
|
+
bento = new BentoCache({
|
|
61
|
+
default: 'cache',
|
|
62
|
+
stores: {
|
|
63
|
+
cache: bentostore()
|
|
64
|
+
.useL1Layer(memoryDriver({
|
|
65
|
+
maxSize: l1MaxSize,
|
|
66
|
+
}))
|
|
67
|
+
.useBus((0, pg_bus_driver_1.pgBusDriver)({
|
|
68
|
+
connectionString: datebaseUrl,
|
|
69
|
+
debug,
|
|
70
|
+
})),
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
logger.log('✅ Cache enabled: L1 only (BentoCache memory).');
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
const redisBusHost = cfg.getOrThrow('EXPERIMENTAL_CACHE_REDIS_BUS_HOST');
|
|
77
|
+
if (redisBusHost) {
|
|
78
|
+
logger.log(`REDIS_BUS_HOST: ${redisBusHost}`);
|
|
79
|
+
}
|
|
80
|
+
const redisBusPort = cfg.getOrThrow('EXPERIMENTAL_CACHE_REDIS_BUS_PORT');
|
|
81
|
+
if (redisBusPort) {
|
|
82
|
+
logger.log(`REDIS_BUS_PORT: ${redisBusPort}`);
|
|
83
|
+
}
|
|
84
|
+
const { BentoCache, bentostore, memoryDriver } = await loadBentoCacheCore();
|
|
85
|
+
const { redisBusDriver, redisDriver } = await loadBentoCacheRedis();
|
|
86
|
+
bento = new BentoCache({
|
|
87
|
+
default: 'cache',
|
|
88
|
+
stores: {
|
|
89
|
+
cache: bentostore()
|
|
90
|
+
.useL1Layer(memoryDriver({
|
|
91
|
+
maxSize: l1MaxSize,
|
|
92
|
+
}))
|
|
93
|
+
.useL2Layer(redisDriver({
|
|
94
|
+
connection: new ioredis_1.default(redisUrl),
|
|
95
|
+
}))
|
|
96
|
+
.useBus(redisBusDriver({
|
|
97
|
+
connection: {
|
|
98
|
+
host: redisBusHost,
|
|
99
|
+
port: parseInt(redisBusPort),
|
|
100
|
+
},
|
|
101
|
+
retryQueue: {
|
|
102
|
+
enabled: true,
|
|
103
|
+
maxSize: undefined,
|
|
104
|
+
},
|
|
105
|
+
})),
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
logger.log(`✅ Cache enabled: L1 + L2 (BentoCache + Redis @ ${redisUrl}).`);
|
|
109
|
+
}
|
|
110
|
+
return bento;
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
const err = e;
|
|
114
|
+
logger.error(`❌ BentoCache setup failed (${redisUrl || 'memory'}), using noop fallback.`, err?.stack ?? String(err));
|
|
115
|
+
return new noop_cache_service_1.NoopCacheService();
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
inject: [config_1.ConfigService],
|
|
119
|
+
},
|
|
120
|
+
cache_service_1.CacheService,
|
|
121
|
+
row_cache_service_1.RowCacheService,
|
|
122
|
+
revision_cache_service_1.RevisionCacheService,
|
|
123
|
+
auth_cache_service_1.AuthCacheService,
|
|
124
|
+
...handlers_1.CACHE_EVENT_HANDLERS,
|
|
125
|
+
],
|
|
126
|
+
exports: [
|
|
127
|
+
row_cache_service_1.RowCacheService,
|
|
128
|
+
revision_cache_service_1.RevisionCacheService,
|
|
129
|
+
auth_cache_service_1.AuthCacheService,
|
|
130
|
+
cache_service_1.CacheService,
|
|
131
|
+
cache_tokens_1.CACHE_SERVICE,
|
|
132
|
+
],
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
exports.RevisiumCacheModule = RevisiumCacheModule;
|
|
137
|
+
exports.RevisiumCacheModule = RevisiumCacheModule = RevisiumCacheModule_1 = __decorate([
|
|
138
|
+
(0, common_1.Module)({})
|
|
139
|
+
], RevisiumCacheModule);
|
|
140
|
+
//# sourceMappingURL=revisium-cache.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revisium-cache.module.js","sourceRoot":"","sources":["../../../../src/infrastructure/cache/revisium-cache.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { CacheService } from './cache.service';
|
|
2
|
+
export declare class AuthCacheService {
|
|
3
|
+
private readonly cache;
|
|
4
|
+
constructor(cache: CacheService);
|
|
5
|
+
rolePermissions<T>(role: string, factory: () => Promise<T>): Promise<T>;
|
|
6
|
+
systemPermissionCheck<T>(query: {
|
|
7
|
+
userId?: string;
|
|
8
|
+
}, factory: () => Promise<T>): Promise<T>;
|
|
9
|
+
organizationPermissionCheck<T>(query: {
|
|
10
|
+
organizationId: string;
|
|
11
|
+
userId?: string;
|
|
12
|
+
}, factory: () => Promise<T>): Promise<T>;
|
|
13
|
+
projectPermissionCheck<T>(query: {
|
|
14
|
+
organizationId?: string;
|
|
15
|
+
projectName?: string;
|
|
16
|
+
userId?: string;
|
|
17
|
+
}, factory: () => Promise<T>): Promise<T>;
|
|
18
|
+
invalidateUserPermissions(userId: string): Promise<void>;
|
|
19
|
+
invalidateOrganizationPermissions(organizationId: string): Promise<void>;
|
|
20
|
+
invalidateProjectPermissions(organizationId: string, projectName: string): Promise<void>;
|
|
21
|
+
invalidateAllAuthCaches(): Promise<void>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AuthCacheService = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const cache_service_1 = require("./cache.service");
|
|
15
|
+
const stable_cache_key_1 = require("../../../utils/utils/stable-cache-key");
|
|
16
|
+
const auth_cache_constants_1 = require("../constants/auth-cache.constants");
|
|
17
|
+
let AuthCacheService = class AuthCacheService {
|
|
18
|
+
constructor(cache) {
|
|
19
|
+
this.cache = cache;
|
|
20
|
+
}
|
|
21
|
+
async rolePermissions(role, factory) {
|
|
22
|
+
return this.cache.getOrSet({
|
|
23
|
+
key: auth_cache_constants_1.AUTH_CACHE_KEYS.ROLE_PERMISSIONS(role),
|
|
24
|
+
ttl: auth_cache_constants_1.AUTH_CACHE_CONFIG.ROLE_PERMISSIONS_TTL,
|
|
25
|
+
tags: [auth_cache_constants_1.AUTH_CACHE_TAGS.DICTIONARIES],
|
|
26
|
+
factory,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
async systemPermissionCheck(query, factory) {
|
|
30
|
+
const keyHash = (0, stable_cache_key_1.makeCacheKeyFromArgs)([query], {
|
|
31
|
+
prefix: auth_cache_constants_1.AUTH_CACHE_KEYS.CHECK_SYSTEM_PERMISSION,
|
|
32
|
+
version: auth_cache_constants_1.AUTH_CACHE_CONFIG.KEY_VERSION,
|
|
33
|
+
});
|
|
34
|
+
const userId = query.userId;
|
|
35
|
+
return this.cache.getOrSet({
|
|
36
|
+
key: keyHash,
|
|
37
|
+
ttl: auth_cache_constants_1.AUTH_CACHE_CONFIG.PERMISSION_CHECK_TTL,
|
|
38
|
+
tags: [
|
|
39
|
+
auth_cache_constants_1.AUTH_CACHE_TAGS.AUTH_RELATIVES,
|
|
40
|
+
...(userId ? [auth_cache_constants_1.AUTH_CACHE_TAGS.USER_PERMISSIONS(userId)] : []),
|
|
41
|
+
],
|
|
42
|
+
factory,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
async organizationPermissionCheck(query, factory) {
|
|
46
|
+
const keyHash = (0, stable_cache_key_1.makeCacheKeyFromArgs)([query], {
|
|
47
|
+
prefix: auth_cache_constants_1.AUTH_CACHE_KEYS.CHECK_ORGANIZATION_PERMISSION,
|
|
48
|
+
version: auth_cache_constants_1.AUTH_CACHE_CONFIG.KEY_VERSION,
|
|
49
|
+
});
|
|
50
|
+
const userId = query.userId;
|
|
51
|
+
return this.cache.getOrSet({
|
|
52
|
+
key: keyHash,
|
|
53
|
+
ttl: auth_cache_constants_1.AUTH_CACHE_CONFIG.PERMISSION_CHECK_TTL,
|
|
54
|
+
tags: [
|
|
55
|
+
auth_cache_constants_1.AUTH_CACHE_TAGS.AUTH_RELATIVES,
|
|
56
|
+
auth_cache_constants_1.AUTH_CACHE_TAGS.ORGANIZATION_PERMISSIONS(query.organizationId),
|
|
57
|
+
...(userId ? [auth_cache_constants_1.AUTH_CACHE_TAGS.USER_PERMISSIONS(userId)] : []),
|
|
58
|
+
],
|
|
59
|
+
factory,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async projectPermissionCheck(query, factory) {
|
|
63
|
+
const keyHash = (0, stable_cache_key_1.makeCacheKeyFromArgs)([query], {
|
|
64
|
+
prefix: auth_cache_constants_1.AUTH_CACHE_KEYS.CHECK_PROJECT_PERMISSION,
|
|
65
|
+
version: auth_cache_constants_1.AUTH_CACHE_CONFIG.KEY_VERSION,
|
|
66
|
+
});
|
|
67
|
+
const userId = query.userId;
|
|
68
|
+
const organizationId = query.organizationId;
|
|
69
|
+
const projectName = query.projectName;
|
|
70
|
+
return this.cache.getOrSet({
|
|
71
|
+
key: keyHash,
|
|
72
|
+
ttl: auth_cache_constants_1.AUTH_CACHE_CONFIG.PERMISSION_CHECK_TTL,
|
|
73
|
+
tags: [
|
|
74
|
+
auth_cache_constants_1.AUTH_CACHE_TAGS.AUTH_RELATIVES,
|
|
75
|
+
...(userId ? [auth_cache_constants_1.AUTH_CACHE_TAGS.USER_PERMISSIONS(userId)] : []),
|
|
76
|
+
...(organizationId
|
|
77
|
+
? [auth_cache_constants_1.AUTH_CACHE_TAGS.ORGANIZATION_PERMISSIONS(organizationId)]
|
|
78
|
+
: []),
|
|
79
|
+
...(organizationId && projectName
|
|
80
|
+
? [auth_cache_constants_1.AUTH_CACHE_TAGS.PROJECT_PERMISSIONS(organizationId, projectName)]
|
|
81
|
+
: []),
|
|
82
|
+
],
|
|
83
|
+
factory,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
async invalidateUserPermissions(userId) {
|
|
87
|
+
await this.cache.deleteByTag({
|
|
88
|
+
tags: [auth_cache_constants_1.AUTH_CACHE_TAGS.USER_PERMISSIONS(userId)],
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
async invalidateOrganizationPermissions(organizationId) {
|
|
92
|
+
await this.cache.deleteByTag({
|
|
93
|
+
tags: [auth_cache_constants_1.AUTH_CACHE_TAGS.ORGANIZATION_PERMISSIONS(organizationId)],
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
async invalidateProjectPermissions(organizationId, projectName) {
|
|
97
|
+
await this.cache.deleteByTag({
|
|
98
|
+
tags: [auth_cache_constants_1.AUTH_CACHE_TAGS.PROJECT_PERMISSIONS(organizationId, projectName)],
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
async invalidateAllAuthCaches() {
|
|
102
|
+
await this.cache.deleteByTag({
|
|
103
|
+
tags: [auth_cache_constants_1.AUTH_CACHE_TAGS.AUTH_RELATIVES],
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
exports.AuthCacheService = AuthCacheService;
|
|
108
|
+
exports.AuthCacheService = AuthCacheService = __decorate([
|
|
109
|
+
(0, common_1.Injectable)(),
|
|
110
|
+
__metadata("design:paramtypes", [cache_service_1.CacheService])
|
|
111
|
+
], AuthCacheService);
|
|
112
|
+
//# sourceMappingURL=auth-cache.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-cache.service.js","sourceRoot":"","sources":["../../../../../src/infrastructure/cache/services/auth-cache.service.ts"],"names":[],"mappings":"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"}
|