@authup/server-core 1.0.0-beta.41 → 1.0.0-beta.42
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/cache/module.mjs.map +1 -1
- package/dist/adapters/database/data-source/options/module.mjs.map +1 -1
- package/dist/adapters/database/data-source/singleton.mjs.map +1 -1
- package/dist/adapters/database/domains/client/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/client/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/client-permission/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/client-permission/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/client-role/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/client-role/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/client-scope/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/client-scope/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider/repository.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider-account/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider-account/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider-attribute/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider-attribute/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider-attribute-mapping/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider-permission-mapping/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider-role-mapping/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider-role-mapping/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/key/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/permission/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/permission/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/permission-policy/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/policy/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/policy/repository.mjs.map +1 -1
- package/dist/adapters/database/domains/policy/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/policy-attribute/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/policy-attribute/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/realm/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/realm/repository.mjs.map +1 -1
- package/dist/adapters/database/domains/realm/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/robot/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/robot/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/robot-permission/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/robot-permission/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/robot-role/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/robot-role/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/role/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/role/repository.mjs.map +1 -1
- package/dist/adapters/database/domains/role/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/role-attribute/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/role-attribute/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/role-permission/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/role-permission/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/scope/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/scope/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/session/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/user/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/user/repository.mjs.map +1 -1
- package/dist/adapters/database/domains/user/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/user-attribute/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/user-attribute/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/user-permission/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/user-permission/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/user-role/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/user-role/subscriber.mjs.map +1 -1
- package/dist/adapters/database/errors/conflict.d.ts +2 -2
- package/dist/adapters/database/errors/conflict.d.ts.map +1 -1
- package/dist/adapters/database/errors/conflict.mjs +6 -3
- package/dist/adapters/database/errors/conflict.mjs.map +1 -1
- package/dist/adapters/database/event-publisher/module.mjs.map +1 -1
- package/dist/adapters/database/extra-attribute-repository/adapter.mjs.map +1 -1
- package/dist/adapters/database/extra-attribute-repository/repository.mjs.map +1 -1
- package/dist/adapters/database/extra-attribute-repository/tree/adapter.mjs.map +1 -1
- package/dist/adapters/database/extra-attribute-repository/tree/repository.mjs.map +1 -1
- package/dist/adapters/database/helpers/is-supported.mjs.map +1 -1
- package/dist/adapters/database/logger/module.mjs.map +1 -1
- package/dist/adapters/database/migrations/mysql/1673449341125-Default.mjs.map +1 -1
- package/dist/adapters/database/migrations/mysql/1689597906910-Default.mjs.map +1 -1
- package/dist/adapters/database/migrations/mysql/1718790373914-Default.mjs.map +1 -1
- package/dist/adapters/database/migrations/mysql/1722673916392-Default.mjs.map +1 -1
- package/dist/adapters/database/migrations/mysql/1740991051622-Default.mjs.map +1 -1
- package/dist/adapters/database/migrations/mysql/1766830857009-Default.mjs.map +1 -1
- package/dist/adapters/database/migrations/mysql/1774800953474-Default.mjs.map +1 -1
- package/dist/adapters/database/migrations/postgres/1673449341125-Default.mjs.map +1 -1
- package/dist/adapters/database/migrations/postgres/1689597906910-Default.mjs.map +1 -1
- package/dist/adapters/database/migrations/postgres/1718790373914-Default.mjs.map +1 -1
- package/dist/adapters/database/migrations/postgres/1722673916392-Default.mjs.map +1 -1
- package/dist/adapters/database/migrations/postgres/1740991051622-Default.mjs.map +1 -1
- package/dist/adapters/database/migrations/postgres/1766830857009-Default.mjs.map +1 -1
- package/dist/adapters/database/migrations/postgres/1774800953474-Default.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/authorization/module.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs +2 -2
- package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs +2 -2
- package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs.map +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.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs +4 -4
- package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs +4 -4
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/client/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/client/module.mjs +10 -6
- package/dist/adapters/http/controllers/entities/client/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/client-permission/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/client-permission/utils/validation.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/client-role/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/client-role/utils/validation.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/client-scope/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/client-scope/utils/validator.mjs.map +1 -1
- 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.map +1 -1
- package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +19 -17
- package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/permission/module.d.ts +3 -10
- package/dist/adapters/http/controllers/entities/permission/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/permission/module.mjs +16 -49
- package/dist/adapters/http/controllers/entities/permission/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/permission-policy/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/policy/module.d.ts +3 -7
- package/dist/adapters/http/controllers/entities/policy/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/policy/module.mjs +16 -39
- package/dist/adapters/http/controllers/entities/policy/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/policy/utils/attributes-validator.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/policy/utils/validation.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/realm/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/realm/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/realm/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/robot/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/robot/module.mjs +11 -7
- package/dist/adapters/http/controllers/entities/robot/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/robot-permission/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/robot-permission/utils/validation.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/robot-role/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/robot-role/utils/validation.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/role/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/role-attribute/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/role-attribute/utils/validation.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/role-permission/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/role-permission/utils/validation.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/scope/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/user/module.mjs +7 -3
- package/dist/adapters/http/controllers/entities/user/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user-attribute/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user-attribute/utils/validation.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user-permission/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user-permission/utils/validation.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user-role/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user-role/utils/validation.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/activate/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/activate/validator.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/authorize/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/authorize/module.mjs +2 -2
- package/dist/adapters/http/controllers/workflows/authorize/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/jwks/handlers/read.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/jwks/handlers/read.mjs +3 -4
- package/dist/adapters/http/controllers/workflows/jwks/handlers/read.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/jwks/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/jwks/module.mjs +3 -4
- package/dist/adapters/http/controllers/workflows/jwks/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/openid/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/password-reset/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/register/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/status/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/token/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/token/module.mjs +6 -6
- package/dist/adapters/http/controllers/workflows/token/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/token/utils/extract.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/token/utils/validator.mjs.map +1 -1
- package/dist/adapters/http/index.mjs +4 -1
- package/dist/adapters/http/middleware/built-in/assets.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/authorization/factory.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/authorization/module.mjs +2 -2
- package/dist/adapters/http/middleware/built-in/authorization/module.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/basic.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/cors.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/error.mjs +5 -3
- package/dist/adapters/http/middleware/built-in/error.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/index.d.ts +1 -0
- package/dist/adapters/http/middleware/built-in/index.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/index.mjs +4 -1
- package/dist/adapters/http/middleware/built-in/loggedin/module.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/loggedin/user.mjs +1 -1
- package/dist/adapters/http/middleware/built-in/loggedin/user.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/logger.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/prometheus.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/rate-limit.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/realm-resolver/factory.d.ts +4 -0
- package/dist/adapters/http/middleware/built-in/realm-resolver/factory.d.ts.map +1 -0
- package/dist/adapters/http/middleware/built-in/realm-resolver/factory.mjs +14 -0
- package/dist/adapters/http/middleware/built-in/realm-resolver/factory.mjs.map +1 -0
- package/dist/adapters/http/middleware/built-in/realm-resolver/index.d.ts +4 -0
- package/dist/adapters/http/middleware/built-in/realm-resolver/index.d.ts.map +1 -0
- package/dist/adapters/http/middleware/built-in/realm-resolver/index.mjs +3 -0
- package/dist/adapters/http/middleware/built-in/realm-resolver/module.d.ts +9 -0
- package/dist/adapters/http/middleware/built-in/realm-resolver/module.d.ts.map +1 -0
- package/dist/adapters/http/middleware/built-in/realm-resolver/module.mjs +26 -0
- package/dist/adapters/http/middleware/built-in/realm-resolver/module.mjs.map +1 -0
- package/dist/adapters/http/middleware/built-in/realm-resolver/types.d.ts +5 -0
- package/dist/adapters/http/middleware/built-in/realm-resolver/types.d.ts.map +1 -0
- package/dist/adapters/http/middleware/built-in/swagger.mjs.map +1 -1
- package/dist/adapters/http/middleware/index.mjs +3 -1
- package/dist/adapters/http/request/helpers/actor.d.ts +1 -1
- package/dist/adapters/http/request/helpers/actor.d.ts.map +1 -1
- package/dist/adapters/http/request/helpers/actor.mjs.map +1 -1
- package/dist/adapters/http/request/helpers/body-realm-id.mjs.map +1 -1
- package/dist/adapters/http/request/helpers/identity.mjs +1 -1
- package/dist/adapters/http/request/helpers/identity.mjs.map +1 -1
- package/dist/adapters/http/request/helpers/index.d.ts +1 -0
- package/dist/adapters/http/request/helpers/index.d.ts.map +1 -1
- package/dist/adapters/http/request/helpers/index.mjs +2 -1
- package/dist/adapters/http/request/helpers/locations.mjs.map +1 -1
- package/dist/adapters/http/request/helpers/param-id.mjs.map +1 -1
- package/dist/adapters/http/request/helpers/realm-id.d.ts +5 -0
- package/dist/adapters/http/request/helpers/realm-id.d.ts.map +1 -0
- package/dist/adapters/http/request/helpers/realm-id.mjs +19 -0
- package/dist/adapters/http/request/helpers/realm-id.mjs.map +1 -0
- package/dist/adapters/http/request/helpers/scopes.mjs.map +1 -1
- package/dist/adapters/http/request/helpers/token.mjs.map +1 -1
- package/dist/adapters/http/request/index.mjs +2 -1
- package/dist/adapters/http/request/permission/helper.mjs.map +1 -1
- package/dist/adapters/http/request/permission/module.mjs.map +1 -1
- package/dist/adapters/shared/ldap/factory.mjs.map +1 -1
- package/dist/adapters/shared/ldap/module.mjs.map +1 -1
- package/dist/app/builder.mjs.map +1 -1
- package/dist/app/factory.mjs.map +1 -1
- package/dist/app/modules/authentication/constants.mjs.map +1 -1
- package/dist/app/modules/authentication/module.mjs.map +1 -1
- package/dist/app/modules/authentication/repositories/session.mjs.map +1 -1
- package/dist/app/modules/cache/constants.mjs.map +1 -1
- package/dist/app/modules/cache/module.mjs.map +1 -1
- package/dist/app/modules/components/module.mjs.map +1 -1
- package/dist/app/modules/config/constants.mjs.map +1 -1
- package/dist/app/modules/config/module.mjs.map +1 -1
- package/dist/app/modules/config/normalize.mjs.map +1 -1
- package/dist/app/modules/config/parse.mjs.map +1 -1
- package/dist/app/modules/config/read/env.mjs.map +1 -1
- package/dist/app/modules/config/read/fs.mjs.map +1 -1
- package/dist/app/modules/config/read/module.mjs.map +1 -1
- package/dist/app/modules/constants.mjs.map +1 -1
- package/dist/app/modules/database/constants.mjs.map +1 -1
- package/dist/app/modules/database/module.mjs.map +1 -1
- package/dist/app/modules/database/repositories/bindings.mjs.map +1 -1
- package/dist/app/modules/database/repositories/client/repository.d.ts +2 -1
- package/dist/app/modules/database/repositories/client/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/client/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/client-permission/repository.d.ts +1 -1
- package/dist/app/modules/database/repositories/client-permission/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/client-permission/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/client-role/repository.d.ts +1 -1
- package/dist/app/modules/database/repositories/client-role/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/client-role/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/client-scope/repository.d.ts +1 -1
- package/dist/app/modules/database/repositories/client-scope/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/client-scope/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/helpers.mjs.map +1 -1
- package/dist/app/modules/database/repositories/identity-provider/repository.d.ts +2 -1
- package/dist/app/modules/database/repositories/identity-provider/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/identity-provider/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.d.ts +2 -1
- package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/identity-provider-role-mapping/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/permission/repository.d.ts +2 -1
- package/dist/app/modules/database/repositories/permission/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/permission/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/permission-policy/repository.d.ts +2 -1
- package/dist/app/modules/database/repositories/permission-policy/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/permission-policy/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/permission-provider/module.mjs.map +1 -1
- package/dist/app/modules/database/repositories/policy/repository.d.ts +2 -1
- package/dist/app/modules/database/repositories/policy/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/policy/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/realm/repository.d.ts +2 -1
- package/dist/app/modules/database/repositories/realm/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/realm/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/robot/repository.d.ts +2 -1
- package/dist/app/modules/database/repositories/robot/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/robot/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/robot-permission/repository.d.ts +1 -1
- package/dist/app/modules/database/repositories/robot-permission/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/robot-permission/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/robot-role/repository.d.ts +2 -1
- package/dist/app/modules/database/repositories/robot-role/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/robot-role/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/role/repository.d.ts +2 -1
- package/dist/app/modules/database/repositories/role/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/role/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/role-attribute/repository.d.ts +2 -1
- package/dist/app/modules/database/repositories/role-attribute/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/role-attribute/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/role-permission/repository.d.ts +2 -1
- package/dist/app/modules/database/repositories/role-permission/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/role-permission/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/scope/repository.d.ts +2 -1
- package/dist/app/modules/database/repositories/scope/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/scope/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/user/repository.d.ts +2 -1
- package/dist/app/modules/database/repositories/user/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/user/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/user-attribute/repository.d.ts +2 -1
- package/dist/app/modules/database/repositories/user-attribute/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/user-attribute/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/user-permission/repository.d.ts +2 -1
- package/dist/app/modules/database/repositories/user-permission/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/user-permission/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/user-role/repository.d.ts +2 -1
- package/dist/app/modules/database/repositories/user-role/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/user-role/repository.mjs.map +1 -1
- package/dist/app/modules/http/constants.mjs.map +1 -1
- package/dist/app/modules/http/module.mjs.map +1 -1
- package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
- package/dist/app/modules/http/modules/controller.mjs +27 -19
- package/dist/app/modules/http/modules/controller.mjs.map +1 -1
- package/dist/app/modules/http/modules/middleware.d.ts +1 -0
- package/dist/app/modules/http/modules/middleware.d.ts.map +1 -1
- package/dist/app/modules/http/modules/middleware.mjs +10 -0
- package/dist/app/modules/http/modules/middleware.mjs.map +1 -1
- package/dist/app/modules/identity/constants.mjs.map +1 -1
- package/dist/app/modules/identity/module.mjs.map +1 -1
- package/dist/app/modules/identity/repositories/client.mjs.map +1 -1
- package/dist/app/modules/identity/repositories/provider/account/module.mjs.map +1 -1
- package/dist/app/modules/identity/repositories/provider/mapper/attribute.mjs.map +1 -1
- package/dist/app/modules/identity/repositories/provider/mapper/permission.mjs.map +1 -1
- package/dist/app/modules/identity/repositories/provider/mapper/role.mjs.map +1 -1
- package/dist/app/modules/identity/repositories/robot.mjs.map +1 -1
- package/dist/app/modules/identity/repositories/user.mjs.map +1 -1
- package/dist/app/modules/ldap/constants.mjs.map +1 -1
- package/dist/app/modules/ldap/module.mjs.map +1 -1
- package/dist/app/modules/logger/constants.mjs.map +1 -1
- package/dist/app/modules/logger/module.mjs.map +1 -1
- package/dist/app/modules/mail/adapter/smtp/module.mjs.map +1 -1
- package/dist/app/modules/mail/adapter/smtp/smtp.mjs.map +1 -1
- package/dist/app/modules/mail/adapter/void.mjs.map +1 -1
- package/dist/app/modules/mail/constants.mjs.map +1 -1
- package/dist/app/modules/mail/module.mjs.map +1 -1
- package/dist/app/modules/oauth2/constants.mjs.map +1 -1
- package/dist/app/modules/oauth2/module.mjs.map +1 -1
- package/dist/app/modules/oauth2/repositories/authorize/code/repository.mjs.map +1 -1
- package/dist/app/modules/oauth2/repositories/authorize/state/repository.mjs.map +1 -1
- package/dist/app/modules/oauth2/repositories/client/repository.mjs.map +1 -1
- package/dist/app/modules/oauth2/repositories/key/repository.mjs.map +1 -1
- package/dist/app/modules/oauth2/repositories/scope/repository.mjs.map +1 -1
- package/dist/app/modules/oauth2/repositories/token/repository.mjs.map +1 -1
- package/dist/app/modules/provisioning/module.mjs.map +1 -1
- package/dist/app/modules/provisioning/sources/composite/module.mjs.map +1 -1
- package/dist/app/modules/provisioning/sources/default/module.mjs.map +1 -1
- package/dist/app/modules/provisioning/sources/file/module.mjs.map +1 -1
- package/dist/app/modules/runtime/module.mjs.map +1 -1
- package/dist/cli/commands/healthcheck.mjs.map +1 -1
- package/dist/cli/commands/migration.mjs.map +1 -1
- package/dist/cli/commands/reset.mjs.map +1 -1
- package/dist/cli/commands/start.mjs.map +1 -1
- package/dist/cli/index.mjs.map +1 -1
- package/dist/cli/module.mjs.map +1 -1
- package/dist/components/database/unique-entries/factory.mjs.map +1 -1
- package/dist/components/database/unique-entries/module.mjs.map +1 -1
- package/dist/components/oauth2-cleaner/module.mjs.map +1 -1
- package/dist/core/authentication/base.mjs.map +1 -1
- package/dist/core/authentication/credential/entities/client/module.mjs.map +1 -1
- package/dist/core/authentication/credential/entities/robot/module.mjs.map +1 -1
- package/dist/core/authentication/credential/entities/user/module.mjs.map +1 -1
- package/dist/core/authentication/entities/client/module.d.ts.map +1 -1
- package/dist/core/authentication/entities/client/module.mjs +7 -5
- package/dist/core/authentication/entities/client/module.mjs.map +1 -1
- package/dist/core/authentication/entities/robot/module.d.ts.map +1 -1
- package/dist/core/authentication/entities/robot/module.mjs +5 -4
- package/dist/core/authentication/entities/robot/module.mjs.map +1 -1
- package/dist/core/authentication/entities/user/module.d.ts.map +1 -1
- package/dist/core/authentication/entities/user/module.mjs +5 -4
- package/dist/core/authentication/entities/user/module.mjs.map +1 -1
- package/dist/core/authentication/module.mjs.map +1 -1
- package/dist/core/authentication/session/module.mjs.map +1 -1
- package/dist/core/entities/client/service.d.ts +2 -3
- package/dist/core/entities/client/service.d.ts.map +1 -1
- package/dist/core/entities/client/service.mjs +8 -8
- package/dist/core/entities/client/service.mjs.map +1 -1
- package/dist/core/entities/client/types.d.ts +1 -2
- package/dist/core/entities/client/types.d.ts.map +1 -1
- package/dist/core/entities/client-permission/service.d.ts +2 -3
- package/dist/core/entities/client-permission/service.d.ts.map +1 -1
- package/dist/core/entities/client-permission/service.mjs +8 -7
- package/dist/core/entities/client-permission/service.mjs.map +1 -1
- package/dist/core/entities/client-permission/types.d.ts +1 -2
- package/dist/core/entities/client-permission/types.d.ts.map +1 -1
- package/dist/core/entities/client-role/service.d.ts +2 -3
- package/dist/core/entities/client-role/service.d.ts.map +1 -1
- package/dist/core/entities/client-role/service.mjs +9 -8
- package/dist/core/entities/client-role/service.mjs.map +1 -1
- package/dist/core/entities/client-role/types.d.ts +1 -2
- package/dist/core/entities/client-role/types.d.ts.map +1 -1
- package/dist/core/entities/client-scope/service.d.ts +2 -3
- package/dist/core/entities/client-scope/service.d.ts.map +1 -1
- package/dist/core/entities/client-scope/service.mjs +7 -6
- package/dist/core/entities/client-scope/service.mjs.map +1 -1
- package/dist/core/entities/client-scope/types.d.ts +1 -2
- package/dist/core/entities/client-scope/types.d.ts.map +1 -1
- package/dist/core/entities/identity-provider/types.d.ts +1 -1
- package/dist/core/entities/identity-provider/types.d.ts.map +1 -1
- package/dist/core/entities/identity-provider-role-mapping/service.d.ts +2 -3
- package/dist/core/entities/identity-provider-role-mapping/service.d.ts.map +1 -1
- package/dist/core/entities/identity-provider-role-mapping/service.mjs +10 -9
- package/dist/core/entities/identity-provider-role-mapping/service.mjs.map +1 -1
- package/dist/core/entities/identity-provider-role-mapping/types.d.ts +1 -2
- package/dist/core/entities/identity-provider-role-mapping/types.d.ts.map +1 -1
- package/dist/core/entities/index.d.ts +0 -3
- package/dist/core/entities/index.d.ts.map +1 -1
- package/dist/core/entities/index.mjs +1 -2
- package/dist/core/entities/permission/service.d.ts +2 -3
- package/dist/core/entities/permission/service.d.ts.map +1 -1
- package/dist/core/entities/permission/service.mjs +8 -9
- package/dist/core/entities/permission/service.mjs.map +1 -1
- package/dist/core/entities/permission/types.d.ts +1 -2
- package/dist/core/entities/permission/types.d.ts.map +1 -1
- package/dist/core/entities/permission-policy/service.d.ts +2 -3
- package/dist/core/entities/permission-policy/service.d.ts.map +1 -1
- package/dist/core/entities/permission-policy/service.mjs +7 -6
- package/dist/core/entities/permission-policy/service.mjs.map +1 -1
- package/dist/core/entities/permission-policy/types.d.ts +1 -2
- package/dist/core/entities/permission-policy/types.d.ts.map +1 -1
- package/dist/core/entities/policy/attributes-validator.mjs.map +1 -1
- package/dist/core/entities/policy/service.d.ts +2 -3
- package/dist/core/entities/policy/service.d.ts.map +1 -1
- package/dist/core/entities/policy/service.mjs +8 -8
- package/dist/core/entities/policy/service.mjs.map +1 -1
- package/dist/core/entities/policy/types.d.ts +1 -2
- package/dist/core/entities/policy/types.d.ts.map +1 -1
- package/dist/core/entities/realm/service.d.ts +2 -3
- package/dist/core/entities/realm/service.d.ts.map +1 -1
- package/dist/core/entities/realm/service.mjs +8 -8
- package/dist/core/entities/realm/service.mjs.map +1 -1
- package/dist/core/entities/realm/types.d.ts +1 -2
- package/dist/core/entities/realm/types.d.ts.map +1 -1
- package/dist/core/entities/robot/service.d.ts +2 -3
- package/dist/core/entities/robot/service.d.ts.map +1 -1
- package/dist/core/entities/robot/service.mjs +8 -8
- package/dist/core/entities/robot/service.mjs.map +1 -1
- package/dist/core/entities/robot/types.d.ts +1 -2
- package/dist/core/entities/robot/types.d.ts.map +1 -1
- package/dist/core/entities/robot-permission/service.d.ts +2 -3
- package/dist/core/entities/robot-permission/service.d.ts.map +1 -1
- package/dist/core/entities/robot-permission/service.mjs +8 -7
- package/dist/core/entities/robot-permission/service.mjs.map +1 -1
- package/dist/core/entities/robot-permission/types.d.ts +1 -2
- package/dist/core/entities/robot-permission/types.d.ts.map +1 -1
- package/dist/core/entities/robot-role/service.d.ts +2 -3
- package/dist/core/entities/robot-role/service.d.ts.map +1 -1
- package/dist/core/entities/robot-role/service.mjs +9 -8
- package/dist/core/entities/robot-role/service.mjs.map +1 -1
- package/dist/core/entities/robot-role/types.d.ts +1 -2
- package/dist/core/entities/robot-role/types.d.ts.map +1 -1
- package/dist/core/entities/role/service.d.ts +2 -3
- package/dist/core/entities/role/service.d.ts.map +1 -1
- package/dist/core/entities/role/service.mjs +8 -8
- package/dist/core/entities/role/service.mjs.map +1 -1
- package/dist/core/entities/role/types.d.ts +1 -2
- package/dist/core/entities/role/types.d.ts.map +1 -1
- package/dist/core/entities/role-attribute/service.d.ts +2 -3
- package/dist/core/entities/role-attribute/service.d.ts.map +1 -1
- package/dist/core/entities/role-attribute/service.mjs +5 -5
- package/dist/core/entities/role-attribute/service.mjs.map +1 -1
- package/dist/core/entities/role-attribute/types.d.ts +1 -2
- package/dist/core/entities/role-attribute/types.d.ts.map +1 -1
- package/dist/core/entities/role-permission/service.d.ts +2 -3
- package/dist/core/entities/role-permission/service.d.ts.map +1 -1
- package/dist/core/entities/role-permission/service.mjs +8 -7
- package/dist/core/entities/role-permission/service.mjs.map +1 -1
- package/dist/core/entities/role-permission/types.d.ts +1 -2
- package/dist/core/entities/role-permission/types.d.ts.map +1 -1
- package/dist/core/entities/scope/service.d.ts +2 -3
- package/dist/core/entities/scope/service.d.ts.map +1 -1
- package/dist/core/entities/scope/service.mjs +8 -8
- package/dist/core/entities/scope/service.mjs.map +1 -1
- package/dist/core/entities/scope/types.d.ts +1 -2
- package/dist/core/entities/scope/types.d.ts.map +1 -1
- package/dist/core/entities/user/service.d.ts +2 -3
- package/dist/core/entities/user/service.d.ts.map +1 -1
- package/dist/core/entities/user/service.mjs +8 -8
- package/dist/core/entities/user/service.mjs.map +1 -1
- package/dist/core/entities/user/types.d.ts +1 -2
- package/dist/core/entities/user/types.d.ts.map +1 -1
- package/dist/core/entities/user-attribute/service.d.ts +2 -3
- package/dist/core/entities/user-attribute/service.d.ts.map +1 -1
- package/dist/core/entities/user-attribute/service.mjs +8 -8
- package/dist/core/entities/user-attribute/service.mjs.map +1 -1
- package/dist/core/entities/user-attribute/types.d.ts +1 -2
- package/dist/core/entities/user-attribute/types.d.ts.map +1 -1
- package/dist/core/entities/user-permission/service.d.ts +2 -3
- package/dist/core/entities/user-permission/service.d.ts.map +1 -1
- package/dist/core/entities/user-permission/service.mjs +8 -7
- package/dist/core/entities/user-permission/service.mjs.map +1 -1
- package/dist/core/entities/user-permission/types.d.ts +1 -2
- package/dist/core/entities/user-permission/types.d.ts.map +1 -1
- package/dist/core/entities/user-role/service.d.ts +2 -3
- package/dist/core/entities/user-role/service.d.ts.map +1 -1
- package/dist/core/entities/user-role/service.mjs +9 -8
- package/dist/core/entities/user-role/service.mjs.map +1 -1
- package/dist/core/entities/user-role/types.d.ts +1 -2
- package/dist/core/entities/user-role/types.d.ts.map +1 -1
- package/dist/core/identity/index.d.ts +1 -0
- package/dist/core/identity/index.d.ts.map +1 -1
- package/dist/core/identity/index.mjs +4 -1
- package/dist/core/identity/password-recovery/check.d.ts +7 -0
- package/dist/core/identity/password-recovery/check.d.ts.map +1 -0
- package/dist/core/identity/password-recovery/check.mjs +24 -0
- package/dist/core/identity/password-recovery/check.mjs.map +1 -0
- package/dist/core/identity/password-recovery/disabled.d.ts +6 -0
- package/dist/core/identity/password-recovery/disabled.d.ts.map +1 -0
- package/dist/core/identity/password-recovery/disabled.mjs +16 -0
- package/dist/core/identity/password-recovery/disabled.mjs.map +1 -0
- package/dist/core/identity/password-recovery/email-verification-required.d.ts +6 -0
- package/dist/core/identity/password-recovery/email-verification-required.d.ts.map +1 -0
- package/dist/core/identity/password-recovery/email-verification-required.mjs +16 -0
- package/dist/core/identity/password-recovery/email-verification-required.mjs.map +1 -0
- package/dist/core/identity/password-recovery/service.d.ts.map +1 -1
- package/dist/core/identity/password-recovery/service.mjs +10 -7
- package/dist/core/identity/password-recovery/service.mjs.map +1 -1
- package/dist/core/identity/password-recovery/token-expired.d.ts +6 -0
- package/dist/core/identity/password-recovery/token-expired.d.ts.map +1 -0
- package/dist/core/identity/password-recovery/token-expired.mjs +16 -0
- package/dist/core/identity/password-recovery/token-expired.mjs.map +1 -0
- package/dist/core/identity/permission/checker/index.d.ts +3 -0
- package/dist/core/identity/permission/checker/index.d.ts.map +1 -0
- package/dist/core/identity/permission/checker/index.mjs +2 -0
- package/dist/core/identity/permission/checker/service.d.ts +10 -0
- package/dist/core/identity/permission/checker/service.d.ts.map +1 -0
- package/dist/core/identity/permission/checker/service.mjs +55 -0
- package/dist/core/identity/permission/checker/service.mjs.map +1 -0
- package/dist/core/identity/permission/checker/types.d.ts +42 -0
- package/dist/core/identity/permission/checker/types.d.ts.map +1 -0
- package/dist/core/identity/permission/identity-policy-data.d.ts +4 -0
- package/dist/core/identity/permission/identity-policy-data.d.ts.map +1 -0
- package/dist/core/identity/permission/identity-policy-data.mjs +23 -0
- package/dist/core/identity/permission/identity-policy-data.mjs.map +1 -0
- package/dist/core/identity/permission/index.d.ts +1 -0
- package/dist/core/identity/permission/index.d.ts.map +1 -1
- package/dist/core/identity/permission/index.mjs +3 -1
- package/dist/core/identity/permission/module.mjs.map +1 -1
- package/dist/core/identity/policy/checker/index.d.ts +3 -0
- package/dist/core/identity/policy/checker/index.d.ts.map +1 -0
- package/dist/core/identity/policy/checker/index.mjs +2 -0
- package/dist/core/identity/policy/checker/service.d.ts +10 -0
- package/dist/core/identity/policy/checker/service.d.ts.map +1 -0
- package/dist/core/identity/policy/checker/service.mjs +46 -0
- package/dist/core/identity/policy/checker/service.mjs.map +1 -0
- package/dist/core/identity/policy/checker/types.d.ts +40 -0
- package/dist/core/identity/policy/checker/types.d.ts.map +1 -0
- package/dist/core/identity/policy/index.d.ts +2 -0
- package/dist/core/identity/policy/index.d.ts.map +1 -0
- package/dist/core/identity/policy/index.mjs +3 -0
- package/dist/core/identity/provider/account/module.d.ts.map +1 -1
- package/dist/core/identity/provider/account/module.mjs +2 -2
- package/dist/core/identity/provider/account/module.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/constants.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/factory.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/presets/facebook.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/presets/github.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/presets/google.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/presets/instagram.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/presets/paypal.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/protocols/ldap/collection.d.ts.map +1 -1
- package/dist/core/identity/provider/authentication/protocols/ldap/collection.mjs +3 -2
- package/dist/core/identity/provider/authentication/protocols/ldap/collection.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/protocols/ldap/module.d.ts.map +1 -1
- package/dist/core/identity/provider/authentication/protocols/ldap/module.mjs +7 -4
- package/dist/core/identity/provider/authentication/protocols/ldap/module.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/protocols/open-id/module.mjs.map +1 -1
- package/dist/core/identity/provider/mapper/attributes/module.mjs.map +1 -1
- package/dist/core/identity/provider/mapper/base.mjs.map +1 -1
- package/dist/core/identity/provider/mapper/permission/module.mjs.map +1 -1
- package/dist/core/identity/provider/mapper/role/module.mjs.map +1 -1
- package/dist/core/identity/registration/check.d.ts +3 -0
- package/dist/core/identity/registration/check.d.ts.map +1 -0
- package/dist/core/identity/registration/check.mjs +12 -0
- package/dist/core/identity/registration/check.mjs.map +1 -0
- package/dist/core/identity/registration/error.d.ts +6 -0
- package/dist/core/identity/registration/error.d.ts.map +1 -0
- package/dist/core/identity/registration/error.mjs +16 -0
- package/dist/core/identity/registration/error.mjs.map +1 -0
- package/dist/core/identity/registration/service.d.ts.map +1 -1
- package/dist/core/identity/registration/service.mjs +4 -3
- package/dist/core/identity/registration/service.mjs.map +1 -1
- package/dist/core/identity/resolver/entities/ldap/module.mjs.map +1 -1
- package/dist/core/identity/resolver/module.mjs.map +1 -1
- package/dist/core/identity/role/module.mjs.map +1 -1
- package/dist/core/index.mjs +5 -4
- package/dist/core/oauth2/authorization/code/issuer/module.mjs.map +1 -1
- package/dist/core/oauth2/authorization/code/verifier/module.mjs +8 -8
- package/dist/core/oauth2/authorization/code/verifier/module.mjs.map +1 -1
- package/dist/core/oauth2/authorization/code-request/validator.mjs +2 -2
- package/dist/core/oauth2/authorization/code-request/validator.mjs.map +1 -1
- package/dist/core/oauth2/authorization/code-request/verifier/module.d.ts.map +1 -1
- package/dist/core/oauth2/authorization/code-request/verifier/module.mjs +8 -8
- package/dist/core/oauth2/authorization/code-request/verifier/module.mjs.map +1 -1
- package/dist/core/oauth2/authorization/helpers.mjs.map +1 -1
- package/dist/core/oauth2/authorization/module.d.ts.map +1 -1
- package/dist/core/oauth2/authorization/module.mjs +4 -4
- package/dist/core/oauth2/authorization/module.mjs.map +1 -1
- package/dist/core/oauth2/authorization/state/module.mjs +4 -4
- package/dist/core/oauth2/authorization/state/module.mjs.map +1 -1
- package/dist/core/oauth2/client/authenticator.mjs +6 -6
- package/dist/core/oauth2/client/authenticator.mjs.map +1 -1
- package/dist/core/oauth2/grant-types/authorize.mjs.map +1 -1
- package/dist/core/oauth2/grant-types/base.mjs.map +1 -1
- package/dist/core/oauth2/grant-types/client-credentials.mjs.map +1 -1
- package/dist/core/oauth2/grant-types/identity.mjs.map +1 -1
- package/dist/core/oauth2/grant-types/password.mjs.map +1 -1
- package/dist/core/oauth2/grant-types/refresh-token.mjs.map +1 -1
- package/dist/core/oauth2/grant-types/robot-credentials.mjs.map +1 -1
- package/dist/core/oauth2/helpers/{erorr.d.ts → error.d.ts} +1 -1
- package/dist/core/oauth2/helpers/error.d.ts.map +1 -0
- package/dist/core/oauth2/helpers/{erorr.mjs → error.mjs} +6 -7
- package/dist/core/oauth2/helpers/error.mjs.map +1 -0
- package/dist/core/oauth2/helpers/index.d.ts +1 -1
- package/dist/core/oauth2/helpers/index.mjs +1 -1
- package/dist/core/oauth2/openid/claims.mjs.map +1 -1
- package/dist/core/oauth2/response/bearer.mjs.map +1 -1
- package/dist/core/oauth2/scope/resolver.mjs.map +1 -1
- package/dist/core/oauth2/token/issuer/access/module.mjs.map +1 -1
- package/dist/core/oauth2/token/issuer/base.mjs.map +1 -1
- package/dist/core/oauth2/token/issuer/open-id/module.mjs.map +1 -1
- package/dist/core/oauth2/token/issuer/refresh/module.mjs.map +1 -1
- package/dist/core/oauth2/token/revoker/module.mjs.map +1 -1
- package/dist/core/oauth2/token/signer/module.mjs.map +1 -1
- package/dist/core/oauth2/token/verifier/module.mjs.map +1 -1
- package/dist/core/provisioning/entities/client/relations-validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/client/validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/permission/validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/realm/relations-validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/realm/validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/robot/relations-validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/robot/validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/role/relations-validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/role/validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/root/validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/scope/validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/user/relations-validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/user/validator.mjs.map +1 -1
- package/dist/core/provisioning/strategy/normalize.mjs.map +1 -1
- package/dist/core/provisioning/strategy/validator.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/base.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/client/module.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/entity-resolver.d.ts +1 -1
- package/dist/core/provisioning/synchronizer/entity-resolver.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/entity-resolver.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/junction-synchronizer.d.ts +1 -1
- package/dist/core/provisioning/synchronizer/junction-synchronizer.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/junction-synchronizer.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/permission/module.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/policy/module.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/realm/module.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/robot/module.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/role/module.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/root/module.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/scope/module.mjs.map +1 -1
- package/dist/core/provisioning/synchronizer/user/module.mjs.map +1 -1
- package/dist/core/security/policy/engine.mjs.map +1 -1
- package/dist/core/security/policy/evaluator.mjs.map +1 -1
- package/dist/index.mjs +4 -1
- package/dist/path.mjs.map +1 -1
- package/dist/swagger.json +3125 -1269
- package/dist/ui/client/.vite/ssr-manifest.json +30 -35
- package/dist/ui/client/assets/index-BdPtpN2t.js +66 -0
- package/dist/ui/client/index.html +1 -1
- package/dist/ui/server/server.js +24261 -972
- package/dist/utils/error.d.ts +13 -0
- package/dist/utils/error.d.ts.map +1 -1
- package/dist/utils/error.mjs +26 -23
- package/dist/utils/error.mjs.map +1 -1
- package/dist/utils/host.mjs.map +1 -1
- package/dist/utils/self-id.mjs.map +1 -1
- package/dist/utils/url.mjs.map +1 -1
- package/package.json +26 -27
- package/dist/core/entities/actor/index.d.ts +0 -2
- package/dist/core/entities/actor/index.d.ts.map +0 -1
- package/dist/core/entities/actor/types.d.ts +0 -7
- package/dist/core/entities/actor/types.d.ts.map +0 -1
- package/dist/core/entities/service.d.ts +0 -6
- package/dist/core/entities/service.d.ts.map +0 -1
- package/dist/core/entities/service.mjs +0 -21
- package/dist/core/entities/service.mjs.map +0 -1
- package/dist/core/entities/types.d.ts +0 -22
- package/dist/core/entities/types.d.ts.map +0 -1
- package/dist/core/oauth2/helpers/erorr.d.ts.map +0 -1
- package/dist/core/oauth2/helpers/erorr.mjs.map +0 -1
- package/dist/ui/client/assets/index-DJBdH-x_.js +0 -64
- /package/dist/{core/entities/actor → adapters/http/middleware/built-in/realm-resolver}/types.mjs +0 -0
- /package/dist/core/{entities → identity/permission/checker}/types.mjs +0 -0
- /package/dist/core/{entities/actor/index.mjs → identity/policy/checker/types.mjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":["MemoryCache","RedisCache","ModuleName","CacheInjectionKey","ConfigInjectionKey","CacheModule","name","dependencies","CACHE","CONFIG","setup","container","result","tryResolve","success","data","redis","register","useFactory"],"sources":["../../../../src/app/modules/cache/module.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 { MemoryCache, RedisCache } from '@authup/server-kit';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { CacheInjectionKey } from './constants.ts';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport type { IContainer } from 'eldin';\n\nexport class CacheModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n constructor() {\n this.name = ModuleName.CACHE;\n this.dependencies = [ModuleName.CONFIG];\n }\n\n async setup(container: IContainer): Promise<void> {\n const result = container.tryResolve(ConfigInjectionKey);\n if (!result.success || !result.data.redis) {\n container.register(CacheInjectionKey, { useFactory: () => new MemoryCache() });\n\n return;\n }\n\n container.register(CacheInjectionKey, { useFactory: () => new RedisCache(result.data.redis) });\n }\n}\n"],"mappings":";;;;;;AAcA,IAAaK,cAAb,MAAaA;CACAC;CAEAC;CAET,cAAc;
|
|
1
|
+
{"version":3,"file":"module.mjs","names":["MemoryCache","RedisCache","ModuleName","CacheInjectionKey","ConfigInjectionKey","CacheModule","name","dependencies","CACHE","CONFIG","setup","container","result","tryResolve","success","data","redis","register","useFactory"],"sources":["../../../../src/app/modules/cache/module.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 { MemoryCache, RedisCache } from '@authup/server-kit';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { CacheInjectionKey } from './constants.ts';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport type { IContainer } from 'eldin';\n\nexport class CacheModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n constructor() {\n this.name = ModuleName.CACHE;\n this.dependencies = [ModuleName.CONFIG];\n }\n\n async setup(container: IContainer): Promise<void> {\n const result = container.tryResolve(ConfigInjectionKey);\n if (!result.success || !result.data.redis) {\n container.register(CacheInjectionKey, { useFactory: () => new MemoryCache() });\n\n return;\n }\n\n container.register(CacheInjectionKey, { useFactory: () => new RedisCache(result.data.redis) });\n }\n}\n"],"mappings":";;;;;;AAcA,IAAaK,cAAb,MAAaA;CACAC;CAEAC;CAET,cAAc;EACV,KAAKD,OAAOJ,WAAWM;EACvB,KAAKD,eAAe,CAACL,WAAWO,MAAAA;CACpC;CAEA,MAAMC,MAAMC,WAAsC;EAC9C,MAAMC,SAASD,UAAUE,WAAWT,kBAAAA;EACpC,IAAI,CAACQ,OAAOE,WAAW,CAACF,OAAOG,KAAKC,OAAO;GACvCL,UAAUM,SAASd,mBAAmB,EAAEe,kBAAkB,IAAIlB,YAAAA,EAAc,CAAA;GAE5E;EACJ;EAEAW,UAAUM,SAASd,mBAAmB,EAAEe,kBAAkB,IAAIjB,WAAWW,OAAOG,KAAKC,KAAK,EAAE,CAAA;CAChG;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":["createDatabaseUniqueEntriesComponent","createOAuth2CleanerComponent","DatabaseInjectionKey","ModuleName","ComponentsModule","name","dependencies","COMPONENTS","DATABASE","setup","container","dataSource","resolve","DataSource","components","forEach","component","start"],"sources":["../../../../src/app/modules/components/module.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 { Component } from '../../../components/index.ts';\nimport { createDatabaseUniqueEntriesComponent, createOAuth2CleanerComponent } from '../../../components/index.ts';\nimport { DatabaseInjectionKey } from '../database/index.ts';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport type { IContainer } from 'eldin';\n\nexport class ComponentsModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n constructor() {\n this.name = ModuleName.COMPONENTS;\n this.dependencies = [ModuleName.DATABASE];\n }\n\n async setup(container: IContainer): Promise<void> {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n\n const components: Component[] = [\n createOAuth2CleanerComponent(dataSource),\n createDatabaseUniqueEntriesComponent(dataSource),\n ];\n\n components.forEach((component) => component.start());\n }\n\n // ----------------------------------------------------\n}\n"],"mappings":";;;;;;;AAcA,IAAaI,mBAAb,MAAaA;CACAC;CAEAC;CAET,cAAc;
|
|
1
|
+
{"version":3,"file":"module.mjs","names":["createDatabaseUniqueEntriesComponent","createOAuth2CleanerComponent","DatabaseInjectionKey","ModuleName","ComponentsModule","name","dependencies","COMPONENTS","DATABASE","setup","container","dataSource","resolve","DataSource","components","forEach","component","start"],"sources":["../../../../src/app/modules/components/module.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 { Component } from '../../../components/index.ts';\nimport { createDatabaseUniqueEntriesComponent, createOAuth2CleanerComponent } from '../../../components/index.ts';\nimport { DatabaseInjectionKey } from '../database/index.ts';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport type { IContainer } from 'eldin';\n\nexport class ComponentsModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n constructor() {\n this.name = ModuleName.COMPONENTS;\n this.dependencies = [ModuleName.DATABASE];\n }\n\n async setup(container: IContainer): Promise<void> {\n const dataSource = container.resolve(DatabaseInjectionKey.DataSource);\n\n const components: Component[] = [\n createOAuth2CleanerComponent(dataSource),\n createDatabaseUniqueEntriesComponent(dataSource),\n ];\n\n components.forEach((component) => component.start());\n }\n\n // ----------------------------------------------------\n}\n"],"mappings":";;;;;;;AAcA,IAAaI,mBAAb,MAAaA;CACAC;CAEAC;CAET,cAAc;EACV,KAAKD,OAAOF,WAAWI;EACvB,KAAKD,eAAe,CAACH,WAAWK,QAAAA;CACpC;CAEA,MAAMC,MAAMC,WAAsC;EAC9C,MAAMC,aAAaD,UAAUE,QAAQV,qBAAqBW,UAAU;EAOpEC,CAJIb,6BAA6BU,UAAAA,GAC7BX,qCAAqCW,UAAAA,CAGzCG,EAAWC,SAASC,cAAcA,UAAUC,MAAK,CAAA;CACrD;AAGJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","names":["TypedToken","ConfigInjectionKey","ConfigEnvironmentVariableName"],"sources":["../../../../src/app/modules/config/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 { TypedToken } from 'eldin';\nimport type { Config } from './types.ts';\n\nexport const ConfigInjectionKey = new TypedToken<Config>('Config');\n\nexport enum ConfigEnvironmentVariableName {\n NODE_ENV = 'NODE_ENV',\n WRITABLE_DIRECTORY_PATH = 'WRITABLE_DIRECTORY_PATH',\n\n REDIS = 'REDIS',\n SMTP = 'SMTP',\n\n HOST = 'HOST',\n PORT = 'PORT',\n PUBLIC_URL = 'PUBLIC_URL',\n TOKEN_ACCESS_MAX_AGE = 'TOKEN_ACCESS_MAX_AGE',\n TOKEN_REFRESH_MAX_AGE = 'TOKEN_REFRESH_MAX_AGE',\n REGISTRATION_ENABLED = 'REGISTRATION_ENABLED',\n EMAIL_VERIFICATION_ENABLED = 'EMAIL_VERIFICATION_ENABLED',\n PASSWORD_RECOVERY_ENABLED = 'PASSWORD_RECOVERY_ENABLED',\n\n CLIENT_AUTH_BASIC = 'CLIENT_AUTH_BASIC',\n CLIENT_SYSTEM_ENABLED = 'CLIENT_SYSTEM_ENABLED',\n CLIENT_SYSTEM_SECRET = 'CLIENT_SYSTEM_SECRET',\n CLIENT_SYSTEM_SECRET_RESET = 'CLIENT_SYSTEM_SECRET_RESET',\n\n USER_AUTH_BASIC = 'USER_AUTH_BASIC',\n USER_ADMIN_ENABLED = 'USER_ADMIN_ENABLED',\n USER_ADMIN_PASSWORD = 'USER_ADMIN_PASSWORD',\n USER_ADMIN_PASSWORD_RESET = 'USER_ADMIN_PASSWORD_RESET',\n\n ROBOT_AUTH_BASIC = 'ROBOT_AUTH_BASIC',\n ROBOT_ADMIN_ENABLED = 'ROBOT_ADMIN_ENABLED',\n ROBOT_ADMIN_SECRET = 'ROBOT_ADMIN_SECRET',\n ROBOT_ADMIN_SECRET_RESET = 'ROBOT_ADMIN_SECRET_RESET',\n\n PERMISSIONS = 'PERMISSIONS',\n PERMISSIONS_DEFAULT_POLICY_ASSIGNMENT = 'PERMISSIONS_DEFAULT_POLICY_ASSIGNMENT',\n}\n"],"mappings":";;AAUA,MAAaC,qBAAqB,IAAID,WAAmB,
|
|
1
|
+
{"version":3,"file":"constants.mjs","names":["TypedToken","ConfigInjectionKey","ConfigEnvironmentVariableName"],"sources":["../../../../src/app/modules/config/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 { TypedToken } from 'eldin';\nimport type { Config } from './types.ts';\n\nexport const ConfigInjectionKey = new TypedToken<Config>('Config');\n\nexport enum ConfigEnvironmentVariableName {\n NODE_ENV = 'NODE_ENV',\n WRITABLE_DIRECTORY_PATH = 'WRITABLE_DIRECTORY_PATH',\n\n REDIS = 'REDIS',\n SMTP = 'SMTP',\n\n HOST = 'HOST',\n PORT = 'PORT',\n PUBLIC_URL = 'PUBLIC_URL',\n TOKEN_ACCESS_MAX_AGE = 'TOKEN_ACCESS_MAX_AGE',\n TOKEN_REFRESH_MAX_AGE = 'TOKEN_REFRESH_MAX_AGE',\n REGISTRATION_ENABLED = 'REGISTRATION_ENABLED',\n EMAIL_VERIFICATION_ENABLED = 'EMAIL_VERIFICATION_ENABLED',\n PASSWORD_RECOVERY_ENABLED = 'PASSWORD_RECOVERY_ENABLED',\n\n CLIENT_AUTH_BASIC = 'CLIENT_AUTH_BASIC',\n CLIENT_SYSTEM_ENABLED = 'CLIENT_SYSTEM_ENABLED',\n CLIENT_SYSTEM_SECRET = 'CLIENT_SYSTEM_SECRET',\n CLIENT_SYSTEM_SECRET_RESET = 'CLIENT_SYSTEM_SECRET_RESET',\n\n USER_AUTH_BASIC = 'USER_AUTH_BASIC',\n USER_ADMIN_ENABLED = 'USER_ADMIN_ENABLED',\n USER_ADMIN_PASSWORD = 'USER_ADMIN_PASSWORD',\n USER_ADMIN_PASSWORD_RESET = 'USER_ADMIN_PASSWORD_RESET',\n\n ROBOT_AUTH_BASIC = 'ROBOT_AUTH_BASIC',\n ROBOT_ADMIN_ENABLED = 'ROBOT_ADMIN_ENABLED',\n ROBOT_ADMIN_SECRET = 'ROBOT_ADMIN_SECRET',\n ROBOT_ADMIN_SECRET_RESET = 'ROBOT_ADMIN_SECRET_RESET',\n\n PERMISSIONS = 'PERMISSIONS',\n PERMISSIONS_DEFAULT_POLICY_ASSIGNMENT = 'PERMISSIONS_DEFAULT_POLICY_ASSIGNMENT',\n}\n"],"mappings":";;AAUA,MAAaC,qBAAqB,IAAID,WAAmB,QAAA;AAEzD,IAAO,gCAAKE,yBAAAA,+BAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":["ModuleName","ConfigInjectionKey","normalizeConfig","readConfigRaw","ConfigModule","name","instance","config","CONFIG","setup","container","read","register","useValue","options","raw","env"],"sources":["../../../../src/app/modules/config/module.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 { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { ConfigInjectionKey } from './constants.ts';\nimport type { IContainer } from 'eldin';\nimport { normalizeConfig } from './normalize.ts';\nimport type { ConfigRawReadOptions } from './read/index.ts';\nimport { readConfigRaw } from './read/index.ts';\nimport type { Config } from './types.ts';\n\nexport class ConfigModule implements IModule {\n readonly name: string;\n\n protected instance : Config | undefined;\n\n // ----------------------------------------------------\n\n constructor(config?: Config) {\n this.name = ModuleName.CONFIG;\n this.instance = config;\n }\n\n // ----------------------------------------------------\n\n async setup(container: IContainer): Promise<void> {\n let instance : Config;\n if (this.instance) {\n instance = this.instance;\n } else {\n instance = await this.read();\n }\n\n container.register(ConfigInjectionKey, { useValue: instance });\n }\n\n // ----------------------------------------------------\n\n /**\n * Read config from env and fs.\n *\n * @param options\n */\n async read(options: ConfigRawReadOptions = {}) : Promise<Config> {\n const raw = await readConfigRaw({\n env: true,\n ...options,\n });\n\n return normalizeConfig(raw);\n }\n}\n"],"mappings":";;;;;;AAgBA,IAAaI,eAAb,MAAaA;CACAC;CAECC;CAIV,YAAYC,QAAiB;
|
|
1
|
+
{"version":3,"file":"module.mjs","names":["ModuleName","ConfigInjectionKey","normalizeConfig","readConfigRaw","ConfigModule","name","instance","config","CONFIG","setup","container","read","register","useValue","options","raw","env"],"sources":["../../../../src/app/modules/config/module.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 { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { ConfigInjectionKey } from './constants.ts';\nimport type { IContainer } from 'eldin';\nimport { normalizeConfig } from './normalize.ts';\nimport type { ConfigRawReadOptions } from './read/index.ts';\nimport { readConfigRaw } from './read/index.ts';\nimport type { Config } from './types.ts';\n\nexport class ConfigModule implements IModule {\n readonly name: string;\n\n protected instance : Config | undefined;\n\n // ----------------------------------------------------\n\n constructor(config?: Config) {\n this.name = ModuleName.CONFIG;\n this.instance = config;\n }\n\n // ----------------------------------------------------\n\n async setup(container: IContainer): Promise<void> {\n let instance : Config;\n if (this.instance) {\n instance = this.instance;\n } else {\n instance = await this.read();\n }\n\n container.register(ConfigInjectionKey, { useValue: instance });\n }\n\n // ----------------------------------------------------\n\n /**\n * Read config from env and fs.\n *\n * @param options\n */\n async read(options: ConfigRawReadOptions = {}) : Promise<Config> {\n const raw = await readConfigRaw({\n env: true,\n ...options,\n });\n\n return normalizeConfig(raw);\n }\n}\n"],"mappings":";;;;;;AAgBA,IAAaI,eAAb,MAAaA;CACAC;CAECC;CAIV,YAAYC,QAAiB;EACzB,KAAKF,OAAOL,WAAWQ;EACvB,KAAKF,WAAWC;CACpB;CAIA,MAAME,MAAMC,WAAsC;EAC9C,IAAIJ;EACJ,IAAI,KAAKA,UACLA,WAAW,KAAKA;OAEhBA,WAAW,MAAM,KAAKK,KAAI;EAG9BD,UAAUE,SAASX,oBAAoB,EAAEY,UAAUP,SAAS,CAAA;CAChE;;;;;IASA,MAAMK,KAAKG,UAAgC,CAAC,GAAqB;EAM7D,OAAOZ,gBAAgBa,MALLZ,cAAc;GAC5Ba,KAAK;GACL,GAAGF;EACP,CAAA,CAEuBC;CAC3B;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.mjs","names":["read","path","process","EnvironmentName","toPublicHost","parseConfig","normalizeConfig","input","parsed","writableDirectoryPath","join","cwd","port","host","publicUrl","regex","match","env","DEVELOPMENT","rootPath","logger","redis","smtp","middlewareBody","middlewareCookie","middlewareCors","middlewarePrometheus","middlewareQuery","middlewareRateLimit","middlewareSwagger","tokenRefreshMaxAge","tokenAccessMaxAge","registrationEnabled","emailVerificationEnabled","passwordRecoveryEnabled","clientAuthBasic","clientSystemEnabled","clientSystemSecret","clientSystemSecretReset","userAuthBasic","userAdminEnabled","userAdminPassword","userAdminPasswordReset","robotAuthBasic","robotAdminEnabled","robotAdminSecret","robotAdminSecretReset","permissions","permissionsDefaultPolicyAssignment"],"sources":["../../../../src/app/modules/config/normalize.ts"],"sourcesContent":["/*\n * Copyright (c) 2023-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 { read } from 'envix';\nimport path from 'node:path';\nimport process from 'node:process';\nimport { EnvironmentName } from '@authup/kit';\nimport { toPublicHost } from '../../../utils/host.ts';\nimport { parseConfig } from './parse.ts';\nimport type { Config, ConfigInput } from './types.ts';\n\nexport function normalizeConfig(input: ConfigInput = {}): Config {\n const parsed = parseConfig(input);\n\n const writableDirectoryPath = parsed.writableDirectoryPath ||\n path.join(process.cwd(), 'writable');\n\n const port = parsed.port || 3001;\n let host = parsed.host || '0.0.0.0';\n\n let publicUrl : string;\n if (parsed.publicUrl) {\n publicUrl = parsed.publicUrl;\n } else {\n const regex = /^([^:]+)(?::(\\d+))?$/;\n const match = host.match(regex);\n if (match) {\n [, host] = match;\n publicUrl = `http://${toPublicHost(host)}:${match[2] || port}`;\n } else {\n publicUrl = `http://${toPublicHost(host)}:${port}`;\n }\n }\n\n return {\n env: read('NODE_ENV', EnvironmentName.DEVELOPMENT),\n rootPath: process.cwd(),\n writableDirectoryPath,\n\n logger: true,\n redis: false,\n smtp: false,\n\n port,\n host,\n publicUrl,\n\n middlewareBody: true,\n middlewareCookie: true,\n middlewareCors: true,\n middlewarePrometheus: true,\n middlewareQuery: true,\n middlewareRateLimit: true,\n middlewareSwagger: true,\n tokenRefreshMaxAge: 259_200,\n tokenAccessMaxAge: 3_600,\n registrationEnabled: false,\n emailVerificationEnabled: false,\n passwordRecoveryEnabled: false,\n\n clientAuthBasic: false,\n clientSystemEnabled: false,\n clientSystemSecret: 'start123',\n clientSystemSecretReset: false,\n\n userAuthBasic: false,\n userAdminEnabled: true,\n userAdminPassword: 'start123',\n userAdminPasswordReset: false,\n\n robotAuthBasic: false,\n robotAdminEnabled: false,\n robotAdminSecret: 'start123',\n robotAdminSecretReset: false,\n\n permissions: [],\n permissionsDefaultPolicyAssignment: true,\n ...parsed,\n };\n}\n"],"mappings":";;;;;;;AAeA,SAAgBM,gBAAgBC,QAAqB,
|
|
1
|
+
{"version":3,"file":"normalize.mjs","names":["read","path","process","EnvironmentName","toPublicHost","parseConfig","normalizeConfig","input","parsed","writableDirectoryPath","join","cwd","port","host","publicUrl","regex","match","env","DEVELOPMENT","rootPath","logger","redis","smtp","middlewareBody","middlewareCookie","middlewareCors","middlewarePrometheus","middlewareQuery","middlewareRateLimit","middlewareSwagger","tokenRefreshMaxAge","tokenAccessMaxAge","registrationEnabled","emailVerificationEnabled","passwordRecoveryEnabled","clientAuthBasic","clientSystemEnabled","clientSystemSecret","clientSystemSecretReset","userAuthBasic","userAdminEnabled","userAdminPassword","userAdminPasswordReset","robotAuthBasic","robotAdminEnabled","robotAdminSecret","robotAdminSecretReset","permissions","permissionsDefaultPolicyAssignment"],"sources":["../../../../src/app/modules/config/normalize.ts"],"sourcesContent":["/*\n * Copyright (c) 2023-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 { read } from 'envix';\nimport path from 'node:path';\nimport process from 'node:process';\nimport { EnvironmentName } from '@authup/kit';\nimport { toPublicHost } from '../../../utils/host.ts';\nimport { parseConfig } from './parse.ts';\nimport type { Config, ConfigInput } from './types.ts';\n\nexport function normalizeConfig(input: ConfigInput = {}): Config {\n const parsed = parseConfig(input);\n\n const writableDirectoryPath = parsed.writableDirectoryPath ||\n path.join(process.cwd(), 'writable');\n\n const port = parsed.port || 3001;\n let host = parsed.host || '0.0.0.0';\n\n let publicUrl : string;\n if (parsed.publicUrl) {\n publicUrl = parsed.publicUrl;\n } else {\n const regex = /^([^:]+)(?::(\\d+))?$/;\n const match = host.match(regex);\n if (match) {\n [, host] = match;\n publicUrl = `http://${toPublicHost(host)}:${match[2] || port}`;\n } else {\n publicUrl = `http://${toPublicHost(host)}:${port}`;\n }\n }\n\n return {\n env: read('NODE_ENV', EnvironmentName.DEVELOPMENT),\n rootPath: process.cwd(),\n writableDirectoryPath,\n\n logger: true,\n redis: false,\n smtp: false,\n\n port,\n host,\n publicUrl,\n\n middlewareBody: true,\n middlewareCookie: true,\n middlewareCors: true,\n middlewarePrometheus: true,\n middlewareQuery: true,\n middlewareRateLimit: true,\n middlewareSwagger: true,\n tokenRefreshMaxAge: 259_200,\n tokenAccessMaxAge: 3_600,\n registrationEnabled: false,\n emailVerificationEnabled: false,\n passwordRecoveryEnabled: false,\n\n clientAuthBasic: false,\n clientSystemEnabled: false,\n clientSystemSecret: 'start123',\n clientSystemSecretReset: false,\n\n userAuthBasic: false,\n userAdminEnabled: true,\n userAdminPassword: 'start123',\n userAdminPasswordReset: false,\n\n robotAuthBasic: false,\n robotAdminEnabled: false,\n robotAdminSecret: 'start123',\n robotAdminSecretReset: false,\n\n permissions: [],\n permissionsDefaultPolicyAssignment: true,\n ...parsed,\n };\n}\n"],"mappings":";;;;;;;AAeA,SAAgBM,gBAAgBC,QAAqB,CAAC,GAAC;CACnD,MAAMC,SAASH,YAAYE,KAAAA;CAE3B,MAAME,wBAAwBD,OAAOC,yBACjCR,KAAKS,KAAKR,QAAQS,IAAG,GAAI,UAAA;CAE7B,MAAMC,OAAOJ,OAAOI,QAAQ;CAC5B,IAAIC,OAAOL,OAAOK,QAAQ;CAE1B,IAAIC;CACJ,IAAIN,OAAOM,WACPA,YAAYN,OAAOM;MAChB;EAEH,MAAME,QAAQH,KAAKG,MAAMD,sBAAAA;EACzB,IAAIC,OAAO;GACP,GAAGH,QAAQG;GACXF,YAAY,UAAUV,aAAaS,IAAAA,EAAM,GAAGG,MAAM,MAAMJ;EAC5D,OACIE,YAAY,UAAUV,aAAaS,IAAAA,EAAM,GAAGD;CAEpD;CAEA,OAAO;EACHK,KAAKjB,KAAK,YAAYG,gBAAgBe,WAAW;EACjDC,UAAUjB,QAAQS,IAAG;EACrBF;EAEAW,QAAQ;EACRC,OAAO;EACPC,MAAM;EAENV;EACAC;EACAC;EAEAS,gBAAgB;EAChBC,kBAAkB;EAClBC,gBAAgB;EAChBC,sBAAsB;EACtBC,iBAAiB;EACjBC,qBAAqB;EACrBC,mBAAmB;EACnBC,oBAAoB;EACpBC,mBAAmB;EACnBC,qBAAqB;EACrBC,0BAA0B;EAC1BC,yBAAyB;EAEzBC,iBAAiB;EACjBC,qBAAqB;EACrBC,oBAAoB;EACpBC,yBAAyB;EAEzBC,eAAe;EACfC,kBAAkB;EAClBC,mBAAmB;EACnBC,wBAAwB;EAExBC,gBAAgB;EAChBC,mBAAmB;EACnBC,kBAAkB;EAClBC,uBAAuB;EAEvBC,aAAa,CAAA;EACbC,oCAAoC;EACpC,GAAGxC;CACP;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.mjs","names":["isObject","zod","parseConfig","input","schema","object","env","string","optional","rootPath","writableDirectoryPath","logger","boolean","db","custom","value","redis","lazy","union","any","smtp","port","number","nonnegative","host","publicUrl","url","middlewareBody","or","record","middlewareCors","middlewareCookie","middlewareQuery","middlewarePrometheus","middlewareRateLimit","middlewareSwagger","tokenAccessMaxAge","tokenRefreshMaxAge","registrationEnabled","emailVerificationEnabled","passwordRecoveryEnabled","clientAuthBasic","clientSystemEnabled","clientSystemSecret","min","max","clientSystemSecretReset","userAuthBasic","userAdminEnabled","userAdminPassword","userAdminPasswordReset","robotAuthBasic","robotAdminEnabled","robotAdminSecret","robotAdminSecretReset","permissions","array","permissionsDefaultPolicyAssignment","parse"],"sources":["../../../../src/app/modules/config/parse.ts"],"sourcesContent":["/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information.optional(),\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/kit';\nimport type { BetterSqlite3ConnectionOptions } from 'typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js';\nimport type { MysqlConnectionOptions } from 'typeorm/driver/mysql/MysqlConnectionOptions.js';\nimport type { PostgresConnectionOptions } from 'typeorm/driver/postgres/PostgresConnectionOptions.js';\nimport zod from 'zod';\nimport type { Config, ConfigInput } from './types.ts';\n\nexport function parseConfig(input: unknown = {}): ConfigInput {\n const schema = zod.object({\n env: zod.string().optional(),\n rootPath: zod.string().optional(),\n writableDirectoryPath: zod.string().optional(),\n\n logger: zod.boolean().optional(),\n db: zod.custom<MysqlConnectionOptions | PostgresConnectionOptions | BetterSqlite3ConnectionOptions>(\n (value) => isObject(value),\n ).optional(),\n redis: zod.lazy(() => zod.union([\n zod.string().optional(),\n zod.boolean().optional(),\n zod.any().optional(),\n ])).optional(),\n smtp: zod.lazy(() => zod.union([\n zod.string().optional(),\n zod.boolean().optional(),\n zod.any().optional(),\n ])).optional(),\n port: zod.number()\n .nonnegative().optional(),\n host: zod.string().optional(),\n publicUrl: zod.string()\n .url().optional(),\n middlewareBody: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareCors: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareCookie: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareQuery: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewarePrometheus: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareRateLimit: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareSwagger: zod.boolean().optional(),\n\n tokenAccessMaxAge: zod.number()\n .nonnegative().optional(),\n tokenRefreshMaxAge: zod.number()\n .nonnegative().optional(),\n registrationEnabled: zod.boolean().optional(),\n emailVerificationEnabled: zod.boolean().optional(),\n passwordRecoveryEnabled: zod.boolean().optional(),\n\n clientAuthBasic: zod.boolean().optional(),\n clientSystemEnabled: zod.boolean().optional(),\n clientSystemSecret: zod.string()\n .min(3)\n .max(256).optional(),\n clientSystemSecretReset: zod.boolean().optional(),\n\n userAuthBasic: zod.boolean().optional(),\n userAdminEnabled: zod.boolean().optional(),\n userAdminPassword: zod.string()\n .min(3)\n .max(256).optional(),\n userAdminPasswordReset: zod.boolean().optional(),\n\n robotAuthBasic: zod.boolean().optional(),\n robotAdminEnabled: zod.boolean().optional(),\n robotAdminSecret: zod.string()\n .min(3)\n .max(256).optional(),\n robotAdminSecretReset: zod.boolean().optional(),\n\n permissions: zod.string()\n .or(zod.array(zod.string()))\n .optional(),\n\n permissionsDefaultPolicyAssignment: zod.boolean().optional(),\n } satisfies Record<keyof Config, any>);\n\n return schema.parse(input);\n}\n"],"mappings":";;;AAcA,SAAgBE,YAAYC,QAAiB,
|
|
1
|
+
{"version":3,"file":"parse.mjs","names":["isObject","zod","parseConfig","input","schema","object","env","string","optional","rootPath","writableDirectoryPath","logger","boolean","db","custom","value","redis","lazy","union","any","smtp","port","number","nonnegative","host","publicUrl","url","middlewareBody","or","record","middlewareCors","middlewareCookie","middlewareQuery","middlewarePrometheus","middlewareRateLimit","middlewareSwagger","tokenAccessMaxAge","tokenRefreshMaxAge","registrationEnabled","emailVerificationEnabled","passwordRecoveryEnabled","clientAuthBasic","clientSystemEnabled","clientSystemSecret","min","max","clientSystemSecretReset","userAuthBasic","userAdminEnabled","userAdminPassword","userAdminPasswordReset","robotAuthBasic","robotAdminEnabled","robotAdminSecret","robotAdminSecretReset","permissions","array","permissionsDefaultPolicyAssignment","parse"],"sources":["../../../../src/app/modules/config/parse.ts"],"sourcesContent":["/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information.optional(),\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/kit';\nimport type { BetterSqlite3ConnectionOptions } from 'typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js';\nimport type { MysqlConnectionOptions } from 'typeorm/driver/mysql/MysqlConnectionOptions.js';\nimport type { PostgresConnectionOptions } from 'typeorm/driver/postgres/PostgresConnectionOptions.js';\nimport zod from 'zod';\nimport type { Config, ConfigInput } from './types.ts';\n\nexport function parseConfig(input: unknown = {}): ConfigInput {\n const schema = zod.object({\n env: zod.string().optional(),\n rootPath: zod.string().optional(),\n writableDirectoryPath: zod.string().optional(),\n\n logger: zod.boolean().optional(),\n db: zod.custom<MysqlConnectionOptions | PostgresConnectionOptions | BetterSqlite3ConnectionOptions>(\n (value) => isObject(value),\n ).optional(),\n redis: zod.lazy(() => zod.union([\n zod.string().optional(),\n zod.boolean().optional(),\n zod.any().optional(),\n ])).optional(),\n smtp: zod.lazy(() => zod.union([\n zod.string().optional(),\n zod.boolean().optional(),\n zod.any().optional(),\n ])).optional(),\n port: zod.number()\n .nonnegative().optional(),\n host: zod.string().optional(),\n publicUrl: zod.string()\n .url().optional(),\n middlewareBody: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareCors: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareCookie: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareQuery: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewarePrometheus: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareRateLimit: zod.boolean()\n .or(zod.record(zod.string(), zod.any())).optional(),\n middlewareSwagger: zod.boolean().optional(),\n\n tokenAccessMaxAge: zod.number()\n .nonnegative().optional(),\n tokenRefreshMaxAge: zod.number()\n .nonnegative().optional(),\n registrationEnabled: zod.boolean().optional(),\n emailVerificationEnabled: zod.boolean().optional(),\n passwordRecoveryEnabled: zod.boolean().optional(),\n\n clientAuthBasic: zod.boolean().optional(),\n clientSystemEnabled: zod.boolean().optional(),\n clientSystemSecret: zod.string()\n .min(3)\n .max(256).optional(),\n clientSystemSecretReset: zod.boolean().optional(),\n\n userAuthBasic: zod.boolean().optional(),\n userAdminEnabled: zod.boolean().optional(),\n userAdminPassword: zod.string()\n .min(3)\n .max(256).optional(),\n userAdminPasswordReset: zod.boolean().optional(),\n\n robotAuthBasic: zod.boolean().optional(),\n robotAdminEnabled: zod.boolean().optional(),\n robotAdminSecret: zod.string()\n .min(3)\n .max(256).optional(),\n robotAdminSecretReset: zod.boolean().optional(),\n\n permissions: zod.string()\n .or(zod.array(zod.string()))\n .optional(),\n\n permissionsDefaultPolicyAssignment: zod.boolean().optional(),\n } satisfies Record<keyof Config, any>);\n\n return schema.parse(input);\n}\n"],"mappings":";;;AAcA,SAAgBE,YAAYC,QAAiB,CAAC,GAAC;CA2E3C,OA1EeF,IAAII,OAAO;EACtBC,KAAKL,IAAIM,OAAM,EAAGC,SAAQ;EAC1BC,UAAUR,IAAIM,OAAM,EAAGC,SAAQ;EAC/BE,uBAAuBT,IAAIM,OAAM,EAAGC,SAAQ;EAE5CG,QAAQV,IAAIW,QAAO,EAAGJ,SAAQ;EAC9BK,IAAIZ,IAAIa,QACHC,UAAUf,SAASe,KAAAA,CAAAA,EACtBP,SAAQ;EACVQ,OAAOf,IAAIgB,WAAWhB,IAAIiB,MAAM;GAC5BjB,IAAIM,OAAM,EAAGC,SAAQ;GACrBP,IAAIW,QAAO,EAAGJ,SAAQ;GACtBP,IAAIkB,IAAG,EAAGX,SAAQ;GACrB,CAAA,EAAGA,SAAQ;EACZY,MAAMnB,IAAIgB,WAAWhB,IAAIiB,MAAM;GAC3BjB,IAAIM,OAAM,EAAGC,SAAQ;GACrBP,IAAIW,QAAO,EAAGJ,SAAQ;GACtBP,IAAIkB,IAAG,EAAGX,SAAQ;GACrB,CAAA,EAAGA,SAAQ;EACZa,MAAMpB,IAAIqB,OAAM,EACXC,YAAW,EAAGf,SAAQ;EAC3BgB,MAAMvB,IAAIM,OAAM,EAAGC,SAAQ;EAC3BiB,WAAWxB,IAAIM,OAAM,EAChBmB,IAAG,EAAGlB,SAAQ;EACnBmB,gBAAgB1B,IAAIW,QAAO,EACtBgB,GAAG3B,IAAI4B,OAAO5B,IAAIM,OAAM,GAAIN,IAAIkB,IAAG,CAAA,CAAA,EAAKX,SAAQ;EACrDsB,gBAAgB7B,IAAIW,QAAO,EACtBgB,GAAG3B,IAAI4B,OAAO5B,IAAIM,OAAM,GAAIN,IAAIkB,IAAG,CAAA,CAAA,EAAKX,SAAQ;EACrDuB,kBAAkB9B,IAAIW,QAAO,EACxBgB,GAAG3B,IAAI4B,OAAO5B,IAAIM,OAAM,GAAIN,IAAIkB,IAAG,CAAA,CAAA,EAAKX,SAAQ;EACrDwB,iBAAiB/B,IAAIW,QAAO,EACvBgB,GAAG3B,IAAI4B,OAAO5B,IAAIM,OAAM,GAAIN,IAAIkB,IAAG,CAAA,CAAA,EAAKX,SAAQ;EACrDyB,sBAAsBhC,IAAIW,QAAO,EAC5BgB,GAAG3B,IAAI4B,OAAO5B,IAAIM,OAAM,GAAIN,IAAIkB,IAAG,CAAA,CAAA,EAAKX,SAAQ;EACrD0B,qBAAqBjC,IAAIW,QAAO,EAC3BgB,GAAG3B,IAAI4B,OAAO5B,IAAIM,OAAM,GAAIN,IAAIkB,IAAG,CAAA,CAAA,EAAKX,SAAQ;EACrD2B,mBAAmBlC,IAAIW,QAAO,EAAGJ,SAAQ;EAEzC4B,mBAAmBnC,IAAIqB,OAAM,EACxBC,YAAW,EAAGf,SAAQ;EAC3B6B,oBAAoBpC,IAAIqB,OAAM,EACzBC,YAAW,EAAGf,SAAQ;EAC3B8B,qBAAqBrC,IAAIW,QAAO,EAAGJ,SAAQ;EAC3C+B,0BAA0BtC,IAAIW,QAAO,EAAGJ,SAAQ;EAChDgC,yBAAyBvC,IAAIW,QAAO,EAAGJ,SAAQ;EAE/CiC,iBAAiBxC,IAAIW,QAAO,EAAGJ,SAAQ;EACvCkC,qBAAqBzC,IAAIW,QAAO,EAAGJ,SAAQ;EAC3CmC,oBAAoB1C,IAAIM,OAAM,EACzBqC,IAAI,CAAA,EACJC,IAAI,GAAA,EAAKrC,SAAQ;EACtBsC,yBAAyB7C,IAAIW,QAAO,EAAGJ,SAAQ;EAE/CuC,eAAe9C,IAAIW,QAAO,EAAGJ,SAAQ;EACrCwC,kBAAkB/C,IAAIW,QAAO,EAAGJ,SAAQ;EACxCyC,mBAAmBhD,IAAIM,OAAM,EACxBqC,IAAI,CAAA,EACJC,IAAI,GAAA,EAAKrC,SAAQ;EACtB0C,wBAAwBjD,IAAIW,QAAO,EAAGJ,SAAQ;EAE9C2C,gBAAgBlD,IAAIW,QAAO,EAAGJ,SAAQ;EACtC4C,mBAAmBnD,IAAIW,QAAO,EAAGJ,SAAQ;EACzC6C,kBAAkBpD,IAAIM,OAAM,EACvBqC,IAAI,CAAA,EACJC,IAAI,GAAA,EAAKrC,SAAQ;EACtB8C,uBAAuBrD,IAAIW,QAAO,EAAGJ,SAAQ;EAE7C+C,aAAatD,IAAIM,OAAM,EAClBqB,GAAG3B,IAAIuD,MAAMvD,IAAIM,OAAM,CAAA,CAAA,EACvBC,SAAQ;EAEbiD,oCAAoCxD,IAAIW,QAAO,EAAGJ,SAAQ;CAC9D,CAEOJ,EAAOsD,MAAMvD,KAAAA;AACxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.mjs","names":["oneOf","read","readArray","readBool","readInt","hasEnvDataSourceOptions","readDataSourceOptionsFromEnv","ConfigEnvironmentVariableName","readConfigRawFromEnv","options","env","NODE_ENV","writableDirectoryPath","WRITABLE_DIRECTORY_PATH","db","redis","REDIS","smtp","SMTP","host","HOST","port","PORT","Number","parseInt","publicURL","PUBLIC_URL","publicUrl","tokenAccessMaxAge","TOKEN_ACCESS_MAX_AGE","tokenRefreshMaxAge","TOKEN_REFRESH_MAX_AGE","registrationEnabled","REGISTRATION_ENABLED","emailVerificationEnabled","EMAIL_VERIFICATION_ENABLED","passwordRecoveryEnabled","PASSWORD_RECOVERY_ENABLED","clientBasicAuth","CLIENT_AUTH_BASIC","clientAuthBasic","clientSystemEnabled","CLIENT_SYSTEM_ENABLED","clientAdminSecret","CLIENT_SYSTEM_SECRET","clientSystemSecret","clientAdminSecretReset","CLIENT_SYSTEM_SECRET_RESET","clientSystemSecretReset","userBasicAuth","USER_AUTH_BASIC","userAuthBasic","userAdminEnabled","USER_ADMIN_ENABLED","userAdminPassword","USER_ADMIN_PASSWORD","userAdminPasswordReset","USER_ADMIN_PASSWORD_RESET","robotBasicAuth","ROBOT_AUTH_BASIC","robotAuthBasic","robotAdminEnabled","ROBOT_ADMIN_ENABLED","robotAdminSecret","ROBOT_ADMIN_SECRET","robotAdminSecretReset","ROBOT_ADMIN_SECRET_RESET","permissions","PERMISSIONS","length","permissionsDefaultPolicyAssignment","PERMISSIONS_DEFAULT_POLICY_ASSIGNMENT"],"sources":["../../../../../src/app/modules/config/read/env.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2024.\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 {\n oneOf, \n read, \n readArray, \n readBool, \n readInt,\n} from 'envix';\nimport { hasEnvDataSourceOptions, readDataSourceOptionsFromEnv } from 'typeorm-extension';\nimport type { BetterSqlite3ConnectionOptions } from 'typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js';\nimport type { MysqlConnectionOptions } from 'typeorm/driver/mysql/MysqlConnectionOptions.js';\nimport type { PostgresConnectionOptions } from 'typeorm/driver/postgres/PostgresConnectionOptions.js';\n\nimport { ConfigEnvironmentVariableName } from '../constants.ts';\nimport type { ConfigInput } from '../types.ts';\n\nexport function readConfigRawFromEnv() : ConfigInput {\n const options : ConfigInput = {};\n\n const env = read(ConfigEnvironmentVariableName.NODE_ENV);\n if (env) {\n options.env = env;\n }\n\n const writableDirectoryPath = read(ConfigEnvironmentVariableName.WRITABLE_DIRECTORY_PATH);\n if (writableDirectoryPath) {\n options.writableDirectoryPath = writableDirectoryPath;\n }\n\n // -------------------------------------------------------------\n\n if (hasEnvDataSourceOptions()) {\n // todo: type casting should be avoided\n options.db = readDataSourceOptionsFromEnv() as MysqlConnectionOptions |\n PostgresConnectionOptions |\n BetterSqlite3ConnectionOptions;\n }\n\n const redis = oneOf([\n readBool(ConfigEnvironmentVariableName.REDIS),\n read(ConfigEnvironmentVariableName.REDIS),\n ]);\n if (typeof redis !== 'undefined') {\n options.redis = redis;\n }\n\n const smtp = oneOf([\n readBool(ConfigEnvironmentVariableName.SMTP),\n read(ConfigEnvironmentVariableName.SMTP),\n ]);\n if (typeof smtp !== 'undefined') {\n options.smtp = smtp;\n }\n\n // -------------------------------------------------------------\n\n const host = read(ConfigEnvironmentVariableName.HOST);\n if (host) {\n options.host = host;\n }\n\n const port = readInt(ConfigEnvironmentVariableName.PORT);\n if (port) {\n options.port = Number.parseInt(`${port}`, 10);\n }\n\n const publicURL = read(ConfigEnvironmentVariableName.PUBLIC_URL);\n if (publicURL) {\n options.publicUrl = publicURL;\n }\n\n const tokenAccessMaxAge = readInt(ConfigEnvironmentVariableName.TOKEN_ACCESS_MAX_AGE);\n if (typeof tokenAccessMaxAge !== 'undefined') {\n options.tokenAccessMaxAge = tokenAccessMaxAge;\n }\n\n const tokenRefreshMaxAge = readInt(ConfigEnvironmentVariableName.TOKEN_REFRESH_MAX_AGE);\n if (typeof tokenRefreshMaxAge !== 'undefined') {\n options.tokenRefreshMaxAge = tokenRefreshMaxAge;\n }\n\n const registrationEnabled = readBool(ConfigEnvironmentVariableName.REGISTRATION_ENABLED);\n if (typeof registrationEnabled !== 'undefined') {\n options.registrationEnabled = registrationEnabled;\n }\n\n const emailVerificationEnabled = readBool(ConfigEnvironmentVariableName.EMAIL_VERIFICATION_ENABLED);\n if (typeof emailVerificationEnabled !== 'undefined') {\n options.emailVerificationEnabled = emailVerificationEnabled;\n }\n\n const passwordRecoveryEnabled = readBool(ConfigEnvironmentVariableName.PASSWORD_RECOVERY_ENABLED);\n if (typeof passwordRecoveryEnabled !== 'undefined') {\n options.passwordRecoveryEnabled = passwordRecoveryEnabled;\n }\n\n // ---------------------------------------------------------------\n\n const clientBasicAuth = readBool(ConfigEnvironmentVariableName.CLIENT_AUTH_BASIC);\n if (typeof clientBasicAuth !== 'undefined') {\n options.clientAuthBasic = clientBasicAuth;\n }\n\n const clientSystemEnabled = readBool(ConfigEnvironmentVariableName.CLIENT_SYSTEM_ENABLED);\n if (typeof clientSystemEnabled !== 'undefined') {\n options.clientSystemEnabled = clientSystemEnabled;\n }\n\n const clientAdminSecret = read(ConfigEnvironmentVariableName.CLIENT_SYSTEM_SECRET);\n if (clientAdminSecret) {\n options.clientSystemSecret = clientAdminSecret;\n }\n\n const clientAdminSecretReset = readBool(ConfigEnvironmentVariableName.CLIENT_SYSTEM_SECRET_RESET);\n if (typeof clientAdminSecretReset !== 'undefined') {\n options.clientSystemSecretReset = clientAdminSecretReset;\n }\n\n // ---------------------------------------------------------------\n\n const userBasicAuth = readBool(ConfigEnvironmentVariableName.USER_AUTH_BASIC);\n if (typeof userBasicAuth !== 'undefined') {\n options.userAuthBasic = userBasicAuth;\n }\n\n const userAdminEnabled = readBool(ConfigEnvironmentVariableName.USER_ADMIN_ENABLED);\n if (typeof userAdminEnabled !== 'undefined') {\n options.userAdminEnabled = userAdminEnabled;\n }\n\n const userAdminPassword = read(ConfigEnvironmentVariableName.USER_ADMIN_PASSWORD);\n if (userAdminPassword) {\n options.userAdminPassword = userAdminPassword;\n }\n\n const userAdminPasswordReset = readBool(ConfigEnvironmentVariableName.USER_ADMIN_PASSWORD_RESET);\n if (typeof userAdminPasswordReset !== 'undefined') {\n options.userAdminPasswordReset = userAdminPasswordReset;\n }\n\n // ---------------------------------------------------------------\n\n const robotBasicAuth = readBool(ConfigEnvironmentVariableName.ROBOT_AUTH_BASIC);\n if (typeof robotBasicAuth !== 'undefined') {\n options.robotAuthBasic = robotBasicAuth;\n }\n\n const robotAdminEnabled = readBool(ConfigEnvironmentVariableName.ROBOT_ADMIN_ENABLED);\n if (typeof robotAdminEnabled !== 'undefined') {\n options.robotAdminEnabled = robotAdminEnabled;\n }\n\n const robotAdminSecret = read(ConfigEnvironmentVariableName.ROBOT_ADMIN_SECRET);\n if (robotAdminSecret) {\n options.robotAdminSecret = robotAdminSecret;\n }\n\n const robotAdminSecretReset = readBool(ConfigEnvironmentVariableName.ROBOT_ADMIN_SECRET_RESET);\n if (typeof robotAdminSecretReset !== 'undefined') {\n options.robotAdminSecretReset = robotAdminSecretReset;\n }\n\n // ---------------------------------------------------------------\n\n const permissions = readArray(ConfigEnvironmentVariableName.PERMISSIONS);\n if (permissions && permissions.length > 0) {\n options.permissions = permissions;\n }\n\n const permissionsDefaultPolicyAssignment = readBool(ConfigEnvironmentVariableName.PERMISSIONS_DEFAULT_POLICY_ASSIGNMENT);\n if (typeof permissionsDefaultPolicyAssignment !== 'undefined') {\n options.permissionsDefaultPolicyAssignment = permissionsDefaultPolicyAssignment;\n }\n\n return options;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"env.mjs","names":["oneOf","read","readArray","readBool","readInt","hasEnvDataSourceOptions","readDataSourceOptionsFromEnv","ConfigEnvironmentVariableName","readConfigRawFromEnv","options","env","NODE_ENV","writableDirectoryPath","WRITABLE_DIRECTORY_PATH","db","redis","REDIS","smtp","SMTP","host","HOST","port","PORT","Number","parseInt","publicURL","PUBLIC_URL","publicUrl","tokenAccessMaxAge","TOKEN_ACCESS_MAX_AGE","tokenRefreshMaxAge","TOKEN_REFRESH_MAX_AGE","registrationEnabled","REGISTRATION_ENABLED","emailVerificationEnabled","EMAIL_VERIFICATION_ENABLED","passwordRecoveryEnabled","PASSWORD_RECOVERY_ENABLED","clientBasicAuth","CLIENT_AUTH_BASIC","clientAuthBasic","clientSystemEnabled","CLIENT_SYSTEM_ENABLED","clientAdminSecret","CLIENT_SYSTEM_SECRET","clientSystemSecret","clientAdminSecretReset","CLIENT_SYSTEM_SECRET_RESET","clientSystemSecretReset","userBasicAuth","USER_AUTH_BASIC","userAuthBasic","userAdminEnabled","USER_ADMIN_ENABLED","userAdminPassword","USER_ADMIN_PASSWORD","userAdminPasswordReset","USER_ADMIN_PASSWORD_RESET","robotBasicAuth","ROBOT_AUTH_BASIC","robotAuthBasic","robotAdminEnabled","ROBOT_ADMIN_ENABLED","robotAdminSecret","ROBOT_ADMIN_SECRET","robotAdminSecretReset","ROBOT_ADMIN_SECRET_RESET","permissions","PERMISSIONS","length","permissionsDefaultPolicyAssignment","PERMISSIONS_DEFAULT_POLICY_ASSIGNMENT"],"sources":["../../../../../src/app/modules/config/read/env.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2024.\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 {\n oneOf, \n read, \n readArray, \n readBool, \n readInt,\n} from 'envix';\nimport { hasEnvDataSourceOptions, readDataSourceOptionsFromEnv } from 'typeorm-extension';\nimport type { BetterSqlite3ConnectionOptions } from 'typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js';\nimport type { MysqlConnectionOptions } from 'typeorm/driver/mysql/MysqlConnectionOptions.js';\nimport type { PostgresConnectionOptions } from 'typeorm/driver/postgres/PostgresConnectionOptions.js';\n\nimport { ConfigEnvironmentVariableName } from '../constants.ts';\nimport type { ConfigInput } from '../types.ts';\n\nexport function readConfigRawFromEnv() : ConfigInput {\n const options : ConfigInput = {};\n\n const env = read(ConfigEnvironmentVariableName.NODE_ENV);\n if (env) {\n options.env = env;\n }\n\n const writableDirectoryPath = read(ConfigEnvironmentVariableName.WRITABLE_DIRECTORY_PATH);\n if (writableDirectoryPath) {\n options.writableDirectoryPath = writableDirectoryPath;\n }\n\n // -------------------------------------------------------------\n\n if (hasEnvDataSourceOptions()) {\n // todo: type casting should be avoided\n options.db = readDataSourceOptionsFromEnv() as MysqlConnectionOptions |\n PostgresConnectionOptions |\n BetterSqlite3ConnectionOptions;\n }\n\n const redis = oneOf([\n readBool(ConfigEnvironmentVariableName.REDIS),\n read(ConfigEnvironmentVariableName.REDIS),\n ]);\n if (typeof redis !== 'undefined') {\n options.redis = redis;\n }\n\n const smtp = oneOf([\n readBool(ConfigEnvironmentVariableName.SMTP),\n read(ConfigEnvironmentVariableName.SMTP),\n ]);\n if (typeof smtp !== 'undefined') {\n options.smtp = smtp;\n }\n\n // -------------------------------------------------------------\n\n const host = read(ConfigEnvironmentVariableName.HOST);\n if (host) {\n options.host = host;\n }\n\n const port = readInt(ConfigEnvironmentVariableName.PORT);\n if (port) {\n options.port = Number.parseInt(`${port}`, 10);\n }\n\n const publicURL = read(ConfigEnvironmentVariableName.PUBLIC_URL);\n if (publicURL) {\n options.publicUrl = publicURL;\n }\n\n const tokenAccessMaxAge = readInt(ConfigEnvironmentVariableName.TOKEN_ACCESS_MAX_AGE);\n if (typeof tokenAccessMaxAge !== 'undefined') {\n options.tokenAccessMaxAge = tokenAccessMaxAge;\n }\n\n const tokenRefreshMaxAge = readInt(ConfigEnvironmentVariableName.TOKEN_REFRESH_MAX_AGE);\n if (typeof tokenRefreshMaxAge !== 'undefined') {\n options.tokenRefreshMaxAge = tokenRefreshMaxAge;\n }\n\n const registrationEnabled = readBool(ConfigEnvironmentVariableName.REGISTRATION_ENABLED);\n if (typeof registrationEnabled !== 'undefined') {\n options.registrationEnabled = registrationEnabled;\n }\n\n const emailVerificationEnabled = readBool(ConfigEnvironmentVariableName.EMAIL_VERIFICATION_ENABLED);\n if (typeof emailVerificationEnabled !== 'undefined') {\n options.emailVerificationEnabled = emailVerificationEnabled;\n }\n\n const passwordRecoveryEnabled = readBool(ConfigEnvironmentVariableName.PASSWORD_RECOVERY_ENABLED);\n if (typeof passwordRecoveryEnabled !== 'undefined') {\n options.passwordRecoveryEnabled = passwordRecoveryEnabled;\n }\n\n // ---------------------------------------------------------------\n\n const clientBasicAuth = readBool(ConfigEnvironmentVariableName.CLIENT_AUTH_BASIC);\n if (typeof clientBasicAuth !== 'undefined') {\n options.clientAuthBasic = clientBasicAuth;\n }\n\n const clientSystemEnabled = readBool(ConfigEnvironmentVariableName.CLIENT_SYSTEM_ENABLED);\n if (typeof clientSystemEnabled !== 'undefined') {\n options.clientSystemEnabled = clientSystemEnabled;\n }\n\n const clientAdminSecret = read(ConfigEnvironmentVariableName.CLIENT_SYSTEM_SECRET);\n if (clientAdminSecret) {\n options.clientSystemSecret = clientAdminSecret;\n }\n\n const clientAdminSecretReset = readBool(ConfigEnvironmentVariableName.CLIENT_SYSTEM_SECRET_RESET);\n if (typeof clientAdminSecretReset !== 'undefined') {\n options.clientSystemSecretReset = clientAdminSecretReset;\n }\n\n // ---------------------------------------------------------------\n\n const userBasicAuth = readBool(ConfigEnvironmentVariableName.USER_AUTH_BASIC);\n if (typeof userBasicAuth !== 'undefined') {\n options.userAuthBasic = userBasicAuth;\n }\n\n const userAdminEnabled = readBool(ConfigEnvironmentVariableName.USER_ADMIN_ENABLED);\n if (typeof userAdminEnabled !== 'undefined') {\n options.userAdminEnabled = userAdminEnabled;\n }\n\n const userAdminPassword = read(ConfigEnvironmentVariableName.USER_ADMIN_PASSWORD);\n if (userAdminPassword) {\n options.userAdminPassword = userAdminPassword;\n }\n\n const userAdminPasswordReset = readBool(ConfigEnvironmentVariableName.USER_ADMIN_PASSWORD_RESET);\n if (typeof userAdminPasswordReset !== 'undefined') {\n options.userAdminPasswordReset = userAdminPasswordReset;\n }\n\n // ---------------------------------------------------------------\n\n const robotBasicAuth = readBool(ConfigEnvironmentVariableName.ROBOT_AUTH_BASIC);\n if (typeof robotBasicAuth !== 'undefined') {\n options.robotAuthBasic = robotBasicAuth;\n }\n\n const robotAdminEnabled = readBool(ConfigEnvironmentVariableName.ROBOT_ADMIN_ENABLED);\n if (typeof robotAdminEnabled !== 'undefined') {\n options.robotAdminEnabled = robotAdminEnabled;\n }\n\n const robotAdminSecret = read(ConfigEnvironmentVariableName.ROBOT_ADMIN_SECRET);\n if (robotAdminSecret) {\n options.robotAdminSecret = robotAdminSecret;\n }\n\n const robotAdminSecretReset = readBool(ConfigEnvironmentVariableName.ROBOT_ADMIN_SECRET_RESET);\n if (typeof robotAdminSecretReset !== 'undefined') {\n options.robotAdminSecretReset = robotAdminSecretReset;\n }\n\n // ---------------------------------------------------------------\n\n const permissions = readArray(ConfigEnvironmentVariableName.PERMISSIONS);\n if (permissions && permissions.length > 0) {\n options.permissions = permissions;\n }\n\n const permissionsDefaultPolicyAssignment = readBool(ConfigEnvironmentVariableName.PERMISSIONS_DEFAULT_POLICY_ASSIGNMENT);\n if (typeof permissionsDefaultPolicyAssignment !== 'undefined') {\n options.permissionsDefaultPolicyAssignment = permissionsDefaultPolicyAssignment;\n }\n\n return options;\n}\n"],"mappings":";;;;AAsBA,SAAgBQ,uBAAAA;CACZ,MAAMC,UAAwB,CAAC;CAE/B,MAAMC,MAAMT,KAAKM,8BAA8BI,QAAQ;CACvD,IAAID,KACAD,QAAQC,MAAMA;CAGlB,MAAME,wBAAwBX,KAAKM,8BAA8BM,uBAAuB;CACxF,IAAID,uBACAH,QAAQG,wBAAwBA;CAKpC,IAAIP,wBAAAA,GAEAI,QAAQK,KAAKR,6BAAAA;CAKjB,MAAMS,QAAQf,MAAM,CAChBG,SAASI,8BAA8BS,KAAK,GAC5Cf,KAAKM,8BAA8BS,KAAK,CAAA,CAC3C;CACD,IAAI,OAAOD,UAAU,aACjBN,QAAQM,QAAQA;CAGpB,MAAME,OAAOjB,MAAM,CACfG,SAASI,8BAA8BW,IAAI,GAC3CjB,KAAKM,8BAA8BW,IAAI,CAAA,CAC1C;CACD,IAAI,OAAOD,SAAS,aAChBR,QAAQQ,OAAOA;CAKnB,MAAME,OAAOlB,KAAKM,8BAA8Ba,IAAI;CACpD,IAAID,MACAV,QAAQU,OAAOA;CAGnB,MAAME,OAAOjB,QAAQG,8BAA8Be,IAAI;CACvD,IAAID,MACAZ,QAAQY,OAAOE,OAAOC,SAAS,GAAGH,QAAQ,EAAA;CAG9C,MAAMI,YAAYxB,KAAKM,8BAA8BmB,UAAU;CAC/D,IAAID,WACAhB,QAAQkB,YAAYF;CAGxB,MAAMG,oBAAoBxB,QAAQG,8BAA8BsB,oBAAoB;CACpF,IAAI,OAAOD,sBAAsB,aAC7BnB,QAAQmB,oBAAoBA;CAGhC,MAAME,qBAAqB1B,QAAQG,8BAA8BwB,qBAAqB;CACtF,IAAI,OAAOD,uBAAuB,aAC9BrB,QAAQqB,qBAAqBA;CAGjC,MAAME,sBAAsB7B,SAASI,8BAA8B0B,oBAAoB;CACvF,IAAI,OAAOD,wBAAwB,aAC/BvB,QAAQuB,sBAAsBA;CAGlC,MAAME,2BAA2B/B,SAASI,8BAA8B4B,0BAA0B;CAClG,IAAI,OAAOD,6BAA6B,aACpCzB,QAAQyB,2BAA2BA;CAGvC,MAAME,0BAA0BjC,SAASI,8BAA8B8B,yBAAyB;CAChG,IAAI,OAAOD,4BAA4B,aACnC3B,QAAQ2B,0BAA0BA;CAKtC,MAAME,kBAAkBnC,SAASI,8BAA8BgC,iBAAiB;CAChF,IAAI,OAAOD,oBAAoB,aAC3B7B,QAAQ+B,kBAAkBF;CAG9B,MAAMG,sBAAsBtC,SAASI,8BAA8BmC,qBAAqB;CACxF,IAAI,OAAOD,wBAAwB,aAC/BhC,QAAQgC,sBAAsBA;CAGlC,MAAME,oBAAoB1C,KAAKM,8BAA8BqC,oBAAoB;CACjF,IAAID,mBACAlC,QAAQoC,qBAAqBF;CAGjC,MAAMG,yBAAyB3C,SAASI,8BAA8BwC,0BAA0B;CAChG,IAAI,OAAOD,2BAA2B,aAClCrC,QAAQuC,0BAA0BF;CAKtC,MAAMG,gBAAgB9C,SAASI,8BAA8B2C,eAAe;CAC5E,IAAI,OAAOD,kBAAkB,aACzBxC,QAAQ0C,gBAAgBF;CAG5B,MAAMG,mBAAmBjD,SAASI,8BAA8B8C,kBAAkB;CAClF,IAAI,OAAOD,qBAAqB,aAC5B3C,QAAQ2C,mBAAmBA;CAG/B,MAAME,oBAAoBrD,KAAKM,8BAA8BgD,mBAAmB;CAChF,IAAID,mBACA7C,QAAQ6C,oBAAoBA;CAGhC,MAAME,yBAAyBrD,SAASI,8BAA8BkD,yBAAyB;CAC/F,IAAI,OAAOD,2BAA2B,aAClC/C,QAAQ+C,yBAAyBA;CAKrC,MAAME,iBAAiBvD,SAASI,8BAA8BoD,gBAAgB;CAC9E,IAAI,OAAOD,mBAAmB,aAC1BjD,QAAQmD,iBAAiBF;CAG7B,MAAMG,oBAAoB1D,SAASI,8BAA8BuD,mBAAmB;CACpF,IAAI,OAAOD,sBAAsB,aAC7BpD,QAAQoD,oBAAoBA;CAGhC,MAAME,mBAAmB9D,KAAKM,8BAA8ByD,kBAAkB;CAC9E,IAAID,kBACAtD,QAAQsD,mBAAmBA;CAG/B,MAAME,wBAAwB9D,SAASI,8BAA8B2D,wBAAwB;CAC7F,IAAI,OAAOD,0BAA0B,aACjCxD,QAAQwD,wBAAwBA;CAKpC,MAAME,cAAcjE,UAAUK,8BAA8B6D,WAAW;CACvE,IAAID,eAAeA,YAAYE,SAAS,GACpC5D,QAAQ0D,cAAcA;CAG1B,MAAMG,qCAAqCnE,SAASI,8BAA8BgE,qCAAqC;CACvH,IAAI,OAAOD,uCAAuC,aAC9C7D,QAAQ6D,qCAAqCA;CAGjD,OAAO7D;AACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.mjs","names":["Container","readConfigRawFromFS","options","container","prefix","cwd","file","loadFile","load","raw","get","db","redis","smtp"],"sources":["../../../../../src/app/modules/config/read/fs.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\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 { Container } from 'confinity';\nimport type { ConfigInput } from '../types.ts';\nimport type { ConfigReadFsOptions } from './types.ts';\n\nexport async function readConfigRawFromFS(options: ConfigReadFsOptions = {}) {\n const container = new Container({\n prefix: 'authup',\n cwd: options.cwd,\n });\n\n if (options.file) {\n await container.loadFile(options.file);\n } else {\n await container.load();\n }\n\n const raw : ConfigInput = container.get('server.core') || {};\n\n const db = container.get([\n 'db',\n 'server.db',\n 'server.core.db',\n ]);\n if (db) {\n raw.db = db;\n }\n\n const redis = container.get([\n 'redis',\n 'server.redis',\n 'server.core.redis',\n ]);\n if (redis) {\n raw.redis = redis;\n }\n\n const smtp = container.get([\n 'smtp',\n 'server.smtp',\n 'server.core.smtp',\n ]);\n if (smtp) {\n raw.smtp = smtp;\n }\n\n return raw;\n}\n"],"mappings":";;AAWA,eAAsBC,oBAAoBC,UAA+B,
|
|
1
|
+
{"version":3,"file":"fs.mjs","names":["Container","readConfigRawFromFS","options","container","prefix","cwd","file","loadFile","load","raw","get","db","redis","smtp"],"sources":["../../../../../src/app/modules/config/read/fs.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\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 { Container } from 'confinity';\nimport type { ConfigInput } from '../types.ts';\nimport type { ConfigReadFsOptions } from './types.ts';\n\nexport async function readConfigRawFromFS(options: ConfigReadFsOptions = {}) {\n const container = new Container({\n prefix: 'authup',\n cwd: options.cwd,\n });\n\n if (options.file) {\n await container.loadFile(options.file);\n } else {\n await container.load();\n }\n\n const raw : ConfigInput = container.get('server.core') || {};\n\n const db = container.get([\n 'db',\n 'server.db',\n 'server.core.db',\n ]);\n if (db) {\n raw.db = db;\n }\n\n const redis = container.get([\n 'redis',\n 'server.redis',\n 'server.core.redis',\n ]);\n if (redis) {\n raw.redis = redis;\n }\n\n const smtp = container.get([\n 'smtp',\n 'server.smtp',\n 'server.core.smtp',\n ]);\n if (smtp) {\n raw.smtp = smtp;\n }\n\n return raw;\n}\n"],"mappings":";;AAWA,eAAsBC,oBAAoBC,UAA+B,CAAC,GAAC;CACvE,MAAMC,YAAY,IAAIH,UAAU;EAC5BI,QAAQ;EACRC,KAAKH,QAAQG;CACjB,CAAA;CAEA,IAAIH,QAAQI,MACR,MAAMH,UAAUI,SAASL,QAAQI,IAAI;MAErC,MAAMH,UAAUK,KAAI;CAGxB,MAAMC,MAAoBN,UAAUO,IAAI,aAAA,KAAkB,CAAC;CAE3D,MAAMC,KAAKR,UAAUO,IAAI;EACrB;EACA;EACA;EACH;CACD,IAAIC,IACAF,IAAIE,KAAKA;CAGb,MAAMC,QAAQT,UAAUO,IAAI;EACxB;EACA;EACA;EACH;CACD,IAAIE,OACAH,IAAIG,QAAQA;CAGhB,MAAMC,OAAOV,UAAUO,IAAI;EACvB;EACA;EACA;EACH;CACD,IAAIG,MACAJ,IAAII,OAAOA;CAGf,OAAOJ;AACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":["merge","readConfigRawFromEnv","readConfigRawFromFS","readConfigRaw","options","fs","env","fsOptions","boolableToObject","input"],"sources":["../../../../../src/app/modules/config/read/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2024-2024.\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 { merge } from 'smob';\nimport type { ConfigInput } from '../types.ts';\nimport { readConfigRawFromEnv } from './env.ts';\nimport { readConfigRawFromFS } from './fs.ts';\nimport type { ConfigRawReadOptions } from './types.ts';\n\nexport async function readConfigRaw(options: ConfigRawReadOptions = {}) : Promise<ConfigInput> {\n if (options.fs && options.env) {\n const fsOptions = boolableToObject(options.fs);\n const fs = await readConfigRawFromFS(fsOptions);\n const env = readConfigRawFromEnv();\n\n return merge(env, fs);\n }\n\n if (options.fs) {\n const fsOptions = boolableToObject(options.fs);\n return readConfigRawFromFS(fsOptions);\n }\n\n if (options.env) {\n return readConfigRawFromEnv();\n }\n\n return {};\n}\n\nfunction boolableToObject<T>(input: T | boolean) : T {\n if (typeof input === 'boolean') {\n return {} as T;\n }\n\n return input;\n}\n"],"mappings":";;;;AAaA,eAAsBG,cAAcC,UAAgC,
|
|
1
|
+
{"version":3,"file":"module.mjs","names":["merge","readConfigRawFromEnv","readConfigRawFromFS","readConfigRaw","options","fs","env","fsOptions","boolableToObject","input"],"sources":["../../../../../src/app/modules/config/read/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2024-2024.\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 { merge } from 'smob';\nimport type { ConfigInput } from '../types.ts';\nimport { readConfigRawFromEnv } from './env.ts';\nimport { readConfigRawFromFS } from './fs.ts';\nimport type { ConfigRawReadOptions } from './types.ts';\n\nexport async function readConfigRaw(options: ConfigRawReadOptions = {}) : Promise<ConfigInput> {\n if (options.fs && options.env) {\n const fsOptions = boolableToObject(options.fs);\n const fs = await readConfigRawFromFS(fsOptions);\n const env = readConfigRawFromEnv();\n\n return merge(env, fs);\n }\n\n if (options.fs) {\n const fsOptions = boolableToObject(options.fs);\n return readConfigRawFromFS(fsOptions);\n }\n\n if (options.env) {\n return readConfigRawFromEnv();\n }\n\n return {};\n}\n\nfunction boolableToObject<T>(input: T | boolean) : T {\n if (typeof input === 'boolean') {\n return {} as T;\n }\n\n return input;\n}\n"],"mappings":";;;;AAaA,eAAsBG,cAAcC,UAAgC,CAAC,GAAC;CAClE,IAAIA,QAAQC,MAAMD,QAAQE,KAAK;EAE3B,MAAMD,KAAK,MAAMH,oBADCM,iBAAiBJ,QAAQC,EACNE,CAAAA;EAGrC,OAAOP,MAFKC,qBAECK,GAAKD,EAAAA;CACtB;CAEA,IAAID,QAAQC,IAER,OAAOH,oBADWM,iBAAiBJ,QAAQC,EAChBE,CAAAA;CAG/B,IAAIH,QAAQE,KACR,OAAOL,qBAAAA;CAGX,OAAO,CAAC;AACZ;AAEA,SAASO,iBAAoBC,OAAkB;CAC3C,IAAI,OAAOA,UAAU,WACjB,OAAO,CAAC;CAGZ,OAAOA;AACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","names":["ModuleName","CONFIG","LOGGER","CACHE","MAIL","RUNTIME","DATABASE","PROVISIONING","LDAP","AUTHENTICATION","IDENTITY","OAUTH2","COMPONENTS","HTTP"],"sources":["../../../src/app/modules/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\nexport const ModuleName = {\n CONFIG: 'config',\n LOGGER: 'logger',\n CACHE: 'cache',\n MAIL: 'mail',\n RUNTIME: 'runtime',\n DATABASE: 'database',\n PROVISIONING: 'provisioning',\n LDAP: 'ldap',\n AUTHENTICATION: 'authentication',\n IDENTITY: 'identity',\n OAUTH2: 'oauth2',\n COMPONENTS: 'components',\n HTTP: 'http',\n} as const;\n"],"mappings":";AAOA,MAAaA,aAAa;CACtBC,QAAQ;CACRC,QAAQ;CACRC,OAAO;CACPC,MAAM;CACNC,SAAS;CACTC,UAAU;CACVC,cAAc;CACdC,MAAM;CACNC,gBAAgB;CAChBC,UAAU;CACVC,QAAQ;CACRC,YAAY;CACZC,MAAM;
|
|
1
|
+
{"version":3,"file":"constants.mjs","names":["ModuleName","CONFIG","LOGGER","CACHE","MAIL","RUNTIME","DATABASE","PROVISIONING","LDAP","AUTHENTICATION","IDENTITY","OAUTH2","COMPONENTS","HTTP"],"sources":["../../../src/app/modules/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\nexport const ModuleName = {\n CONFIG: 'config',\n LOGGER: 'logger',\n CACHE: 'cache',\n MAIL: 'mail',\n RUNTIME: 'runtime',\n DATABASE: 'database',\n PROVISIONING: 'provisioning',\n LDAP: 'ldap',\n AUTHENTICATION: 'authentication',\n IDENTITY: 'identity',\n OAUTH2: 'oauth2',\n COMPONENTS: 'components',\n HTTP: 'http',\n} as const;\n"],"mappings":";AAOA,MAAaA,aAAa;CACtBC,QAAQ;CACRC,QAAQ;CACRC,OAAO;CACPC,MAAM;CACNC,SAAS;CACTC,UAAU;CACVC,cAAc;CACdC,MAAM;CACNC,gBAAgB;CAChBC,UAAU;CACVC,QAAQ;CACRC,YAAY;CACZC,MAAM;AACV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","names":["TypedToken","DatabaseInjectionKey","DataSource"],"sources":["../../../../src/app/modules/database/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 { DataSource } from 'typeorm';\nimport { TypedToken } from 'eldin';\n\nexport const DatabaseInjectionKey = { DataSource: new TypedToken<DataSource>('DataSource') } as const;\n"],"mappings":";;AAUA,MAAaC,uBAAuB,EAAEC,YAAY,IAAIF,WAAuB,
|
|
1
|
+
{"version":3,"file":"constants.mjs","names":["TypedToken","DatabaseInjectionKey","DataSource"],"sources":["../../../../src/app/modules/database/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 { DataSource } from 'typeorm';\nimport { TypedToken } from 'eldin';\n\nexport const DatabaseInjectionKey = { DataSource: new TypedToken<DataSource>('DataSource') } as const;\n"],"mappings":";;AAUA,MAAaC,uBAAuB,EAAEC,YAAY,IAAIF,WAAuB,YAAA,EAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":["DomainEventPublisher","DomainEventRedisPublisher","DomainEventSocketPublisher","createRedisClient","AuthupError","DataSource","InstanceChecker","checkDatabase","createDatabase","setDataSource","synchronizeDatabaseSchema","unsetDataSource","DataSourceOptionsBuilder","DatabaseQueryResultCache","isDatabaseTypeSupported","isDatabaseTypeSupportedForEnvironment","setDataSourceSync","unsetDataSourceSync","setDomainEventPublisher","CacheInjectionKey","ModuleName","DatabaseInjectionKey","ConfigInjectionKey","LoggerInjectionKey","DatabaseModule","name","dependencies","optionsBuilder","options","DATABASE","CONFIG","LOGGER","setup","container","logger","resolve","prepareBuild","dataSourceOptions","buildDataSourceOptions","setupDatabase","dataSource","debug","initialize","migrate","register","useValue","registerRepositories","registerEventPublisher","teardown","tryResolve","success","data","destroy","unregister","check","exists","synchronize","ifNotExist","config","db","buildWith","buildWithEnv","type","env","cacheResult","Object","assign","cache","provider","entities","Array","isArray","entity","isEntitySchema","useFactory","getRepository","publisher","redis","client","mount"],"sources":["../../../../src/app/modules/database/module.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 {\n DomainEventPublisher, \n DomainEventRedisPublisher,\n DomainEventSocketPublisher, \n createRedisClient,\n} from '@authup/server-kit';\nimport { AuthupError } from '@authup/errors';\nimport type { DataSourceOptions } from 'typeorm';\nimport { DataSource, InstanceChecker } from 'typeorm';\nimport {\n checkDatabase,\n createDatabase,\n setDataSource,\n synchronizeDatabaseSchema,\n unsetDataSource,\n} from 'typeorm-extension';\nimport {\n DataSourceOptionsBuilder,\n DatabaseQueryResultCache,\n isDatabaseTypeSupported,\n isDatabaseTypeSupportedForEnvironment,\n setDataSourceSync,\n unsetDataSourceSync,\n} from '../../../adapters/database/index.ts';\nimport { setDomainEventPublisher } from '../../../adapters/database/event-publisher/index.ts';\nimport { CacheInjectionKey } from '../cache/index.ts';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { DatabaseInjectionKey } from './constants.ts';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport type { IContainer } from 'eldin';\nimport { LoggerInjectionKey } from '../logger/index.ts';\n\nexport type DatabaseModuleOptions = {\n prepareBuild?: (container: IContainer) => Promise<void>;\n setup?: (container: IContainer, options: DataSourceOptions) => Promise<void>;\n migrate?: (container: IContainer, dataSource: DataSource) => Promise<void>;\n};\n\nexport class DatabaseModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n protected optionsBuilder : DataSourceOptionsBuilder;\n\n protected options: DatabaseModuleOptions;\n\n constructor(options: DatabaseModuleOptions = {}) {\n this.name = ModuleName.DATABASE;\n this.dependencies = [ModuleName.CONFIG, ModuleName.LOGGER];\n\n this.optionsBuilder = new DataSourceOptionsBuilder();\n this.options = options;\n }\n\n async setup(container: IContainer): Promise<void> {\n const logger = container.resolve(LoggerInjectionKey);\n\n if (this.options.prepareBuild) {\n await this.options.prepareBuild(container);\n }\n\n const dataSourceOptions = await this.buildDataSourceOptions(container);\n\n if (this.options.setup) {\n await this.options.setup(container, dataSourceOptions);\n } else {\n await this.setupDatabase(container, dataSourceOptions);\n }\n\n const dataSource = new DataSource(dataSourceOptions);\n\n logger.debug('Establishing database connection...');\n await dataSource.initialize();\n logger.debug('Established database connection.');\n\n // todo: maybe remove this\n setDataSource(dataSource);\n setDataSourceSync(dataSource);\n\n if (this.options.migrate) {\n await this.options.migrate(container, dataSource);\n } else {\n await this.migrate(container, dataSource);\n }\n\n container.register(DatabaseInjectionKey.DataSource, { useValue: dataSource });\n\n this.registerRepositories(container, dataSource);\n this.registerEventPublisher(container);\n }\n\n async teardown(container: IContainer): Promise<void> {\n const dataSource = container.tryResolve(DatabaseInjectionKey.DataSource);\n if (dataSource.success) {\n await dataSource.data.destroy();\n\n container.unregister(DatabaseInjectionKey.DataSource);\n }\n\n unsetDataSource();\n unsetDataSourceSync();\n }\n\n // ----------------------------------------------------\n\n protected async setupDatabase(container: IContainer, options: DataSourceOptions): Promise<void> {\n const logger = container.resolve(LoggerInjectionKey);\n\n const check = await checkDatabase({ options });\n\n if (!check.exists) {\n logger.debug('Creating database...');\n await createDatabase({\n options,\n synchronize: false,\n ifNotExist: true, \n });\n logger.debug('Created database');\n }\n }\n\n protected async migrate(container: IContainer, dataSource: DataSource): Promise<void> {\n const logger = container.resolve(LoggerInjectionKey);\n\n logger.debug('Migrating database...');\n await synchronizeDatabaseSchema(dataSource);\n logger.debug('Migrated database');\n }\n\n // ----------------------------------------------------\n\n /**\n * Load data source options for connection.\n *\n * @protected\n */\n protected async buildDataSourceOptions(container: IContainer) : Promise<DataSourceOptions> {\n const config = container.resolve(ConfigInjectionKey);\n\n let options : DataSourceOptions | undefined;\n if (config.db) {\n options = this.optionsBuilder.buildWith(config.db);\n } else {\n options = this.optionsBuilder.buildWithEnv();\n }\n\n if (!isDatabaseTypeSupported(options.type)) {\n throw new AuthupError(`Database type ${options.type} is not supported (only: mysql, better-sqlite3 and postgres).`);\n }\n\n if (!isDatabaseTypeSupportedForEnvironment(options.type, config.env)) {\n throw new AuthupError(`Database type ${options.type} is not supported for ${config.env}.`);\n }\n\n const cacheResult = container.tryResolve(CacheInjectionKey);\n if (cacheResult.success) {\n Object.assign(options, {\n cache: {\n provider() {\n return new DatabaseQueryResultCache(cacheResult.data);\n },\n },\n } satisfies Partial<DataSourceOptions>);\n }\n\n return options;\n }\n\n protected registerRepositories(container: IContainer, dataSource: DataSource) : void {\n const entities = dataSource.options.entities || [];\n if (!Array.isArray(entities)) {\n return;\n }\n\n for (const entity of entities) {\n if (InstanceChecker.isEntitySchema(entity)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n container.register(entity, { useFactory: () => dataSource.getRepository(entity) });\n }\n }\n\n // todo: move, wrong place\n protected registerEventPublisher(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n\n const publisher = new DomainEventPublisher();\n if (config.redis) {\n const client = createRedisClient(config.redis);\n\n publisher.mount(new DomainEventRedisPublisher(client));\n publisher.mount(new DomainEventSocketPublisher(client));\n }\n\n setDomainEventPublisher(publisher);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"module.mjs","names":["DomainEventPublisher","DomainEventRedisPublisher","DomainEventSocketPublisher","createRedisClient","AuthupError","DataSource","InstanceChecker","checkDatabase","createDatabase","setDataSource","synchronizeDatabaseSchema","unsetDataSource","DataSourceOptionsBuilder","DatabaseQueryResultCache","isDatabaseTypeSupported","isDatabaseTypeSupportedForEnvironment","setDataSourceSync","unsetDataSourceSync","setDomainEventPublisher","CacheInjectionKey","ModuleName","DatabaseInjectionKey","ConfigInjectionKey","LoggerInjectionKey","DatabaseModule","name","dependencies","optionsBuilder","options","DATABASE","CONFIG","LOGGER","setup","container","logger","resolve","prepareBuild","dataSourceOptions","buildDataSourceOptions","setupDatabase","dataSource","debug","initialize","migrate","register","useValue","registerRepositories","registerEventPublisher","teardown","tryResolve","success","data","destroy","unregister","check","exists","synchronize","ifNotExist","config","db","buildWith","buildWithEnv","type","env","cacheResult","Object","assign","cache","provider","entities","Array","isArray","entity","isEntitySchema","useFactory","getRepository","publisher","redis","client","mount"],"sources":["../../../../src/app/modules/database/module.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 {\n DomainEventPublisher, \n DomainEventRedisPublisher,\n DomainEventSocketPublisher, \n createRedisClient,\n} from '@authup/server-kit';\nimport { AuthupError } from '@authup/errors';\nimport type { DataSourceOptions } from 'typeorm';\nimport { DataSource, InstanceChecker } from 'typeorm';\nimport {\n checkDatabase,\n createDatabase,\n setDataSource,\n synchronizeDatabaseSchema,\n unsetDataSource,\n} from 'typeorm-extension';\nimport {\n DataSourceOptionsBuilder,\n DatabaseQueryResultCache,\n isDatabaseTypeSupported,\n isDatabaseTypeSupportedForEnvironment,\n setDataSourceSync,\n unsetDataSourceSync,\n} from '../../../adapters/database/index.ts';\nimport { setDomainEventPublisher } from '../../../adapters/database/event-publisher/index.ts';\nimport { CacheInjectionKey } from '../cache/index.ts';\nimport type { IModule } from 'orkos';\nimport { ModuleName } from '../constants.ts';\nimport { DatabaseInjectionKey } from './constants.ts';\nimport { ConfigInjectionKey } from '../config/index.ts';\nimport type { IContainer } from 'eldin';\nimport { LoggerInjectionKey } from '../logger/index.ts';\n\nexport type DatabaseModuleOptions = {\n prepareBuild?: (container: IContainer) => Promise<void>;\n setup?: (container: IContainer, options: DataSourceOptions) => Promise<void>;\n migrate?: (container: IContainer, dataSource: DataSource) => Promise<void>;\n};\n\nexport class DatabaseModule implements IModule {\n readonly name: string;\n\n readonly dependencies: string[];\n\n protected optionsBuilder : DataSourceOptionsBuilder;\n\n protected options: DatabaseModuleOptions;\n\n constructor(options: DatabaseModuleOptions = {}) {\n this.name = ModuleName.DATABASE;\n this.dependencies = [ModuleName.CONFIG, ModuleName.LOGGER];\n\n this.optionsBuilder = new DataSourceOptionsBuilder();\n this.options = options;\n }\n\n async setup(container: IContainer): Promise<void> {\n const logger = container.resolve(LoggerInjectionKey);\n\n if (this.options.prepareBuild) {\n await this.options.prepareBuild(container);\n }\n\n const dataSourceOptions = await this.buildDataSourceOptions(container);\n\n if (this.options.setup) {\n await this.options.setup(container, dataSourceOptions);\n } else {\n await this.setupDatabase(container, dataSourceOptions);\n }\n\n const dataSource = new DataSource(dataSourceOptions);\n\n logger.debug('Establishing database connection...');\n await dataSource.initialize();\n logger.debug('Established database connection.');\n\n // todo: maybe remove this\n setDataSource(dataSource);\n setDataSourceSync(dataSource);\n\n if (this.options.migrate) {\n await this.options.migrate(container, dataSource);\n } else {\n await this.migrate(container, dataSource);\n }\n\n container.register(DatabaseInjectionKey.DataSource, { useValue: dataSource });\n\n this.registerRepositories(container, dataSource);\n this.registerEventPublisher(container);\n }\n\n async teardown(container: IContainer): Promise<void> {\n const dataSource = container.tryResolve(DatabaseInjectionKey.DataSource);\n if (dataSource.success) {\n await dataSource.data.destroy();\n\n container.unregister(DatabaseInjectionKey.DataSource);\n }\n\n unsetDataSource();\n unsetDataSourceSync();\n }\n\n // ----------------------------------------------------\n\n protected async setupDatabase(container: IContainer, options: DataSourceOptions): Promise<void> {\n const logger = container.resolve(LoggerInjectionKey);\n\n const check = await checkDatabase({ options });\n\n if (!check.exists) {\n logger.debug('Creating database...');\n await createDatabase({\n options,\n synchronize: false,\n ifNotExist: true, \n });\n logger.debug('Created database');\n }\n }\n\n protected async migrate(container: IContainer, dataSource: DataSource): Promise<void> {\n const logger = container.resolve(LoggerInjectionKey);\n\n logger.debug('Migrating database...');\n await synchronizeDatabaseSchema(dataSource);\n logger.debug('Migrated database');\n }\n\n // ----------------------------------------------------\n\n /**\n * Load data source options for connection.\n *\n * @protected\n */\n protected async buildDataSourceOptions(container: IContainer) : Promise<DataSourceOptions> {\n const config = container.resolve(ConfigInjectionKey);\n\n let options : DataSourceOptions | undefined;\n if (config.db) {\n options = this.optionsBuilder.buildWith(config.db);\n } else {\n options = this.optionsBuilder.buildWithEnv();\n }\n\n if (!isDatabaseTypeSupported(options.type)) {\n throw new AuthupError(`Database type ${options.type} is not supported (only: mysql, better-sqlite3 and postgres).`);\n }\n\n if (!isDatabaseTypeSupportedForEnvironment(options.type, config.env)) {\n throw new AuthupError(`Database type ${options.type} is not supported for ${config.env}.`);\n }\n\n const cacheResult = container.tryResolve(CacheInjectionKey);\n if (cacheResult.success) {\n Object.assign(options, {\n cache: {\n provider() {\n return new DatabaseQueryResultCache(cacheResult.data);\n },\n },\n } satisfies Partial<DataSourceOptions>);\n }\n\n return options;\n }\n\n protected registerRepositories(container: IContainer, dataSource: DataSource) : void {\n const entities = dataSource.options.entities || [];\n if (!Array.isArray(entities)) {\n return;\n }\n\n for (const entity of entities) {\n if (InstanceChecker.isEntitySchema(entity)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n container.register(entity, { useFactory: () => dataSource.getRepository(entity) });\n }\n }\n\n // todo: move, wrong place\n protected registerEventPublisher(container: IContainer) {\n const config = container.resolve(ConfigInjectionKey);\n\n const publisher = new DomainEventPublisher();\n if (config.redis) {\n const client = createRedisClient(config.redis);\n\n publisher.mount(new DomainEventRedisPublisher(client));\n publisher.mount(new DomainEventSocketPublisher(client));\n }\n\n setDomainEventPublisher(publisher);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bindings.mjs","names":["buildRedisKeyPath","PolicyRepository","loadBoundPermissions","options","repository","manager","getRepository","junctionTarget","relations","permission","entries","find","where","cache","id","prefix","cachePrefix","key","cacheKey","milliseconds","policyIds","Set","entry","policy_id","add","policyTrees","loadPolicyTrees","map","policies","push","length","undefined","policyRepository","trees","Promise","all","findDescendantsTreeById","then","tree","result"],"sources":["../../../../../src/app/modules/database/repositories/bindings.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 {\n EntityManager,\n EntityTarget,\n FindOptionsRelations,\n FindOptionsWhere,\n ObjectLiteral,\n} from 'typeorm';\nimport type { BasePolicy, PermissionPolicyBinding } from '@authup/access';\nimport type { Permission } from '@authup/core-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport { PolicyRepository } from '../../../../adapters/database/domains/policy/index.ts';\n\nexport type LoadBoundPermissionsOptions<E extends ObjectLiteral> = {\n manager: EntityManager;\n junctionTarget: EntityTarget<E>;\n where: FindOptionsWhere<E>;\n cachePrefix: string;\n cacheKey: string;\n};\n\ntype PermissionJunction = {\n permission: Permission;\n policy_id?: string | null;\n};\n\nexport async function loadBoundPermissions<E extends PermissionJunction & ObjectLiteral>(\n options: LoadBoundPermissionsOptions<E>,\n): Promise<PermissionPolicyBinding[]> {\n const repository = options.manager.getRepository(options.junctionTarget);\n const relations = { permission: true } as FindOptionsRelations<E>;\n\n const entries = await repository.find({\n where: options.where,\n relations,\n cache: {\n id: buildRedisKeyPath({ prefix: options.cachePrefix, key: options.cacheKey }),\n milliseconds: 60_000,\n },\n });\n\n const policyIds = new Set<string>();\n for (const entry of entries) {\n if (entry.policy_id) {\n policyIds.add(entry.policy_id);\n }\n }\n\n const policyTrees = await loadPolicyTrees(options.manager, [...policyIds]);\n\n return entries.map((entry) => {\n const policies: BasePolicy[] = [];\n if (entry.policy_id && policyTrees[entry.policy_id]) {\n policies.push(policyTrees[entry.policy_id]);\n }\n\n return {\n permission: entry.permission,\n policies: policies.length > 0 ? policies : undefined,\n };\n });\n}\n\nasync function loadPolicyTrees(\n manager: EntityManager,\n policyIds: string[],\n): Promise<Record<string, BasePolicy>> {\n if (policyIds.length === 0) {\n return {};\n }\n\n const policyRepository = new PolicyRepository(manager);\n const trees = await Promise.all(\n policyIds.map((id) => policyRepository.findDescendantsTreeById(id)\n .then((tree) => [id, tree] as const)),\n );\n\n const result: Record<string, BasePolicy> = {};\n for (const [id, tree] of trees) {\n if (tree) {\n result[id] = tree;\n }\n }\n return result;\n}\n"],"mappings":";;;;AAgCA,eAAsBE,qBAClBC,SAAuC;CAKvC,MAAMO,UAAU,MAHGP,QAAQE,QAAQC,cAAcH,QAAQI,
|
|
1
|
+
{"version":3,"file":"bindings.mjs","names":["buildRedisKeyPath","PolicyRepository","loadBoundPermissions","options","repository","manager","getRepository","junctionTarget","relations","permission","entries","find","where","cache","id","prefix","cachePrefix","key","cacheKey","milliseconds","policyIds","Set","entry","policy_id","add","policyTrees","loadPolicyTrees","map","policies","push","length","undefined","policyRepository","trees","Promise","all","findDescendantsTreeById","then","tree","result"],"sources":["../../../../../src/app/modules/database/repositories/bindings.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 {\n EntityManager,\n EntityTarget,\n FindOptionsRelations,\n FindOptionsWhere,\n ObjectLiteral,\n} from 'typeorm';\nimport type { BasePolicy, PermissionPolicyBinding } from '@authup/access';\nimport type { Permission } from '@authup/core-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport { PolicyRepository } from '../../../../adapters/database/domains/policy/index.ts';\n\nexport type LoadBoundPermissionsOptions<E extends ObjectLiteral> = {\n manager: EntityManager;\n junctionTarget: EntityTarget<E>;\n where: FindOptionsWhere<E>;\n cachePrefix: string;\n cacheKey: string;\n};\n\ntype PermissionJunction = {\n permission: Permission;\n policy_id?: string | null;\n};\n\nexport async function loadBoundPermissions<E extends PermissionJunction & ObjectLiteral>(\n options: LoadBoundPermissionsOptions<E>,\n): Promise<PermissionPolicyBinding[]> {\n const repository = options.manager.getRepository(options.junctionTarget);\n const relations = { permission: true } as FindOptionsRelations<E>;\n\n const entries = await repository.find({\n where: options.where,\n relations,\n cache: {\n id: buildRedisKeyPath({ prefix: options.cachePrefix, key: options.cacheKey }),\n milliseconds: 60_000,\n },\n });\n\n const policyIds = new Set<string>();\n for (const entry of entries) {\n if (entry.policy_id) {\n policyIds.add(entry.policy_id);\n }\n }\n\n const policyTrees = await loadPolicyTrees(options.manager, [...policyIds]);\n\n return entries.map((entry) => {\n const policies: BasePolicy[] = [];\n if (entry.policy_id && policyTrees[entry.policy_id]) {\n policies.push(policyTrees[entry.policy_id]);\n }\n\n return {\n permission: entry.permission,\n policies: policies.length > 0 ? policies : undefined,\n };\n });\n}\n\nasync function loadPolicyTrees(\n manager: EntityManager,\n policyIds: string[],\n): Promise<Record<string, BasePolicy>> {\n if (policyIds.length === 0) {\n return {};\n }\n\n const policyRepository = new PolicyRepository(manager);\n const trees = await Promise.all(\n policyIds.map((id) => policyRepository.findDescendantsTreeById(id)\n .then((tree) => [id, tree] as const)),\n );\n\n const result: Record<string, BasePolicy> = {};\n for (const [id, tree] of trees) {\n if (tree) {\n result[id] = tree;\n }\n }\n return result;\n}\n"],"mappings":";;;;AAgCA,eAAsBE,qBAClBC,SAAuC;CAKvC,MAAMO,UAAU,MAHGP,QAAQE,QAAQC,cAAcH,QAAQI,cAGnCH,EAAWO,KAAK;EAClCC,OAAOT,QAAQS;EACfJ,WAAAA,EAJgBC,YAAY,KAI5BD;EACAK,OAAO;GACHC,IAAId,kBAAkB;IAAEe,QAAQZ,QAAQa;IAAaC,KAAKd,QAAQe;GAAS,CAAA;GAC3EC,cAAc;EAClB;CACJ,CAAA;CAEA,MAAMC,4BAAY,IAAIC,IAAAA;CACtB,KAAK,MAAMC,SAASZ,SAChB,IAAIY,MAAMC,WACNH,UAAUI,IAAIF,MAAMC,SAAS;CAIrC,MAAME,cAAc,MAAMC,gBAAgBvB,QAAQE,SAAS,CAAA,GAAIe,SAAAA,CAAU;CAEzE,OAAOV,QAAQiB,KAAKL,UAAAA;EAChB,MAAMM,WAAyB,CAAA;EAC/B,IAAIN,MAAMC,aAAaE,YAAYH,MAAMC,YACrCK,SAASC,KAAKJ,YAAYH,MAAMC,UAAU;EAG9C,OAAO;GACHd,YAAYa,MAAMb;GAClBmB,UAAUA,SAASE,SAAS,IAAIF,WAAWG,KAAAA;EAC/C;CACJ,CAAA;AACJ;AAEA,eAAeL,gBACXrB,SACAe,WAAmB;CAEnB,IAAIA,UAAUU,WAAW,GACrB,OAAO,CAAC;CAGZ,MAAME,mBAAmB,IAAI/B,iBAAiBI,OAAAA;CAC9C,MAAM4B,QAAQ,MAAMC,QAAQC,IACxBf,UAAUO,KAAKb,OAAOkB,iBAAiBI,wBAAwBtB,EAAAA,EAC1DuB,MAAMC,SAAS,CAACxB,IAAIwB,IAAAA,CAAK,CAAA,CAAA;CAGlC,MAAMC,SAAqC,CAAC;CAC5C,KAAK,MAAM,CAACzB,IAAIwB,SAASL,OACrB,IAAIK,MACAC,OAAOzB,MAAMwB;CAGrB,OAAOC;AACX"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { Client, Realm, Role } from '@authup/core-kit';
|
|
2
2
|
import type { PermissionPolicyBinding } from '@authup/access';
|
|
3
3
|
import type { Repository } from 'typeorm';
|
|
4
|
-
import type { EntityRepositoryFindManyResult
|
|
4
|
+
import type { EntityRepositoryFindManyResult } from '@authup/server-kit';
|
|
5
|
+
import type { IClientRepository } from '../../../../../core/index.ts';
|
|
5
6
|
export type ClientRepositoryAdapterContext = {
|
|
6
7
|
repository: Repository<Client>;
|
|
7
8
|
realmRepository: Repository<Realm>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../../../src/app/modules/database/repositories/client/repository.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAG9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,iBAAiB,EAAoB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../../../src/app/modules/database/repositories/client/repository.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAG9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAoB,MAAM,8BAA8B,CAAC;AAYxF,MAAM,MAAM,8BAA8B,GAAG;IACzC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC/B,eAAe,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;CACtC,CAAC;AAEF,qBAAa,uBAAwB,YAAW,iBAAiB;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAEhD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;gBAEvC,GAAG,EAAE,8BAA8B;IAKzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IAkD3F,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIzC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IActE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA+C3F,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAM3E,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIzD,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI7D,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAY3E,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM;IAIrC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM;IAI9C,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzD,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxE,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAmBvD,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;CAUzF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["buildRedisKeyPath","isUUID","applyQuery","isEntityUnique","validateEntityJoinColumns","DatabaseConflictError","translateWhereConditions","loadBoundPermissions","CachePrefix","ClientEntity","ClientPermissionEntity","ClientRoleEntity","RealmRepositoryAdapter","ClientRepositoryAdapter","repository","realmRepository","ctx","findMany","query","qb","createQueryBuilder","groupBy","pagination","defaultAlias","fields","default","allowed","filters","maxLimit","relations","onJoin","_property","key","q","addGroupBy","sort","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","name","realmKey","where","realm","resolve","andWhere","realmId","getOne","findOne","findOneByIdOrName","idOrName","findManyBy","findBy","findOneWithSecret","Object","entries","forEach","value","addSelect","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget","checkUniqueness","existing","isUnique","entityExisting","getBoundRoles","getRepository","find","client_id","role","cache","prefix","CLIENT_OWNED_ROLES","milliseconds","map","entry","getBoundPermissions","junctionTarget","cachePrefix","CLIENT_OWNED_PERMISSIONS","cacheKey"],"sources":["../../../../../../src/app/modules/database/repositories/client/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 { Client, Realm, Role } from '@authup/core-kit';\nimport type { PermissionPolicyBinding } from '@authup/access';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport { isUUID } from '@authup/kit';\nimport type { Repository } from 'typeorm';\nimport { applyQuery, isEntityUnique, validateEntityJoinColumns } from 'typeorm-extension';\nimport type { EntityRepositoryFindManyResult, IClientRepository, IRealmRepository } from '../../../../../core/index.ts';\nimport { DatabaseConflictError } from '../../../../../adapters/database/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\nimport { loadBoundPermissions } from '../bindings.ts';\nimport {\n CachePrefix,\n ClientEntity,\n ClientPermissionEntity,\n ClientRoleEntity,\n} from '../../../../../adapters/database/domains/index.ts';\nimport { RealmRepositoryAdapter } from '../realm/repository.ts';\n\nexport type ClientRepositoryAdapterContext = {\n repository: Repository<Client>,\n realmRepository: Repository<Realm>,\n};\n\nexport class ClientRepositoryAdapter implements IClientRepository {\n private readonly repository: Repository<Client>;\n\n private readonly realmRepository: IRealmRepository;\n\n constructor(ctx: ClientRepositoryAdapterContext) {\n this.repository = ctx.repository;\n this.realmRepository = new RealmRepositoryAdapter(ctx.realmRepository);\n }\n\n async findMany(query: Record<string, any>): Promise<EntityRepositoryFindManyResult<Client>> {\n const qb = this.repository.createQueryBuilder('client');\n qb.groupBy('client.id');\n\n const { pagination } = applyQuery(qb, query, {\n defaultAlias: 'client',\n fields: {\n default: [\n 'id',\n 'active',\n 'built_in',\n 'name',\n 'display_name',\n 'description',\n 'secret_hashed',\n 'secret_encrypted',\n 'base_url',\n 'root_url',\n 'redirect_uri',\n 'grant_types',\n 'scope',\n 'is_confidential',\n 'realm_id',\n 'updated_at',\n 'created_at',\n ],\n allowed: ['secret'],\n },\n filters: { allowed: ['id', 'name', 'realm_id', 'realm.name'] },\n pagination: { maxLimit: 50 },\n relations: {\n allowed: ['realm'],\n onJoin: (_property: string, key: string, q: any) => {\n q.addGroupBy(`${key}.id`);\n },\n },\n sort: { allowed: ['id', 'created_at', 'updated_at'] },\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 findOneById(id: string): Promise<Client | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(name: string, realmKey?: string): Promise<Client | null> {\n const qb = this.repository.createQueryBuilder('client');\n qb.where('client.name = :name', { name });\n\n if (realmKey) {\n const realm = await this.realmRepository.resolve(realmKey);\n if (realm) {\n qb.andWhere('client.realm_id = :realmId', { realmId: realm.id });\n }\n }\n\n return qb.getOne();\n }\n\n async findOne(id: string, query?: Record<string, any>, realmKey?: string): Promise<Client | null> {\n const qb = this.repository.createQueryBuilder('client');\n\n if (isUUID(id)) {\n qb.where('client.id = :id', { id });\n } else {\n qb.where('client.name = :name', { name: id });\n\n if (realmKey) {\n const realm = await this.realmRepository.resolve(realmKey);\n if (!realm) {\n return null;\n }\n qb.andWhere('client.realm_id = :realmId', { realmId: realm.id });\n }\n }\n\n applyQuery(qb, query || {}, {\n defaultAlias: 'client',\n fields: {\n default: [\n 'id',\n 'active',\n 'built_in',\n 'name',\n 'display_name',\n 'description',\n 'secret_hashed',\n 'secret_encrypted',\n 'base_url',\n 'root_url',\n 'redirect_uri',\n 'grant_types',\n 'scope',\n 'is_confidential',\n 'realm_id',\n 'updated_at',\n 'created_at',\n ],\n allowed: ['secret'],\n },\n relations: { allowed: ['realm'] },\n });\n\n return qb.getOne();\n }\n\n async findOneByIdOrName(idOrName: string, realm?: string): Promise<Client | null> {\n return isUUID(idOrName) ?\n this.findOneById(idOrName) :\n this.findOneByName(idOrName, realm);\n }\n\n async findManyBy(where: Record<string, any>): Promise<Client[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<Client | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n async findOneWithSecret(where: Record<string, any>): Promise<Client | null> {\n const qb = this.repository.createQueryBuilder('client');\n\n Object.entries(where).forEach(([key, value]) => {\n qb.andWhere(`client.${key} = :${key}`, { [key]: value });\n });\n\n qb.addSelect('client.secret');\n\n return qb.getOne();\n }\n\n create(data: Partial<Client>): Client {\n return this.repository.create(data);\n }\n\n merge(entity: Client, data: Partial<Client>): Client {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: Client): Promise<Client> {\n return this.repository.save(entity);\n }\n\n async remove(entity: Client): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<Client>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: ClientEntity,\n });\n }\n\n async checkUniqueness(data: Partial<Client>, existing?: Client): Promise<void> {\n const isUnique = await isEntityUnique({\n dataSource: this.repository.manager.connection,\n entityTarget: ClientEntity,\n entity: data,\n entityExisting: existing,\n });\n\n if (!isUnique) {\n throw new DatabaseConflictError();\n }\n }\n\n async getBoundRoles(entity: string | Client): Promise<Role[]> {\n const id = typeof entity === 'string' ? entity : entity.id;\n const entries = await this.repository.manager\n .getRepository(ClientRoleEntity)\n .find({\n where: { client_id: id },\n relations: { role: true },\n cache: {\n id: buildRedisKeyPath({\n prefix: CachePrefix.CLIENT_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 | Client): Promise<PermissionPolicyBinding[]> {\n const id = typeof entity === 'string' ? entity : entity.id;\n return loadBoundPermissions({\n manager: this.repository.manager,\n junctionTarget: ClientPermissionEntity,\n where: { client_id: id },\n cachePrefix: CachePrefix.CLIENT_OWNED_PERMISSIONS,\n cacheKey: id,\n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repository.mjs","names":["buildRedisKeyPath","isUUID","applyQuery","isEntityUnique","validateEntityJoinColumns","DatabaseConflictError","translateWhereConditions","loadBoundPermissions","CachePrefix","ClientEntity","ClientPermissionEntity","ClientRoleEntity","RealmRepositoryAdapter","ClientRepositoryAdapter","repository","realmRepository","ctx","findMany","query","qb","createQueryBuilder","groupBy","pagination","defaultAlias","fields","default","allowed","filters","maxLimit","relations","onJoin","_property","key","q","addGroupBy","sort","entities","total","getManyAndCount","data","meta","findOneById","id","findOneBy","findOneByName","name","realmKey","where","realm","resolve","andWhere","realmId","getOne","findOne","findOneByIdOrName","idOrName","findManyBy","findBy","findOneWithSecret","Object","entries","forEach","value","addSelect","create","merge","entity","save","remove","validateJoinColumns","dataSource","manager","connection","entityTarget","checkUniqueness","existing","isUnique","entityExisting","getBoundRoles","getRepository","find","client_id","role","cache","prefix","CLIENT_OWNED_ROLES","milliseconds","map","entry","getBoundPermissions","junctionTarget","cachePrefix","CLIENT_OWNED_PERMISSIONS","cacheKey"],"sources":["../../../../../../src/app/modules/database/repositories/client/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 { Client, Realm, Role } from '@authup/core-kit';\nimport type { PermissionPolicyBinding } from '@authup/access';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport { isUUID } from '@authup/kit';\nimport type { Repository } from 'typeorm';\nimport { applyQuery, isEntityUnique, validateEntityJoinColumns } from 'typeorm-extension';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IClientRepository, IRealmRepository } from '../../../../../core/index.ts';\nimport { DatabaseConflictError } from '../../../../../adapters/database/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\nimport { loadBoundPermissions } from '../bindings.ts';\nimport {\n CachePrefix,\n ClientEntity,\n ClientPermissionEntity,\n ClientRoleEntity,\n} from '../../../../../adapters/database/domains/index.ts';\nimport { RealmRepositoryAdapter } from '../realm/repository.ts';\n\nexport type ClientRepositoryAdapterContext = {\n repository: Repository<Client>,\n realmRepository: Repository<Realm>,\n};\n\nexport class ClientRepositoryAdapter implements IClientRepository {\n private readonly repository: Repository<Client>;\n\n private readonly realmRepository: IRealmRepository;\n\n constructor(ctx: ClientRepositoryAdapterContext) {\n this.repository = ctx.repository;\n this.realmRepository = new RealmRepositoryAdapter(ctx.realmRepository);\n }\n\n async findMany(query: Record<string, any>): Promise<EntityRepositoryFindManyResult<Client>> {\n const qb = this.repository.createQueryBuilder('client');\n qb.groupBy('client.id');\n\n const { pagination } = applyQuery(qb, query, {\n defaultAlias: 'client',\n fields: {\n default: [\n 'id',\n 'active',\n 'built_in',\n 'name',\n 'display_name',\n 'description',\n 'secret_hashed',\n 'secret_encrypted',\n 'base_url',\n 'root_url',\n 'redirect_uri',\n 'grant_types',\n 'scope',\n 'is_confidential',\n 'realm_id',\n 'updated_at',\n 'created_at',\n ],\n allowed: ['secret'],\n },\n filters: { allowed: ['id', 'name', 'realm_id', 'realm.name'] },\n pagination: { maxLimit: 50 },\n relations: {\n allowed: ['realm'],\n onJoin: (_property: string, key: string, q: any) => {\n q.addGroupBy(`${key}.id`);\n },\n },\n sort: { allowed: ['id', 'created_at', 'updated_at'] },\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 findOneById(id: string): Promise<Client | null> {\n return this.findOneBy({ id });\n }\n\n async findOneByName(name: string, realmKey?: string): Promise<Client | null> {\n const qb = this.repository.createQueryBuilder('client');\n qb.where('client.name = :name', { name });\n\n if (realmKey) {\n const realm = await this.realmRepository.resolve(realmKey);\n if (realm) {\n qb.andWhere('client.realm_id = :realmId', { realmId: realm.id });\n }\n }\n\n return qb.getOne();\n }\n\n async findOne(id: string, query?: Record<string, any>, realmKey?: string): Promise<Client | null> {\n const qb = this.repository.createQueryBuilder('client');\n\n if (isUUID(id)) {\n qb.where('client.id = :id', { id });\n } else {\n qb.where('client.name = :name', { name: id });\n\n if (realmKey) {\n const realm = await this.realmRepository.resolve(realmKey);\n if (!realm) {\n return null;\n }\n qb.andWhere('client.realm_id = :realmId', { realmId: realm.id });\n }\n }\n\n applyQuery(qb, query || {}, {\n defaultAlias: 'client',\n fields: {\n default: [\n 'id',\n 'active',\n 'built_in',\n 'name',\n 'display_name',\n 'description',\n 'secret_hashed',\n 'secret_encrypted',\n 'base_url',\n 'root_url',\n 'redirect_uri',\n 'grant_types',\n 'scope',\n 'is_confidential',\n 'realm_id',\n 'updated_at',\n 'created_at',\n ],\n allowed: ['secret'],\n },\n relations: { allowed: ['realm'] },\n });\n\n return qb.getOne();\n }\n\n async findOneByIdOrName(idOrName: string, realm?: string): Promise<Client | null> {\n return isUUID(idOrName) ?\n this.findOneById(idOrName) :\n this.findOneByName(idOrName, realm);\n }\n\n async findManyBy(where: Record<string, any>): Promise<Client[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<Client | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n async findOneWithSecret(where: Record<string, any>): Promise<Client | null> {\n const qb = this.repository.createQueryBuilder('client');\n\n Object.entries(where).forEach(([key, value]) => {\n qb.andWhere(`client.${key} = :${key}`, { [key]: value });\n });\n\n qb.addSelect('client.secret');\n\n return qb.getOne();\n }\n\n create(data: Partial<Client>): Client {\n return this.repository.create(data);\n }\n\n merge(entity: Client, data: Partial<Client>): Client {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: Client): Promise<Client> {\n return this.repository.save(entity);\n }\n\n async remove(entity: Client): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<Client>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: ClientEntity,\n });\n }\n\n async checkUniqueness(data: Partial<Client>, existing?: Client): Promise<void> {\n const isUnique = await isEntityUnique({\n dataSource: this.repository.manager.connection,\n entityTarget: ClientEntity,\n entity: data,\n entityExisting: existing,\n });\n\n if (!isUnique) {\n throw new DatabaseConflictError();\n }\n }\n\n async getBoundRoles(entity: string | Client): Promise<Role[]> {\n const id = typeof entity === 'string' ? entity : entity.id;\n const entries = await this.repository.manager\n .getRepository(ClientRoleEntity)\n .find({\n where: { client_id: id },\n relations: { role: true },\n cache: {\n id: buildRedisKeyPath({\n prefix: CachePrefix.CLIENT_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 | Client): Promise<PermissionPolicyBinding[]> {\n const id = typeof entity === 'string' ? entity : entity.id;\n return loadBoundPermissions({\n manager: this.repository.manager,\n junctionTarget: ClientPermissionEntity,\n where: { client_id: id },\n cachePrefix: CachePrefix.CLIENT_OWNED_PERMISSIONS,\n cacheKey: id,\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ClientPermission } from '@authup/core-kit';
|
|
2
2
|
import type { Repository } from 'typeorm';
|
|
3
|
-
import type { EntityRepositoryFindManyResult } from '
|
|
3
|
+
import type { EntityRepositoryFindManyResult } from '@authup/server-kit';
|
|
4
4
|
import type { IClientPermissionRepository } from '../../../../../core/entities/client-permission/types.ts';
|
|
5
5
|
export declare class ClientPermissionRepositoryAdapter implements IClientPermissionRepository {
|
|
6
6
|
private readonly repository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../../../src/app/modules/database/repositories/client-permission/repository.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../../../src/app/modules/database/repositories/client-permission/repository.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yDAAyD,CAAC;AAI3G,qBAAa,iCAAkC,YAAW,2BAA2B;IACjF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;gBAE9C,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC;IAI9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,8BAA8B,CAAC,gBAAgB,CAAC,CAAC;IAqCrG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAIzD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAI9D,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAI/D,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAInE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAI7E,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB;IAIzD,KAAK,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB;IAI5E,IAAI,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIzD,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAM5E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["applyQuery","validateEntityJoinColumns","ClientPermissionEntity","translateWhereConditions","ClientPermissionRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","defaultAlias","filters","allowed","relations","onJoin","_property","key","q","addGroupBy","sort","maxLimit","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/client-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 { ClientPermission } from '@authup/core-kit';\nimport type { Repository } from 'typeorm';\nimport { applyQuery, validateEntityJoinColumns } from 'typeorm-extension';\nimport type { EntityRepositoryFindManyResult } from '
|
|
1
|
+
{"version":3,"file":"repository.mjs","names":["applyQuery","validateEntityJoinColumns","ClientPermissionEntity","translateWhereConditions","ClientPermissionRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","defaultAlias","filters","allowed","relations","onJoin","_property","key","q","addGroupBy","sort","maxLimit","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/client-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 { ClientPermission } from '@authup/core-kit';\nimport type { Repository } from 'typeorm';\nimport { applyQuery, validateEntityJoinColumns } from 'typeorm-extension';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IClientPermissionRepository } from '../../../../../core/entities/client-permission/types.ts';\nimport { ClientPermissionEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\n\nexport class ClientPermissionRepositoryAdapter implements IClientPermissionRepository {\n private readonly repository: Repository<ClientPermission>;\n\n constructor(repository: Repository<ClientPermission>) {\n this.repository = repository;\n }\n\n async findMany(query: Record<string, any>): Promise<EntityRepositoryFindManyResult<ClientPermission>> {\n const qb = this.repository.createQueryBuilder('clientPermission');\n qb.groupBy('clientPermission.id');\n\n const { pagination } = applyQuery(qb, query, {\n defaultAlias: 'clientPermission',\n filters: { allowed: ['client_id', 'permission_id'] },\n relations: {\n allowed: [\n 'client',\n 'permission',\n ],\n onJoin: (_property: string, key: string, q: any) => {\n q.addGroupBy(`${key}.id`);\n },\n },\n sort: {\n allowed: [\n 'id',\n 'created_at',\n 'updated_at',\n ],\n },\n pagination: { maxLimit: 50 },\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 findOneById(id: string): Promise<ClientPermission | null> {\n return this.findOneBy({ id });\n }\n\n findOneByName(_name: string): Promise<ClientPermission | null> {\n return Promise.resolve(null);\n }\n\n findOneByIdOrName(idOrName: string): Promise<ClientPermission | null> {\n return this.findOneById(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<ClientPermission[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<ClientPermission | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<ClientPermission>): ClientPermission {\n return this.repository.create(data);\n }\n\n merge(entity: ClientPermission, data: Partial<ClientPermission>): ClientPermission {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: ClientPermission): Promise<ClientPermission> {\n return this.repository.save(entity);\n }\n\n async remove(entity: ClientPermission): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<ClientPermission>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: ClientPermissionEntity,\n });\n }\n}\n"],"mappings":";;;;;AAeA,IAAaI,oCAAb,MAAaA;CACQC;CAEjB,YAAYA,YAA0C;EAClD,KAAKA,aAAaA;CACtB;CAEA,MAAMC,SAASC,OAAuF;EAClG,MAAMC,KAAK,KAAKH,WAAWI,mBAAmB,kBAAA;EAC9CD,GAAGE,QAAQ,qBAAA;EAEX,MAAM,EAAEC,eAAeX,WAAWQ,IAAID,OAAO;GACzCK,cAAc;GACdC,SAAS,EAAEC,SAAS,CAAC,aAAa,eAAA,EAAiB;GACnDC,WAAW;IACPD,SAAS,CACL,UACA,YAAA;IAEJE,SAASC,WAAmBC,KAAaC,MAAAA;KACrCA,EAAEC,WAAW,GAAGF,IAAI,IAAI;IAC5B;GACJ;GACAG,MAAM,EACFP,SAAS;IACL;IACA;IACA;KAER;GACAH,YAAY,EAAEW,UAAU,GAAG;EAC/B,CAAA;EAEA,MAAM,CAACC,UAAUC,SAAS,MAAMhB,GAAGiB,gBAAe;EAElD,OAAO;GACHC,MAAMH;GACNI,MAAM;IACFH;IACA,GAAGb;GACP;EACJ;CACJ;CAEAiB,YAAYC,IAA8C;EACtD,OAAO,KAAKC,UAAU,EAAED,GAAG,CAAA;CAC/B;CAEAE,cAAcC,OAAiD;EAC3D,OAAOC,QAAQC,QAAQ,IAAA;CAC3B;CAEAC,kBAAkBC,UAAoD;EAClE,OAAO,KAAKR,YAAYQ,QAAAA;CAC5B;CAEA,MAAMC,WAAWC,OAAyD;EACtE,OAAO,KAAKjC,WAAWkC,OAAOpC,yBAAyBmC,KAAAA,CAAAA;CAC3D;CAEA,MAAMR,UAAUQ,OAA8D;EAC1E,OAAO,KAAKjC,WAAWyB,UAAU3B,yBAAyBmC,KAAAA,CAAAA;CAC9D;CAEAE,OAAOd,MAAmD;EACtD,OAAO,KAAKrB,WAAWmC,OAAOd,IAAAA;CAClC;CAEAe,MAAMC,QAA0BhB,MAAmD;EAC/E,OAAO,KAAKrB,WAAWoC,MAAMC,QAAQhB,IAAAA;CACzC;CAEA,MAAMiB,KAAKD,QAAqD;EAC5D,OAAO,KAAKrC,WAAWsC,KAAKD,MAAAA;CAChC;CAEA,MAAME,OAAOF,QAAyC;EAClD,MAAM,KAAKrC,WAAWuC,OAAOF,MAAAA;CACjC;CAEA,MAAMG,oBAAoBnB,MAAgD;EACtE,MAAMzB,0BAA0ByB,MAAM;GAClCoB,YAAY,KAAKzC,WAAW0C,QAAQC;GACpCC,cAAc/C;EAClB,CAAA;CACJ;AACJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ClientRole } from '@authup/core-kit';
|
|
2
2
|
import type { Repository } from 'typeorm';
|
|
3
|
-
import type { EntityRepositoryFindManyResult } from '
|
|
3
|
+
import type { EntityRepositoryFindManyResult } from '@authup/server-kit';
|
|
4
4
|
import type { IClientRoleRepository } from '../../../../../core/entities/client-role/types.ts';
|
|
5
5
|
export declare class ClientRoleRepositoryAdapter implements IClientRoleRepository {
|
|
6
6
|
private readonly repository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../../../src/app/modules/database/repositories/client-role/repository.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../../../src/app/modules/database/repositories/client-role/repository.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAI/F,qBAAa,2BAA4B,YAAW,qBAAqB;IACrE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;gBAExC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC;IAIxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC;IAkC/F,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAInD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAIxD,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAIzD,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI7D,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAIvE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU;IAI7C,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU;IAI1D,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAI7C,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAMtE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["applyQuery","validateEntityJoinColumns","ClientRoleEntity","translateWhereConditions","ClientRoleRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","defaultAlias","filters","allowed","relations","onJoin","_property","key","q","addGroupBy","sort","maxLimit","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/client-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 { ClientRole } from '@authup/core-kit';\nimport type { Repository } from 'typeorm';\nimport { applyQuery, validateEntityJoinColumns } from 'typeorm-extension';\nimport type { EntityRepositoryFindManyResult } from '
|
|
1
|
+
{"version":3,"file":"repository.mjs","names":["applyQuery","validateEntityJoinColumns","ClientRoleEntity","translateWhereConditions","ClientRoleRepositoryAdapter","repository","findMany","query","qb","createQueryBuilder","groupBy","pagination","defaultAlias","filters","allowed","relations","onJoin","_property","key","q","addGroupBy","sort","maxLimit","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/client-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 { ClientRole } from '@authup/core-kit';\nimport type { Repository } from 'typeorm';\nimport { applyQuery, validateEntityJoinColumns } from 'typeorm-extension';\nimport type { EntityRepositoryFindManyResult } from '@authup/server-kit';\nimport type { IClientRoleRepository } from '../../../../../core/entities/client-role/types.ts';\nimport { ClientRoleEntity } from '../../../../../adapters/database/domains/index.ts';\nimport { translateWhereConditions } from '../helpers.ts';\n\nexport class ClientRoleRepositoryAdapter implements IClientRoleRepository {\n private readonly repository: Repository<ClientRole>;\n\n constructor(repository: Repository<ClientRole>) {\n this.repository = repository;\n }\n\n async findMany(query: Record<string, any>): Promise<EntityRepositoryFindManyResult<ClientRole>> {\n const qb = this.repository.createQueryBuilder('clientRole');\n qb.groupBy('clientRole.id');\n\n const { pagination } = applyQuery(qb, query, {\n defaultAlias: 'clientRole',\n filters: { allowed: ['client_id', 'role_id'] },\n relations: {\n allowed: ['client', 'role'],\n onJoin: (_property: string, key: string, q: any) => {\n q.addGroupBy(`${key}.id`);\n },\n },\n sort: {\n allowed: [\n 'id',\n 'created_at',\n 'updated_at',\n ],\n },\n pagination: { maxLimit: 50 },\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 findOneById(id: string): Promise<ClientRole | null> {\n return this.findOneBy({ id });\n }\n\n findOneByName(_name: string): Promise<ClientRole | null> {\n return Promise.resolve(null);\n }\n\n findOneByIdOrName(idOrName: string): Promise<ClientRole | null> {\n return this.findOneById(idOrName);\n }\n\n async findManyBy(where: Record<string, any>): Promise<ClientRole[]> {\n return this.repository.findBy(translateWhereConditions(where));\n }\n\n async findOneBy(where: Record<string, any>): Promise<ClientRole | null> {\n return this.repository.findOneBy(translateWhereConditions(where));\n }\n\n create(data: Partial<ClientRole>): ClientRole {\n return this.repository.create(data);\n }\n\n merge(entity: ClientRole, data: Partial<ClientRole>): ClientRole {\n return this.repository.merge(entity, data);\n }\n\n async save(entity: ClientRole): Promise<ClientRole> {\n return this.repository.save(entity);\n }\n\n async remove(entity: ClientRole): Promise<void> {\n await this.repository.remove(entity);\n }\n\n async validateJoinColumns(data: Partial<ClientRole>): Promise<void> {\n await validateEntityJoinColumns(data, {\n dataSource: this.repository.manager.connection,\n entityTarget: ClientRoleEntity,\n });\n }\n}\n"],"mappings":";;;;;AAeA,IAAaI,8BAAb,MAAaA;CACQC;CAEjB,YAAYA,YAAoC;EAC5C,KAAKA,aAAaA;CACtB;CAEA,MAAMC,SAASC,OAAiF;EAC5F,MAAMC,KAAK,KAAKH,WAAWI,mBAAmB,YAAA;EAC9CD,GAAGE,QAAQ,eAAA;EAEX,MAAM,EAAEC,eAAeX,WAAWQ,IAAID,OAAO;GACzCK,cAAc;GACdC,SAAS,EAAEC,SAAS,CAAC,aAAa,SAAA,EAAW;GAC7CC,WAAW;IACPD,SAAS,CAAC,UAAU,MAAA;IACpBE,SAASC,WAAmBC,KAAaC,MAAAA;KACrCA,EAAEC,WAAW,GAAGF,IAAI,IAAI;IAC5B;GACJ;GACAG,MAAM,EACFP,SAAS;IACL;IACA;IACA;KAER;GACAH,YAAY,EAAEW,UAAU,GAAG;EAC/B,CAAA;EAEA,MAAM,CAACC,UAAUC,SAAS,MAAMhB,GAAGiB,gBAAe;EAElD,OAAO;GACHC,MAAMH;GACNI,MAAM;IACFH;IACA,GAAGb;GACP;EACJ;CACJ;CAEAiB,YAAYC,IAAwC;EAChD,OAAO,KAAKC,UAAU,EAAED,GAAG,CAAA;CAC/B;CAEAE,cAAcC,OAA2C;EACrD,OAAOC,QAAQC,QAAQ,IAAA;CAC3B;CAEAC,kBAAkBC,UAA8C;EAC5D,OAAO,KAAKR,YAAYQ,QAAAA;CAC5B;CAEA,MAAMC,WAAWC,OAAmD;EAChE,OAAO,KAAKjC,WAAWkC,OAAOpC,yBAAyBmC,KAAAA,CAAAA;CAC3D;CAEA,MAAMR,UAAUQ,OAAwD;EACpE,OAAO,KAAKjC,WAAWyB,UAAU3B,yBAAyBmC,KAAAA,CAAAA;CAC9D;CAEAE,OAAOd,MAAuC;EAC1C,OAAO,KAAKrB,WAAWmC,OAAOd,IAAAA;CAClC;CAEAe,MAAMC,QAAoBhB,MAAuC;EAC7D,OAAO,KAAKrB,WAAWoC,MAAMC,QAAQhB,IAAAA;CACzC;CAEA,MAAMiB,KAAKD,QAAyC;EAChD,OAAO,KAAKrC,WAAWsC,KAAKD,MAAAA;CAChC;CAEA,MAAME,OAAOF,QAAmC;EAC5C,MAAM,KAAKrC,WAAWuC,OAAOF,MAAAA;CACjC;CAEA,MAAMG,oBAAoBnB,MAA0C;EAChE,MAAMzB,0BAA0ByB,MAAM;GAClCoB,YAAY,KAAKzC,WAAW0C,QAAQC;GACpCC,cAAc/C;EAClB,CAAA;CACJ;AACJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ClientScope } from '@authup/core-kit';
|
|
2
2
|
import type { Repository } from 'typeorm';
|
|
3
|
-
import type { EntityRepositoryFindManyResult } from '
|
|
3
|
+
import type { EntityRepositoryFindManyResult } from '@authup/server-kit';
|
|
4
4
|
import type { IClientScopeRepository } from '../../../../../core/entities/client-scope/types.ts';
|
|
5
5
|
export declare class ClientScopeRepositoryAdapter implements IClientScopeRepository {
|
|
6
6
|
private readonly repository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../../../src/app/modules/database/repositories/client-scope/repository.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../../../src/app/modules/database/repositories/client-scope/repository.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oDAAoD,CAAC;AAIjG,qBAAa,4BAA6B,YAAW,sBAAsB;IACvE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;gBAEzC,UAAU,EAAE,UAAU,CAAC,WAAW,CAAC;IAIzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC;IA2BhG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAIpD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAIzD,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAI1D,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAI9D,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAIxE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW;IAI/C,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW;IAI7D,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAI/C,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAMvE"}
|