@authup/server-core 1.0.0-beta.56 → 1.0.0-beta.58
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/adapters/database/domains/role/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/role/entity.mjs +2 -1
- package/dist/adapters/database/domains/role/entity.mjs.map +1 -1
- package/dist/adapters/database/logger/module.mjs +2 -4
- package/dist/adapters/database/logger/module.mjs.map +1 -1
- package/dist/adapters/database/migrations/mysql/1784970000000-RoleClientForeignKey.d.ts +25 -0
- package/dist/adapters/database/migrations/mysql/1784970000000-RoleClientForeignKey.d.ts.map +1 -0
- package/dist/adapters/database/migrations/mysql/1784970000000-RoleClientForeignKey.mjs +60 -0
- package/dist/adapters/database/migrations/mysql/1784970000000-RoleClientForeignKey.mjs.map +1 -0
- package/dist/adapters/database/migrations/postgres/1784970000000-RoleClientForeignKey.d.ts +25 -0
- package/dist/adapters/database/migrations/postgres/1784970000000-RoleClientForeignKey.d.ts.map +1 -0
- package/dist/adapters/database/migrations/postgres/1784970000000-RoleClientForeignKey.mjs +60 -0
- package/dist/adapters/database/migrations/postgres/1784970000000-RoleClientForeignKey.mjs.map +1 -0
- package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/identity.mjs +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/identity.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/client/module.d.ts +6 -6
- package/dist/adapters/http/controllers/entities/client/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/client/module.mjs +30 -7
- package/dist/adapters/http/controllers/entities/client/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/client-permission/module.d.ts +5 -5
- package/dist/adapters/http/controllers/entities/client-permission/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/client-permission/module.mjs +23 -5
- package/dist/adapters/http/controllers/entities/client-permission/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/client-role/module.d.ts +4 -4
- package/dist/adapters/http/controllers/entities/client-role/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/client-role/module.mjs +19 -4
- package/dist/adapters/http/controllers/entities/client-role/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/client-scope/module.d.ts +4 -4
- package/dist/adapters/http/controllers/entities/client-scope/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/client-scope/module.mjs +19 -4
- package/dist/adapters/http/controllers/entities/client-scope/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/consent/module.d.ts +3 -3
- package/dist/adapters/http/controllers/entities/consent/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/consent/module.mjs +15 -3
- package/dist/adapters/http/controllers/entities/consent/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/event/module.d.ts +2 -2
- package/dist/adapters/http/controllers/entities/event/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/event/module.mjs +11 -2
- package/dist/adapters/http/controllers/entities/event/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/identity-provide-role/module.d.ts +5 -5
- package/dist/adapters/http/controllers/entities/identity-provide-role/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/identity-provide-role/module.mjs +23 -5
- package/dist/adapters/http/controllers/entities/identity-provide-role/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts +6 -6
- package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +24 -8
- package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/key/module.d.ts +5 -5
- package/dist/adapters/http/controllers/entities/key/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/key/module.mjs +23 -5
- package/dist/adapters/http/controllers/entities/key/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/permission/module.d.ts +6 -6
- package/dist/adapters/http/controllers/entities/permission/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/permission/module.mjs +27 -6
- package/dist/adapters/http/controllers/entities/permission/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/permission-policy/module.d.ts +4 -4
- package/dist/adapters/http/controllers/entities/permission-policy/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/permission-policy/module.mjs +19 -4
- package/dist/adapters/http/controllers/entities/permission-policy/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/policy/module.d.ts +7 -7
- package/dist/adapters/http/controllers/entities/policy/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/policy/module.mjs +27 -6
- package/dist/adapters/http/controllers/entities/policy/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/realm/module.d.ts +6 -6
- package/dist/adapters/http/controllers/entities/realm/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/realm/module.mjs +29 -8
- package/dist/adapters/http/controllers/entities/realm/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/role/module.d.ts +6 -6
- package/dist/adapters/http/controllers/entities/role/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/role/module.mjs +27 -6
- package/dist/adapters/http/controllers/entities/role/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/role-attribute/module.d.ts +5 -5
- package/dist/adapters/http/controllers/entities/role-attribute/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/role-attribute/module.mjs +23 -5
- package/dist/adapters/http/controllers/entities/role-attribute/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/role-permission/module.d.ts +5 -5
- package/dist/adapters/http/controllers/entities/role-permission/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/role-permission/module.mjs +23 -5
- package/dist/adapters/http/controllers/entities/role-permission/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/scope/module.d.ts +6 -6
- package/dist/adapters/http/controllers/entities/scope/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/scope/module.mjs +27 -6
- package/dist/adapters/http/controllers/entities/scope/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/session/module.d.ts +3 -3
- package/dist/adapters/http/controllers/entities/session/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/session/module.mjs +15 -3
- package/dist/adapters/http/controllers/entities/session/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/trust-anchor/module.d.ts +5 -5
- package/dist/adapters/http/controllers/entities/trust-anchor/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/trust-anchor/module.mjs +23 -5
- package/dist/adapters/http/controllers/entities/trust-anchor/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user/module.d.ts +6 -6
- package/dist/adapters/http/controllers/entities/user/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/user/module.mjs +27 -6
- package/dist/adapters/http/controllers/entities/user/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user-attribute/module.d.ts +5 -5
- package/dist/adapters/http/controllers/entities/user-attribute/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/user-attribute/module.mjs +23 -5
- package/dist/adapters/http/controllers/entities/user-attribute/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user-authenticator/module.d.ts +4 -4
- package/dist/adapters/http/controllers/entities/user-authenticator/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/user-authenticator/module.mjs +19 -4
- package/dist/adapters/http/controllers/entities/user-authenticator/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user-permission/module.d.ts +5 -5
- package/dist/adapters/http/controllers/entities/user-permission/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/user-permission/module.mjs +23 -5
- package/dist/adapters/http/controllers/entities/user-permission/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user-role/module.d.ts +4 -4
- package/dist/adapters/http/controllers/entities/user-role/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/user-role/module.mjs +19 -4
- package/dist/adapters/http/controllers/entities/user-role/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/index.mjs +2 -1
- package/dist/adapters/http/controllers/workflows/authenticator-challenge/module.mjs +1 -1
- package/dist/adapters/http/controllers/workflows/authenticator-challenge/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/index.d.ts +1 -0
- package/dist/adapters/http/controllers/workflows/index.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/index.mjs +3 -1
- package/dist/adapters/http/controllers/workflows/logout/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/logout/module.mjs +5 -1
- package/dist/adapters/http/controllers/workflows/logout/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/userinfo/index.d.ts +2 -0
- package/dist/adapters/http/controllers/workflows/userinfo/index.d.ts.map +1 -0
- package/dist/adapters/http/controllers/workflows/userinfo/index.mjs +5 -0
- package/dist/adapters/http/controllers/workflows/userinfo/module.d.ts +18 -0
- package/dist/adapters/http/controllers/workflows/userinfo/module.d.ts.map +1 -0
- package/dist/adapters/http/controllers/workflows/userinfo/module.mjs +53 -0
- package/dist/adapters/http/controllers/workflows/userinfo/module.mjs.map +1 -0
- package/dist/adapters/http/index.mjs +2 -1
- package/dist/adapters/http/middleware/built-in/authorization/module.d.ts +1 -0
- package/dist/adapters/http/middleware/built-in/authorization/module.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/authorization/module.mjs +10 -1
- package/dist/adapters/http/middleware/built-in/authorization/module.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/rate-limit.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/rate-limit.mjs +4 -2
- package/dist/adapters/http/middleware/built-in/rate-limit.mjs.map +1 -1
- package/dist/adapters/http/request/client-certificate.mjs +1 -1
- package/dist/adapters/http/request/client-certificate.mjs.map +1 -1
- package/dist/adapters/http/request/event-context.mjs +1 -1
- package/dist/adapters/http/request/event-context.mjs.map +1 -1
- package/dist/adapters/http/request/helpers/locations.mjs +1 -3
- package/dist/adapters/http/request/helpers/locations.mjs.map +1 -1
- package/dist/app/factory.d.ts +2 -1
- package/dist/app/factory.d.ts.map +1 -1
- package/dist/app/factory.mjs +2 -2
- package/dist/app/factory.mjs.map +1 -1
- package/dist/app/index.d.ts +1 -0
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.mjs +5 -1
- package/dist/app/modules/authentication/module.mjs +6 -3
- package/dist/app/modules/authentication/module.mjs.map +1 -1
- package/dist/app/modules/authentication/repositories/session.mjs +2 -2
- package/dist/app/modules/authentication/repositories/session.mjs.map +1 -1
- package/dist/app/modules/components/module.d.ts +3 -0
- package/dist/app/modules/components/module.d.ts.map +1 -1
- package/dist/app/modules/components/module.mjs +17 -2
- package/dist/app/modules/components/module.mjs.map +1 -1
- package/dist/app/modules/config/constants.d.ts +1 -0
- package/dist/app/modules/config/constants.d.ts.map +1 -1
- package/dist/app/modules/config/constants.mjs +1 -0
- package/dist/app/modules/config/constants.mjs.map +1 -1
- package/dist/app/modules/config/helpers.d.ts +9 -0
- package/dist/app/modules/config/helpers.d.ts.map +1 -0
- package/dist/app/modules/config/helpers.mjs +22 -0
- package/dist/app/modules/config/helpers.mjs.map +1 -0
- package/dist/app/modules/config/index.d.ts +2 -0
- package/dist/app/modules/config/index.d.ts.map +1 -1
- package/dist/app/modules/config/index.mjs +6 -1
- package/dist/app/modules/config/module.d.ts.map +1 -1
- package/dist/app/modules/config/module.mjs +2 -7
- package/dist/app/modules/config/module.mjs.map +1 -1
- package/dist/app/modules/config/normalize.d.ts.map +1 -1
- package/dist/app/modules/config/normalize.mjs +4 -0
- package/dist/app/modules/config/normalize.mjs.map +1 -1
- package/dist/app/modules/config/read/env.d.ts.map +1 -1
- package/dist/app/modules/config/read/env.mjs +2 -0
- package/dist/app/modules/config/read/env.mjs.map +1 -1
- package/dist/app/modules/config/read/fs.d.ts.map +1 -1
- package/dist/app/modules/config/read/fs.mjs +31 -8
- package/dist/app/modules/config/read/fs.mjs.map +1 -1
- package/dist/app/modules/config/read/module.mjs +8 -3
- package/dist/app/modules/config/read/module.mjs.map +1 -1
- package/dist/app/modules/config/trust-proxy.d.ts +28 -0
- package/dist/app/modules/config/trust-proxy.d.ts.map +1 -0
- package/dist/app/modules/config/trust-proxy.mjs +64 -0
- package/dist/app/modules/config/trust-proxy.mjs.map +1 -0
- package/dist/app/modules/config/types.d.ts +18 -0
- package/dist/app/modules/config/types.d.ts.map +1 -1
- package/dist/app/modules/config/validator.d.ts.map +1 -1
- package/dist/app/modules/config/validator.mjs +7 -0
- package/dist/app/modules/config/validator.mjs.map +1 -1
- package/dist/app/modules/database/module.mjs +2 -1
- package/dist/app/modules/database/module.mjs.map +1 -1
- package/dist/app/modules/database/repositories/client/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/client/repository.mjs +3 -4
- package/dist/app/modules/database/repositories/client/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/client-permission/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/client-permission/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/client-role/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/client-role/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/client-scope/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/client-scope/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/event/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/event/repository.mjs +4 -3
- package/dist/app/modules/database/repositories/event/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/identity-provider/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/identity-provider/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/key/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/key/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/permission/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/permission/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/permission-policy/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/permission-policy/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/policy/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/policy/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/query.d.ts +20 -0
- package/dist/app/modules/database/repositories/query.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/query.mjs +26 -3
- package/dist/app/modules/database/repositories/query.mjs.map +1 -1
- package/dist/app/modules/database/repositories/realm/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/realm/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/role/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/role/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/role-attribute/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/role-attribute/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/role-permission/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/role-permission/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/schema-validation.d.ts +17 -3
- package/dist/app/modules/database/repositories/schema-validation.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/schema-validation.mjs +29 -5
- package/dist/app/modules/database/repositories/schema-validation.mjs.map +1 -1
- package/dist/app/modules/database/repositories/scope/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/scope/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/trust-anchor/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/trust-anchor/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/user/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/user/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/user-attribute/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/user-attribute/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/user-authenticator/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/user-authenticator/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/user-permission/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/user-permission/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/user-role/repository.mjs +2 -2
- package/dist/app/modules/database/repositories/user-role/repository.mjs.map +1 -1
- package/dist/app/modules/http/constants.d.ts +2 -13
- package/dist/app/modules/http/constants.d.ts.map +1 -1
- package/dist/app/modules/http/constants.mjs.map +1 -1
- package/dist/app/modules/http/module.d.ts.map +1 -1
- package/dist/app/modules/http/module.mjs +7 -1
- package/dist/app/modules/http/module.mjs.map +1 -1
- package/dist/app/modules/http/modules/controller.d.ts +4 -2
- package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
- package/dist/app/modules/http/modules/controller.mjs +208 -124
- package/dist/app/modules/http/modules/controller.mjs.map +1 -1
- package/dist/app/modules/http/modules/middleware.mjs +10 -5
- package/dist/app/modules/http/modules/middleware.mjs.map +1 -1
- package/dist/app/modules/identity/module.mjs +6 -3
- package/dist/app/modules/identity/module.mjs.map +1 -1
- package/dist/app/modules/index.mjs +5 -1
- package/dist/app/modules/oauth2/module.mjs +37 -17
- package/dist/app/modules/oauth2/module.mjs.map +1 -1
- package/dist/app/modules/oauth2/repositories/authorize/state/repository.mjs +1 -1
- package/dist/app/modules/oauth2/repositories/authorize/state/repository.mjs.map +1 -1
- package/dist/app/modules/oauth2/repositories/consent/repository.mjs +2 -2
- package/dist/app/modules/oauth2/repositories/consent/repository.mjs.map +1 -1
- package/dist/app/modules/oauth2/repositories/token/repository.mjs +1 -1
- package/dist/app/modules/oauth2/repositories/token/repository.mjs.map +1 -1
- package/dist/app/modules/provisioning/module.d.ts.map +1 -1
- package/dist/app/modules/provisioning/module.mjs +21 -12
- package/dist/app/modules/provisioning/module.mjs.map +1 -1
- package/dist/app/modules/provisioning/sources/file/module.d.ts.map +1 -1
- package/dist/app/modules/provisioning/sources/file/module.mjs +11 -2
- package/dist/app/modules/provisioning/sources/file/module.mjs.map +1 -1
- package/dist/app/types.d.ts +5 -0
- package/dist/app/types.d.ts.map +1 -0
- package/dist/app/types.mjs +4 -0
- package/dist/cli/commands/healthcheck.d.ts +2 -1
- package/dist/cli/commands/healthcheck.d.ts.map +1 -1
- package/dist/cli/commands/healthcheck.mjs +3 -2
- package/dist/cli/commands/healthcheck.mjs.map +1 -1
- package/dist/cli/commands/index.d.ts +0 -1
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.mjs +1 -2
- package/dist/cli/commands/migration.d.ts +2 -1
- package/dist/cli/commands/migration.d.ts.map +1 -1
- package/dist/cli/commands/migration.mjs +3 -2
- package/dist/cli/commands/migration.mjs.map +1 -1
- package/dist/cli/commands/start.d.ts +2 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.mjs +3 -2
- package/dist/cli/commands/start.mjs.map +1 -1
- package/dist/cli/config.d.ts +18 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.mjs +34 -0
- package/dist/cli/config.mjs.map +1 -0
- package/dist/cli/module.d.ts +8 -8
- package/dist/cli/module.d.ts.map +1 -1
- package/dist/cli/module.mjs +8 -28
- package/dist/cli/module.mjs.map +1 -1
- package/dist/cli/types.d.ts +5 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.mjs +4 -0
- package/dist/components/event-cleaner/module.d.ts.map +1 -1
- package/dist/components/event-cleaner/module.mjs +26 -14
- package/dist/components/event-cleaner/module.mjs.map +1 -1
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.mjs +1 -4
- package/dist/components/oauth2-cleaner/module.d.ts.map +1 -1
- package/dist/components/oauth2-cleaner/module.mjs +29 -17
- package/dist/components/oauth2-cleaner/module.mjs.map +1 -1
- package/dist/components/types.d.ts +1 -0
- package/dist/components/types.d.ts.map +1 -1
- package/dist/core/authentication/login-throttle/service.d.ts.map +1 -1
- package/dist/core/authentication/login-throttle/service.mjs +2 -1
- package/dist/core/authentication/login-throttle/service.mjs.map +1 -1
- package/dist/core/authentication/session/module.mjs +2 -4
- package/dist/core/authentication/session/module.mjs.map +1 -1
- package/dist/core/entities/client/constants.d.ts +10 -0
- package/dist/core/entities/client/constants.d.ts.map +1 -0
- package/dist/core/entities/client/constants.mjs +20 -0
- package/dist/core/entities/client/constants.mjs.map +1 -0
- package/dist/core/entities/client/index.d.ts +1 -0
- package/dist/core/entities/client/index.d.ts.map +1 -1
- package/dist/core/entities/client/index.mjs +3 -2
- package/dist/core/entities/client/schema.d.ts.map +1 -1
- package/dist/core/entities/client/schema.mjs +40 -3
- package/dist/core/entities/client/schema.mjs.map +1 -1
- package/dist/core/entities/client/service.d.ts.map +1 -1
- package/dist/core/entities/client/service.mjs +9 -61
- package/dist/core/entities/client/service.mjs.map +1 -1
- package/dist/core/entities/client/web-client.d.ts +39 -3
- package/dist/core/entities/client/web-client.d.ts.map +1 -1
- package/dist/core/entities/client/web-client.mjs +68 -12
- package/dist/core/entities/client/web-client.mjs.map +1 -1
- package/dist/core/entities/client-permission/service.mjs +12 -9
- package/dist/core/entities/client-permission/service.mjs.map +1 -1
- package/dist/core/entities/client-scope/schema.d.ts.map +1 -1
- package/dist/core/entities/client-scope/schema.mjs +3 -1
- package/dist/core/entities/client-scope/schema.mjs.map +1 -1
- package/dist/core/entities/event/constants.d.ts +7 -0
- package/dist/core/entities/event/constants.d.ts.map +1 -1
- package/dist/core/entities/event/constants.mjs +7 -1
- package/dist/core/entities/event/constants.mjs.map +1 -1
- package/dist/core/entities/event/index.mjs +2 -2
- package/dist/core/entities/event/service.mjs +1 -1
- package/dist/core/entities/event/service.mjs.map +1 -1
- package/dist/core/entities/index.mjs +4 -3
- package/dist/core/entities/key/service.mjs +4 -2
- package/dist/core/entities/key/service.mjs.map +1 -1
- package/dist/core/entities/permission/service.d.ts.map +1 -1
- package/dist/core/entities/permission/service.mjs +1 -1
- package/dist/core/entities/permission/service.mjs.map +1 -1
- package/dist/core/entities/policy/service.d.ts.map +1 -1
- package/dist/core/entities/policy/service.mjs +3 -2
- package/dist/core/entities/policy/service.mjs.map +1 -1
- package/dist/core/entities/realm/service.d.ts.map +1 -1
- package/dist/core/entities/realm/service.mjs +1 -1
- package/dist/core/entities/realm/service.mjs.map +1 -1
- package/dist/core/entities/role/schema.d.ts.map +1 -1
- package/dist/core/entities/role/schema.mjs +4 -0
- package/dist/core/entities/role/schema.mjs.map +1 -1
- package/dist/core/entities/role/service.d.ts.map +1 -1
- package/dist/core/entities/role/service.mjs +1 -1
- package/dist/core/entities/role/service.mjs.map +1 -1
- package/dist/core/entities/role-permission/service.mjs +12 -9
- package/dist/core/entities/role-permission/service.mjs.map +1 -1
- package/dist/core/entities/scope/service.d.ts.map +1 -1
- package/dist/core/entities/scope/service.mjs +1 -1
- package/dist/core/entities/scope/service.mjs.map +1 -1
- package/dist/core/entities/session/schema.d.ts.map +1 -1
- package/dist/core/entities/session/schema.mjs +2 -0
- package/dist/core/entities/session/schema.mjs.map +1 -1
- package/dist/core/entities/user/schema.d.ts.map +1 -1
- package/dist/core/entities/user/schema.mjs +2 -0
- package/dist/core/entities/user/schema.mjs.map +1 -1
- package/dist/core/entities/user/service.d.ts.map +1 -1
- package/dist/core/entities/user/service.mjs +1 -1
- package/dist/core/entities/user/service.mjs.map +1 -1
- package/dist/core/entities/user-authenticator/helpers.mjs +1 -1
- package/dist/core/entities/user-authenticator/helpers.mjs.map +1 -1
- package/dist/core/entities/user-authenticator/service.mjs +7 -7
- package/dist/core/entities/user-authenticator/service.mjs.map +1 -1
- package/dist/core/entities/user-permission/service.mjs +12 -9
- package/dist/core/entities/user-permission/service.mjs.map +1 -1
- package/dist/core/identity/password-recovery/check.mjs +4 -4
- package/dist/core/identity/password-recovery/check.mjs.map +1 -1
- package/dist/core/identity/password-recovery/service.mjs +1 -1
- package/dist/core/identity/password-recovery/service.mjs.map +1 -1
- package/dist/core/identity/registration/check.mjs +2 -2
- package/dist/core/identity/registration/check.mjs.map +1 -1
- package/dist/core/index.mjs +5 -3
- package/dist/core/key/check.mjs +2 -2
- package/dist/core/key/check.mjs.map +1 -1
- package/dist/core/provisioning/entities/client/relations-validator.d.ts.map +1 -1
- package/dist/core/provisioning/entities/client/relations-validator.mjs +2 -0
- package/dist/core/provisioning/entities/client/relations-validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/client/types.d.ts +8 -0
- package/dist/core/provisioning/entities/client/types.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/client/module.d.ts +3 -1
- package/dist/core/provisioning/synchronizer/client/module.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/client/module.mjs +10 -1
- package/dist/core/provisioning/synchronizer/client/module.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/client/types.d.ts +3 -1
- package/dist/core/provisioning/synchronizer/client/types.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/entity-resolver.d.ts +4 -1
- package/dist/core/provisioning/synchronizer/entity-resolver.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/entity-resolver.mjs +14 -29
- package/dist/core/provisioning/synchronizer/entity-resolver.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/index.d.ts +1 -0
- package/dist/core/provisioning/synchronizer/index.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/permission/module.mjs +0 -1
- package/dist/core/provisioning/synchronizer/permission/module.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/realm/module.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/realm/module.mjs +8 -9
- package/dist/core/provisioning/synchronizer/realm/module.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/role/module.mjs +0 -1
- package/dist/core/provisioning/synchronizer/role/module.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/scope/module.mjs +0 -1
- package/dist/core/provisioning/synchronizer/scope/module.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/types.d.ts +11 -0
- package/dist/core/provisioning/synchronizer/types.d.ts.map +1 -0
- package/dist/core/provisioning/synchronizer/types.mjs +4 -0
- package/dist/core/provisioning/synchronizer/user/module.mjs +0 -1
- package/dist/core/provisioning/synchronizer/user/module.mjs.map +1 -1
- package/dist/core/query/describe.d.ts +25 -0
- package/dist/core/query/describe.d.ts.map +1 -0
- package/dist/core/query/describe.mjs +50 -0
- package/dist/core/query/describe.mjs.map +1 -0
- package/dist/core/query/fields.d.ts +44 -0
- package/dist/core/query/fields.d.ts.map +1 -0
- package/dist/core/query/fields.mjs +46 -0
- package/dist/core/query/fields.mjs.map +1 -0
- package/dist/core/query/index.d.ts +1 -0
- package/dist/core/query/index.d.ts.map +1 -1
- package/dist/core/query/index.mjs +2 -1
- package/dist/core/query/module.d.ts +1 -1
- package/dist/core/query/module.mjs +1 -1
- package/dist/core/query/module.mjs.map +1 -1
- package/dist/index.mjs +6 -2
- package/dist/path.mjs.map +1 -1
- package/dist/swagger.json +1324 -193
- package/dist/ui/client/.vite/ssr-manifest.json +1030 -760
- package/dist/ui/client/assets/index-BTK3GPZZ.js +106 -0
- package/dist/ui/client/assets/index-Cx_pI7BS.css +2 -0
- package/dist/ui/client/index.html +2 -2
- package/dist/ui/server/server.js +4465 -11501
- package/package.json +51 -50
- package/dist/cli/commands/reset.d.ts +0 -2
- package/dist/cli/commands/reset.d.ts.map +0 -1
- package/dist/cli/commands/reset.mjs +0 -23
- package/dist/cli/commands/reset.mjs.map +0 -1
- package/dist/components/database/index.d.ts +0 -2
- package/dist/components/database/index.d.ts.map +0 -1
- package/dist/components/database/index.mjs +0 -7
- package/dist/components/database/unique-entries/factory.d.ts +0 -4
- package/dist/components/database/unique-entries/factory.d.ts.map +0 -1
- package/dist/components/database/unique-entries/factory.mjs +0 -12
- package/dist/components/database/unique-entries/factory.mjs.map +0 -1
- package/dist/components/database/unique-entries/index.d.ts +0 -3
- package/dist/components/database/unique-entries/index.d.ts.map +0 -1
- package/dist/components/database/unique-entries/index.mjs +0 -6
- package/dist/components/database/unique-entries/module.d.ts +0 -15
- package/dist/components/database/unique-entries/module.d.ts.map +0 -1
- package/dist/components/database/unique-entries/module.mjs +0 -69
- package/dist/components/database/unique-entries/module.mjs.map +0 -1
- package/dist/ui/client/assets/index-C05uGFDe.js +0 -131
- package/dist/ui/client/assets/index-CiHrf73J.css +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["validateEntityJoinColumns","applyQuery","RolePermissionEntity","translateWhereConditions","RolePermissionRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","_name","Promise","resolve","findOneByIdOrName","idOrName","findManyBy","where","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget"],"sources":["../../../../../../src/app/modules/database/repositories/role-permission/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { RolePermission } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IRolePermissionRepository } from '../../../../../core/index.ts';\nimport { RolePermissionEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\n\nexport class RolePermissionRepositoryAdapter implements IRolePermissionRepository {\n private readonly repository: Repository<RolePermission>;\n\n constructor(repository: Repository<RolePermission>) {\n this.repository = repository;\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<RolePermission>> {\n const qb = this.repository.createQueryBuilder('rolePermission');\n qb.groupBy('rolePermission.id');\n\n const { pagination } = applyQuery(qb, query);\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: entities,\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n findOneById(id: string): Promise<RolePermission | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(_name: string): Promise<RolePermission | null> {\n return Promise.resolve(null);\n }\n\n findOneByIdOrName(idOrName: string): Promise<RolePermission | null> {\n return this.findOneById(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<RolePermission[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<RolePermission | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<RolePermission>): RolePermission {\n return this.repository.create(data);\n }\n\n merge(entity: RolePermission, data: Partial<RolePermission>): RolePermission {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: RolePermission): Promise<RolePermission> {\n return this.repository.save(entity);\n }\n\n async remove(entity: RolePermission): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<RolePermission>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: RolePermissionEntity,\n });\n }\n}\n"],"mappings":";;;;;;;;;AAiBA,
|
|
1
|
+
{"version":3,"file":"repository.mjs","names":["validateEntityJoinColumns","applyQuery","redactFieldConditions","RolePermissionEntity","translateWhereConditions","RolePermissionRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","_name","Promise","resolve","findOneByIdOrName","idOrName","findManyBy","where","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget"],"sources":["../../../../../../src/app/modules/database/repositories/role-permission/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { RolePermission } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery, redactFieldConditions } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IRolePermissionRepository } from '../../../../../core/index.ts';\nimport { RolePermissionEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\n\nexport class RolePermissionRepositoryAdapter implements IRolePermissionRepository {\n private readonly repository: Repository<RolePermission>;\n\n constructor(repository: Repository<RolePermission>) {\n this.repository = repository;\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<RolePermission>> {\n const qb = this.repository.createQueryBuilder('rolePermission');\n qb.groupBy('rolePermission.id');\n\n const { pagination } = applyQuery(qb, query);\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: redactFieldConditions(query, entities),\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n findOneById(id: string): Promise<RolePermission | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(_name: string): Promise<RolePermission | null> {\n return Promise.resolve(null);\n }\n\n findOneByIdOrName(idOrName: string): Promise<RolePermission | null> {\n return this.findOneById(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<RolePermission[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<RolePermission | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<RolePermission>): RolePermission {\n return this.repository.create(data);\n }\n\n merge(entity: RolePermission, data: Partial<RolePermission>): RolePermission {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: RolePermission): Promise<RolePermission> {\n return this.repository.save(entity);\n }\n\n async remove(entity: RolePermission): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<RolePermission>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: RolePermissionEntity,\n });\n }\n}\n"],"mappings":";;;;;;;;;AAiBA,IAAaK,kCAAb,MAAaA;CACQC;CAEjB,YAAYA,YAAwC;EAChD,KAAKA,aAAaA;CACtB;CAEA,MAAMC,SAASC,OAAwE;EACnF,MAAMC,KAAK,KAAKH,WAAWI,mBAAmB,gBAAA;EAC9CD,GAAGE,QAAQ,mBAAA;EAEX,MAAM,EAAEC,eAAeX,WAAWQ,IAAID,KAAAA;EAEtC,MAAM,CAACK,UAAUC,SAAS,MAAML,GAAGM,gBAAe;EAElD,OAAO;GACHC,MAAMd,sBAAsBM,OAAOK,QAAAA;GACnCI,MAAM;IACFH;IACA,GAAGF;GACP;EACJ;CACJ;CAEAM,YAAYC,IAA4C;EACpD,OAAO,KAAKC,UAAU,EAAED,GAAG,CAAA;CAC/B;CAEA,MAAME,cAAcC,OAA+C;EAC/D,OAAOC,QAAQC,QAAQ,IAAA;CAC3B;CAEAC,kBAAkBC,UAAkD;EAChE,OAAO,KAAKR,YAAYQ,QAAAA;CAC5B;CAEA,MAAMC,WAAWC,OAAuD;EACpE,OAAO,KAAKtB,WAAWuB,OAAOzB,yBAAyBwB,KAAAA,CAAAA;CAC3D;CAEA,MAAMR,UAAUQ,OAA4D;EACxE,OAAO,KAAKtB,WAAWc,UAAUhB,yBAAyBwB,KAAAA,CAAAA;CAC9D;CAEAE,OAAOd,MAA+C;EAClD,OAAO,KAAKV,WAAWwB,OAAOd,IAAAA;CAClC;CAEAe,MAAMC,QAAwBhB,MAA+C;EACzE,OAAO,KAAKV,WAAWyB,MAAMC,QAAQhB,IAAAA;CACzC;CAEA,MAAMiB,KAAKD,QAAiD;EACxD,OAAO,KAAK1B,WAAW2B,KAAKD,MAAAA;CAChC;CAEA,MAAME,OAAOF,QAAuC;EAChD,MAAM,KAAK1B,WAAW4B,OAAOF,MAAAA;CACjC;CAEA,MAAMG,oBAAoBnB,MAA8C;EACpE,MAAMhB,0BAA0BgB,MAAM;GAClCoB,YAAY,KAAK9B,WAAW+B,QAAQC;GACpCC,cAAcpC;EAClB,CAAA;CACJ;AACJ"}
|
|
@@ -1,9 +1,23 @@
|
|
|
1
|
-
import type { DataSource } from 'typeorm';
|
|
1
|
+
import type { DataSource, EntityMetadata } from 'typeorm';
|
|
2
|
+
/**
|
|
3
|
+
* Every selectable column must appear in the schema's field allow-list:
|
|
4
|
+
* rapiq derives the root projection from `fields` (`default` when
|
|
5
|
+
* present, else `allowed`), so a column missing from BOTH silently
|
|
6
|
+
* vanishes from every collection response — no error, just an absent
|
|
7
|
+
* property (`role.builtIn` went missing this way).
|
|
8
|
+
*/
|
|
9
|
+
export declare function assertSchemaFieldsCoverEntity(name: string, schema: {
|
|
10
|
+
fields?: {
|
|
11
|
+
default?: string[];
|
|
12
|
+
allowed?: string[];
|
|
13
|
+
};
|
|
14
|
+
}, metadata: EntityMetadata): void;
|
|
2
15
|
/**
|
|
3
16
|
* Validate every registered entity schema against its TypeORM
|
|
4
|
-
* metadata (`@rapiq/typeorm`'s `assertSchemaMatchesEntity`: allow-lists,
|
|
17
|
+
* metadata (`@rapiq/adapter-typeorm`'s `assertSchemaMatchesEntity`: allow-lists,
|
|
5
18
|
* fields/sort defaults and the filters default condition tree must
|
|
6
|
-
* reference existing columns/relations)
|
|
19
|
+
* reference existing columns/relations) and assert its field allow-list
|
|
20
|
+
* covers every selectable column. Called by
|
|
7
21
|
* `DatabaseModule.setup` once the DataSource is initialized —
|
|
8
22
|
* schema/entity drift fails the boot, fail-fast.
|
|
9
23
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-validation.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/database/repositories/schema-validation.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"schema-validation.d.ts","sourceRoot":"","sources":["../../../../../src/app/modules/database/repositories/schema-validation.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAgB,MAAM,SAAS,CAAC;AA2ExE;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CACzC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAAE,EAC/D,QAAQ,EAAE,cAAc,GACxB,IAAI,CAiBP;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAI,IAAI,CAQnE"}
|
|
@@ -29,7 +29,7 @@ import "../../../../adapters/database/domains/index.mjs";
|
|
|
29
29
|
import { schemaRegistry } from "../../../../core/query/module.mjs";
|
|
30
30
|
import "../../../../core/index.mjs";
|
|
31
31
|
import { EntityType } from "@authup/core-kit";
|
|
32
|
-
import { assertSchemaMatchesEntity } from "@rapiq/typeorm";
|
|
32
|
+
import { assertSchemaMatchesEntity } from "@rapiq/adapter-typeorm";
|
|
33
33
|
//#region src/app/modules/database/repositories/schema-validation.ts
|
|
34
34
|
/**
|
|
35
35
|
* Entity class per registered schema name — the iteration source for
|
|
@@ -62,16 +62,40 @@ import { assertSchemaMatchesEntity } from "@rapiq/typeorm";
|
|
|
62
62
|
[EntityType.USER_ROLE]: UserRoleEntity
|
|
63
63
|
};
|
|
64
64
|
/**
|
|
65
|
+
* Selectable columns deliberately kept out of a schema's field
|
|
66
|
+
* allow-list. `select: false` columns are skipped automatically (the
|
|
67
|
+
* entity already declares them hidden); everything listed here is a
|
|
68
|
+
* column that IS selectable but must never ride the API projection.
|
|
69
|
+
*/ const SCHEMA_FIELD_EXCLUSIONS = { [EntityType.USER_AUTHENTICATOR]: ["parameters"] };
|
|
70
|
+
/**
|
|
71
|
+
* Every selectable column must appear in the schema's field allow-list:
|
|
72
|
+
* rapiq derives the root projection from `fields` (`default` when
|
|
73
|
+
* present, else `allowed`), so a column missing from BOTH silently
|
|
74
|
+
* vanishes from every collection response — no error, just an absent
|
|
75
|
+
* property (`role.builtIn` went missing this way).
|
|
76
|
+
*/ function assertSchemaFieldsCoverEntity(name, schema, metadata) {
|
|
77
|
+
const declared = /* @__PURE__ */ new Set([...schema.fields?.default || [], ...schema.fields?.allowed || []]);
|
|
78
|
+
const excluded = new Set(SCHEMA_FIELD_EXCLUSIONS[name] || []);
|
|
79
|
+
const missing = metadata.columns.filter((column) => column.isSelect).map((column) => column.propertyName).filter((propertyName) => !declared.has(propertyName) && !excluded.has(propertyName));
|
|
80
|
+
if (missing.length > 0) throw new Error(`The schema "${name}" does not declare the field(s): ${missing.join(", ")}.`);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
65
83
|
* Validate every registered entity schema against its TypeORM
|
|
66
|
-
* metadata (`@rapiq/typeorm`'s `assertSchemaMatchesEntity`: allow-lists,
|
|
84
|
+
* metadata (`@rapiq/adapter-typeorm`'s `assertSchemaMatchesEntity`: allow-lists,
|
|
67
85
|
* fields/sort defaults and the filters default condition tree must
|
|
68
|
-
* reference existing columns/relations)
|
|
86
|
+
* reference existing columns/relations) and assert its field allow-list
|
|
87
|
+
* covers every selectable column. Called by
|
|
69
88
|
* `DatabaseModule.setup` once the DataSource is initialized —
|
|
70
89
|
* schema/entity drift fails the boot, fail-fast.
|
|
71
90
|
*/ function validateEntitySchemas(dataSource) {
|
|
72
|
-
for (const [name, target] of Object.entries(SCHEMA_ENTITY_TARGETS))
|
|
91
|
+
for (const [name, target] of Object.entries(SCHEMA_ENTITY_TARGETS)) {
|
|
92
|
+
const schema = schemaRegistry.getOrFail(name);
|
|
93
|
+
const metadata = dataSource.getMetadata(target);
|
|
94
|
+
assertSchemaMatchesEntity(schema, metadata);
|
|
95
|
+
assertSchemaFieldsCoverEntity(name, schema, metadata);
|
|
96
|
+
}
|
|
73
97
|
}
|
|
74
98
|
//#endregion
|
|
75
|
-
export { validateEntitySchemas };
|
|
99
|
+
export { assertSchemaFieldsCoverEntity, validateEntitySchemas };
|
|
76
100
|
|
|
77
101
|
//# sourceMappingURL=schema-validation.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-validation.mjs","names":["assertSchemaMatchesEntity","EntityType","schemaRegistry","ClientEntity","ClientPermissionEntity","ClientRoleEntity","ClientScopeEntity","ConsentEntity","EventEntity","IdentityProviderEntity","IdentityProviderRoleMappingEntity","KeyEntity","PermissionEntity","PermissionPolicyEntity","PolicyEntity","RealmEntity","RoleAttributeEntity","RoleEntity","RolePermissionEntity","ScopeEntity","SessionEntity","TrustAnchorEntity","UserAttributeEntity","UserAuthenticatorEntity","UserEntity","UserPermissionEntity","UserRoleEntity","SCHEMA_ENTITY_TARGETS","CLIENT","CLIENT_PERMISSION","CLIENT_ROLE","CLIENT_SCOPE","CONSENT","EVENT","IDENTITY_PROVIDER","IDENTITY_PROVIDER_ROLE_MAPPING","KEY","PERMISSION","PERMISSION_POLICY","POLICY","REALM","ROLE","ROLE_ATTRIBUTE","ROLE_PERMISSION","SCOPE","SESSION","TRUST_ANCHOR","USER","USER_ATTRIBUTE","USER_AUTHENTICATOR","USER_PERMISSION","USER_ROLE","
|
|
1
|
+
{"version":3,"file":"schema-validation.mjs","names":["assertSchemaMatchesEntity","EntityType","schemaRegistry","ClientEntity","ClientPermissionEntity","ClientRoleEntity","ClientScopeEntity","ConsentEntity","EventEntity","IdentityProviderEntity","IdentityProviderRoleMappingEntity","KeyEntity","PermissionEntity","PermissionPolicyEntity","PolicyEntity","RealmEntity","RoleAttributeEntity","RoleEntity","RolePermissionEntity","ScopeEntity","SessionEntity","TrustAnchorEntity","UserAttributeEntity","UserAuthenticatorEntity","UserEntity","UserPermissionEntity","UserRoleEntity","SCHEMA_ENTITY_TARGETS","CLIENT","CLIENT_PERMISSION","CLIENT_ROLE","CLIENT_SCOPE","CONSENT","EVENT","IDENTITY_PROVIDER","IDENTITY_PROVIDER_ROLE_MAPPING","KEY","PERMISSION","PERMISSION_POLICY","POLICY","REALM","ROLE","ROLE_ATTRIBUTE","ROLE_PERMISSION","SCOPE","SESSION","TRUST_ANCHOR","USER","USER_ATTRIBUTE","USER_AUTHENTICATOR","USER_PERMISSION","USER_ROLE","SCHEMA_FIELD_EXCLUSIONS","assertSchemaFieldsCoverEntity","name","schema","metadata","declared","Set","fields","default","allowed","excluded","missing","columns","filter","column","isSelect","map","propertyName","has","length","Error","join","validateEntitySchemas","dataSource","target","Object","entries","getOrFail","getMetadata"],"sources":["../../../../../src/app/modules/database/repositories/schema-validation.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ObjectLiteral } from '@rapiq/core';\nimport { assertSchemaMatchesEntity } from '@rapiq/adapter-typeorm';\nimport type { DataSource, EntityMetadata, EntityTarget } from 'typeorm';\nimport { EntityType } from '@authup/core-kit';\nimport { schemaRegistry } from '../../../../core/index.ts';\nimport {\n ClientEntity,\n ClientPermissionEntity,\n ClientRoleEntity,\n ClientScopeEntity,\n ConsentEntity,\n EventEntity,\n IdentityProviderEntity,\n IdentityProviderRoleMappingEntity,\n KeyEntity,\n PermissionEntity,\n PermissionPolicyEntity,\n PolicyEntity,\n RealmEntity,\n RoleAttributeEntity,\n RoleEntity,\n RolePermissionEntity,\n ScopeEntity,\n SessionEntity,\n TrustAnchorEntity,\n UserAttributeEntity,\n UserAuthenticatorEntity,\n UserEntity,\n UserPermissionEntity,\n UserRoleEntity,\n} from '../../../../adapters/database/domains/index.ts';\n\n/**\n * Entity class per registered schema name — the iteration source for\n * the boot-time validation. A mapped name missing from the registry\n * fails via `getOrFail`, so a renamed/removed schema surfaces here too.\n */\nconst SCHEMA_ENTITY_TARGETS : Record<string, EntityTarget<ObjectLiteral>> = {\n [EntityType.CLIENT]: ClientEntity,\n [EntityType.CLIENT_PERMISSION]: ClientPermissionEntity,\n [EntityType.CLIENT_ROLE]: ClientRoleEntity,\n [EntityType.CLIENT_SCOPE]: ClientScopeEntity,\n [EntityType.CONSENT]: ConsentEntity,\n [EntityType.EVENT]: EventEntity,\n [EntityType.IDENTITY_PROVIDER]: IdentityProviderEntity,\n [EntityType.IDENTITY_PROVIDER_ROLE_MAPPING]: IdentityProviderRoleMappingEntity,\n [EntityType.KEY]: KeyEntity,\n [EntityType.PERMISSION]: PermissionEntity,\n [EntityType.PERMISSION_POLICY]: PermissionPolicyEntity,\n [EntityType.POLICY]: PolicyEntity,\n [EntityType.REALM]: RealmEntity,\n [EntityType.ROLE]: RoleEntity,\n [EntityType.ROLE_ATTRIBUTE]: RoleAttributeEntity,\n [EntityType.ROLE_PERMISSION]: RolePermissionEntity,\n [EntityType.SCOPE]: ScopeEntity,\n [EntityType.SESSION]: SessionEntity,\n [EntityType.TRUST_ANCHOR]: TrustAnchorEntity,\n [EntityType.USER]: UserEntity,\n [EntityType.USER_ATTRIBUTE]: UserAttributeEntity,\n [EntityType.USER_AUTHENTICATOR]: UserAuthenticatorEntity,\n [EntityType.USER_PERMISSION]: UserPermissionEntity,\n [EntityType.USER_ROLE]: UserRoleEntity,\n};\n\n/**\n * Selectable columns deliberately kept out of a schema's field\n * allow-list. `select: false` columns are skipped automatically (the\n * entity already declares them hidden); everything listed here is a\n * column that IS selectable but must never ride the API projection.\n */\nconst SCHEMA_FIELD_EXCLUSIONS : Record<string, string[]> = {\n // device-internal credential blob (TOTP config, WebAuthn public key +\n // signature counter) — surfaced only through the challenge endpoint's\n // trimmed view.\n [EntityType.USER_AUTHENTICATOR]: ['parameters'],\n};\n\n/**\n * Every selectable column must appear in the schema's field allow-list:\n * rapiq derives the root projection from `fields` (`default` when\n * present, else `allowed`), so a column missing from BOTH silently\n * vanishes from every collection response — no error, just an absent\n * property (`role.builtIn` went missing this way).\n */\nexport function assertSchemaFieldsCoverEntity(\n name: string,\n schema: { fields?: { default?: string[], allowed?: string[] } },\n metadata: EntityMetadata,\n) : void {\n const declared = new Set([\n ...(schema.fields?.default || []),\n ...(schema.fields?.allowed || []),\n ]);\n\n const excluded = new Set(SCHEMA_FIELD_EXCLUSIONS[name] || []);\n const missing = metadata.columns\n .filter((column) => column.isSelect)\n .map((column) => column.propertyName)\n .filter((propertyName) => !declared.has(propertyName) && !excluded.has(propertyName));\n\n if (missing.length > 0) {\n throw new Error(\n `The schema \"${name}\" does not declare the field(s): ${missing.join(', ')}.`,\n );\n }\n}\n\n/**\n * Validate every registered entity schema against its TypeORM\n * metadata (`@rapiq/adapter-typeorm`'s `assertSchemaMatchesEntity`: allow-lists,\n * fields/sort defaults and the filters default condition tree must\n * reference existing columns/relations) and assert its field allow-list\n * covers every selectable column. Called by\n * `DatabaseModule.setup` once the DataSource is initialized —\n * schema/entity drift fails the boot, fail-fast.\n */\nexport function validateEntitySchemas(dataSource: DataSource) : void {\n for (const [name, target] of Object.entries(SCHEMA_ENTITY_TARGETS)) {\n const schema = schemaRegistry.getOrFail(name);\n const metadata = dataSource.getMetadata(target);\n\n assertSchemaMatchesEntity(schema, metadata);\n assertSchemaFieldsCoverEntity(name, schema, metadata);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CA,MAAM2B,wBAAsE;EACvE1B,WAAW2B,SAASzB;EACpBF,WAAW4B,oBAAoBzB;EAC/BH,WAAW6B,cAAczB;EACzBJ,WAAW8B,eAAezB;EAC1BL,WAAW+B,UAAUzB;EACrBN,WAAWgC,QAAQzB;EACnBP,WAAWiC,oBAAoBzB;EAC/BR,WAAWkC,iCAAiCzB;EAC5CT,WAAWmC,MAAMzB;EACjBV,WAAWoC,aAAazB;EACxBX,WAAWqC,oBAAoBzB;EAC/BZ,WAAWsC,SAASzB;EACpBb,WAAWuC,QAAQzB;EACnBd,WAAWwC,OAAOxB;EAClBhB,WAAWyC,iBAAiB1B;EAC5Bf,WAAW0C,kBAAkBzB;EAC7BjB,WAAW2C,QAAQzB;EACnBlB,WAAW4C,UAAUzB;EACrBnB,WAAW6C,eAAezB;EAC1BpB,WAAW8C,OAAOvB;EAClBvB,WAAW+C,iBAAiB1B;EAC5BrB,WAAWgD,qBAAqB1B;EAChCtB,WAAWiD,kBAAkBzB;EAC7BxB,WAAWkD,YAAYzB;AAC5B;;;;;;GAQA,MAAM0B,0BAAqD,GAItDnD,WAAWgD,qBAAqB,CAAC,YAAa,EACnD;;;;;;;GASA,SAAgBI,8BACZC,MACAC,QACAC,UAAwB;CAExB,MAAMC,2BAAW,IAAIC,IAAI,CACjBH,GAAAA,OAAOI,QAAQC,WAAW,CAAA,GAC1BL,GAAAA,OAAOI,QAAQE,WAAW,CAAA,CACjC,CAAA;CAED,MAAMC,WAAW,IAAIJ,IAAIN,wBAAwBE,SAAS,CAAA,CAAE;CAC5D,MAAMS,UAAUP,SAASQ,QACpBC,QAAQC,WAAWA,OAAOC,QAAQ,CAAA,CAClCC,KAAKF,WAAWA,OAAOG,YAAY,CAAA,CACnCJ,QAAQI,iBAAiB,CAACZ,SAASa,IAAID,YAAAA,KAAiB,CAACP,SAASQ,IAAID,YAAAA,CAAAA;CAE3E,IAAIN,QAAQQ,SAAS,GACjB,MAAM,IAAIC,MACN,eAAelB,KAAK,mCAAmCS,QAAQU,KAAK,IAAA,EAAM,EAAE;AAGxF;;;;;;;;;GAWA,SAAgBC,sBAAsBC,YAAsB;CACxD,KAAK,MAAM,CAACrB,MAAMsB,WAAWC,OAAOC,QAAQnD,qBAAAA,GAAwB;EAChE,MAAM4B,SAASrD,eAAe6E,UAAUzB,IAAAA;EACxC,MAAME,WAAWmB,WAAWK,YAAYJ,MAAAA;EAExC5E,0BAA0BuD,QAAQC,QAAAA;EAClCH,8BAA8BC,MAAMC,QAAQC,QAAAA;CAChD;AACJ"}
|
|
@@ -3,7 +3,7 @@ import "node:url";
|
|
|
3
3
|
import.meta.url;
|
|
4
4
|
import { ScopeEntity } from "../../../../../adapters/database/domains/scope/entity.mjs";
|
|
5
5
|
import "../../../../../adapters/database/domains/index.mjs";
|
|
6
|
-
import { applyQuery } from "../query.mjs";
|
|
6
|
+
import { applyQuery, redactFieldConditions } from "../query.mjs";
|
|
7
7
|
import { isEntityUnique, translateWhereConditions } from "../helpers.mjs";
|
|
8
8
|
import { DatabaseConflictError } from "../../../../../adapters/database/errors/conflict.mjs";
|
|
9
9
|
import "../../../../../adapters/database/index.mjs";
|
|
@@ -24,7 +24,7 @@ var ScopeRepositoryAdapter = class {
|
|
|
24
24
|
const { pagination } = applyQuery(qb, query);
|
|
25
25
|
const [entities, total] = await qb.getManyAndCount();
|
|
26
26
|
return {
|
|
27
|
-
data: entities,
|
|
27
|
+
data: redactFieldConditions(query, entities),
|
|
28
28
|
meta: {
|
|
29
29
|
total,
|
|
30
30
|
...pagination
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["isUUID","validateEntityJoinColumns","applyQuery","DatabaseConflictError","isEntityUnique","translateWhereConditions","ScopeEntity","RealmRepositoryAdapter","ScopeRepositoryAdapter","repository","realmRepository","ctx","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","name","realmKey","where","realmId","resolveId","andWhere","getOne","findOneByIdOrName","idOrName","realm","findManyBy","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget","checkUniqueness","existing","isUnique","entityExisting"],"sources":["../../../../../../src/app/modules/database/repositories/scope/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Realm, Scope } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport { isUUID } from '@authup/kit';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IRealmRepository, IScopeRepository } from '../../../../../core/index.ts';\nimport { DatabaseConflictError } from '../../../../../adapters/database/index.ts';\nimport { isEntityUnique, translateWhereConditions } from '../helpers.ts';\nimport { ScopeEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { RealmRepositoryAdapter } from '../realm/repository.ts';\n\nexport type ScopeRepositoryAdapterContext = {\n repository: Repository<Scope>,\n realmRepository: Repository<Realm>,\n};\n\nexport class ScopeRepositoryAdapter implements IScopeRepository {\n private readonly repository: Repository<Scope>;\n\n private readonly realmRepository: IRealmRepository;\n\n constructor(ctx: ScopeRepositoryAdapterContext) {\n this.repository = ctx.repository;\n this.realmRepository = new RealmRepositoryAdapter(ctx.realmRepository);\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<Scope>> {\n const qb = this.repository.createQueryBuilder('scope');\n qb.groupBy('scope.id');\n\n const { pagination } = applyQuery(qb, query);\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: entities,\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n findOneById(id: string): Promise<Scope | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(name: string, realmKey?: string): Promise<Scope | null> {\n const qb = this.repository.createQueryBuilder('scope');\n qb.where('scope.name = :name', { name });\n\n if (realmKey) {\n const realmId = await this.realmRepository.resolveId(realmKey);\n if (!realmId) {\n return null;\n }\n qb.andWhere('scope.realmId = :realmId', { realmId });\n }\n\n return qb.getOne();\n }\n\n async findOneByIdOrName(idOrName: string, realm?: string): Promise<Scope | null> {\n return isUUID(idOrName) ?\n this.findOneById(idOrName) :\n this.findOneByName(idOrName, realm);\n }\n\n async findManyBy(where: Record<string, any>): Promise<Scope[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<Scope | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<Scope>): Scope {\n return this.repository.create(data);\n }\n\n merge(entity: Scope, data: Partial<Scope>): Scope {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: Scope): Promise<Scope> {\n return this.repository.save(entity);\n }\n\n async remove(entity: Scope): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<Scope>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: ScopeEntity,\n });\n }\n\n async checkUniqueness(data: Partial<Scope>, existing?: Scope): Promise<void> {\n const isUnique = await isEntityUnique({\n dataSource: this.repository.manager.connection,\n entityTarget: ScopeEntity,\n entity: data,\n entityExisting: existing,\n });\n\n if (!isUnique) {\n throw new DatabaseConflictError();\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAyBA,
|
|
1
|
+
{"version":3,"file":"repository.mjs","names":["isUUID","validateEntityJoinColumns","applyQuery","redactFieldConditions","DatabaseConflictError","isEntityUnique","translateWhereConditions","ScopeEntity","RealmRepositoryAdapter","ScopeRepositoryAdapter","repository","realmRepository","ctx","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","name","realmKey","where","realmId","resolveId","andWhere","getOne","findOneByIdOrName","idOrName","realm","findManyBy","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget","checkUniqueness","existing","isUnique","entityExisting"],"sources":["../../../../../../src/app/modules/database/repositories/scope/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Realm, Scope } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport { isUUID } from '@authup/kit';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery, redactFieldConditions } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IRealmRepository, IScopeRepository } from '../../../../../core/index.ts';\nimport { DatabaseConflictError } from '../../../../../adapters/database/index.ts';\nimport { isEntityUnique, translateWhereConditions } from '../helpers.ts';\nimport { ScopeEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { RealmRepositoryAdapter } from '../realm/repository.ts';\n\nexport type ScopeRepositoryAdapterContext = {\n repository: Repository<Scope>,\n realmRepository: Repository<Realm>,\n};\n\nexport class ScopeRepositoryAdapter implements IScopeRepository {\n private readonly repository: Repository<Scope>;\n\n private readonly realmRepository: IRealmRepository;\n\n constructor(ctx: ScopeRepositoryAdapterContext) {\n this.repository = ctx.repository;\n this.realmRepository = new RealmRepositoryAdapter(ctx.realmRepository);\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<Scope>> {\n const qb = this.repository.createQueryBuilder('scope');\n qb.groupBy('scope.id');\n\n const { pagination } = applyQuery(qb, query);\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: redactFieldConditions(query, entities),\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n findOneById(id: string): Promise<Scope | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(name: string, realmKey?: string): Promise<Scope | null> {\n const qb = this.repository.createQueryBuilder('scope');\n qb.where('scope.name = :name', { name });\n\n if (realmKey) {\n const realmId = await this.realmRepository.resolveId(realmKey);\n if (!realmId) {\n return null;\n }\n qb.andWhere('scope.realmId = :realmId', { realmId });\n }\n\n return qb.getOne();\n }\n\n async findOneByIdOrName(idOrName: string, realm?: string): Promise<Scope | null> {\n return isUUID(idOrName) ?\n this.findOneById(idOrName) :\n this.findOneByName(idOrName, realm);\n }\n\n async findManyBy(where: Record<string, any>): Promise<Scope[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<Scope | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<Scope>): Scope {\n return this.repository.create(data);\n }\n\n merge(entity: Scope, data: Partial<Scope>): Scope {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: Scope): Promise<Scope> {\n return this.repository.save(entity);\n }\n\n async remove(entity: Scope): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<Scope>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: ScopeEntity,\n });\n }\n\n async checkUniqueness(data: Partial<Scope>, existing?: Scope): Promise<void> {\n const isUnique = await isEntityUnique({\n dataSource: this.repository.manager.connection,\n entityTarget: ScopeEntity,\n entity: data,\n entityExisting: existing,\n });\n\n if (!isUnique) {\n throw new DatabaseConflictError();\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAyBA,IAAaS,yBAAb,MAAaA;CACQC;CAEAC;CAEjB,YAAYC,KAAoC;EAC5C,KAAKF,aAAaE,IAAIF;EACtB,KAAKC,kBAAkB,IAAIH,uBAAuBI,IAAID,eAAe;CACzE;CAEA,MAAME,SAASC,OAA+D;EAC1E,MAAMC,KAAK,KAAKL,WAAWM,mBAAmB,OAAA;EAC9CD,GAAGE,QAAQ,UAAA;EAEX,MAAM,EAAEC,eAAehB,WAAWa,IAAID,KAAAA;EAEtC,MAAM,CAACK,UAAUC,SAAS,MAAML,GAAGM,gBAAe;EAElD,OAAO;GACHC,MAAMnB,sBAAsBW,OAAOK,QAAAA;GACnCI,MAAM;IACFH;IACA,GAAGF;GACP;EACJ;CACJ;CAEAM,YAAYC,IAAmC;EAC3C,OAAO,KAAKC,UAAU,EAAED,GAAG,CAAA;CAC/B;CAEA,MAAME,cAAcC,MAAcC,UAA0C;EACxE,MAAMd,KAAK,KAAKL,WAAWM,mBAAmB,OAAA;EAC9CD,GAAGe,MAAM,sBAAsB,EAAEF,KAAK,CAAA;EAEtC,IAAIC,UAAU;GACV,MAAME,UAAU,MAAM,KAAKpB,gBAAgBqB,UAAUH,QAAAA;GACrD,IAAI,CAACE,SACD,OAAO;GAEXhB,GAAGkB,SAAS,4BAA4B,EAAEF,QAAQ,CAAA;EACtD;EAEA,OAAOhB,GAAGmB,OAAM;CACpB;CAEA,MAAMC,kBAAkBC,UAAkBC,OAAuC;EAC7E,OAAOrC,OAAOoC,QAAAA,IACV,KAAKZ,YAAYY,QAAAA,IACjB,KAAKT,cAAcS,UAAUC,KAAAA;CACrC;CAEA,MAAMC,WAAWR,OAA8C;EAC3D,OAAO,KAAKpB,WAAW6B,OAAOjC,yBAAyBwB,KAAAA,CAAAA;CAC3D;CAEA,MAAMJ,UAAUI,OAAmD;EAC/D,OAAO,KAAKpB,WAAWgB,UAAUpB,yBAAyBwB,KAAAA,CAAAA;CAC9D;CAEAU,OAAOlB,MAA6B;EAChC,OAAO,KAAKZ,WAAW8B,OAAOlB,IAAAA;CAClC;CAEAmB,MAAMC,QAAepB,MAA6B;EAC9C,OAAO,KAAKZ,WAAW+B,MAAMC,QAAQpB,IAAAA;CACzC;CAEA,MAAMqB,KAAKD,QAA+B;EACtC,OAAO,KAAKhC,WAAWiC,KAAKD,MAAAA;CAChC;CAEA,MAAME,OAAOF,QAA8B;EACvC,MAAM,KAAKhC,WAAWkC,OAAOF,MAAAA;CACjC;CAEA,MAAMG,oBAAoBvB,MAAqC;EAC3D,MAAMrB,0BAA0BqB,MAAM;GAClCwB,YAAY,KAAKpC,WAAWqC,QAAQC;GACpCC,cAAc1C;EAClB,CAAA;CACJ;CAEA,MAAM2C,gBAAgB5B,MAAsB6B,UAAiC;EAQzE,IAAI,CAACC,MAPkB/C,eAAe;GAClCyC,YAAY,KAAKpC,WAAWqC,QAAQC;GACpCC,cAAc1C;GACdmC,QAAQpB;GACR+B,gBAAgBF;EACpB,CAAA,GAGI,MAAM,IAAI/C,sBAAAA;CAElB;AACJ"}
|
|
@@ -3,7 +3,7 @@ import "node:url";
|
|
|
3
3
|
import.meta.url;
|
|
4
4
|
import { RealmEntity } from "../../../../../adapters/database/domains/realm/entity.mjs";
|
|
5
5
|
import { TrustAnchorEntity } from "../../../../../adapters/database/domains/trust-anchor/entity.mjs";
|
|
6
|
-
import { applyQuery } from "../query.mjs";
|
|
6
|
+
import { applyQuery, redactFieldConditions } from "../query.mjs";
|
|
7
7
|
import { applyRealmScopeSelect, isEntityUnique, translateWhereConditions } from "../helpers.mjs";
|
|
8
8
|
import { DatabaseConflictError } from "../../../../../adapters/database/errors/conflict.mjs";
|
|
9
9
|
import "../../../../../adapters/database/index.mjs";
|
|
@@ -28,7 +28,7 @@ var TrustAnchorRepositoryAdapter = class {
|
|
|
28
28
|
applyRealmScopeSelect(qb, "trustAnchor");
|
|
29
29
|
const [entities, total] = await qb.getManyAndCount();
|
|
30
30
|
return {
|
|
31
|
-
data: entities,
|
|
31
|
+
data: redactFieldConditions(query, entities),
|
|
32
32
|
meta: {
|
|
33
33
|
total,
|
|
34
34
|
...pagination
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["isUUID","validateEntityJoinColumns","applyQuery","DatabaseConflictError","RealmEntity","TrustAnchorEntity","applyRealmScopeSelect","isEntityUnique","translateWhereConditions","RealmRepositoryAdapter","TrustAnchorRepositoryAdapter","dataSource","realmRepository","getRepository","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","name","realmKey","where","realmId","resolveId","findOneByIdOrName","idOrName","realm","findManyBy","findBy","create","merge","entity","save","remove","validateJoinColumns","entityTarget","checkUniqueness","existing","isUnique","entityExisting"],"sources":["../../../../../../src/app/modules/database/repositories/trust-anchor/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { TrustAnchor } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport { isUUID } from '@authup/kit';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { DataSource, FindOptionsWhere, Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery } from '../query.ts';\nimport { DatabaseConflictError, RealmEntity, TrustAnchorEntity } from '../../../../../adapters/database/index.ts';\nimport type { IRealmRepository, ITrustAnchorRepository } from '../../../../../core/index.ts';\nimport { applyRealmScopeSelect, isEntityUnique, translateWhereConditions } from '../helpers.ts';\nimport { RealmRepositoryAdapter } from '../realm/repository.ts';\n\nexport class TrustAnchorRepositoryAdapter implements ITrustAnchorRepository {\n protected dataSource: DataSource;\n\n protected realmRepository: IRealmRepository;\n\n constructor(dataSource: DataSource) {\n this.dataSource = dataSource;\n this.realmRepository = new RealmRepositoryAdapter(dataSource.getRepository(RealmEntity));\n }\n\n protected get repository(): Repository<TrustAnchorEntity> {\n return this.dataSource.getRepository(TrustAnchorEntity);\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<TrustAnchor>> {\n const qb = this.repository.createQueryBuilder('trustAnchor');\n qb.groupBy('trustAnchor.id');\n\n const { pagination } = applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'trustAnchor');\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: entities,\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n async findOneById(id: string): Promise<TrustAnchor | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(name: string, realmKey?: string): Promise<TrustAnchor | null> {\n const where: FindOptionsWhere<TrustAnchorEntity> = { name };\n\n if (realmKey) {\n const realmId = await this.realmRepository.resolveId(realmKey);\n if (!realmId) {\n return null;\n }\n\n where.realmId = realmId;\n }\n\n return this.repository.findOneBy(where);\n }\n\n async findOneByIdOrName(idOrName: string, realm?: string): Promise<TrustAnchor | null> {\n return isUUID(idOrName) ?\n this.findOneById(idOrName) :\n this.findOneByName(idOrName, realm);\n }\n\n async findManyBy(where: Record<string, any>): Promise<TrustAnchor[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<TrustAnchor | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<TrustAnchor>): TrustAnchor {\n return this.repository.create(data);\n }\n\n merge(entity: TrustAnchor, data: Partial<TrustAnchor>): TrustAnchor {\n return this.repository.merge(entity as TrustAnchorEntity, data);\n }\n\n async save(entity: TrustAnchor): Promise<TrustAnchor> {\n return this.repository.save(entity as TrustAnchorEntity);\n }\n\n async remove(entity: TrustAnchor): Promise<void> {\n await this.repository.remove(entity as TrustAnchorEntity);\n }\n\n async validateJoinColumns(data: Partial<TrustAnchor>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.dataSource,\n entityTarget: TrustAnchorEntity,\n });\n }\n\n async checkUniqueness(data: Partial<TrustAnchor>, existing?: TrustAnchor): Promise<void> {\n const isUnique = await isEntityUnique({\n dataSource: this.dataSource,\n entityTarget: TrustAnchorEntity,\n entity: data,\n entityExisting: existing,\n });\n\n if (!isUnique) {\n throw new DatabaseConflictError();\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAmBA,
|
|
1
|
+
{"version":3,"file":"repository.mjs","names":["isUUID","validateEntityJoinColumns","applyQuery","redactFieldConditions","DatabaseConflictError","RealmEntity","TrustAnchorEntity","applyRealmScopeSelect","isEntityUnique","translateWhereConditions","RealmRepositoryAdapter","TrustAnchorRepositoryAdapter","dataSource","realmRepository","getRepository","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","name","realmKey","where","realmId","resolveId","findOneByIdOrName","idOrName","realm","findManyBy","findBy","create","merge","entity","save","remove","validateJoinColumns","entityTarget","checkUniqueness","existing","isUnique","entityExisting"],"sources":["../../../../../../src/app/modules/database/repositories/trust-anchor/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { TrustAnchor } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport { isUUID } from '@authup/kit';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { DataSource, FindOptionsWhere, Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery, redactFieldConditions } from '../query.ts';\nimport { DatabaseConflictError, RealmEntity, TrustAnchorEntity } from '../../../../../adapters/database/index.ts';\nimport type { IRealmRepository, ITrustAnchorRepository } from '../../../../../core/index.ts';\nimport { applyRealmScopeSelect, isEntityUnique, translateWhereConditions } from '../helpers.ts';\nimport { RealmRepositoryAdapter } from '../realm/repository.ts';\n\nexport class TrustAnchorRepositoryAdapter implements ITrustAnchorRepository {\n protected dataSource: DataSource;\n\n protected realmRepository: IRealmRepository;\n\n constructor(dataSource: DataSource) {\n this.dataSource = dataSource;\n this.realmRepository = new RealmRepositoryAdapter(dataSource.getRepository(RealmEntity));\n }\n\n protected get repository(): Repository<TrustAnchorEntity> {\n return this.dataSource.getRepository(TrustAnchorEntity);\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<TrustAnchor>> {\n const qb = this.repository.createQueryBuilder('trustAnchor');\n qb.groupBy('trustAnchor.id');\n\n const { pagination } = applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'trustAnchor');\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: redactFieldConditions(query, entities),\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n async findOneById(id: string): Promise<TrustAnchor | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(name: string, realmKey?: string): Promise<TrustAnchor | null> {\n const where: FindOptionsWhere<TrustAnchorEntity> = { name };\n\n if (realmKey) {\n const realmId = await this.realmRepository.resolveId(realmKey);\n if (!realmId) {\n return null;\n }\n\n where.realmId = realmId;\n }\n\n return this.repository.findOneBy(where);\n }\n\n async findOneByIdOrName(idOrName: string, realm?: string): Promise<TrustAnchor | null> {\n return isUUID(idOrName) ?\n this.findOneById(idOrName) :\n this.findOneByName(idOrName, realm);\n }\n\n async findManyBy(where: Record<string, any>): Promise<TrustAnchor[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<TrustAnchor | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<TrustAnchor>): TrustAnchor {\n return this.repository.create(data);\n }\n\n merge(entity: TrustAnchor, data: Partial<TrustAnchor>): TrustAnchor {\n return this.repository.merge(entity as TrustAnchorEntity, data);\n }\n\n async save(entity: TrustAnchor): Promise<TrustAnchor> {\n return this.repository.save(entity as TrustAnchorEntity);\n }\n\n async remove(entity: TrustAnchor): Promise<void> {\n await this.repository.remove(entity as TrustAnchorEntity);\n }\n\n async validateJoinColumns(data: Partial<TrustAnchor>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.dataSource,\n entityTarget: TrustAnchorEntity,\n });\n }\n\n async checkUniqueness(data: Partial<TrustAnchor>, existing?: TrustAnchor): Promise<void> {\n const isUnique = await isEntityUnique({\n dataSource: this.dataSource,\n entityTarget: TrustAnchorEntity,\n entity: data,\n entityExisting: existing,\n });\n\n if (!isUnique) {\n throw new DatabaseConflictError();\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAmBA,IAAaW,+BAAb,MAAaA;CACCC;CAEAC;CAEV,YAAYD,YAAwB;EAChC,KAAKA,aAAaA;EAClB,KAAKC,kBAAkB,IAAIH,uBAAuBE,WAAWE,cAAcT,WAAAA,CAAAA;CAC/E;CAEA,IAAcU,aAA4C;EACtD,OAAO,KAAKH,WAAWE,cAAcR,iBAAAA;CACzC;CAEA,MAAMU,SAASC,OAAqE;EAChF,MAAMC,KAAK,KAAKH,WAAWI,mBAAmB,aAAA;EAC9CD,GAAGE,QAAQ,gBAAA;EAEX,MAAM,EAAEC,eAAenB,WAAWgB,IAAID,KAAAA;EAEtCV,sBAAsBW,IAAI,aAAA;EAE1B,MAAM,CAACI,UAAUC,SAAS,MAAML,GAAGM,gBAAe;EAElD,OAAO;GACHC,MAAMtB,sBAAsBc,OAAOK,QAAAA;GACnCI,MAAM;IACFH;IACA,GAAGF;GACP;EACJ;CACJ;CAEA,MAAMM,YAAYC,IAAyC;EACvD,OAAO,KAAKC,UAAU,EAAED,GAAG,CAAA;CAC/B;CAEA,MAAME,cAAcC,MAAcC,UAAgD;EAC9E,MAAMC,QAA6C,EAAEF,KAAK;EAE1D,IAAIC,UAAU;GACV,MAAME,UAAU,MAAM,KAAKrB,gBAAgBsB,UAAUH,QAAAA;GACrD,IAAI,CAACE,SACD,OAAO;GAGXD,MAAMC,UAAUA;EACpB;EAEA,OAAO,KAAKnB,WAAWc,UAAUI,KAAAA;CACrC;CAEA,MAAMG,kBAAkBC,UAAkBC,OAA6C;EACnF,OAAOtC,OAAOqC,QAAAA,IACV,KAAKV,YAAYU,QAAAA,IACjB,KAAKP,cAAcO,UAAUC,KAAAA;CACrC;CAEA,MAAMC,WAAWN,OAAoD;EACjE,OAAO,KAAKlB,WAAWyB,OAAO/B,yBAAyBwB,KAAAA,CAAAA;CAC3D;CAEA,MAAMJ,UAAUI,OAAyD;EACrE,OAAO,KAAKlB,WAAWc,UAAUpB,yBAAyBwB,KAAAA,CAAAA;CAC9D;CAEAQ,OAAOhB,MAAyC;EAC5C,OAAO,KAAKV,WAAW0B,OAAOhB,IAAAA;CAClC;CAEAiB,MAAMC,QAAqBlB,MAAyC;EAChE,OAAO,KAAKV,WAAW2B,MAAMC,QAA6BlB,IAAAA;CAC9D;CAEA,MAAMmB,KAAKD,QAA2C;EAClD,OAAO,KAAK5B,WAAW6B,KAAKD,MAAAA;CAChC;CAEA,MAAME,OAAOF,QAAoC;EAC7C,MAAM,KAAK5B,WAAW8B,OAAOF,MAAAA;CACjC;CAEA,MAAMG,oBAAoBrB,MAA2C;EACjE,MAAMxB,0BAA0BwB,MAAM;GAClCb,YAAY,KAAKA;GACjBmC,cAAczC;EAClB,CAAA;CACJ;CAEA,MAAM0C,gBAAgBvB,MAA4BwB,UAAuC;EAQrF,IAAI,CAACC,MAPkB1C,eAAe;GAClCI,YAAY,KAAKA;GACjBmC,cAAczC;GACdqC,QAAQlB;GACR0B,gBAAgBF;EACpB,CAAA,GAGI,MAAM,IAAI7C,sBAAAA;CAElB;AACJ"}
|
|
@@ -6,7 +6,7 @@ import { UserEntity } from "../../../../../adapters/database/domains/user/entity
|
|
|
6
6
|
import { UserPermissionEntity } from "../../../../../adapters/database/domains/user-permission/entity.mjs";
|
|
7
7
|
import { UserRoleEntity } from "../../../../../adapters/database/domains/user-role/entity.mjs";
|
|
8
8
|
import "../../../../../adapters/database/domains/index.mjs";
|
|
9
|
-
import { applyQuery } from "../query.mjs";
|
|
9
|
+
import { applyQuery, redactFieldConditions } from "../query.mjs";
|
|
10
10
|
import { applyRealmScopeSelect, isEntityUnique, translateWhereConditions } from "../helpers.mjs";
|
|
11
11
|
import { DatabaseConflictError } from "../../../../../adapters/database/errors/conflict.mjs";
|
|
12
12
|
import "../../../../../adapters/database/index.mjs";
|
|
@@ -31,7 +31,7 @@ var UserRepositoryAdapter = class {
|
|
|
31
31
|
const [entities, total] = await qb.getManyAndCount();
|
|
32
32
|
await this.repository.extendManyWithEA(entities);
|
|
33
33
|
return {
|
|
34
|
-
data: entities,
|
|
34
|
+
data: redactFieldConditions(query, entities),
|
|
35
35
|
meta: {
|
|
36
36
|
total,
|
|
37
37
|
...pagination
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["buildRedisKeyPath","isUUID","validateEntityJoinColumns","applyQuery","DatabaseConflictError","CachePrefix","UserEntity","UserPermissionEntity","UserRoleEntity","applyRealmScopeSelect","isEntityUnique","translateWhereConditions","loadBoundPermissions","RealmRepositoryAdapter","UserRepositoryAdapter","repository","realmRepository","ctx","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","extendManyWithEA","data","meta","findOneById","id","entity","findOneBy","extendOneWithEA","findOneByName","name","realmKey","where","realmId","resolveId","andWhere","getOne","findOneByIdOrName","idOrName","realm","findOne","findManyBy","findBy","findOneByWithEmail","addSelect","translated","create","merge","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget","checkUniqueness","existing","isUnique","entityExisting","getBoundRoles","entries","getRepository","find","userId","relations","role","cache","prefix","USER_OWNED_ROLES","key","milliseconds","map","entry","getBoundPermissions","junctionTarget","cachePrefix","USER_OWNED_PERMISSIONS","cacheKey"],"sources":["../../../../../../src/app/modules/database/repositories/user/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Realm, Role, User } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { PermissionPolicyBinding } from '@authup/access';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport { isUUID } from '@authup/kit';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IRealmRepository, IUserRepository } from '../../../../../core/index.ts';\nimport { DatabaseConflictError } from '../../../../../adapters/database/index.ts';\nimport type { UserRepository } from '../../../../../adapters/database/domains/index.ts';\nimport {\n CachePrefix,\n UserEntity,\n UserPermissionEntity,\n UserRoleEntity,\n} from '../../../../../adapters/database/domains/index.ts';\nimport { applyRealmScopeSelect, isEntityUnique, translateWhereConditions } from '../helpers.ts';\nimport { loadBoundPermissions } from '../bindings.ts';\nimport { RealmRepositoryAdapter } from '../realm/repository.ts';\n\nexport type UserRepositoryAdapterContext = {\n repository: UserRepository,\n realmRepository: Repository<Realm>,\n};\n\nexport class UserRepositoryAdapter implements IUserRepository {\n private readonly repository: UserRepository;\n\n private readonly realmRepository: IRealmRepository;\n\n constructor(ctx: UserRepositoryAdapterContext) {\n this.repository = ctx.repository;\n this.realmRepository = new RealmRepositoryAdapter(ctx.realmRepository);\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<User>> {\n const qb = this.repository.createQueryBuilder('user');\n qb.groupBy('user.id');\n\n const { pagination } = applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'user', ['id']);\n\n const [entities, total] = await qb.getManyAndCount();\n\n await this.repository.extendManyWithEA(entities);\n\n return {\n data: entities,\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n async findOneById(id: string): Promise<User | null> {\n const entity = await this.findOneBy({ id });\n if (entity) {\n await this.repository.extendOneWithEA(entity);\n }\n return entity;\n }\n\n async findOneByName(name: string, realmKey?: string): Promise<User | null> {\n const qb = this.repository.createQueryBuilder('user');\n qb.where('user.name = :name', { name });\n\n if (realmKey) {\n const realmId = await this.realmRepository.resolveId(realmKey);\n if (!realmId) {\n return null;\n }\n qb.andWhere('user.realmId = :realmId', { realmId });\n }\n\n const entity = await qb.getOne();\n if (entity) {\n await this.repository.extendOneWithEA(entity);\n }\n return entity;\n }\n\n async findOneByIdOrName(idOrName: string, realm?: string): Promise<User | null> {\n return isUUID(idOrName) ?\n this.findOneById(idOrName) :\n this.findOneByName(idOrName, realm);\n }\n\n async findOne(id: string, query?: IQuery, realmKey?: string): Promise<User | null> {\n const qb = this.repository.createQueryBuilder('user');\n\n if (isUUID(id)) {\n qb.where('user.id = :id', { id });\n } else {\n qb.where('user.name = :name', { name: id });\n\n if (realmKey) {\n const realmId = await this.realmRepository.resolveId(realmKey);\n if (!realmId) {\n return null;\n }\n qb.andWhere('user.realmId = :realmId', { realmId });\n }\n }\n\n applyQuery(qb, query);\n\n const entity = await qb.getOne();\n if (entity) {\n await this.repository.extendOneWithEA(entity);\n }\n return entity;\n }\n\n async findManyBy(where: Record<string, any>): Promise<User[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<User | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n async findOneByWithEmail(where: Record<string, any>): Promise<User | null> {\n const qb = this.repository.createQueryBuilder('user');\n qb.addSelect('user.email');\n\n const translated = translateWhereConditions(where);\n qb.where(translated);\n\n return qb.getOne();\n }\n\n create(data: Partial<User>): User {\n return this.repository.create(data);\n }\n\n merge(entity: User, data: Partial<User>): User {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: User): Promise<User> {\n return this.repository.save(entity);\n }\n\n async remove(entity: User): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<User>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: UserEntity,\n });\n }\n\n async checkUniqueness(data: Partial<User>, existing?: User): Promise<void> {\n const isUnique = await isEntityUnique({\n dataSource: this.repository.manager.connection,\n entityTarget: UserEntity,\n entity: data,\n entityExisting: existing,\n });\n\n if (!isUnique) {\n throw new DatabaseConflictError();\n }\n }\n\n async getBoundRoles(entity: string | User): Promise<Role[]> {\n const id = typeof entity === 'string' ? entity : entity.id;\n const entries = await this.repository.manager\n .getRepository(UserRoleEntity)\n .find({\n where: { userId: id },\n relations: { role: true },\n cache: {\n id: buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_ROLES,\n key: id,\n }),\n milliseconds: 60_000,\n },\n });\n\n return entries.map((entry) => entry.role);\n }\n\n async getBoundPermissions(entity: string | User): Promise<PermissionPolicyBinding[]> {\n const id = typeof entity === 'string' ? entity : entity.id;\n return loadBoundPermissions({\n manager: this.repository.manager,\n junctionTarget: UserPermissionEntity,\n where: { userId: id },\n cachePrefix: CachePrefix.USER_OWNED_PERMISSIONS,\n cacheKey: id,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkCA,IAAac,wBAAb,MAAaA;CACQC;CAEAC;CAEjB,YAAYC,KAAmC;EAC3C,KAAKF,aAAaE,IAAIF;EACtB,KAAKC,kBAAkB,IAAIH,uBAAuBI,IAAID,eAAe;CACzE;CAEA,MAAME,SAASC,OAA8D;EACzE,MAAMC,KAAK,KAAKL,WAAWM,mBAAmB,MAAA;EAC9CD,GAAGE,QAAQ,SAAA;EAEX,MAAM,EAAEC,eAAepB,WAAWiB,IAAID,KAAAA;EAEtCV,sBAAsBW,IAAI,QAAQ,CAAC,IAAK,CAAA;EAExC,MAAM,CAACI,UAAUC,SAAS,MAAML,GAAGM,gBAAe;EAElD,MAAM,KAAKX,WAAWY,iBAAiBH,QAAAA;EAEvC,OAAO;GACHI,MAAMJ;GACNK,MAAM;IACFJ;IACA,GAAGF;GACP;EACJ;CACJ;CAEA,MAAMO,YAAYC,IAAkC;EAChD,MAAMC,SAAS,MAAM,KAAKC,UAAU,EAAEF,GAAG,CAAA;EACzC,IAAIC,QACA,MAAM,KAAKjB,WAAWmB,gBAAgBF,MAAAA;EAE1C,OAAOA;CACX;CAEA,MAAMG,cAAcC,MAAcC,UAAyC;EACvE,MAAMjB,KAAK,KAAKL,WAAWM,mBAAmB,MAAA;EAC9CD,GAAGkB,MAAM,qBAAqB,EAAEF,KAAK,CAAA;EAErC,IAAIC,UAAU;GACV,MAAME,UAAU,MAAM,KAAKvB,gBAAgBwB,UAAUH,QAAAA;GACrD,IAAI,CAACE,SACD,OAAO;GAEXnB,GAAGqB,SAAS,2BAA2B,EAAEF,QAAQ,CAAA;EACrD;EAEA,MAAMP,SAAS,MAAMZ,GAAGsB,OAAM;EAC9B,IAAIV,QACA,MAAM,KAAKjB,WAAWmB,gBAAgBF,MAAAA;EAE1C,OAAOA;CACX;CAEA,MAAMW,kBAAkBC,UAAkBC,OAAsC;EAC5E,OAAO5C,OAAO2C,QAAAA,IACV,KAAKd,YAAYc,QAAAA,IACjB,KAAKT,cAAcS,UAAUC,KAAAA;CACrC;CAEA,MAAMC,QAAQf,IAAYZ,OAAgBkB,UAAyC;EAC/E,MAAMjB,KAAK,KAAKL,WAAWM,mBAAmB,MAAA;EAE9C,IAAIpB,OAAO8B,EAAAA,GACPX,GAAGkB,MAAM,iBAAiB,EAAEP,GAAG,CAAA;OAC5B;GACHX,GAAGkB,MAAM,qBAAqB,EAAEF,MAAML,GAAG,CAAA;GAEzC,IAAIM,UAAU;IACV,MAAME,UAAU,MAAM,KAAKvB,gBAAgBwB,UAAUH,QAAAA;IACrD,IAAI,CAACE,SACD,OAAO;IAEXnB,GAAGqB,SAAS,2BAA2B,EAAEF,QAAQ,CAAA;GACrD;EACJ;EAEApC,WAAWiB,IAAID,KAAAA;EAEf,MAAMa,SAAS,MAAMZ,GAAGsB,OAAM;EAC9B,IAAIV,QACA,MAAM,KAAKjB,WAAWmB,gBAAgBF,MAAAA;EAE1C,OAAOA;CACX;CAEA,MAAMe,WAAWT,OAA6C;EAC1D,OAAO,KAAKvB,WAAWiC,OAAOrC,yBAAyB2B,KAAAA,CAAAA;CAC3D;CAEA,MAAML,UAAUK,OAAkD;EAC9D,OAAO,KAAKvB,WAAWkB,UAAUtB,yBAAyB2B,KAAAA,CAAAA;CAC9D;CAEA,MAAMW,mBAAmBX,OAAkD;EACvE,MAAMlB,KAAK,KAAKL,WAAWM,mBAAmB,MAAA;EAC9CD,GAAG8B,UAAU,YAAA;EAEb,MAAMC,aAAaxC,yBAAyB2B,KAAAA;EAC5ClB,GAAGkB,MAAMa,UAAAA;EAET,OAAO/B,GAAGsB,OAAM;CACpB;CAEAU,OAAOxB,MAA2B;EAC9B,OAAO,KAAKb,WAAWqC,OAAOxB,IAAAA;CAClC;CAEAyB,MAAMrB,QAAcJ,MAA2B;EAC3C,OAAO,KAAKb,WAAWsC,MAAMrB,QAAQJ,IAAAA;CACzC;CAEA,MAAM0B,KAAKtB,QAA6B;EACpC,OAAO,KAAKjB,WAAWuC,KAAKtB,MAAAA;CAChC;CAEA,MAAMuB,OAAOvB,QAA6B;EACtC,MAAM,KAAKjB,WAAWwC,OAAOvB,MAAAA;CACjC;CAEA,MAAMwB,oBAAoB5B,MAAoC;EAC1D,MAAM1B,0BAA0B0B,MAAM;GAClC6B,YAAY,KAAK1C,WAAW2C,QAAQC;GACpCC,cAActD;EAClB,CAAA;CACJ;CAEA,MAAMuD,gBAAgBjC,MAAqBkC,UAAgC;EAQvE,IAAI,CAACC,MAPkBrD,eAAe;GAClC+C,YAAY,KAAK1C,WAAW2C,QAAQC;GACpCC,cAActD;GACd0B,QAAQJ;GACRoC,gBAAgBF;EACpB,CAAA,GAGI,MAAM,IAAI1D,sBAAAA;CAElB;CAEA,MAAM6D,cAAcjC,QAAwC;EACxD,MAAMD,KAAK,OAAOC,WAAW,WAAWA,SAASA,OAAOD;EAexD,QAAOmC,MAde,KAAKnD,WAAW2C,QACjCS,cAAc3D,cAAAA,CAAAA,CACd4D,KAAK;GACF9B,OAAO,EAAE+B,QAAQtC,GAAG;GACpBuC,WAAW,EAAEC,MAAM,KAAK;GACxBC,OAAO;IACHzC,IAAI/B,kBAAkB;KAClByE,QAAQpE,YAAYqE;KACpBC,KAAK5C;IACT,CAAA;IACA6C,cAAc;GAClB;EACJ,CAAA,EAAA,CAEWC,KAAKC,UAAUA,MAAMP,IAAI;CAC5C;CAEA,MAAMQ,oBAAoB/C,QAA2D;EACjF,MAAMD,KAAK,OAAOC,WAAW,WAAWA,SAASA,OAAOD;EACxD,OAAOnB,qBAAqB;GACxB8C,SAAS,KAAK3C,WAAW2C;GACzBsB,gBAAgBzE;GAChB+B,OAAO,EAAE+B,QAAQtC,GAAG;GACpBkD,aAAa5E,YAAY6E;GACzBC,UAAUpD;EACd,CAAA;CACJ;AACJ"}
|
|
1
|
+
{"version":3,"file":"repository.mjs","names":["buildRedisKeyPath","isUUID","validateEntityJoinColumns","applyQuery","redactFieldConditions","DatabaseConflictError","CachePrefix","UserEntity","UserPermissionEntity","UserRoleEntity","applyRealmScopeSelect","isEntityUnique","translateWhereConditions","loadBoundPermissions","RealmRepositoryAdapter","UserRepositoryAdapter","repository","realmRepository","ctx","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","extendManyWithEA","data","meta","findOneById","id","entity","findOneBy","extendOneWithEA","findOneByName","name","realmKey","where","realmId","resolveId","andWhere","getOne","findOneByIdOrName","idOrName","realm","findOne","findManyBy","findBy","findOneByWithEmail","addSelect","translated","create","merge","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget","checkUniqueness","existing","isUnique","entityExisting","getBoundRoles","entries","getRepository","find","userId","relations","role","cache","prefix","USER_OWNED_ROLES","key","milliseconds","map","entry","getBoundPermissions","junctionTarget","cachePrefix","USER_OWNED_PERMISSIONS","cacheKey"],"sources":["../../../../../../src/app/modules/database/repositories/user/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Realm, Role, User } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { PermissionPolicyBinding } from '@authup/access';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport { isUUID } from '@authup/kit';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery, redactFieldConditions } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IRealmRepository, IUserRepository } from '../../../../../core/index.ts';\nimport { DatabaseConflictError } from '../../../../../adapters/database/index.ts';\nimport type { UserRepository } from '../../../../../adapters/database/domains/index.ts';\nimport {\n CachePrefix,\n UserEntity,\n UserPermissionEntity,\n UserRoleEntity,\n} from '../../../../../adapters/database/domains/index.ts';\nimport { applyRealmScopeSelect, isEntityUnique, translateWhereConditions } from '../helpers.ts';\nimport { loadBoundPermissions } from '../bindings.ts';\nimport { RealmRepositoryAdapter } from '../realm/repository.ts';\n\nexport type UserRepositoryAdapterContext = {\n repository: UserRepository,\n realmRepository: Repository<Realm>,\n};\n\nexport class UserRepositoryAdapter implements IUserRepository {\n private readonly repository: UserRepository;\n\n private readonly realmRepository: IRealmRepository;\n\n constructor(ctx: UserRepositoryAdapterContext) {\n this.repository = ctx.repository;\n this.realmRepository = new RealmRepositoryAdapter(ctx.realmRepository);\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<User>> {\n const qb = this.repository.createQueryBuilder('user');\n qb.groupBy('user.id');\n\n const { pagination } = applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'user', ['id']);\n\n const [entities, total] = await qb.getManyAndCount();\n\n await this.repository.extendManyWithEA(entities);\n\n return {\n data: redactFieldConditions(query, entities),\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n async findOneById(id: string): Promise<User | null> {\n const entity = await this.findOneBy({ id });\n if (entity) {\n await this.repository.extendOneWithEA(entity);\n }\n return entity;\n }\n\n async findOneByName(name: string, realmKey?: string): Promise<User | null> {\n const qb = this.repository.createQueryBuilder('user');\n qb.where('user.name = :name', { name });\n\n if (realmKey) {\n const realmId = await this.realmRepository.resolveId(realmKey);\n if (!realmId) {\n return null;\n }\n qb.andWhere('user.realmId = :realmId', { realmId });\n }\n\n const entity = await qb.getOne();\n if (entity) {\n await this.repository.extendOneWithEA(entity);\n }\n return entity;\n }\n\n async findOneByIdOrName(idOrName: string, realm?: string): Promise<User | null> {\n return isUUID(idOrName) ?\n this.findOneById(idOrName) :\n this.findOneByName(idOrName, realm);\n }\n\n async findOne(id: string, query?: IQuery, realmKey?: string): Promise<User | null> {\n const qb = this.repository.createQueryBuilder('user');\n\n if (isUUID(id)) {\n qb.where('user.id = :id', { id });\n } else {\n qb.where('user.name = :name', { name: id });\n\n if (realmKey) {\n const realmId = await this.realmRepository.resolveId(realmKey);\n if (!realmId) {\n return null;\n }\n qb.andWhere('user.realmId = :realmId', { realmId });\n }\n }\n\n applyQuery(qb, query);\n\n const entity = await qb.getOne();\n if (entity) {\n await this.repository.extendOneWithEA(entity);\n }\n return entity;\n }\n\n async findManyBy(where: Record<string, any>): Promise<User[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<User | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n async findOneByWithEmail(where: Record<string, any>): Promise<User | null> {\n const qb = this.repository.createQueryBuilder('user');\n qb.addSelect('user.email');\n\n const translated = translateWhereConditions(where);\n qb.where(translated);\n\n return qb.getOne();\n }\n\n create(data: Partial<User>): User {\n return this.repository.create(data);\n }\n\n merge(entity: User, data: Partial<User>): User {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: User): Promise<User> {\n return this.repository.save(entity);\n }\n\n async remove(entity: User): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<User>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: UserEntity,\n });\n }\n\n async checkUniqueness(data: Partial<User>, existing?: User): Promise<void> {\n const isUnique = await isEntityUnique({\n dataSource: this.repository.manager.connection,\n entityTarget: UserEntity,\n entity: data,\n entityExisting: existing,\n });\n\n if (!isUnique) {\n throw new DatabaseConflictError();\n }\n }\n\n async getBoundRoles(entity: string | User): Promise<Role[]> {\n const id = typeof entity === 'string' ? entity : entity.id;\n const entries = await this.repository.manager\n .getRepository(UserRoleEntity)\n .find({\n where: { userId: id },\n relations: { role: true },\n cache: {\n id: buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_ROLES,\n key: id,\n }),\n milliseconds: 60_000,\n },\n });\n\n return entries.map((entry) => entry.role);\n }\n\n async getBoundPermissions(entity: string | User): Promise<PermissionPolicyBinding[]> {\n const id = typeof entity === 'string' ? entity : entity.id;\n return loadBoundPermissions({\n manager: this.repository.manager,\n junctionTarget: UserPermissionEntity,\n where: { userId: id },\n cachePrefix: CachePrefix.USER_OWNED_PERMISSIONS,\n cacheKey: id,\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import "node:url";
|
|
|
3
3
|
import.meta.url;
|
|
4
4
|
import { UserAttributeEntity } from "../../../../../adapters/database/domains/user-attribute/entity.mjs";
|
|
5
5
|
import "../../../../../adapters/database/domains/index.mjs";
|
|
6
|
-
import { applyQuery } from "../query.mjs";
|
|
6
|
+
import { applyQuery, redactFieldConditions } from "../query.mjs";
|
|
7
7
|
import { applyRealmScopeSelect, translateWhereConditions } from "../helpers.mjs";
|
|
8
8
|
import { validateEntityJoinColumns } from "typeorm-extension";
|
|
9
9
|
//#region src/app/modules/database/repositories/user-attribute/repository.ts
|
|
@@ -19,7 +19,7 @@ var UserAttributeRepositoryAdapter = class {
|
|
|
19
19
|
applyRealmScopeSelect(qb, "userAttribute", ["userId"]);
|
|
20
20
|
const [entities, total] = await qb.getManyAndCount();
|
|
21
21
|
return {
|
|
22
|
-
data: entities,
|
|
22
|
+
data: redactFieldConditions(query, entities),
|
|
23
23
|
meta: {
|
|
24
24
|
total,
|
|
25
25
|
...pagination
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["validateEntityJoinColumns","applyQuery","UserAttributeEntity","applyRealmScopeSelect","translateWhereConditions","UserAttributeRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","findOneByIdOrName","idOrName","findManyBy","where","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget"],"sources":["../../../../../../src/app/modules/database/repositories/user-attribute/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { UserAttribute } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IUserAttributeRepository } from '../../../../../core/index.ts';\nimport { UserAttributeEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { applyRealmScopeSelect, translateWhereConditions } from '../helpers.ts';\n\nexport class UserAttributeRepositoryAdapter implements IUserAttributeRepository {\n private readonly repository: Repository<UserAttribute>;\n\n constructor(repository: Repository<UserAttribute>) {\n this.repository = repository;\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<UserAttribute>> {\n const qb = this.repository.createQueryBuilder('userAttribute');\n qb.groupBy('userAttribute.id');\n\n const { pagination } = applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'userAttribute', ['userId']);\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: entities,\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n findOneById(id: string): Promise<UserAttribute | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(): Promise<UserAttribute | null> {\n return null;\n }\n\n async findOneByIdOrName(idOrName: string): Promise<UserAttribute | null> {\n return this.findOneById(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<UserAttribute[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<UserAttribute | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<UserAttribute>): UserAttribute {\n return this.repository.create(data);\n }\n\n merge(entity: UserAttribute, data: Partial<UserAttribute>): UserAttribute {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: UserAttribute): Promise<UserAttribute> {\n return this.repository.save(entity);\n }\n\n async remove(entity: UserAttribute): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<UserAttribute>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: UserAttributeEntity,\n });\n }\n}\n"],"mappings":";;;;;;;;;AAiBA,
|
|
1
|
+
{"version":3,"file":"repository.mjs","names":["validateEntityJoinColumns","applyQuery","redactFieldConditions","UserAttributeEntity","applyRealmScopeSelect","translateWhereConditions","UserAttributeRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","findOneByIdOrName","idOrName","findManyBy","where","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget"],"sources":["../../../../../../src/app/modules/database/repositories/user-attribute/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { UserAttribute } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery, redactFieldConditions } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IUserAttributeRepository } from '../../../../../core/index.ts';\nimport { UserAttributeEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { applyRealmScopeSelect, translateWhereConditions } from '../helpers.ts';\n\nexport class UserAttributeRepositoryAdapter implements IUserAttributeRepository {\n private readonly repository: Repository<UserAttribute>;\n\n constructor(repository: Repository<UserAttribute>) {\n this.repository = repository;\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<UserAttribute>> {\n const qb = this.repository.createQueryBuilder('userAttribute');\n qb.groupBy('userAttribute.id');\n\n const { pagination } = applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'userAttribute', ['userId']);\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: redactFieldConditions(query, entities),\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n findOneById(id: string): Promise<UserAttribute | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(): Promise<UserAttribute | null> {\n return null;\n }\n\n async findOneByIdOrName(idOrName: string): Promise<UserAttribute | null> {\n return this.findOneById(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<UserAttribute[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<UserAttribute | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<UserAttribute>): UserAttribute {\n return this.repository.create(data);\n }\n\n merge(entity: UserAttribute, data: Partial<UserAttribute>): UserAttribute {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: UserAttribute): Promise<UserAttribute> {\n return this.repository.save(entity);\n }\n\n async remove(entity: UserAttribute): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<UserAttribute>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: UserAttributeEntity,\n });\n }\n}\n"],"mappings":";;;;;;;;;AAiBA,IAAaM,iCAAb,MAAaA;CACQC;CAEjB,YAAYA,YAAuC;EAC/C,KAAKA,aAAaA;CACtB;CAEA,MAAMC,SAASC,OAAuE;EAClF,MAAMC,KAAK,KAAKH,WAAWI,mBAAmB,eAAA;EAC9CD,GAAGE,QAAQ,kBAAA;EAEX,MAAM,EAAEC,eAAeZ,WAAWS,IAAID,KAAAA;EAEtCL,sBAAsBM,IAAI,iBAAiB,CAAC,QAAS,CAAA;EAErD,MAAM,CAACI,UAAUC,SAAS,MAAML,GAAGM,gBAAe;EAElD,OAAO;GACHC,MAAMf,sBAAsBO,OAAOK,QAAAA;GACnCI,MAAM;IACFH;IACA,GAAGF;GACP;EACJ;CACJ;CAEAM,YAAYC,IAA2C;EACnD,OAAO,KAAKC,UAAU,EAAED,GAAG,CAAA;CAC/B;CAEA,MAAME,gBAA+C;EACjD,OAAO;CACX;CAEA,MAAMC,kBAAkBC,UAAiD;EACrE,OAAO,KAAKL,YAAYK,QAAAA;CAC5B;CAEA,MAAMC,WAAWC,OAAsD;EACnE,OAAO,KAAKnB,WAAWoB,OAAOtB,yBAAyBqB,KAAAA,CAAAA;CAC3D;CAEA,MAAML,UAAUK,OAA2D;EACvE,OAAO,KAAKnB,WAAWc,UAAUhB,yBAAyBqB,KAAAA,CAAAA;CAC9D;CAEAE,OAAOX,MAA6C;EAChD,OAAO,KAAKV,WAAWqB,OAAOX,IAAAA;CAClC;CAEAY,MAAMC,QAAuBb,MAA6C;EACtE,OAAO,KAAKV,WAAWsB,MAAMC,QAAQb,IAAAA;CACzC;CAEA,MAAMc,KAAKD,QAA+C;EACtD,OAAO,KAAKvB,WAAWwB,KAAKD,MAAAA;CAChC;CAEA,MAAME,OAAOF,QAAsC;EAC/C,MAAM,KAAKvB,WAAWyB,OAAOF,MAAAA;CACjC;CAEA,MAAMG,oBAAoBhB,MAA6C;EACnE,MAAMjB,0BAA0BiB,MAAM;GAClCiB,YAAY,KAAK3B,WAAW4B,QAAQC;GACpCC,cAAclC;EAClB,CAAA;CACJ;AACJ"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "node:path";
|
|
2
2
|
import "node:url";
|
|
3
3
|
import.meta.url;
|
|
4
|
-
import { applyQuery } from "../query.mjs";
|
|
4
|
+
import { applyQuery, redactFieldConditions } from "../query.mjs";
|
|
5
5
|
import { applyRealmScopeSelect } from "../helpers.mjs";
|
|
6
6
|
//#region src/app/modules/database/repositories/user-authenticator/repository.ts
|
|
7
7
|
var UserAuthenticatorRepositoryAdapter = class {
|
|
@@ -52,7 +52,7 @@ var UserAuthenticatorRepositoryAdapter = class {
|
|
|
52
52
|
if (options.owner) qb.andWhere("userAuthenticator.userId = :ownerUserId", { ownerUserId: options.owner.userId });
|
|
53
53
|
const [entities, total] = await qb.getManyAndCount();
|
|
54
54
|
return {
|
|
55
|
-
data: entities,
|
|
55
|
+
data: redactFieldConditions(query, entities),
|
|
56
56
|
meta: {
|
|
57
57
|
total,
|
|
58
58
|
...pagination
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["applyQuery","applyRealmScopeSelect","UserAuthenticatorRepositoryAdapter","repository","create","data","save","entity","remove","removeAllByUser","userId","kind","delete","findOneById","id","findOneBy","findOneWithSecretsById","createQueryBuilder","addSelect","where","getOne","findAllByUser","find","findAllWithSecretsByUser","filter","qb","andWhere","confirmed","getMany","hasConfirmedByUser","count","countBy","findMany","query","options","pagination","owner","ownerUserId","entities","total","getManyAndCount","meta"],"sources":["../../../../../../src/app/modules/database/repositories/user-authenticator/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { UserAuthenticator, UserAuthenticatorKind } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { applyQuery } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type {\n IUserAuthenticatorRepository,\n UserAuthenticatorFindManyOptions,\n UserAuthenticatorSecretsFilter,\n} from '../../../../../core/index.ts';\nimport { applyRealmScopeSelect } from '../helpers.ts';\n\nexport class UserAuthenticatorRepositoryAdapter implements IUserAuthenticatorRepository {\n private readonly repository: Repository<UserAuthenticator>;\n\n constructor(repository: Repository<UserAuthenticator>) {\n this.repository = repository;\n }\n\n create(data: Partial<UserAuthenticator>): UserAuthenticator {\n return this.repository.create(data);\n }\n\n async save(entity: UserAuthenticator): Promise<UserAuthenticator> {\n return this.repository.save(entity);\n }\n\n async remove(entity: UserAuthenticator): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async removeAllByUser(userId: string, kind: `${UserAuthenticatorKind}`): Promise<void> {\n await this.repository.delete({ userId, kind });\n }\n\n async findOneById(id: string): Promise<UserAuthenticator | null> {\n return this.repository.findOneBy({ id });\n }\n\n async findOneWithSecretsById(id: string): Promise<UserAuthenticator | null> {\n return this.repository.createQueryBuilder('userAuthenticator')\n .addSelect(['userAuthenticator.secret', 'userAuthenticator.codes'])\n .where('userAuthenticator.id = :id', { id })\n .getOne();\n }\n\n async findAllByUser(userId: string): Promise<UserAuthenticator[]> {\n return this.repository.find({ where: { userId } });\n }\n\n async findAllWithSecretsByUser(\n userId: string,\n filter: UserAuthenticatorSecretsFilter = {},\n ): Promise<UserAuthenticator[]> {\n const qb = this.repository.createQueryBuilder('userAuthenticator')\n .addSelect(['userAuthenticator.secret', 'userAuthenticator.codes'])\n .where('userAuthenticator.userId = :userId', { userId });\n\n if (filter.kind) {\n qb.andWhere('userAuthenticator.kind = :kind', { kind: filter.kind });\n }\n\n if (typeof filter.confirmed !== 'undefined') {\n qb.andWhere('userAuthenticator.confirmed = :confirmed', { confirmed: filter.confirmed });\n }\n\n return qb.getMany();\n }\n\n async hasConfirmedByUser(userId: string): Promise<boolean> {\n const count = await this.repository.countBy({ userId, confirmed: true });\n return count > 0;\n }\n\n async findMany(\n query: IQuery,\n options: UserAuthenticatorFindManyOptions = {},\n ): Promise<EntityRepositoryFindManyResult<UserAuthenticator>> {\n const qb = this.repository.createQueryBuilder('userAuthenticator');\n\n const { pagination } = applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'userAuthenticator', ['userId']);\n\n if (options.owner) {\n // mandatory constraint — not overridable by a rapiq filter\n qb.andWhere('userAuthenticator.userId = :ownerUserId', { ownerUserId: options.owner.userId });\n }\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: entities,\n meta: {\n total,\n ...pagination,\n },\n };\n }\n}\n"],"mappings":";;;;;;AAmBA,
|
|
1
|
+
{"version":3,"file":"repository.mjs","names":["applyQuery","redactFieldConditions","applyRealmScopeSelect","UserAuthenticatorRepositoryAdapter","repository","create","data","save","entity","remove","removeAllByUser","userId","kind","delete","findOneById","id","findOneBy","findOneWithSecretsById","createQueryBuilder","addSelect","where","getOne","findAllByUser","find","findAllWithSecretsByUser","filter","qb","andWhere","confirmed","getMany","hasConfirmedByUser","count","countBy","findMany","query","options","pagination","owner","ownerUserId","entities","total","getManyAndCount","meta"],"sources":["../../../../../../src/app/modules/database/repositories/user-authenticator/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { UserAuthenticator, UserAuthenticatorKind } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { applyQuery, redactFieldConditions } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type {\n IUserAuthenticatorRepository,\n UserAuthenticatorFindManyOptions,\n UserAuthenticatorSecretsFilter,\n} from '../../../../../core/index.ts';\nimport { applyRealmScopeSelect } from '../helpers.ts';\n\nexport class UserAuthenticatorRepositoryAdapter implements IUserAuthenticatorRepository {\n private readonly repository: Repository<UserAuthenticator>;\n\n constructor(repository: Repository<UserAuthenticator>) {\n this.repository = repository;\n }\n\n create(data: Partial<UserAuthenticator>): UserAuthenticator {\n return this.repository.create(data);\n }\n\n async save(entity: UserAuthenticator): Promise<UserAuthenticator> {\n return this.repository.save(entity);\n }\n\n async remove(entity: UserAuthenticator): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async removeAllByUser(userId: string, kind: `${UserAuthenticatorKind}`): Promise<void> {\n await this.repository.delete({ userId, kind });\n }\n\n async findOneById(id: string): Promise<UserAuthenticator | null> {\n return this.repository.findOneBy({ id });\n }\n\n async findOneWithSecretsById(id: string): Promise<UserAuthenticator | null> {\n return this.repository.createQueryBuilder('userAuthenticator')\n .addSelect(['userAuthenticator.secret', 'userAuthenticator.codes'])\n .where('userAuthenticator.id = :id', { id })\n .getOne();\n }\n\n async findAllByUser(userId: string): Promise<UserAuthenticator[]> {\n return this.repository.find({ where: { userId } });\n }\n\n async findAllWithSecretsByUser(\n userId: string,\n filter: UserAuthenticatorSecretsFilter = {},\n ): Promise<UserAuthenticator[]> {\n const qb = this.repository.createQueryBuilder('userAuthenticator')\n .addSelect(['userAuthenticator.secret', 'userAuthenticator.codes'])\n .where('userAuthenticator.userId = :userId', { userId });\n\n if (filter.kind) {\n qb.andWhere('userAuthenticator.kind = :kind', { kind: filter.kind });\n }\n\n if (typeof filter.confirmed !== 'undefined') {\n qb.andWhere('userAuthenticator.confirmed = :confirmed', { confirmed: filter.confirmed });\n }\n\n return qb.getMany();\n }\n\n async hasConfirmedByUser(userId: string): Promise<boolean> {\n const count = await this.repository.countBy({ userId, confirmed: true });\n return count > 0;\n }\n\n async findMany(\n query: IQuery,\n options: UserAuthenticatorFindManyOptions = {},\n ): Promise<EntityRepositoryFindManyResult<UserAuthenticator>> {\n const qb = this.repository.createQueryBuilder('userAuthenticator');\n\n const { pagination } = applyQuery(qb, query);\n\n applyRealmScopeSelect(qb, 'userAuthenticator', ['userId']);\n\n if (options.owner) {\n // mandatory constraint — not overridable by a rapiq filter\n qb.andWhere('userAuthenticator.userId = :ownerUserId', { ownerUserId: options.owner.userId });\n }\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: redactFieldConditions(query, entities),\n meta: {\n total,\n ...pagination,\n },\n };\n }\n}\n"],"mappings":";;;;;;AAmBA,IAAaG,qCAAb,MAAaA;CACQC;CAEjB,YAAYA,YAA2C;EACnD,KAAKA,aAAaA;CACtB;CAEAC,OAAOC,MAAqD;EACxD,OAAO,KAAKF,WAAWC,OAAOC,IAAAA;CAClC;CAEA,MAAMC,KAAKC,QAAuD;EAC9D,OAAO,KAAKJ,WAAWG,KAAKC,MAAAA;CAChC;CAEA,MAAMC,OAAOD,QAA0C;EACnD,MAAM,KAAKJ,WAAWK,OAAOD,MAAAA;CACjC;CAEA,MAAME,gBAAgBC,QAAgBC,MAAiD;EACnF,MAAM,KAAKR,WAAWS,OAAO;GAAEF;GAAQC;EAAK,CAAA;CAChD;CAEA,MAAME,YAAYC,IAA+C;EAC7D,OAAO,KAAKX,WAAWY,UAAU,EAAED,GAAG,CAAA;CAC1C;CAEA,MAAME,uBAAuBF,IAA+C;EACxE,OAAO,KAAKX,WAAWc,mBAAmB,mBAAA,CAAA,CACrCC,UAAU,CAAC,4BAA4B,yBAA0B,CAAA,CAAA,CACjEC,MAAM,8BAA8B,EAAEL,GAAG,CAAA,CAAA,CACzCM,OAAM;CACf;CAEA,MAAMC,cAAcX,QAA8C;EAC9D,OAAO,KAAKP,WAAWmB,KAAK,EAAEH,OAAO,EAAET,OAAO,EAAE,CAAA;CACpD;CAEA,MAAMa,yBACFb,QACAc,SAAyC,CAAC,GACd;EAC5B,MAAMC,KAAK,KAAKtB,WAAWc,mBAAmB,mBAAA,CAAA,CACzCC,UAAU,CAAC,4BAA4B,yBAA0B,CAAA,CAAA,CACjEC,MAAM,sCAAsC,EAAET,OAAO,CAAA;EAE1D,IAAIc,OAAOb,MACPc,GAAGC,SAAS,kCAAkC,EAAEf,MAAMa,OAAOb,KAAK,CAAA;EAGtE,IAAI,OAAOa,OAAOG,cAAc,aAC5BF,GAAGC,SAAS,4CAA4C,EAAEC,WAAWH,OAAOG,UAAU,CAAA;EAG1F,OAAOF,GAAGG,QAAO;CACrB;CAEA,MAAMC,mBAAmBnB,QAAkC;EAEvD,OAAOoB,MADa,KAAK3B,WAAW4B,QAAQ;GAAErB;GAAQiB,WAAW;EAAK,CAAA,IACvD;CACnB;CAEA,MAAMK,SACFC,OACAC,UAA4C,CAAC,GACa;EAC1D,MAAMT,KAAK,KAAKtB,WAAWc,mBAAmB,mBAAA;EAE9C,MAAM,EAAEkB,eAAepC,WAAW0B,IAAIQ,KAAAA;EAEtChC,sBAAsBwB,IAAI,qBAAqB,CAAC,QAAS,CAAA;EAEzD,IAAIS,QAAQE,OAERX,GAAGC,SAAS,2CAA2C,EAAEW,aAAaH,QAAQE,MAAM1B,OAAO,CAAA;EAG/F,MAAM,CAAC4B,UAAUC,SAAS,MAAMd,GAAGe,gBAAe;EAElD,OAAO;GACHnC,MAAML,sBAAsBiC,OAAOK,QAAAA;GACnCG,MAAM;IACFF;IACA,GAAGJ;GACP;EACJ;CACJ;AACJ"}
|
|
@@ -3,7 +3,7 @@ import "node:url";
|
|
|
3
3
|
import.meta.url;
|
|
4
4
|
import { UserPermissionEntity } from "../../../../../adapters/database/domains/user-permission/entity.mjs";
|
|
5
5
|
import "../../../../../adapters/database/domains/index.mjs";
|
|
6
|
-
import { applyQuery } from "../query.mjs";
|
|
6
|
+
import { applyQuery, redactFieldConditions } from "../query.mjs";
|
|
7
7
|
import { translateWhereConditions } from "../helpers.mjs";
|
|
8
8
|
import { validateEntityJoinColumns } from "typeorm-extension";
|
|
9
9
|
//#region src/app/modules/database/repositories/user-permission/repository.ts
|
|
@@ -18,7 +18,7 @@ var UserPermissionRepositoryAdapter = class {
|
|
|
18
18
|
const { pagination } = applyQuery(qb, query);
|
|
19
19
|
const [entities, total] = await qb.getManyAndCount();
|
|
20
20
|
return {
|
|
21
|
-
data: entities,
|
|
21
|
+
data: redactFieldConditions(query, entities),
|
|
22
22
|
meta: {
|
|
23
23
|
total,
|
|
24
24
|
...pagination
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["validateEntityJoinColumns","applyQuery","UserPermissionEntity","translateWhereConditions","UserPermissionRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","_name","Promise","resolve","findOneByIdOrName","idOrName","findManyBy","where","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget"],"sources":["../../../../../../src/app/modules/database/repositories/user-permission/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { UserPermission } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IUserPermissionRepository } from '../../../../../core/index.ts';\nimport { UserPermissionEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\n\nexport class UserPermissionRepositoryAdapter implements IUserPermissionRepository {\n private readonly repository: Repository<UserPermission>;\n\n constructor(repository: Repository<UserPermission>) {\n this.repository = repository;\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<UserPermission>> {\n const qb = this.repository.createQueryBuilder('userPermission');\n qb.groupBy('userPermission.id');\n\n const { pagination } = applyQuery(qb, query);\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: entities,\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n findOneById(id: string): Promise<UserPermission | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(_name: string): Promise<UserPermission | null> {\n return Promise.resolve(null);\n }\n\n findOneByIdOrName(idOrName: string): Promise<UserPermission | null> {\n return this.findOneById(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<UserPermission[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<UserPermission | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<UserPermission>): UserPermission {\n return this.repository.create(data);\n }\n\n merge(entity: UserPermission, data: Partial<UserPermission>): UserPermission {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: UserPermission): Promise<UserPermission> {\n return this.repository.save(entity);\n }\n\n async remove(entity: UserPermission): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<UserPermission>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: UserPermissionEntity,\n });\n }\n}\n"],"mappings":";;;;;;;;;AAiBA,
|
|
1
|
+
{"version":3,"file":"repository.mjs","names":["validateEntityJoinColumns","applyQuery","redactFieldConditions","UserPermissionEntity","translateWhereConditions","UserPermissionRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","_name","Promise","resolve","findOneByIdOrName","idOrName","findManyBy","where","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget"],"sources":["../../../../../../src/app/modules/database/repositories/user-permission/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { UserPermission } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery, redactFieldConditions } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IUserPermissionRepository } from '../../../../../core/index.ts';\nimport { UserPermissionEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\n\nexport class UserPermissionRepositoryAdapter implements IUserPermissionRepository {\n private readonly repository: Repository<UserPermission>;\n\n constructor(repository: Repository<UserPermission>) {\n this.repository = repository;\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<UserPermission>> {\n const qb = this.repository.createQueryBuilder('userPermission');\n qb.groupBy('userPermission.id');\n\n const { pagination } = applyQuery(qb, query);\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: redactFieldConditions(query, entities),\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n findOneById(id: string): Promise<UserPermission | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(_name: string): Promise<UserPermission | null> {\n return Promise.resolve(null);\n }\n\n findOneByIdOrName(idOrName: string): Promise<UserPermission | null> {\n return this.findOneById(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<UserPermission[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<UserPermission | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<UserPermission>): UserPermission {\n return this.repository.create(data);\n }\n\n merge(entity: UserPermission, data: Partial<UserPermission>): UserPermission {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: UserPermission): Promise<UserPermission> {\n return this.repository.save(entity);\n }\n\n async remove(entity: UserPermission): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<UserPermission>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: UserPermissionEntity,\n });\n }\n}\n"],"mappings":";;;;;;;;;AAiBA,IAAaK,kCAAb,MAAaA;CACQC;CAEjB,YAAYA,YAAwC;EAChD,KAAKA,aAAaA;CACtB;CAEA,MAAMC,SAASC,OAAwE;EACnF,MAAMC,KAAK,KAAKH,WAAWI,mBAAmB,gBAAA;EAC9CD,GAAGE,QAAQ,mBAAA;EAEX,MAAM,EAAEC,eAAeX,WAAWQ,IAAID,KAAAA;EAEtC,MAAM,CAACK,UAAUC,SAAS,MAAML,GAAGM,gBAAe;EAElD,OAAO;GACHC,MAAMd,sBAAsBM,OAAOK,QAAAA;GACnCI,MAAM;IACFH;IACA,GAAGF;GACP;EACJ;CACJ;CAEAM,YAAYC,IAA4C;EACpD,OAAO,KAAKC,UAAU,EAAED,GAAG,CAAA;CAC/B;CAEA,MAAME,cAAcC,OAA+C;EAC/D,OAAOC,QAAQC,QAAQ,IAAA;CAC3B;CAEAC,kBAAkBC,UAAkD;EAChE,OAAO,KAAKR,YAAYQ,QAAAA;CAC5B;CAEA,MAAMC,WAAWC,OAAuD;EACpE,OAAO,KAAKtB,WAAWuB,OAAOzB,yBAAyBwB,KAAAA,CAAAA;CAC3D;CAEA,MAAMR,UAAUQ,OAA4D;EACxE,OAAO,KAAKtB,WAAWc,UAAUhB,yBAAyBwB,KAAAA,CAAAA;CAC9D;CAEAE,OAAOd,MAA+C;EAClD,OAAO,KAAKV,WAAWwB,OAAOd,IAAAA;CAClC;CAEAe,MAAMC,QAAwBhB,MAA+C;EACzE,OAAO,KAAKV,WAAWyB,MAAMC,QAAQhB,IAAAA;CACzC;CAEA,MAAMiB,KAAKD,QAAiD;EACxD,OAAO,KAAK1B,WAAW2B,KAAKD,MAAAA;CAChC;CAEA,MAAME,OAAOF,QAAuC;EAChD,MAAM,KAAK1B,WAAW4B,OAAOF,MAAAA;CACjC;CAEA,MAAMG,oBAAoBnB,MAA8C;EACpE,MAAMhB,0BAA0BgB,MAAM;GAClCoB,YAAY,KAAK9B,WAAW+B,QAAQC;GACpCC,cAAcpC;EAClB,CAAA;CACJ;AACJ"}
|
|
@@ -3,7 +3,7 @@ import "node:url";
|
|
|
3
3
|
import.meta.url;
|
|
4
4
|
import { UserRoleEntity } from "../../../../../adapters/database/domains/user-role/entity.mjs";
|
|
5
5
|
import "../../../../../adapters/database/domains/index.mjs";
|
|
6
|
-
import { applyQuery } from "../query.mjs";
|
|
6
|
+
import { applyQuery, redactFieldConditions } from "../query.mjs";
|
|
7
7
|
import { translateWhereConditions } from "../helpers.mjs";
|
|
8
8
|
import { validateEntityJoinColumns } from "typeorm-extension";
|
|
9
9
|
//#region src/app/modules/database/repositories/user-role/repository.ts
|
|
@@ -18,7 +18,7 @@ var UserRoleRepositoryAdapter = class {
|
|
|
18
18
|
const { pagination } = applyQuery(qb, query);
|
|
19
19
|
const [entities, total] = await qb.getManyAndCount();
|
|
20
20
|
return {
|
|
21
|
-
data: entities,
|
|
21
|
+
data: redactFieldConditions(query, entities),
|
|
22
22
|
meta: {
|
|
23
23
|
total,
|
|
24
24
|
...pagination
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["validateEntityJoinColumns","applyQuery","UserRoleEntity","translateWhereConditions","UserRoleRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","_name","Promise","resolve","findOneByIdOrName","idOrName","findManyBy","where","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget"],"sources":["../../../../../../src/app/modules/database/repositories/user-role/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { UserRole } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IUserRoleRepository } from '../../../../../core/index.ts';\nimport { UserRoleEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\n\nexport class UserRoleRepositoryAdapter implements IUserRoleRepository {\n private readonly repository: Repository<UserRole>;\n\n constructor(repository: Repository<UserRole>) {\n this.repository = repository;\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<UserRole>> {\n const qb = this.repository.createQueryBuilder('userRole');\n qb.groupBy('userRole.id');\n\n const { pagination } = applyQuery(qb, query);\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: entities,\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n findOneById(id: string): Promise<UserRole | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(_name: string): Promise<UserRole | null> {\n return Promise.resolve(null);\n }\n\n findOneByIdOrName(idOrName: string): Promise<UserRole | null> {\n return this.findOneById(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<UserRole[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<UserRole | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<UserRole>): UserRole {\n return this.repository.create(data);\n }\n\n merge(entity: UserRole, data: Partial<UserRole>): UserRole {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: UserRole): Promise<UserRole> {\n return this.repository.save(entity);\n }\n\n async remove(entity: UserRole): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<UserRole>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: UserRoleEntity,\n });\n }\n}\n"],"mappings":";;;;;;;;;AAiBA,
|
|
1
|
+
{"version":3,"file":"repository.mjs","names":["validateEntityJoinColumns","applyQuery","redactFieldConditions","UserRoleEntity","translateWhereConditions","UserRoleRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","_name","Promise","resolve","findOneByIdOrName","idOrName","findManyBy","where","findBy","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget"],"sources":["../../../../../../src/app/modules/database/repositories/user-role/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { UserRole } from '@authup/core-kit';\nimport type { IQuery } from '@rapiq/core';\nimport type { Repository } from 'typeorm';\nimport { validateEntityJoinColumns } from 'typeorm-extension';\nimport { applyQuery, redactFieldConditions } from '../query.ts';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IUserRoleRepository } from '../../../../../core/index.ts';\nimport { UserRoleEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\n\nexport class UserRoleRepositoryAdapter implements IUserRoleRepository {\n private readonly repository: Repository<UserRole>;\n\n constructor(repository: Repository<UserRole>) {\n this.repository = repository;\n }\n\n async findMany(query: IQuery): Promise<EntityRepositoryFindManyResult<UserRole>> {\n const qb = this.repository.createQueryBuilder('userRole');\n qb.groupBy('userRole.id');\n\n const { pagination } = applyQuery(qb, query);\n\n const [entities, total] = await qb.getManyAndCount();\n\n return {\n data: redactFieldConditions(query, entities),\n meta: {\n total,\n ...pagination,\n },\n };\n }\n\n findOneById(id: string): Promise<UserRole | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(_name: string): Promise<UserRole | null> {\n return Promise.resolve(null);\n }\n\n findOneByIdOrName(idOrName: string): Promise<UserRole | null> {\n return this.findOneById(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<UserRole[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<UserRole | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<UserRole>): UserRole {\n return this.repository.create(data);\n }\n\n merge(entity: UserRole, data: Partial<UserRole>): UserRole {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: UserRole): Promise<UserRole> {\n return this.repository.save(entity);\n }\n\n async remove(entity: UserRole): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<UserRole>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: UserRoleEntity,\n });\n }\n}\n"],"mappings":";;;;;;;;;AAiBA,IAAaK,4BAAb,MAAaA;CACQC;CAEjB,YAAYA,YAAkC;EAC1C,KAAKA,aAAaA;CACtB;CAEA,MAAMC,SAASC,OAAkE;EAC7E,MAAMC,KAAK,KAAKH,WAAWI,mBAAmB,UAAA;EAC9CD,GAAGE,QAAQ,aAAA;EAEX,MAAM,EAAEC,eAAeX,WAAWQ,IAAID,KAAAA;EAEtC,MAAM,CAACK,UAAUC,SAAS,MAAML,GAAGM,gBAAe;EAElD,OAAO;GACHC,MAAMd,sBAAsBM,OAAOK,QAAAA;GACnCI,MAAM;IACFH;IACA,GAAGF;GACP;EACJ;CACJ;CAEAM,YAAYC,IAAsC;EAC9C,OAAO,KAAKC,UAAU,EAAED,GAAG,CAAA;CAC/B;CAEA,MAAME,cAAcC,OAAyC;EACzD,OAAOC,QAAQC,QAAQ,IAAA;CAC3B;CAEAC,kBAAkBC,UAA4C;EAC1D,OAAO,KAAKR,YAAYQ,QAAAA;CAC5B;CAEA,MAAMC,WAAWC,OAAiD;EAC9D,OAAO,KAAKtB,WAAWuB,OAAOzB,yBAAyBwB,KAAAA,CAAAA;CAC3D;CAEA,MAAMR,UAAUQ,OAAsD;EAClE,OAAO,KAAKtB,WAAWc,UAAUhB,yBAAyBwB,KAAAA,CAAAA;CAC9D;CAEAE,OAAOd,MAAmC;EACtC,OAAO,KAAKV,WAAWwB,OAAOd,IAAAA;CAClC;CAEAe,MAAMC,QAAkBhB,MAAmC;EACvD,OAAO,KAAKV,WAAWyB,MAAMC,QAAQhB,IAAAA;CACzC;CAEA,MAAMiB,KAAKD,QAAqC;EAC5C,OAAO,KAAK1B,WAAW2B,KAAKD,MAAAA;CAChC;CAEA,MAAME,OAAOF,QAAiC;EAC1C,MAAM,KAAK1B,WAAW4B,OAAOF,MAAAA;CACjC;CAEA,MAAMG,oBAAoBnB,MAAwC;EAC9D,MAAMhB,0BAA0BgB,MAAM;GAClCoB,YAAY,KAAK9B,WAAW+B,QAAQC;GACpCC,cAAcpC;EAClB,CAAA;CACJ;AACJ"}
|
|
@@ -3,18 +3,7 @@ import { TypedToken } from 'eldin';
|
|
|
3
3
|
import type { serve } from 'routup/node';
|
|
4
4
|
export type HTTPServer = ReturnType<typeof serve>;
|
|
5
5
|
export declare const HTTPInjectionKey: {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
* HTTP client for the SSR'd UI pages. `HTTPModule.setup` registers a
|
|
9
|
-
* default whose transport dispatches against the server's own listen
|
|
10
|
-
* address (see `createInternalUIHttpClient`); a registration made
|
|
11
|
-
* BEFORE setup wins (test injection). Register it with a
|
|
12
|
-
* `useFactory` provider and `lifetime: 'transient'` so every
|
|
13
|
-
* resolve yields a FRESH client: client-web-kit's authentication
|
|
14
|
-
* hook writes per-user Authorization state onto the client it
|
|
15
|
-
* attaches to, so a singleton-lifetime instance shared across
|
|
16
|
-
* concurrent renders would leak tokens between sessions.
|
|
17
|
-
*/
|
|
18
|
-
readonly UIHttpClient: TypedToken<IClient>;
|
|
6
|
+
Server: TypedToken<HTTPServer>;
|
|
7
|
+
UIHttpClient: TypedToken<IClient>;
|
|
19
8
|
};
|
|
20
9
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/http/constants.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AAElD,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/app/modules/http/constants.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AAElD,eAAO,MAAM,gBAAgB,EAAG;IAC5B,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/B,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;CAe5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","names":["TypedToken","HTTPInjectionKey","Server","UIHttpClient"],"sources":["../../../../src/app/modules/http/constants.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { IClient } from '@authup/core-http-kit';\nimport { TypedToken } from 'eldin';\nimport type { serve } from 'routup/node';\n\nexport type HTTPServer = ReturnType<typeof serve>;\n\nexport const HTTPInjectionKey = {\n Server: new TypedToken<HTTPServer>('Server'),\n /**\n * HTTP client for the SSR'd UI pages. `HTTPModule.setup` registers a\n * default whose transport dispatches against the server's own listen\n * address (see `createInternalUIHttpClient`); a registration made\n * BEFORE setup wins (test injection). Register it with a\n * `useFactory` provider and `lifetime: 'transient'` so every\n * resolve yields a FRESH client: client-web-kit's authentication\n * hook writes per-user Authorization state onto the client it\n * attaches to, so a singleton-lifetime instance shared across\n * concurrent renders would leak tokens between sessions.\n */\n UIHttpClient: new TypedToken<IClient>('UIHttpClient'),\n} as const;\n"],"mappings":";;;;;AAaA,MAAaC,
|
|
1
|
+
{"version":3,"file":"constants.mjs","names":["TypedToken","HTTPInjectionKey","Server","UIHttpClient"],"sources":["../../../../src/app/modules/http/constants.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { IClient } from '@authup/core-http-kit';\nimport { TypedToken } from 'eldin';\nimport type { serve } from 'routup/node';\n\nexport type HTTPServer = ReturnType<typeof serve>;\n\nexport const HTTPInjectionKey : {\n Server: TypedToken<HTTPServer>,\n UIHttpClient: TypedToken<IClient>,\n} = {\n Server: new TypedToken<HTTPServer>('Server'),\n /**\n * HTTP client for the SSR'd UI pages. `HTTPModule.setup` registers a\n * default whose transport dispatches against the server's own listen\n * address (see `createInternalUIHttpClient`); a registration made\n * BEFORE setup wins (test injection). Register it with a\n * `useFactory` provider and `lifetime: 'transient'` so every\n * resolve yields a FRESH client: client-web-kit's authentication\n * hook writes per-user Authorization state onto the client it\n * attaches to, so a singleton-lifetime instance shared across\n * concurrent renders would leak tokens between sessions.\n */\n UIHttpClient: new TypedToken<IClient>('UIHttpClient'),\n} as const;\n"],"mappings":";;;;;AAaA,MAAaC,mBAGT;CACAC,QAAQ,IAAIF,WAAuB,QAAA;;;;;;;;;;;IAYnCG,cAAc,IAAIH,WAAoB,cAAA;AAC1C"}
|