@authup/server-core 1.0.0-beta.40 → 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.d.ts +5 -8
- package/dist/adapters/http/adapters/oauth2/authorization/module.d.ts.map +1 -1
- package/dist/adapters/http/adapters/oauth2/authorization/module.mjs +8 -10
- package/dist/adapters/http/adapters/oauth2/authorization/module.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/authorize.d.ts +3 -3
- package/dist/adapters/http/adapters/oauth2/grant-types/authorize.d.ts.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs +15 -14
- package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.d.ts +2 -2
- package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.d.ts.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs +8 -8
- package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/identity.d.ts +2 -2
- package/dist/adapters/http/adapters/oauth2/grant-types/identity.d.ts.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/identity.mjs +4 -4
- package/dist/adapters/http/adapters/oauth2/grant-types/identity.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/password.d.ts +2 -2
- package/dist/adapters/http/adapters/oauth2/grant-types/password.d.ts.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs +6 -6
- package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.d.ts +2 -2
- package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.d.ts.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs +12 -11
- package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.d.ts +2 -2
- package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.d.ts.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.mjs +5 -5
- package/dist/adapters/http/adapters/oauth2/grant-types/robot-credentials.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts +2 -2
- package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.d.ts +2 -2
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.d.ts.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs +15 -14
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.d.ts +2 -2
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.d.ts.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.mjs +16 -13
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/client/module.d.ts +9 -6
- package/dist/adapters/http/controllers/entities/client/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/client/module.mjs +54 -65
- package/dist/adapters/http/controllers/entities/client/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/client-permission/module.d.ts +8 -5
- package/dist/adapters/http/controllers/entities/client-permission/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/client-permission/module.mjs +35 -48
- 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.d.ts +7 -4
- package/dist/adapters/http/controllers/entities/client-role/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/client-role/module.mjs +27 -40
- 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.d.ts +7 -4
- package/dist/adapters/http/controllers/entities/client-scope/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/client-scope/module.mjs +27 -40
- 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.d.ts +8 -6
- package/dist/adapters/http/controllers/entities/identity-provide-role/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/identity-provide-role/module.mjs +35 -48
- 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 +10 -9
- package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +92 -114
- package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/permission/module.d.ts +13 -17
- package/dist/adapters/http/controllers/entities/permission/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/permission/module.mjs +60 -112
- package/dist/adapters/http/controllers/entities/permission/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/permission-policy/module.d.ts +7 -4
- package/dist/adapters/http/controllers/entities/permission-policy/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/permission-policy/module.mjs +27 -40
- package/dist/adapters/http/controllers/entities/permission-policy/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/policy/module.d.ts +14 -16
- package/dist/adapters/http/controllers/entities/policy/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/policy/module.mjs +65 -106
- 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 +13 -8
- package/dist/adapters/http/controllers/entities/realm/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/realm/module.mjs +55 -74
- package/dist/adapters/http/controllers/entities/realm/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/robot/module.d.ts +9 -6
- package/dist/adapters/http/controllers/entities/robot/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/robot/module.mjs +54 -67
- package/dist/adapters/http/controllers/entities/robot/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/robot-permission/module.d.ts +8 -5
- package/dist/adapters/http/controllers/entities/robot-permission/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/robot-permission/module.mjs +35 -48
- 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.d.ts +7 -4
- package/dist/adapters/http/controllers/entities/robot-role/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/robot-role/module.mjs +27 -40
- 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.d.ts +9 -6
- package/dist/adapters/http/controllers/entities/role/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/role/module.mjs +42 -57
- package/dist/adapters/http/controllers/entities/role/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/role-attribute/module.d.ts +8 -5
- package/dist/adapters/http/controllers/entities/role-attribute/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/role-attribute/module.mjs +35 -48
- 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.d.ts +8 -5
- package/dist/adapters/http/controllers/entities/role-permission/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/role-permission/module.mjs +35 -48
- 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.d.ts +9 -6
- package/dist/adapters/http/controllers/entities/scope/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/scope/module.mjs +42 -57
- package/dist/adapters/http/controllers/entities/scope/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user/module.d.ts +9 -6
- package/dist/adapters/http/controllers/entities/user/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/user/module.mjs +48 -59
- package/dist/adapters/http/controllers/entities/user/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/user-attribute/module.d.ts +8 -5
- package/dist/adapters/http/controllers/entities/user-attribute/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/user-attribute/module.mjs +35 -48
- 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.d.ts +8 -5
- package/dist/adapters/http/controllers/entities/user-permission/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/user-permission/module.mjs +35 -48
- 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.d.ts +7 -4
- package/dist/adapters/http/controllers/entities/user-role/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/user-role/module.mjs +27 -40
- 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.d.ts +3 -2
- package/dist/adapters/http/controllers/workflows/activate/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/activate/module.mjs +6 -11
- 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 +7 -5
- package/dist/adapters/http/controllers/workflows/authorize/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/authorize/module.mjs +21 -22
- package/dist/adapters/http/controllers/workflows/authorize/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/jwks/handlers/read.d.ts +5 -3
- package/dist/adapters/http/controllers/workflows/jwks/handlers/read.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/jwks/handlers/read.mjs +15 -18
- package/dist/adapters/http/controllers/workflows/jwks/handlers/read.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/jwks/module.d.ts +6 -3
- package/dist/adapters/http/controllers/workflows/jwks/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/jwks/module.mjs +20 -30
- package/dist/adapters/http/controllers/workflows/jwks/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/openid/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/openid/module.mjs +10 -7
- package/dist/adapters/http/controllers/workflows/openid/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/password-forgot/module.d.ts +3 -3
- package/dist/adapters/http/controllers/workflows/password-forgot/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs +7 -11
- package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/password-reset/module.d.ts +3 -3
- package/dist/adapters/http/controllers/workflows/password-reset/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/password-reset/module.mjs +7 -11
- package/dist/adapters/http/controllers/workflows/password-reset/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/register/module.d.ts +3 -3
- package/dist/adapters/http/controllers/workflows/register/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/register/module.mjs +7 -11
- package/dist/adapters/http/controllers/workflows/register/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/status/module.d.ts.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 +5 -5
- package/dist/adapters/http/controllers/workflows/token/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/token/module.mjs +26 -27
- package/dist/adapters/http/controllers/workflows/token/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/token/utils/extract.d.ts +2 -2
- package/dist/adapters/http/controllers/workflows/token/utils/extract.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/token/utils/extract.mjs +8 -7
- 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.d.ts +0 -2
- package/dist/adapters/http/index.d.ts.map +1 -1
- package/dist/adapters/http/index.mjs +7 -7
- package/dist/adapters/http/middleware/built-in/assets.d.ts +1 -0
- package/dist/adapters/http/middleware/built-in/assets.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/assets.mjs +9 -9
- package/dist/adapters/http/middleware/built-in/assets.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/authorization/factory.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/authorization/factory.mjs +5 -2
- package/dist/adapters/http/middleware/built-in/authorization/factory.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/authorization/module.d.ts +4 -10
- package/dist/adapters/http/middleware/built-in/authorization/module.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/authorization/module.mjs +25 -40
- 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.d.ts +1 -1
- package/dist/adapters/http/middleware/built-in/cors.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/cors.mjs +18 -10
- package/dist/adapters/http/middleware/built-in/cors.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/error.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/error.mjs +9 -18
- 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 +5 -2
- package/dist/adapters/http/middleware/built-in/loggedin/module.d.ts +2 -2
- package/dist/adapters/http/middleware/built-in/loggedin/module.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/loggedin/module.mjs +3 -3
- package/dist/adapters/http/middleware/built-in/loggedin/module.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/loggedin/user.d.ts +2 -2
- package/dist/adapters/http/middleware/built-in/loggedin/user.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/loggedin/user.mjs +4 -4
- package/dist/adapters/http/middleware/built-in/loggedin/user.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/logger.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/logger.mjs +21 -29
- package/dist/adapters/http/middleware/built-in/logger.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/prometheus.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/prometheus.mjs +2 -3
- package/dist/adapters/http/middleware/built-in/prometheus.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/rate-limit.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/rate-limit.mjs +2 -2
- 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.d.ts +3 -4
- package/dist/adapters/http/middleware/built-in/swagger.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/swagger.mjs +4 -16
- package/dist/adapters/http/middleware/built-in/swagger.mjs.map +1 -1
- package/dist/adapters/http/middleware/index.mjs +4 -2
- package/dist/adapters/http/request/helpers/actor.d.ts +3 -3
- package/dist/adapters/http/request/helpers/actor.d.ts.map +1 -1
- package/dist/adapters/http/request/helpers/actor.mjs +3 -3
- package/dist/adapters/http/request/helpers/actor.mjs.map +1 -1
- package/dist/adapters/http/request/helpers/body-realm-id.d.ts +1 -2
- package/dist/adapters/http/request/helpers/body-realm-id.d.ts.map +1 -1
- package/dist/adapters/http/request/helpers/body-realm-id.mjs +3 -4
- package/dist/adapters/http/request/helpers/body-realm-id.mjs.map +1 -1
- package/dist/adapters/http/request/helpers/identity.d.ts +4 -4
- package/dist/adapters/http/request/helpers/identity.d.ts.map +1 -1
- package/dist/adapters/http/request/helpers/identity.mjs +7 -8
- package/dist/adapters/http/request/helpers/identity.mjs.map +1 -1
- package/dist/adapters/http/request/helpers/index.d.ts +2 -0
- package/dist/adapters/http/request/helpers/index.d.ts.map +1 -1
- package/dist/adapters/http/request/helpers/index.mjs +4 -2
- package/dist/adapters/http/request/helpers/locations.d.ts +4 -0
- package/dist/adapters/http/request/helpers/locations.d.ts.map +1 -0
- package/dist/adapters/http/request/helpers/locations.mjs +28 -0
- package/dist/adapters/http/request/helpers/locations.mjs.map +1 -0
- package/dist/adapters/http/request/helpers/param-id.d.ts +5 -5
- package/dist/adapters/http/request/helpers/param-id.d.ts.map +1 -1
- package/dist/adapters/http/request/helpers/param-id.mjs +8 -9
- 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.d.ts +3 -3
- package/dist/adapters/http/request/helpers/scopes.d.ts.map +1 -1
- package/dist/adapters/http/request/helpers/scopes.mjs +4 -5
- package/dist/adapters/http/request/helpers/scopes.mjs.map +1 -1
- package/dist/adapters/http/request/helpers/token.d.ts +3 -3
- package/dist/adapters/http/request/helpers/token.d.ts.map +1 -1
- package/dist/adapters/http/request/helpers/token.mjs +4 -5
- package/dist/adapters/http/request/helpers/token.mjs.map +1 -1
- package/dist/adapters/http/request/index.mjs +4 -2
- package/dist/adapters/http/request/permission/helper.d.ts +3 -3
- package/dist/adapters/http/request/permission/helper.d.ts.map +1 -1
- package/dist/adapters/http/request/permission/helper.mjs +4 -5
- package/dist/adapters/http/request/permission/helper.mjs.map +1 -1
- package/dist/adapters/http/request/permission/module.d.ts +3 -3
- package/dist/adapters/http/request/permission/module.d.ts.map +1 -1
- package/dist/adapters/http/request/permission/module.mjs +5 -5
- 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.d.ts +1 -2
- package/dist/app/builder.d.ts.map +1 -1
- package/dist/app/builder.mjs +0 -5
- package/dist/app/builder.mjs.map +1 -1
- package/dist/app/factory.d.ts.map +1 -1
- package/dist/app/factory.mjs +1 -1
- package/dist/app/factory.mjs.map +1 -1
- package/dist/app/index.mjs +1 -2
- 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/config/types.d.ts +2 -2
- package/dist/app/modules/config/types.d.ts.map +1 -1
- package/dist/app/modules/constants.d.ts +0 -1
- package/dist/app/modules/constants.d.ts.map +1 -1
- package/dist/app/modules/constants.mjs +0 -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.d.ts +3 -2
- package/dist/app/modules/http/constants.d.ts.map +1 -1
- package/dist/app/modules/http/constants.mjs.map +1 -1
- package/dist/app/modules/http/module.d.ts +2 -2
- package/dist/app/modules/http/module.d.ts.map +1 -1
- package/dist/app/modules/http/module.mjs +10 -17
- 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 +59 -70
- 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 +13 -6
- 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/index.d.ts +0 -1
- package/dist/app/modules/index.d.ts.map +1 -1
- package/dist/app/modules/index.mjs +1 -3
- 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.d.ts.map +1 -1
- package/dist/app/modules/runtime/module.mjs +3 -1
- package/dist/app/modules/runtime/module.mjs.map +1 -1
- package/dist/cli/commands/healthcheck.mjs +1 -1
- package/dist/cli/commands/healthcheck.mjs.map +1 -1
- package/dist/cli/commands/index.d.ts +0 -1
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.mjs +1 -2
- package/dist/cli/commands/migration.mjs.map +1 -1
- package/dist/cli/commands/reset.mjs.map +1 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.mjs +22 -1
- package/dist/cli/commands/start.mjs.map +1 -1
- package/dist/cli/index.mjs.map +1 -1
- package/dist/cli/module.d.ts.map +1 -1
- package/dist/cli/module.mjs +1 -3
- 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/error.d.ts +8 -0
- package/dist/core/oauth2/helpers/error.d.ts.map +1 -0
- package/dist/core/oauth2/helpers/error.mjs +26 -0
- 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 +7 -7
- package/dist/path.mjs.map +1 -1
- package/dist/swagger.json +9413 -2773
- package/dist/ui/client/.vite/ssr-manifest.json +33 -113
- package/dist/ui/client/assets/index-BdPtpN2t.js +66 -0
- package/dist/ui/client/index.html +1 -1
- package/dist/ui/server/server.js +1483 -1066
- package/dist/utils/error.d.ts +13 -0
- package/dist/utils/error.d.ts.map +1 -1
- package/dist/utils/error.mjs +26 -24
- package/dist/utils/error.mjs.map +1 -1
- package/dist/utils/host.mjs.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.mjs +2 -1
- package/dist/utils/self-id.mjs.map +1 -1
- package/dist/utils/url.d.ts +10 -0
- package/dist/utils/url.d.ts.map +1 -0
- package/dist/utils/url.mjs +17 -0
- package/dist/utils/url.mjs.map +1 -0
- package/package.json +32 -33
- package/dist/adapters/http/server/index.d.ts +0 -3
- package/dist/adapters/http/server/index.d.ts.map +0 -1
- package/dist/adapters/http/server/index.mjs +0 -2
- package/dist/adapters/http/server/module.d.ts +0 -3
- package/dist/adapters/http/server/module.d.ts.map +0 -1
- package/dist/adapters/http/server/module.mjs +0 -10
- package/dist/adapters/http/server/module.mjs.map +0 -1
- package/dist/adapters/http/server/type.d.ts +0 -8
- package/dist/adapters/http/server/type.d.ts.map +0 -1
- package/dist/adapters/http/swagger/index.d.ts +0 -3
- package/dist/adapters/http/swagger/index.d.ts.map +0 -1
- package/dist/adapters/http/swagger/index.mjs +0 -2
- package/dist/adapters/http/swagger/module.d.ts +0 -12
- package/dist/adapters/http/swagger/module.d.ts.map +0 -1
- package/dist/adapters/http/swagger/module.mjs +0 -75
- package/dist/adapters/http/swagger/module.mjs.map +0 -1
- package/dist/adapters/http/swagger/type.d.ts +0 -4
- package/dist/adapters/http/swagger/type.d.ts.map +0 -1
- package/dist/adapters/http/swagger/type.mjs +0 -1
- package/dist/app/modules/swagger/index.d.ts +0 -2
- package/dist/app/modules/swagger/index.d.ts.map +0 -1
- package/dist/app/modules/swagger/index.mjs +0 -2
- package/dist/app/modules/swagger/module.d.ts +0 -9
- package/dist/app/modules/swagger/module.d.ts.map +0 -1
- package/dist/app/modules/swagger/module.mjs +0 -32
- package/dist/app/modules/swagger/module.mjs.map +0 -1
- package/dist/cli/commands/swagger.d.ts +0 -8
- package/dist/cli/commands/swagger.d.ts.map +0 -1
- package/dist/cli/commands/swagger.mjs +0 -29
- package/dist/cli/commands/swagger.mjs.map +0 -1
- 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/index.mjs +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 +0 -9
- package/dist/core/oauth2/helpers/erorr.d.ts.map +0 -1
- package/dist/core/oauth2/helpers/erorr.mjs +0 -26
- package/dist/core/oauth2/helpers/erorr.mjs.map +0 -1
- package/dist/ui/client/assets/index-Noe7uiOY.js +0 -41
- /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/{adapters/http/server/type.mjs → core/identity/policy/checker/types.mjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriber.mjs","names":["EntityDefaultEventName","EntityType","buildEntityChannelName","buildEntityNamespaceName","buildRedisKeyPath","EventSubscriber","publishDomainEvent","RoleAttributeEntity","CachePrefix","publishEvent","event","data","destinations","channel","id","ROLE_ATTRIBUTE","realm_id","push","namespace","content","type","RoleAttributeSubscriber","listenTo","afterInsert","entity","connection","queryResultCache","remove","prefix","ROLE_OWNED_PERMISSIONS","key","role_id","CREATED","afterUpdate","UPDATED","afterRemove","DELETED"],"sources":["../../../../../src/adapters/database/domains/role-attribute/subscriber.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-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 { RoleAttribute } from '@authup/core-kit';\nimport {\n EntityDefaultEventName, \n EntityType, \n buildEntityChannelName, \n buildEntityNamespaceName,\n} from '@authup/core-kit';\nimport type { DomainEventDestinations } from '@authup/server-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport type {\n EntitySubscriberInterface, \n InsertEvent,\n RemoveEvent,\n UpdateEvent,\n} from 'typeorm';\nimport { EventSubscriber } from 'typeorm';\nimport { publishDomainEvent } from '../../event-publisher/index.ts';\nimport { RoleAttributeEntity } from './entity.ts';\nimport { CachePrefix } from '../constants.ts';\n\nasync function publishEvent(\n event: `${EntityDefaultEventName}`,\n data: RoleAttribute,\n) {\n const destinations : DomainEventDestinations = [\n { channel: (id) => buildEntityChannelName(EntityType.ROLE_ATTRIBUTE, id) },\n ];\n if (data.realm_id) {\n destinations.push({\n channel: (id) => buildEntityChannelName(EntityType.ROLE_ATTRIBUTE, id),\n namespace: buildEntityNamespaceName(data.realm_id),\n });\n }\n\n await publishDomainEvent({\n content: {\n type: EntityType.ROLE_ATTRIBUTE,\n event,\n data,\n },\n destinations,\n });\n}\n\n@EventSubscriber()\nexport class RoleAttributeSubscriber implements EntitySubscriberInterface<RoleAttribute> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n listenTo(): Function | string {\n return RoleAttributeEntity;\n }\n\n async afterInsert(event: InsertEvent<RoleAttribute>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.ROLE_OWNED_PERMISSIONS,\n key: event.entity.role_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.CREATED, event.entity);\n }\n\n async afterUpdate(event: UpdateEvent<RoleAttribute>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.ROLE_OWNED_PERMISSIONS,\n key: event.entity.role_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.UPDATED, event.entity as RoleAttribute);\n }\n\n async afterRemove(event: RemoveEvent<RoleAttribute>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.ROLE_OWNED_PERMISSIONS,\n key: event.entity.role_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.DELETED, event.entity);\n }\n}\n"],"mappings":";;;;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;AAsBD,eAAeS,aACXC,OACAC,MAAmB;CAEnB,MAAMC,eAAyC,CAC3C,EAAEC,UAAUC,OAAOZ,uBAAuBD,WAAWc,gBAAgBD,
|
|
1
|
+
{"version":3,"file":"subscriber.mjs","names":["EntityDefaultEventName","EntityType","buildEntityChannelName","buildEntityNamespaceName","buildRedisKeyPath","EventSubscriber","publishDomainEvent","RoleAttributeEntity","CachePrefix","publishEvent","event","data","destinations","channel","id","ROLE_ATTRIBUTE","realm_id","push","namespace","content","type","RoleAttributeSubscriber","listenTo","afterInsert","entity","connection","queryResultCache","remove","prefix","ROLE_OWNED_PERMISSIONS","key","role_id","CREATED","afterUpdate","UPDATED","afterRemove","DELETED"],"sources":["../../../../../src/adapters/database/domains/role-attribute/subscriber.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-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 { RoleAttribute } from '@authup/core-kit';\nimport {\n EntityDefaultEventName, \n EntityType, \n buildEntityChannelName, \n buildEntityNamespaceName,\n} from '@authup/core-kit';\nimport type { DomainEventDestinations } from '@authup/server-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport type {\n EntitySubscriberInterface, \n InsertEvent,\n RemoveEvent,\n UpdateEvent,\n} from 'typeorm';\nimport { EventSubscriber } from 'typeorm';\nimport { publishDomainEvent } from '../../event-publisher/index.ts';\nimport { RoleAttributeEntity } from './entity.ts';\nimport { CachePrefix } from '../constants.ts';\n\nasync function publishEvent(\n event: `${EntityDefaultEventName}`,\n data: RoleAttribute,\n) {\n const destinations : DomainEventDestinations = [\n { channel: (id) => buildEntityChannelName(EntityType.ROLE_ATTRIBUTE, id) },\n ];\n if (data.realm_id) {\n destinations.push({\n channel: (id) => buildEntityChannelName(EntityType.ROLE_ATTRIBUTE, id),\n namespace: buildEntityNamespaceName(data.realm_id),\n });\n }\n\n await publishDomainEvent({\n content: {\n type: EntityType.ROLE_ATTRIBUTE,\n event,\n data,\n },\n destinations,\n });\n}\n\n@EventSubscriber()\nexport class RoleAttributeSubscriber implements EntitySubscriberInterface<RoleAttribute> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n listenTo(): Function | string {\n return RoleAttributeEntity;\n }\n\n async afterInsert(event: InsertEvent<RoleAttribute>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.ROLE_OWNED_PERMISSIONS,\n key: event.entity.role_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.CREATED, event.entity);\n }\n\n async afterUpdate(event: UpdateEvent<RoleAttribute>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.ROLE_OWNED_PERMISSIONS,\n key: event.entity.role_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.UPDATED, event.entity as RoleAttribute);\n }\n\n async afterRemove(event: RemoveEvent<RoleAttribute>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.ROLE_OWNED_PERMISSIONS,\n key: event.entity.role_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.DELETED, event.entity);\n }\n}\n"],"mappings":";;;;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;AAsBD,eAAeS,aACXC,OACAC,MAAmB;CAEnB,MAAMC,eAAyC,CAC3C,EAAEC,UAAUC,OAAOZ,uBAAuBD,WAAWc,gBAAgBD,EAAAA,EAAI,CAAA;CAE7E,IAAIH,KAAKK,UACLJ,aAAaK,KAAK;EACdJ,UAAUC,OAAOZ,uBAAuBD,WAAWc,gBAAgBD,EAAAA;EACnEI,WAAWf,yBAAyBQ,KAAKK,QAAQ;CACrD,CAAA;CAGJ,MAAMV,mBAAmB;EACrBa,SAAS;GACLC,MAAMnB,WAAWc;GACjBL;GACAC;EACJ;EACAC;CACJ,CAAA;AACJ;AAGA,IAAaS,0BAAb,MAAaA;CAETC,WAA8B;EAC1B,OAAOf;CACX;CAEA,MAAMgB,YAAYb,OAAiD;EAC/D,IAAI,CAACA,MAAMc,QACP;EAGJ,IAAId,MAAMe,WAAWC,kBACjB,MAAMhB,MAAMe,WAAWC,iBAAiBC,OAAO,CAC3CvB,kBAAkB;GACdwB,QAAQpB,YAAYqB;GACpBC,KAAKpB,MAAMc,OAAOO;EACtB,CAAA,CAAA,CACH;EAGL,MAAMtB,aAAaT,uBAAuBgC,SAAStB,MAAMc,MAAM;CACnE;CAEA,MAAMS,YAAYvB,OAAiD;EAC/D,IAAI,CAACA,MAAMc,QACP;EAGJ,IAAId,MAAMe,WAAWC,kBACjB,MAAMhB,MAAMe,WAAWC,iBAAiBC,OAAO,CAC3CvB,kBAAkB;GACdwB,QAAQpB,YAAYqB;GACpBC,KAAKpB,MAAMc,OAAOO;EACtB,CAAA,CAAA,CACH;EAGL,MAAMtB,aAAaT,uBAAuBkC,SAASxB,MAAMc,MAAM;CACnE;CAEA,MAAMW,YAAYzB,OAAiD;EAC/D,IAAI,CAACA,MAAMc,QACP;EAGJ,IAAId,MAAMe,WAAWC,kBACjB,MAAMhB,MAAMe,WAAWC,iBAAiBC,OAAO,CAC3CvB,kBAAkB;GACdwB,QAAQpB,YAAYqB;GACpBC,KAAKpB,MAAMc,OAAOO;EACtB,CAAA,CAAA,CACH;EAGL,MAAMtB,aAAaT,uBAAuBoC,SAAS1B,MAAMc,MAAM;CACnE;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.mjs","names":["Column","CreateDateColumn","Entity","Index","JoinColumn","ManyToOne","PrimaryGeneratedColumn","UpdateDateColumn","PolicyEntity","RoleEntity","PermissionEntity","RealmEntity","RolePermissionEntity","id","created_at","updated_at","policy_id","policy","role_id","role","role_realm_id","role_realm","permission_id","permission","permission_realm_id","permission_realm","nullable","onDelete","name","unique"],"sources":["../../../../../src/adapters/database/domains/role-permission/entity.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-2021.\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 Column,\n CreateDateColumn,\n Entity, \n Index,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n UpdateDateColumn,\n} from 'typeorm';\nimport type {\n Permission,\n Policy,\n Realm,\n Role,\n RolePermission,\n} from '@authup/core-kit';\nimport { PolicyEntity } from '../policy/index.ts';\nimport { RoleEntity } from '../role/entity.ts';\nimport { PermissionEntity } from '../permission/index.ts';\nimport { RealmEntity } from '../realm/index.ts';\n\n@Entity({ name: 'auth_role_permissions' })\n@Index(['permission_id', 'role_id'], { unique: true })\nexport class RolePermissionEntity implements RolePermission {\n @PrimaryGeneratedColumn('uuid')\n id: string;\n\n // ------------------------------------------------------------------\n\n @CreateDateColumn()\n created_at: Date;\n\n @UpdateDateColumn()\n updated_at: Date;\n\n // ------------------------------------------------------------------\n\n @Column({ nullable: true })\n policy_id: string | null;\n\n @ManyToOne(() => PolicyEntity, {\n onDelete: 'SET NULL',\n nullable: true, \n })\n @JoinColumn({ name: 'policy_id' })\n policy: Policy | null;\n\n @Column()\n role_id: string;\n\n @ManyToOne(() => RoleEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'role_id' })\n role: Role;\n\n @Column({ nullable: true })\n role_realm_id: Realm['id'] | null;\n\n @ManyToOne(() => RealmEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'role_realm_id' })\n role_realm: Realm | null;\n\n @Column()\n permission_id: string;\n\n @ManyToOne(() => PermissionEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'permission_id' })\n permission: Permission;\n\n @Column({ nullable: true })\n permission_realm_id: Realm['id'] | null;\n\n @ManyToOne(() => RealmEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'permission_realm_id' })\n permission_realm: Realm | null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AA+BA,IAAaY,uBAAb,MAAaA;CAETC;CAKAC;CAGAC;CAKAC;CAOAC;CAGAC;CAIAC;CAGAC;CAOAC;CAGAC;CAIAC;CAGAC;CAOAC
|
|
1
|
+
{"version":3,"file":"entity.mjs","names":["Column","CreateDateColumn","Entity","Index","JoinColumn","ManyToOne","PrimaryGeneratedColumn","UpdateDateColumn","PolicyEntity","RoleEntity","PermissionEntity","RealmEntity","RolePermissionEntity","id","created_at","updated_at","policy_id","policy","role_id","role","role_realm_id","role_realm","permission_id","permission","permission_realm_id","permission_realm","nullable","onDelete","name","unique"],"sources":["../../../../../src/adapters/database/domains/role-permission/entity.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-2021.\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 Column,\n CreateDateColumn,\n Entity, \n Index,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n UpdateDateColumn,\n} from 'typeorm';\nimport type {\n Permission,\n Policy,\n Realm,\n Role,\n RolePermission,\n} from '@authup/core-kit';\nimport { PolicyEntity } from '../policy/index.ts';\nimport { RoleEntity } from '../role/entity.ts';\nimport { PermissionEntity } from '../permission/index.ts';\nimport { RealmEntity } from '../realm/index.ts';\n\n@Entity({ name: 'auth_role_permissions' })\n@Index(['permission_id', 'role_id'], { unique: true })\nexport class RolePermissionEntity implements RolePermission {\n @PrimaryGeneratedColumn('uuid')\n id: string;\n\n // ------------------------------------------------------------------\n\n @CreateDateColumn()\n created_at: Date;\n\n @UpdateDateColumn()\n updated_at: Date;\n\n // ------------------------------------------------------------------\n\n @Column({ nullable: true })\n policy_id: string | null;\n\n @ManyToOne(() => PolicyEntity, {\n onDelete: 'SET NULL',\n nullable: true, \n })\n @JoinColumn({ name: 'policy_id' })\n policy: Policy | null;\n\n @Column()\n role_id: string;\n\n @ManyToOne(() => RoleEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'role_id' })\n role: Role;\n\n @Column({ nullable: true })\n role_realm_id: Realm['id'] | null;\n\n @ManyToOne(() => RealmEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'role_realm_id' })\n role_realm: Realm | null;\n\n @Column()\n permission_id: string;\n\n @ManyToOne(() => PermissionEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'permission_id' })\n permission: Permission;\n\n @Column({ nullable: true })\n permission_realm_id: Realm['id'] | null;\n\n @ManyToOne(() => RealmEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'permission_realm_id' })\n permission_realm: Realm | null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AA+BA,IAAaY,uBAAb,MAAaA;CAETC;CAKAC;CAGAC;CAKAC;CAOAC;CAGAC;CAIAC;CAGAC;CAOAC;CAGAC;CAIAC;CAGAC;CAOAC;AACJ;;;;uBA3CcC,UAAU,KAAA,CAAA,GAAA,aAAA,eAAA,MAAA,CAAA,GAAA,qBAAA,WAAA,aAAA,KAAA,CAAA;;iBAGHlB,cAAAA;EACbmB,UAAU;EACVD,UAAU;;cAEAE,MAAM,YAAA,CAAA;;;;;iBAMHnB,YAAAA,EAAckB,UAAU,UAAA,CAAA;cAC3BC,MAAM,UAAA,CAAA;;;uBAGVF,UAAU,KAAA,CAAA,GAAA,aAAA,eAAA,MAAA,CAAA,GAAA,qBAAA,WAAA,iBAAA,KAAA,CAAA;;iBAGHf,aAAAA;EACbgB,UAAU;EACVD,UAAU;;cAEAE,MAAM,gBAAA,CAAA;;;;;iBAMHlB,kBAAAA,EAAoBiB,UAAU,UAAA,CAAA;cACjCC,MAAM,gBAAA,CAAA;;;uBAGVF,UAAU,KAAA,CAAA,GAAA,aAAA,eAAA,MAAA,CAAA,GAAA,qBAAA,WAAA,uBAAA,KAAA,CAAA;;iBAGHf,aAAAA;EACbgB,UAAU;EACVD,UAAU;;cAEAE,MAAM,sBAAA,CAAA;;;8CAzDdA,MAAM,wBAAA,CAAA,GAAA,MAAA,CACR,iBAAiB,SAAA,GAAA,EAAcC,QAAQ,KAAA,CAAA,CAAA,GAAA,oBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriber.mjs","names":["EntityDefaultEventName","EntityType","buildEntityChannelName","buildEntityNamespaceName","buildRedisKeyPath","EventSubscriber","publishDomainEvent","RolePermissionEntity","CachePrefix","publishEvent","event","data","destinations","channel","id","ROLE_PERMISSION","role_realm_id","push","namespace","permission_realm_id","content","type","RolePermissionSubscriber","listenTo","afterInsert","entity","connection","queryResultCache","remove","prefix","ROLE_OWNED_PERMISSIONS","key","role_id","CREATED","afterUpdate","UPDATED","afterRemove","DELETED"],"sources":["../../../../../src/adapters/database/domains/role-permission/subscriber.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { RolePermission } from '@authup/core-kit';\nimport {\n EntityDefaultEventName, \n EntityType,\n buildEntityChannelName,\n buildEntityNamespaceName,\n} from '@authup/core-kit';\nimport type { DomainEventDestination } from '@authup/server-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport type {\n EntitySubscriberInterface, \n InsertEvent,\n RemoveEvent,\n UpdateEvent,\n} from 'typeorm';\nimport { EventSubscriber } from 'typeorm';\nimport { publishDomainEvent } from '../../event-publisher/index.ts';\nimport { RolePermissionEntity } from './entity.ts';\nimport { CachePrefix } from '../constants.ts';\n\nasync function publishEvent(\n event: `${EntityDefaultEventName}`,\n data: RolePermission,\n) {\n const destinations : DomainEventDestination[] = [\n { channel: (id) => buildEntityChannelName(EntityType.ROLE_PERMISSION, id) },\n ];\n if (data.role_realm_id) {\n destinations.push({\n channel: (id) => buildEntityChannelName(EntityType.ROLE_PERMISSION, id),\n namespace: buildEntityNamespaceName(data.role_realm_id),\n });\n }\n if (data.permission_realm_id) {\n destinations.push({\n channel: (id) => buildEntityChannelName(EntityType.ROLE_PERMISSION, id),\n namespace: buildEntityNamespaceName(data.permission_realm_id),\n });\n }\n\n await publishDomainEvent({\n content: {\n type: EntityType.ROLE_PERMISSION,\n event,\n data,\n },\n destinations,\n });\n}\n\n@EventSubscriber()\nexport class RolePermissionSubscriber implements EntitySubscriberInterface<RolePermission> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n listenTo(): Function | string {\n return RolePermissionEntity;\n }\n\n async afterInsert(event: InsertEvent<RolePermission>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.ROLE_OWNED_PERMISSIONS,\n key: event.entity.role_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.CREATED, event.entity);\n }\n\n async afterUpdate(event: UpdateEvent<RolePermission>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.ROLE_OWNED_PERMISSIONS,\n key: event.entity.role_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.UPDATED, event.entity as RolePermission);\n }\n\n async afterRemove(event: RemoveEvent<RolePermission>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.ROLE_OWNED_PERMISSIONS,\n key: event.entity.role_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.DELETED, event.entity);\n }\n}\n"],"mappings":";;;;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;AAsBD,eAAeS,aACXC,OACAC,MAAoB;CAEpB,MAAMC,eAA0C,CAC5C,EAAEC,UAAUC,OAAOZ,uBAAuBD,WAAWc,iBAAiBD,
|
|
1
|
+
{"version":3,"file":"subscriber.mjs","names":["EntityDefaultEventName","EntityType","buildEntityChannelName","buildEntityNamespaceName","buildRedisKeyPath","EventSubscriber","publishDomainEvent","RolePermissionEntity","CachePrefix","publishEvent","event","data","destinations","channel","id","ROLE_PERMISSION","role_realm_id","push","namespace","permission_realm_id","content","type","RolePermissionSubscriber","listenTo","afterInsert","entity","connection","queryResultCache","remove","prefix","ROLE_OWNED_PERMISSIONS","key","role_id","CREATED","afterUpdate","UPDATED","afterRemove","DELETED"],"sources":["../../../../../src/adapters/database/domains/role-permission/subscriber.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { RolePermission } from '@authup/core-kit';\nimport {\n EntityDefaultEventName, \n EntityType,\n buildEntityChannelName,\n buildEntityNamespaceName,\n} from '@authup/core-kit';\nimport type { DomainEventDestination } from '@authup/server-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport type {\n EntitySubscriberInterface, \n InsertEvent,\n RemoveEvent,\n UpdateEvent,\n} from 'typeorm';\nimport { EventSubscriber } from 'typeorm';\nimport { publishDomainEvent } from '../../event-publisher/index.ts';\nimport { RolePermissionEntity } from './entity.ts';\nimport { CachePrefix } from '../constants.ts';\n\nasync function publishEvent(\n event: `${EntityDefaultEventName}`,\n data: RolePermission,\n) {\n const destinations : DomainEventDestination[] = [\n { channel: (id) => buildEntityChannelName(EntityType.ROLE_PERMISSION, id) },\n ];\n if (data.role_realm_id) {\n destinations.push({\n channel: (id) => buildEntityChannelName(EntityType.ROLE_PERMISSION, id),\n namespace: buildEntityNamespaceName(data.role_realm_id),\n });\n }\n if (data.permission_realm_id) {\n destinations.push({\n channel: (id) => buildEntityChannelName(EntityType.ROLE_PERMISSION, id),\n namespace: buildEntityNamespaceName(data.permission_realm_id),\n });\n }\n\n await publishDomainEvent({\n content: {\n type: EntityType.ROLE_PERMISSION,\n event,\n data,\n },\n destinations,\n });\n}\n\n@EventSubscriber()\nexport class RolePermissionSubscriber implements EntitySubscriberInterface<RolePermission> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n listenTo(): Function | string {\n return RolePermissionEntity;\n }\n\n async afterInsert(event: InsertEvent<RolePermission>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.ROLE_OWNED_PERMISSIONS,\n key: event.entity.role_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.CREATED, event.entity);\n }\n\n async afterUpdate(event: UpdateEvent<RolePermission>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.ROLE_OWNED_PERMISSIONS,\n key: event.entity.role_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.UPDATED, event.entity as RolePermission);\n }\n\n async afterRemove(event: RemoveEvent<RolePermission>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.ROLE_OWNED_PERMISSIONS,\n key: event.entity.role_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.DELETED, event.entity);\n }\n}\n"],"mappings":";;;;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;AAsBD,eAAeS,aACXC,OACAC,MAAoB;CAEpB,MAAMC,eAA0C,CAC5C,EAAEC,UAAUC,OAAOZ,uBAAuBD,WAAWc,iBAAiBD,EAAAA,EAAI,CAAA;CAE9E,IAAIH,KAAKK,eACLJ,aAAaK,KAAK;EACdJ,UAAUC,OAAOZ,uBAAuBD,WAAWc,iBAAiBD,EAAAA;EACpEI,WAAWf,yBAAyBQ,KAAKK,aAAa;CAC1D,CAAA;CAEJ,IAAIL,KAAKQ,qBACLP,aAAaK,KAAK;EACdJ,UAAUC,OAAOZ,uBAAuBD,WAAWc,iBAAiBD,EAAAA;EACpEI,WAAWf,yBAAyBQ,KAAKQ,mBAAmB;CAChE,CAAA;CAGJ,MAAMb,mBAAmB;EACrBc,SAAS;GACLC,MAAMpB,WAAWc;GACjBL;GACAC;EACJ;EACAC;CACJ,CAAA;AACJ;AAGA,IAAaU,2BAAb,MAAaA;CAETC,WAA8B;EAC1B,OAAOhB;CACX;CAEA,MAAMiB,YAAYd,OAAkD;EAChE,IAAI,CAACA,MAAMe,QACP;EAGJ,IAAIf,MAAMgB,WAAWC,kBACjB,MAAMjB,MAAMgB,WAAWC,iBAAiBC,OAAO,CAC3CxB,kBAAkB;GACdyB,QAAQrB,YAAYsB;GACpBC,KAAKrB,MAAMe,OAAOO;EACtB,CAAA,CAAA,CACH;EAGL,MAAMvB,aAAaT,uBAAuBiC,SAASvB,MAAMe,MAAM;CACnE;CAEA,MAAMS,YAAYxB,OAAkD;EAChE,IAAI,CAACA,MAAMe,QACP;EAGJ,IAAIf,MAAMgB,WAAWC,kBACjB,MAAMjB,MAAMgB,WAAWC,iBAAiBC,OAAO,CAC3CxB,kBAAkB;GACdyB,QAAQrB,YAAYsB;GACpBC,KAAKrB,MAAMe,OAAOO;EACtB,CAAA,CAAA,CACH;EAGL,MAAMvB,aAAaT,uBAAuBmC,SAASzB,MAAMe,MAAM;CACnE;CAEA,MAAMW,YAAY1B,OAAkD;EAChE,IAAI,CAACA,MAAMe,QACP;EAGJ,IAAIf,MAAMgB,WAAWC,kBACjB,MAAMjB,MAAMgB,WAAWC,iBAAiBC,OAAO,CAC3CxB,kBAAkB;GACdyB,QAAQrB,YAAYsB;GACpBC,KAAKrB,MAAMe,OAAOO;EACtB,CAAA,CAAA,CACH;EAGL,MAAMvB,aAAaT,uBAAuBqC,SAAS3B,MAAMe,MAAM;CACnE;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.mjs","names":["Column","CreateDateColumn","Entity","Index","JoinColumn","ManyToOne","PrimaryGeneratedColumn","Unique","UpdateDateColumn","RealmEntity","ScopeEntity","id","built_in","name","display_name","description","created_at","updated_at","realm_id","realm","type","default","length","nullable","onDelete"],"sources":["../../../../../src/adapters/database/domains/scope/entity.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-2021.\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 Column,\n CreateDateColumn,\n Entity, \n Index,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n Unique,\n UpdateDateColumn,\n} from 'typeorm';\nimport type { Realm, Scope } from '@authup/core-kit';\nimport { RealmEntity } from '../realm/index.ts';\n\n@Entity({ name: 'auth_scopes' })\n@Unique(['name', 'realm_id'])\nexport class ScopeEntity implements Scope {\n @PrimaryGeneratedColumn('uuid')\n id: string;\n\n @Column({\n type: 'boolean',\n default: false, \n })\n built_in: boolean;\n\n @Column({\n type: 'varchar',\n length: 128, \n })\n name: string;\n\n @Column({\n type: 'varchar',\n length: 256,\n nullable: true, \n })\n display_name: string | null;\n\n @Column({\n type: 'text',\n nullable: true, \n })\n description: string | null;\n\n // ------------------------------------------------------------------\n\n @CreateDateColumn()\n created_at: string;\n\n @UpdateDateColumn()\n updated_at: string;\n\n // ------------------------------------------------------------------\n\n @Index()\n @Column({ nullable: true })\n realm_id: Realm['id'] | null;\n\n @ManyToOne(() => RealmEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'realm_id' })\n realm: Realm | null;\n}\n"],"mappings":";;;;;;;;;;;;;AAuBA,IAAaU,cAAb,MAAaA;CAETC;CAMAC;CAMAC;CAOAC;CAMAC;CAKAC;CAGAC;CAMAC;CAOAC
|
|
1
|
+
{"version":3,"file":"entity.mjs","names":["Column","CreateDateColumn","Entity","Index","JoinColumn","ManyToOne","PrimaryGeneratedColumn","Unique","UpdateDateColumn","RealmEntity","ScopeEntity","id","built_in","name","display_name","description","created_at","updated_at","realm_id","realm","type","default","length","nullable","onDelete"],"sources":["../../../../../src/adapters/database/domains/scope/entity.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-2021.\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 Column,\n CreateDateColumn,\n Entity, \n Index,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n Unique,\n UpdateDateColumn,\n} from 'typeorm';\nimport type { Realm, Scope } from '@authup/core-kit';\nimport { RealmEntity } from '../realm/index.ts';\n\n@Entity({ name: 'auth_scopes' })\n@Unique(['name', 'realm_id'])\nexport class ScopeEntity implements Scope {\n @PrimaryGeneratedColumn('uuid')\n id: string;\n\n @Column({\n type: 'boolean',\n default: false, \n })\n built_in: boolean;\n\n @Column({\n type: 'varchar',\n length: 128, \n })\n name: string;\n\n @Column({\n type: 'varchar',\n length: 256,\n nullable: true, \n })\n display_name: string | null;\n\n @Column({\n type: 'text',\n nullable: true, \n })\n description: string | null;\n\n // ------------------------------------------------------------------\n\n @CreateDateColumn()\n created_at: string;\n\n @UpdateDateColumn()\n updated_at: string;\n\n // ------------------------------------------------------------------\n\n @Index()\n @Column({ nullable: true })\n realm_id: Realm['id'] | null;\n\n @ManyToOne(() => RealmEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'realm_id' })\n realm: Realm | null;\n}\n"],"mappings":";;;;;;;;;;;;;AAuBA,IAAaU,cAAb,MAAaA;CAETC;CAMAC;CAMAC;CAOAC;CAMAC;CAKAC;CAGAC;CAMAC;CAOAC;AACJ;;;CA5CQC,MAAM;CACNC,SAAS;;;CAKTD,MAAM;CACNE,QAAQ;;;CAKRF,MAAM;CACNE,QAAQ;CACRC,UAAU;;;CAKVH,MAAM;CACNG,UAAU;;;;;;UAeJA,UAAU,KAAA,CAAA;;;;iBAGHd,aAAAA;EACbe,UAAU;EACVD,UAAU;;cAEAV,MAAM,WAAA,CAAA;;;qCAjDdA,MAAM,cAAA,CAAA,GAAA,OAAA,CACP,QAAQ,UAAA,CAAA,CAAA,GAAA,WAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriber.mjs","names":["EntityDefaultEventName","EntityType","buildEntityChannelName","buildEntityNamespaceName","buildRedisKeyPath","EventSubscriber","publishDomainEvent","ScopeEntity","CachePrefix","publishEvent","event","data","destinations","channel","id","SCOPE","realm_id","push","namespace","content","type","ScopeSubscriber","listenTo","afterInsert","entity","CREATED","afterUpdate","connection","queryResultCache","remove","prefix","USER","key","UPDATED","afterRemove","DELETED"],"sources":["../../../../../src/adapters/database/domains/scope/subscriber.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-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 { Scope } from '@authup/core-kit';\nimport {\n EntityDefaultEventName, \n EntityType,\n buildEntityChannelName,\n buildEntityNamespaceName,\n} from '@authup/core-kit';\nimport type { DomainEventDestinations } from '@authup/server-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport type {\n EntitySubscriberInterface,\n InsertEvent,\n RemoveEvent,\n UpdateEvent,\n} from 'typeorm';\nimport { EventSubscriber } from 'typeorm';\nimport { publishDomainEvent } from '../../event-publisher/index.ts';\nimport { ScopeEntity } from './entity.ts';\nimport { CachePrefix } from '../constants.ts';\n\nasync function publishEvent(\n event: `${EntityDefaultEventName}`,\n data: Scope,\n) {\n const destinations : DomainEventDestinations = [\n { channel: (id) => buildEntityChannelName(EntityType.SCOPE, id) },\n ];\n if (data.realm_id) {\n destinations.push({\n channel: (id) => buildEntityChannelName(EntityType.SCOPE, id),\n namespace: buildEntityNamespaceName(data.realm_id),\n });\n }\n\n await publishDomainEvent({\n content: {\n type: EntityType.SCOPE,\n event,\n data,\n },\n destinations,\n });\n}\n\n@EventSubscriber()\nexport class ScopeSubscriber implements EntitySubscriberInterface<Scope> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n listenTo(): Function | string {\n return ScopeEntity;\n }\n\n async afterInsert(event: InsertEvent<Scope>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n await publishEvent(EntityDefaultEventName.CREATED, event.entity);\n }\n\n async afterUpdate(event: UpdateEvent<Scope>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER,\n key: event.entity.id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.UPDATED, event.entity as Scope);\n }\n\n async afterRemove(event: RemoveEvent<Scope>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER,\n key: event.entity.id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.DELETED, event.entity);\n }\n}\n"],"mappings":";;;;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;AAsBD,eAAeS,aACXC,OACAC,MAAW;CAEX,MAAMC,eAAyC,CAC3C,EAAEC,UAAUC,OAAOZ,uBAAuBD,WAAWc,OAAOD,
|
|
1
|
+
{"version":3,"file":"subscriber.mjs","names":["EntityDefaultEventName","EntityType","buildEntityChannelName","buildEntityNamespaceName","buildRedisKeyPath","EventSubscriber","publishDomainEvent","ScopeEntity","CachePrefix","publishEvent","event","data","destinations","channel","id","SCOPE","realm_id","push","namespace","content","type","ScopeSubscriber","listenTo","afterInsert","entity","CREATED","afterUpdate","connection","queryResultCache","remove","prefix","USER","key","UPDATED","afterRemove","DELETED"],"sources":["../../../../../src/adapters/database/domains/scope/subscriber.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-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 { Scope } from '@authup/core-kit';\nimport {\n EntityDefaultEventName, \n EntityType,\n buildEntityChannelName,\n buildEntityNamespaceName,\n} from '@authup/core-kit';\nimport type { DomainEventDestinations } from '@authup/server-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport type {\n EntitySubscriberInterface,\n InsertEvent,\n RemoveEvent,\n UpdateEvent,\n} from 'typeorm';\nimport { EventSubscriber } from 'typeorm';\nimport { publishDomainEvent } from '../../event-publisher/index.ts';\nimport { ScopeEntity } from './entity.ts';\nimport { CachePrefix } from '../constants.ts';\n\nasync function publishEvent(\n event: `${EntityDefaultEventName}`,\n data: Scope,\n) {\n const destinations : DomainEventDestinations = [\n { channel: (id) => buildEntityChannelName(EntityType.SCOPE, id) },\n ];\n if (data.realm_id) {\n destinations.push({\n channel: (id) => buildEntityChannelName(EntityType.SCOPE, id),\n namespace: buildEntityNamespaceName(data.realm_id),\n });\n }\n\n await publishDomainEvent({\n content: {\n type: EntityType.SCOPE,\n event,\n data,\n },\n destinations,\n });\n}\n\n@EventSubscriber()\nexport class ScopeSubscriber implements EntitySubscriberInterface<Scope> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n listenTo(): Function | string {\n return ScopeEntity;\n }\n\n async afterInsert(event: InsertEvent<Scope>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n await publishEvent(EntityDefaultEventName.CREATED, event.entity);\n }\n\n async afterUpdate(event: UpdateEvent<Scope>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER,\n key: event.entity.id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.UPDATED, event.entity as Scope);\n }\n\n async afterRemove(event: RemoveEvent<Scope>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER,\n key: event.entity.id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.DELETED, event.entity);\n }\n}\n"],"mappings":";;;;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;AAsBD,eAAeS,aACXC,OACAC,MAAW;CAEX,MAAMC,eAAyC,CAC3C,EAAEC,UAAUC,OAAOZ,uBAAuBD,WAAWc,OAAOD,EAAAA,EAAI,CAAA;CAEpE,IAAIH,KAAKK,UACLJ,aAAaK,KAAK;EACdJ,UAAUC,OAAOZ,uBAAuBD,WAAWc,OAAOD,EAAAA;EAC1DI,WAAWf,yBAAyBQ,KAAKK,QAAQ;CACrD,CAAA;CAGJ,MAAMV,mBAAmB;EACrBa,SAAS;GACLC,MAAMnB,WAAWc;GACjBL;GACAC;EACJ;EACAC;CACJ,CAAA;AACJ;AAGA,IAAaS,kBAAb,MAAaA;CAETC,WAA8B;EAC1B,OAAOf;CACX;CAEA,MAAMgB,YAAYb,OAAyC;EACvD,IAAI,CAACA,MAAMc,QACP;EAGJ,MAAMf,aAAaT,uBAAuByB,SAASf,MAAMc,MAAM;CACnE;CAEA,MAAME,YAAYhB,OAAyC;EACvD,IAAI,CAACA,MAAMc,QACP;EAGJ,IAAId,MAAMiB,WAAWC,kBACjB,MAAMlB,MAAMiB,WAAWC,iBAAiBC,OAAO,CAC3CzB,kBAAkB;GACd0B,QAAQtB,YAAYuB;GACpBC,KAAKtB,MAAMc,OAAOV;EACtB,CAAA,CAAA,CACH;EAGL,MAAML,aAAaT,uBAAuBiC,SAASvB,MAAMc,MAAM;CACnE;CAEA,MAAMU,YAAYxB,OAAyC;EACvD,IAAI,CAACA,MAAMc,QACP;EAGJ,IAAId,MAAMiB,WAAWC,kBACjB,MAAMlB,MAAMiB,WAAWC,iBAAiBC,OAAO,CAC3CzB,kBAAkB;GACd0B,QAAQtB,YAAYuB;GACpBC,KAAKtB,MAAMc,OAAOV;EACtB,CAAA,CAAA,CACH;EAGL,MAAML,aAAaT,uBAAuBmC,SAASzB,MAAMc,MAAM;CACnE;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.mjs","names":["Column","CreateDateColumn","Entity","Index","JoinColumn","ManyToOne","PrimaryGeneratedColumn","UpdateDateColumn","ClientEntity","RobotEntity","RealmEntity","UserEntity","SessionEntity","id","sub","sub_kind","ip_address","user_agent","expires_at","refreshed_at","seen_at","updated_at","created_at","client_id","client","user_id","user","robot_id","robot","realm_id","realm","type","length","nullable","default","onDelete","name"],"sources":["../../../../../src/adapters/database/domains/session/entity.ts"],"sourcesContent":["/*\n * Copyright (c) 2022.\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 Column, \n CreateDateColumn, \n Entity, \n Index, \n JoinColumn, \n ManyToOne, \n PrimaryGeneratedColumn, \n UpdateDateColumn,\n} from 'typeorm';\nimport type {\n Client, \n Realm, \n Robot, \n Session, \n User,\n} from '@authup/core-kit';\nimport { ClientEntity } from '../client/index.ts';\nimport { RobotEntity } from '../robot/index.ts';\nimport { RealmEntity } from '../realm/index.ts';\nimport { UserEntity } from '../user/index.ts';\n\n@Entity({ name: 'auth_sessions' })\nexport class SessionEntity implements Session {\n @PrimaryGeneratedColumn('uuid')\n id: string;\n\n @Index()\n @Column({\n type: 'varchar',\n length: 64, \n })\n sub: string;\n\n @Index()\n @Column({\n type: 'varchar',\n length: 64, \n })\n sub_kind: string;\n\n @Index()\n @Column({\n type: 'varchar',\n length: 15, \n })\n ip_address: string;\n\n @Index()\n @Column({\n type: 'varchar',\n length: 512, \n })\n user_agent: string;\n\n // ------------------------------------------------------------------\n\n @Column({\n type: 'varchar',\n length: 28,\n })\n expires_at: string;\n\n @Column({\n type: 'varchar',\n length: 28,\n nullable: true,\n })\n refreshed_at: string | null;\n\n @Column({\n type: 'varchar',\n length: 28,\n nullable: true,\n })\n seen_at: string | null;\n\n @UpdateDateColumn()\n updated_at: string;\n\n @CreateDateColumn()\n created_at: string;\n\n // ------------------------------------------------------------------\n\n @Column({\n nullable: true,\n default: null, \n })\n client_id: Client['id'] | null;\n\n @ManyToOne(() => ClientEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'client_id' })\n client: ClientEntity | null;\n\n @Column({\n nullable: true,\n default: null, \n })\n user_id: User['id'] | null;\n\n @ManyToOne(() => UserEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'user_id' })\n user: UserEntity | null;\n\n @Column({\n nullable: true,\n default: null, \n })\n robot_id: Robot['id'] | null;\n\n @ManyToOne(() => RobotEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'robot_id' })\n robot: RobotEntity | null;\n\n @Column()\n realm_id: Realm['id'];\n\n @ManyToOne(() => RealmEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'realm_id' })\n realm: RealmEntity;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA8BA,IAAaY,gBAAb,MAAaA;CAETC;CAOAC;CAOAC;CAOAC;CAOAC;CAQAC;CAOAC;CAOAC;CAGAC;CAGAC;CAQAC;CAOAC;CAMAC;CAOAC;CAMAC;CAOAC;CAGAC;CAIAC
|
|
1
|
+
{"version":3,"file":"entity.mjs","names":["Column","CreateDateColumn","Entity","Index","JoinColumn","ManyToOne","PrimaryGeneratedColumn","UpdateDateColumn","ClientEntity","RobotEntity","RealmEntity","UserEntity","SessionEntity","id","sub","sub_kind","ip_address","user_agent","expires_at","refreshed_at","seen_at","updated_at","created_at","client_id","client","user_id","user","robot_id","robot","realm_id","realm","type","length","nullable","default","onDelete","name"],"sources":["../../../../../src/adapters/database/domains/session/entity.ts"],"sourcesContent":["/*\n * Copyright (c) 2022.\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 Column, \n CreateDateColumn, \n Entity, \n Index, \n JoinColumn, \n ManyToOne, \n PrimaryGeneratedColumn, \n UpdateDateColumn,\n} from 'typeorm';\nimport type {\n Client, \n Realm, \n Robot, \n Session, \n User,\n} from '@authup/core-kit';\nimport { ClientEntity } from '../client/index.ts';\nimport { RobotEntity } from '../robot/index.ts';\nimport { RealmEntity } from '../realm/index.ts';\nimport { UserEntity } from '../user/index.ts';\n\n@Entity({ name: 'auth_sessions' })\nexport class SessionEntity implements Session {\n @PrimaryGeneratedColumn('uuid')\n id: string;\n\n @Index()\n @Column({\n type: 'varchar',\n length: 64, \n })\n sub: string;\n\n @Index()\n @Column({\n type: 'varchar',\n length: 64, \n })\n sub_kind: string;\n\n @Index()\n @Column({\n type: 'varchar',\n length: 15, \n })\n ip_address: string;\n\n @Index()\n @Column({\n type: 'varchar',\n length: 512, \n })\n user_agent: string;\n\n // ------------------------------------------------------------------\n\n @Column({\n type: 'varchar',\n length: 28,\n })\n expires_at: string;\n\n @Column({\n type: 'varchar',\n length: 28,\n nullable: true,\n })\n refreshed_at: string | null;\n\n @Column({\n type: 'varchar',\n length: 28,\n nullable: true,\n })\n seen_at: string | null;\n\n @UpdateDateColumn()\n updated_at: string;\n\n @CreateDateColumn()\n created_at: string;\n\n // ------------------------------------------------------------------\n\n @Column({\n nullable: true,\n default: null, \n })\n client_id: Client['id'] | null;\n\n @ManyToOne(() => ClientEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'client_id' })\n client: ClientEntity | null;\n\n @Column({\n nullable: true,\n default: null, \n })\n user_id: User['id'] | null;\n\n @ManyToOne(() => UserEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'user_id' })\n user: UserEntity | null;\n\n @Column({\n nullable: true,\n default: null, \n })\n robot_id: Robot['id'] | null;\n\n @ManyToOne(() => RobotEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'robot_id' })\n robot: RobotEntity | null;\n\n @Column()\n realm_id: Realm['id'];\n\n @ManyToOne(() => RealmEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'realm_id' })\n realm: RealmEntity;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA8BA,IAAaY,gBAAb,MAAaA;CAETC;CAOAC;CAOAC;CAOAC;CAOAC;CAQAC;CAOAC;CAOAC;CAGAC;CAGAC;CAQAC;CAOAC;CAMAC;CAOAC;CAMAC;CAOAC;CAGAC;CAIAC;AACJ;;;;;EArGQC,MAAM;EACNC,QAAQ;;;;;;;EAMRD,MAAM;EACNC,QAAQ;;;;;;;EAMRD,MAAM;EACNC,QAAQ;;;;;;;EAMRD,MAAM;EACNC,QAAQ;;;;;CAORD,MAAM;CACNC,QAAQ;;;CAKRD,MAAM;CACNC,QAAQ;CACRC,UAAU;;;CAKVF,MAAM;CACNC,QAAQ;CACRC,UAAU;;;;;CAaVA,UAAU;CACVC,SAAS;;;iBAII1B,cAAAA;EACb2B,UAAU;EACVF,UAAU;;cAEAG,MAAM,YAAA,CAAA;;;;CAIhBH,UAAU;CACVC,SAAS;;;iBAIIvB,YAAAA;EACbwB,UAAU;EACVF,UAAU;;cAEAG,MAAM,UAAA,CAAA;;;;CAIhBH,UAAU;CACVC,SAAS;;;iBAIIzB,aAAAA;EACb0B,UAAU;EACVF,UAAU;;cAEAG,MAAM,WAAA,CAAA;;;;;iBAMH1B,aAAAA,EAAeyB,UAAU,UAAA,CAAA;cAC5BC,MAAM,WAAA,CAAA;;;uCA1GdA,MAAM,gBAAA,CAAA,CAAA,GAAA,aAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.mjs","names":["BeforeInsert","BeforeUpdate","Column","CreateDateColumn","Entity","Index","JoinColumn","ManyToOne","PrimaryGeneratedColumn","Unique","UpdateDateColumn","ClientEntity","RealmEntity","UserEntity","id","name","name_locked","first_name","last_name","display_name","email","password","avatar","cover","reset_hash","reset_at","reset_expires","status","status_message","active","activate_hash","created_at","updated_at","realm_id","realm","client_id","client","setDisplayName","length","type","default","nullable","select","onDelete"],"sources":["../../../../../src/adapters/database/domains/user/entity.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-2021.\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 BeforeInsert,\n BeforeUpdate,\n Column,\n CreateDateColumn,\n Entity,\n Index,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n Unique,\n UpdateDateColumn,\n} from 'typeorm';\nimport type { Client, Realm, User } from '@authup/core-kit';\nimport { ClientEntity } from '../client/index.ts';\nimport { RealmEntity } from '../realm/index.ts';\n\n@Entity({ name: 'auth_users' })\n@Unique(['name', 'realm_id'])\nexport class UserEntity implements User {\n @PrimaryGeneratedColumn('uuid')\n id: string;\n\n @Index()\n @Column({\n type: 'varchar',\n length: 128, \n })\n name: string;\n\n @Column({\n type: 'boolean',\n default: true, \n })\n name_locked: boolean;\n\n @Column({\n type: 'varchar',\n length: 128,\n nullable: true, \n })\n first_name: string | null;\n\n @Column({\n type: 'varchar',\n length: 128,\n nullable: true, \n })\n last_name: string | null;\n\n @Column({\n type: 'varchar',\n length: 256,\n nullable: true, \n })\n display_name: string | null;\n\n @Index()\n @Column({\n type: 'varchar',\n length: 256,\n select: false,\n })\n email: string;\n\n @Column({\n type: 'varchar',\n length: 512,\n default: null,\n nullable: true,\n select: false,\n })\n password: string | null;\n\n // ------------------------------------------------------------------\n\n @Column({\n type: 'varchar',\n length: 255,\n nullable: true, \n })\n avatar: string | null;\n\n @Column({\n type: 'varchar',\n length: 255,\n nullable: true, \n })\n cover: string | null;\n\n // ------------------------------------------------------------------\n\n @Column({\n type: 'varchar',\n length: 256,\n nullable: true,\n default: null,\n select: false,\n })\n reset_hash: string | null;\n\n @Column({\n type: 'varchar',\n length: 28,\n nullable: true,\n default: null,\n select: false,\n })\n reset_at: string | null;\n\n @Column({\n type: 'varchar',\n length: 28,\n nullable: true,\n default: null,\n select: false,\n })\n reset_expires: string | null;\n\n // ------------------------------------------------------------------\n\n @Column({\n type: 'varchar',\n length: 256,\n nullable: true,\n default: null,\n })\n status: string | null;\n\n @Column({\n type: 'varchar',\n length: 256,\n nullable: true,\n default: null,\n })\n status_message: string | null;\n\n // ------------------------------------------------------------------\n\n @Column({\n type: 'boolean',\n default: true,\n })\n active: boolean;\n\n @Column({\n type: 'varchar',\n length: 256,\n nullable: true,\n default: null,\n select: false,\n })\n activate_hash: string | null;\n\n // ------------------------------------------------------------------\n\n @CreateDateColumn()\n created_at: Date;\n\n @UpdateDateColumn()\n updated_at: Date;\n\n // ------------------------------------------------------------------\n\n @Index()\n @Column()\n realm_id: Realm['id'];\n\n @ManyToOne(() => RealmEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'realm_id' })\n realm: Realm;\n\n // ------------------------------------------------------------------\n\n @Index()\n @Column({ nullable: true })\n client_id: Client['id'] | null;\n\n @ManyToOne(() => ClientEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'client_id' })\n client: Client | null;\n\n // ------------------------------------------------------------------\n\n @BeforeInsert()\n @BeforeUpdate()\n setDisplayName() {\n if (\n typeof this.display_name !== 'string' ||\n this.display_name.length === 0\n ) {\n this.display_name = this.name;\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AA0BA,IAAaa,aAAb,MAAaA;CAETC;CAOAC;CAMAC;CAOAC;CAOAC;CAOAC;CAQAC;CASAC;CASAC;CAOAC;CAWAC;CASAC;CASAC;CAUAC;CAQAC;CAQAC;CASAC;CAKAC;CAGAC;CAMAC;CAIAC;CAMAC;CAOAC;CAMAC,iBAAiB;
|
|
1
|
+
{"version":3,"file":"entity.mjs","names":["BeforeInsert","BeforeUpdate","Column","CreateDateColumn","Entity","Index","JoinColumn","ManyToOne","PrimaryGeneratedColumn","Unique","UpdateDateColumn","ClientEntity","RealmEntity","UserEntity","id","name","name_locked","first_name","last_name","display_name","email","password","avatar","cover","reset_hash","reset_at","reset_expires","status","status_message","active","activate_hash","created_at","updated_at","realm_id","realm","client_id","client","setDisplayName","length","type","default","nullable","select","onDelete"],"sources":["../../../../../src/adapters/database/domains/user/entity.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-2021.\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 BeforeInsert,\n BeforeUpdate,\n Column,\n CreateDateColumn,\n Entity,\n Index,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n Unique,\n UpdateDateColumn,\n} from 'typeorm';\nimport type { Client, Realm, User } from '@authup/core-kit';\nimport { ClientEntity } from '../client/index.ts';\nimport { RealmEntity } from '../realm/index.ts';\n\n@Entity({ name: 'auth_users' })\n@Unique(['name', 'realm_id'])\nexport class UserEntity implements User {\n @PrimaryGeneratedColumn('uuid')\n id: string;\n\n @Index()\n @Column({\n type: 'varchar',\n length: 128, \n })\n name: string;\n\n @Column({\n type: 'boolean',\n default: true, \n })\n name_locked: boolean;\n\n @Column({\n type: 'varchar',\n length: 128,\n nullable: true, \n })\n first_name: string | null;\n\n @Column({\n type: 'varchar',\n length: 128,\n nullable: true, \n })\n last_name: string | null;\n\n @Column({\n type: 'varchar',\n length: 256,\n nullable: true, \n })\n display_name: string | null;\n\n @Index()\n @Column({\n type: 'varchar',\n length: 256,\n select: false,\n })\n email: string;\n\n @Column({\n type: 'varchar',\n length: 512,\n default: null,\n nullable: true,\n select: false,\n })\n password: string | null;\n\n // ------------------------------------------------------------------\n\n @Column({\n type: 'varchar',\n length: 255,\n nullable: true, \n })\n avatar: string | null;\n\n @Column({\n type: 'varchar',\n length: 255,\n nullable: true, \n })\n cover: string | null;\n\n // ------------------------------------------------------------------\n\n @Column({\n type: 'varchar',\n length: 256,\n nullable: true,\n default: null,\n select: false,\n })\n reset_hash: string | null;\n\n @Column({\n type: 'varchar',\n length: 28,\n nullable: true,\n default: null,\n select: false,\n })\n reset_at: string | null;\n\n @Column({\n type: 'varchar',\n length: 28,\n nullable: true,\n default: null,\n select: false,\n })\n reset_expires: string | null;\n\n // ------------------------------------------------------------------\n\n @Column({\n type: 'varchar',\n length: 256,\n nullable: true,\n default: null,\n })\n status: string | null;\n\n @Column({\n type: 'varchar',\n length: 256,\n nullable: true,\n default: null,\n })\n status_message: string | null;\n\n // ------------------------------------------------------------------\n\n @Column({\n type: 'boolean',\n default: true,\n })\n active: boolean;\n\n @Column({\n type: 'varchar',\n length: 256,\n nullable: true,\n default: null,\n select: false,\n })\n activate_hash: string | null;\n\n // ------------------------------------------------------------------\n\n @CreateDateColumn()\n created_at: Date;\n\n @UpdateDateColumn()\n updated_at: Date;\n\n // ------------------------------------------------------------------\n\n @Index()\n @Column()\n realm_id: Realm['id'];\n\n @ManyToOne(() => RealmEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'realm_id' })\n realm: Realm;\n\n // ------------------------------------------------------------------\n\n @Index()\n @Column({ nullable: true })\n client_id: Client['id'] | null;\n\n @ManyToOne(() => ClientEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'client_id' })\n client: Client | null;\n\n // ------------------------------------------------------------------\n\n @BeforeInsert()\n @BeforeUpdate()\n setDisplayName() {\n if (\n typeof this.display_name !== 'string' ||\n this.display_name.length === 0\n ) {\n this.display_name = this.name;\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AA0BA,IAAaa,aAAb,MAAaA;CAETC;CAOAC;CAMAC;CAOAC;CAOAC;CAOAC;CAQAC;CASAC;CASAC;CAOAC;CAWAC;CASAC;CASAC;CAUAC;CAQAC;CAQAC;CASAC;CAKAC;CAGAC;CAMAC;CAIAC;CAMAC;CAOAC;CAMAC,iBAAiB;EACb,IACI,OAAO,KAAKlB,iBAAiB,YAC7B,KAAKA,aAAamB,WAAW,GAE7B,KAAKnB,eAAe,KAAKJ;CAEjC;AACJ;;;;;EA5KQwB,MAAM;EACND,QAAQ;;;;;CAKRC,MAAM;CACNC,SAAS;;;CAKTD,MAAM;CACND,QAAQ;CACRG,UAAU;;;CAKVF,MAAM;CACND,QAAQ;CACRG,UAAU;;;CAKVF,MAAM;CACND,QAAQ;CACRG,UAAU;;;;;EAMVF,MAAM;EACND,QAAQ;EACRI,QAAQ;;;;;CAKRH,MAAM;CACND,QAAQ;CACRE,SAAS;CACTC,UAAU;CACVC,QAAQ;;;CAORH,MAAM;CACND,QAAQ;CACRG,UAAU;;;CAKVF,MAAM;CACND,QAAQ;CACRG,UAAU;;;CAOVF,MAAM;CACND,QAAQ;CACRG,UAAU;CACVD,SAAS;CACTE,QAAQ;;;CAKRH,MAAM;CACND,QAAQ;CACRG,UAAU;CACVD,SAAS;CACTE,QAAQ;;;CAKRH,MAAM;CACND,QAAQ;CACRG,UAAU;CACVD,SAAS;CACTE,QAAQ;;;CAORH,MAAM;CACND,QAAQ;CACRG,UAAU;CACVD,SAAS;;;CAKTD,MAAM;CACND,QAAQ;CACRG,UAAU;CACVD,SAAS;;;CAOTD,MAAM;CACNC,SAAS;;;CAKTD,MAAM;CACND,QAAQ;CACRG,UAAU;CACVD,SAAS;CACTE,QAAQ;;;;;;;;;;iBAkBK9B,aAAAA,EAAe+B,UAAU,UAAA,CAAA;cAC5B5B,MAAM,WAAA,CAAA;;;;;UAMV0B,UAAU,KAAA,CAAA;;;;iBAGH9B,cAAAA;EACbgC,UAAU;EACVF,UAAU;;cAEA1B,MAAM,YAAA,CAAA;;;;;;;;;;oCArKdA,MAAM,aAAA,CAAA,GAAA,OAAA,CACP,QAAQ,UAAA,CAAA,CAAA,GAAA,UAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mjs","names":["CachePrefix","EARepository","UserAttributeEntity","UserEntity","UserRepository","instance","attributeProperties","input","parent","user_id","id","realm_id","entity","entityPrimaryColumn","attributeEntity","attributeForeignColumn","cachePrefix","USER_OWNED_ATTRIBUTES"],"sources":["../../../../../src/adapters/database/domains/user/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-2021.\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 { User, UserAttribute } from '@authup/core-kit';\nimport type { DataSource, EntityManager } from 'typeorm';\nimport { CachePrefix } from '../constants.ts';\nimport { EARepository } from '../../extra-attribute-repository/index.ts';\nimport { UserAttributeEntity } from '../user-attribute/index.ts';\nimport { UserEntity } from './entity.ts';\n\nexport class UserRepository extends EARepository<User, UserAttribute> {\n constructor(instance: DataSource | EntityManager) {\n super(instance, {\n attributeProperties: (input, parent) => {\n input.user_id = parent.id;\n input.realm_id = parent.realm_id;\n\n return input;\n },\n entity: UserEntity,\n entityPrimaryColumn: 'id',\n attributeEntity: UserAttributeEntity,\n attributeForeignColumn: 'user_id',\n cachePrefix: CachePrefix.USER_OWNED_ATTRIBUTES,\n });\n }\n}\n"],"mappings":";;;;;;;AAcA,IAAaI,iBAAb,cAAoCH,aAAAA;CAChC,YAAYI,UAAsC;
|
|
1
|
+
{"version":3,"file":"repository.mjs","names":["CachePrefix","EARepository","UserAttributeEntity","UserEntity","UserRepository","instance","attributeProperties","input","parent","user_id","id","realm_id","entity","entityPrimaryColumn","attributeEntity","attributeForeignColumn","cachePrefix","USER_OWNED_ATTRIBUTES"],"sources":["../../../../../src/adapters/database/domains/user/repository.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-2021.\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 { User, UserAttribute } from '@authup/core-kit';\nimport type { DataSource, EntityManager } from 'typeorm';\nimport { CachePrefix } from '../constants.ts';\nimport { EARepository } from '../../extra-attribute-repository/index.ts';\nimport { UserAttributeEntity } from '../user-attribute/index.ts';\nimport { UserEntity } from './entity.ts';\n\nexport class UserRepository extends EARepository<User, UserAttribute> {\n constructor(instance: DataSource | EntityManager) {\n super(instance, {\n attributeProperties: (input, parent) => {\n input.user_id = parent.id;\n input.realm_id = parent.realm_id;\n\n return input;\n },\n entity: UserEntity,\n entityPrimaryColumn: 'id',\n attributeEntity: UserAttributeEntity,\n attributeForeignColumn: 'user_id',\n cachePrefix: CachePrefix.USER_OWNED_ATTRIBUTES,\n });\n }\n}\n"],"mappings":";;;;;;;AAcA,IAAaI,iBAAb,cAAoCH,aAAAA;CAChC,YAAYI,UAAsC;EAC9C,MAAMA,UAAU;GACZC,sBAAsBC,OAAOC,WAAAA;IACzBD,MAAME,UAAUD,OAAOE;IACvBH,MAAMI,WAAWH,OAAOG;IAExB,OAAOJ;GACX;GACAK,QAAQT;GACRU,qBAAqB;GACrBC,iBAAiBZ;GACjBa,wBAAwB;GACxBC,aAAahB,YAAYiB;EAC7B,CAAA;CACJ;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriber.mjs","names":["EntityDefaultEventName","EntityType","buildEntityChannelName","buildEntityNamespaceName","buildRedisKeyPath","EventSubscriber","publishDomainEvent","UserEntity","CachePrefix","publishEvent","event","data","content","type","USER","destinations","channel","id","namespace","realm_id","UserSubscriber","listenTo","afterInsert","entity","CREATED","afterUpdate","connection","queryResultCache","remove","prefix","key","UPDATED","afterRemove","DELETED"],"sources":["../../../../../src/adapters/database/domains/user/subscriber.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-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 { User } from '@authup/core-kit';\nimport {\n EntityDefaultEventName, \n EntityType,\n buildEntityChannelName,\n buildEntityNamespaceName,\n} from '@authup/core-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport type {\n EntitySubscriberInterface,\n InsertEvent,\n RemoveEvent,\n UpdateEvent,\n} from 'typeorm';\nimport { EventSubscriber } from 'typeorm';\nimport { publishDomainEvent } from '../../event-publisher/index.ts';\nimport { UserEntity } from './entity.ts';\nimport { CachePrefix } from '../constants.ts';\n\nasync function publishEvent(\n event: `${EntityDefaultEventName}`,\n data: User,\n) {\n await publishDomainEvent({\n content: {\n type: EntityType.USER,\n event,\n data,\n },\n destinations: [\n {\n channel: (id) => buildEntityChannelName(EntityType.USER, id),\n namespace: buildEntityNamespaceName(data.realm_id),\n },\n { channel: (id) => buildEntityChannelName(EntityType.USER, id) },\n ],\n });\n}\n\n@EventSubscriber()\nexport class UserSubscriber implements EntitySubscriberInterface<User> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n listenTo(): Function | string {\n return UserEntity;\n }\n\n async afterInsert(event: InsertEvent<User>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n await publishEvent(EntityDefaultEventName.CREATED, event.entity);\n }\n\n async afterUpdate(event: UpdateEvent<User>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER,\n key: event.entity.id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.UPDATED, event.entity as User);\n }\n\n async afterRemove(event: RemoveEvent<User>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER,\n key: event.entity.id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.DELETED, event.entity);\n }\n}\n"],"mappings":";;;;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;AAqBD,eAAeS,aACXC,OACAC,MAAU;
|
|
1
|
+
{"version":3,"file":"subscriber.mjs","names":["EntityDefaultEventName","EntityType","buildEntityChannelName","buildEntityNamespaceName","buildRedisKeyPath","EventSubscriber","publishDomainEvent","UserEntity","CachePrefix","publishEvent","event","data","content","type","USER","destinations","channel","id","namespace","realm_id","UserSubscriber","listenTo","afterInsert","entity","CREATED","afterUpdate","connection","queryResultCache","remove","prefix","key","UPDATED","afterRemove","DELETED"],"sources":["../../../../../src/adapters/database/domains/user/subscriber.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-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 { User } from '@authup/core-kit';\nimport {\n EntityDefaultEventName, \n EntityType,\n buildEntityChannelName,\n buildEntityNamespaceName,\n} from '@authup/core-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport type {\n EntitySubscriberInterface,\n InsertEvent,\n RemoveEvent,\n UpdateEvent,\n} from 'typeorm';\nimport { EventSubscriber } from 'typeorm';\nimport { publishDomainEvent } from '../../event-publisher/index.ts';\nimport { UserEntity } from './entity.ts';\nimport { CachePrefix } from '../constants.ts';\n\nasync function publishEvent(\n event: `${EntityDefaultEventName}`,\n data: User,\n) {\n await publishDomainEvent({\n content: {\n type: EntityType.USER,\n event,\n data,\n },\n destinations: [\n {\n channel: (id) => buildEntityChannelName(EntityType.USER, id),\n namespace: buildEntityNamespaceName(data.realm_id),\n },\n { channel: (id) => buildEntityChannelName(EntityType.USER, id) },\n ],\n });\n}\n\n@EventSubscriber()\nexport class UserSubscriber implements EntitySubscriberInterface<User> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n listenTo(): Function | string {\n return UserEntity;\n }\n\n async afterInsert(event: InsertEvent<User>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n await publishEvent(EntityDefaultEventName.CREATED, event.entity);\n }\n\n async afterUpdate(event: UpdateEvent<User>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER,\n key: event.entity.id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.UPDATED, event.entity as User);\n }\n\n async afterRemove(event: RemoveEvent<User>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER,\n key: event.entity.id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.DELETED, event.entity);\n }\n}\n"],"mappings":";;;;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;AAqBD,eAAeS,aACXC,OACAC,MAAU;CAEV,MAAML,mBAAmB;EACrBM,SAAS;GACLC,MAAMZ,WAAWa;GACjBJ;GACAC;EACJ;EACAI,cAAc,CACV;GACIC,UAAUC,OAAOf,uBAAuBD,WAAWa,MAAMG,EAAAA;GACzDC,WAAWf,yBAAyBQ,KAAKQ,QAAQ;EACrD,GACA,EAAEH,UAAUC,OAAOf,uBAAuBD,WAAWa,MAAMG,EAAAA,EAAI,CAAA;CAEvE,CAAA;AACJ;AAGA,IAAaG,iBAAb,MAAaA;CAETC,WAA8B;EAC1B,OAAOd;CACX;CAEA,MAAMe,YAAYZ,OAAwC;EACtD,IAAI,CAACA,MAAMa,QACP;EAGJ,MAAMd,aAAaT,uBAAuBwB,SAASd,MAAMa,MAAM;CACnE;CAEA,MAAME,YAAYf,OAAwC;EACtD,IAAI,CAACA,MAAMa,QACP;EAGJ,IAAIb,MAAMgB,WAAWC,kBACjB,MAAMjB,MAAMgB,WAAWC,iBAAiBC,OAAO,CAC3CxB,kBAAkB;GACdyB,QAAQrB,YAAYM;GACpBgB,KAAKpB,MAAMa,OAAON;EACtB,CAAA,CAAA,CACH;EAGL,MAAMR,aAAaT,uBAAuB+B,SAASrB,MAAMa,MAAM;CACnE;CAEA,MAAMS,YAAYtB,OAAwC;EACtD,IAAI,CAACA,MAAMa,QACP;EAGJ,IAAIb,MAAMgB,WAAWC,kBACjB,MAAMjB,MAAMgB,WAAWC,iBAAiBC,OAAO,CAC3CxB,kBAAkB;GACdyB,QAAQrB,YAAYM;GACpBgB,KAAKpB,MAAMa,OAAON;EACtB,CAAA,CAAA,CACH;EAGL,MAAMR,aAAaT,uBAAuBiC,SAASvB,MAAMa,MAAM;CACnE;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.mjs","names":["Column","CreateDateColumn","Entity","JoinColumn","ManyToOne","PrimaryGeneratedColumn","Unique","UpdateDateColumn","deserialize","serialize","RealmEntity","UserEntity","UserAttributeEntity","id","name","value","realm_id","realm","user_id","user","created_at","updated_at","type","length","nullable","transformer","to","from","onDelete"],"sources":["../../../../../src/adapters/database/domains/user-attribute/entity.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-2021.\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 Column,\n CreateDateColumn,\n Entity, \n JoinColumn, \n ManyToOne,\n PrimaryGeneratedColumn, \n Unique,\n UpdateDateColumn,\n} from 'typeorm';\nimport type { Realm, User, UserAttribute } from '@authup/core-kit';\nimport { deserialize, serialize } from '@authup/kit';\nimport { RealmEntity } from '../realm/index.ts';\nimport { UserEntity } from '../user/entity.ts';\n\n@Unique(['name', 'user_id'])\n@Entity({ name: 'auth_user_attributes' })\nexport class UserAttributeEntity implements UserAttribute {\n @PrimaryGeneratedColumn('uuid')\n id: string;\n\n @Column({\n type: 'varchar',\n length: 255, \n })\n name: string;\n\n @Column({\n type: 'text',\n nullable: true,\n transformer: {\n to(value: any): any {\n return serialize(value);\n },\n from(value: any): any {\n return deserialize(value);\n },\n },\n })\n value: string | null;\n\n // ------------------------------------------------------------------\n\n @Column()\n realm_id: Realm['id'];\n\n @ManyToOne(() => RealmEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'realm_id' })\n realm: RealmEntity;\n\n @Column()\n user_id: User['id'];\n\n @ManyToOne(() => UserEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'user_id' })\n user: UserEntity;\n\n // ------------------------------------------------------------------\n\n @CreateDateColumn()\n created_at: string;\n\n @UpdateDateColumn()\n updated_at: string;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAwBA,IAAaY,sBAAb,MAAaA;CAETC;CAMAC;CAcAC;CAKAC;CAIAC;CAGAC;CAIAC;CAKAC;CAGAC
|
|
1
|
+
{"version":3,"file":"entity.mjs","names":["Column","CreateDateColumn","Entity","JoinColumn","ManyToOne","PrimaryGeneratedColumn","Unique","UpdateDateColumn","deserialize","serialize","RealmEntity","UserEntity","UserAttributeEntity","id","name","value","realm_id","realm","user_id","user","created_at","updated_at","type","length","nullable","transformer","to","from","onDelete"],"sources":["../../../../../src/adapters/database/domains/user-attribute/entity.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-2021.\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 Column,\n CreateDateColumn,\n Entity, \n JoinColumn, \n ManyToOne,\n PrimaryGeneratedColumn, \n Unique,\n UpdateDateColumn,\n} from 'typeorm';\nimport type { Realm, User, UserAttribute } from '@authup/core-kit';\nimport { deserialize, serialize } from '@authup/kit';\nimport { RealmEntity } from '../realm/index.ts';\nimport { UserEntity } from '../user/entity.ts';\n\n@Unique(['name', 'user_id'])\n@Entity({ name: 'auth_user_attributes' })\nexport class UserAttributeEntity implements UserAttribute {\n @PrimaryGeneratedColumn('uuid')\n id: string;\n\n @Column({\n type: 'varchar',\n length: 255, \n })\n name: string;\n\n @Column({\n type: 'text',\n nullable: true,\n transformer: {\n to(value: any): any {\n return serialize(value);\n },\n from(value: any): any {\n return deserialize(value);\n },\n },\n })\n value: string | null;\n\n // ------------------------------------------------------------------\n\n @Column()\n realm_id: Realm['id'];\n\n @ManyToOne(() => RealmEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'realm_id' })\n realm: RealmEntity;\n\n @Column()\n user_id: User['id'];\n\n @ManyToOne(() => UserEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'user_id' })\n user: UserEntity;\n\n // ------------------------------------------------------------------\n\n @CreateDateColumn()\n created_at: string;\n\n @UpdateDateColumn()\n updated_at: string;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAwBA,IAAaY,sBAAb,MAAaA;CAETC;CAMAC;CAcAC;CAKAC;CAIAC;CAGAC;CAIAC;CAKAC;CAGAC;AACJ;;;CA1CQC,MAAM;CACNC,QAAQ;;;CAKRD,MAAM;CACNE,UAAU;CACVC,aAAa;EACTC,GAAGX,OAAU;GACT,OAAON,UAAUM,KAAAA;EACrB;EACAY,KAAKZ,OAAU;GACX,OAAOP,YAAYO,KAAAA;EACvB;CACJ;;;;iBASaL,aAAAA,EAAekB,UAAU,UAAA,CAAA;cAC5Bd,MAAM,WAAA,CAAA;;;;;iBAMHH,YAAAA,EAAciB,UAAU,UAAA,CAAA;cAC3Bd,MAAM,UAAA,CAAA;;;;;4CAvCf,QAAQ,SAAA,CAAA,GAAA,OAAA,EACPA,MAAM,uBAAA,CAAA,CAAA,GAAA,mBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriber.mjs","names":["EntityDefaultEventName","EntityType","buildEntityChannelName","buildEntityNamespaceName","buildRedisKeyPath","EventSubscriber","publishDomainEvent","UserAttributeEntity","CachePrefix","publishEvent","event","data","content","type","USER_ATTRIBUTE","destinations","channel","id","namespace","realm_id","UserAttributeSubscriber","listenTo","afterInsert","connection","queryResultCache","remove","prefix","USER_OWNED_ATTRIBUTES","key","entity","user_id","CREATED","Promise","resolve","undefined","afterUpdate","UPDATED","afterRemove","DELETED"],"sources":["../../../../../src/adapters/database/domains/user-attribute/subscriber.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { UserAttribute } from '@authup/core-kit';\nimport {\n EntityDefaultEventName, \n EntityType,\n buildEntityChannelName,\n buildEntityNamespaceName,\n} from '@authup/core-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport type {\n EntitySubscriberInterface,\n InsertEvent,\n RemoveEvent,\n UpdateEvent,\n} from 'typeorm';\nimport { EventSubscriber } from 'typeorm';\nimport { publishDomainEvent } from '../../event-publisher/index.ts';\nimport { UserAttributeEntity } from './entity.ts';\nimport { CachePrefix } from '../constants.ts';\n\nasync function publishEvent(\n event: `${EntityDefaultEventName}`,\n data: UserAttribute,\n) {\n await publishDomainEvent({\n content: {\n type: EntityType.USER_ATTRIBUTE,\n event,\n data,\n },\n destinations: [\n {\n channel: (id) => buildEntityChannelName(EntityType.USER_ATTRIBUTE, id),\n namespace: buildEntityNamespaceName(data.realm_id),\n },\n { channel: (id) => buildEntityChannelName(EntityType.USER_ATTRIBUTE, id) },\n ],\n });\n}\n\n@EventSubscriber()\nexport class UserAttributeSubscriber implements EntitySubscriberInterface<UserAttribute> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n listenTo(): Function | string {\n return UserAttributeEntity;\n }\n\n async afterInsert(event: InsertEvent<UserAttribute>): Promise<any> {\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_ATTRIBUTES,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.CREATED, event.entity);\n\n return Promise.resolve(undefined);\n }\n\n async afterUpdate(event: UpdateEvent<UserAttribute>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_ATTRIBUTES,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.UPDATED, event.entity as UserAttribute);\n }\n\n async afterRemove(event: RemoveEvent<UserAttribute>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_ATTRIBUTES,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.DELETED, event.entity);\n }\n}\n"],"mappings":";;;;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;AAqBD,eAAeS,aACXC,OACAC,MAAmB;
|
|
1
|
+
{"version":3,"file":"subscriber.mjs","names":["EntityDefaultEventName","EntityType","buildEntityChannelName","buildEntityNamespaceName","buildRedisKeyPath","EventSubscriber","publishDomainEvent","UserAttributeEntity","CachePrefix","publishEvent","event","data","content","type","USER_ATTRIBUTE","destinations","channel","id","namespace","realm_id","UserAttributeSubscriber","listenTo","afterInsert","connection","queryResultCache","remove","prefix","USER_OWNED_ATTRIBUTES","key","entity","user_id","CREATED","Promise","resolve","undefined","afterUpdate","UPDATED","afterRemove","DELETED"],"sources":["../../../../../src/adapters/database/domains/user-attribute/subscriber.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { UserAttribute } from '@authup/core-kit';\nimport {\n EntityDefaultEventName, \n EntityType,\n buildEntityChannelName,\n buildEntityNamespaceName,\n} from '@authup/core-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport type {\n EntitySubscriberInterface,\n InsertEvent,\n RemoveEvent,\n UpdateEvent,\n} from 'typeorm';\nimport { EventSubscriber } from 'typeorm';\nimport { publishDomainEvent } from '../../event-publisher/index.ts';\nimport { UserAttributeEntity } from './entity.ts';\nimport { CachePrefix } from '../constants.ts';\n\nasync function publishEvent(\n event: `${EntityDefaultEventName}`,\n data: UserAttribute,\n) {\n await publishDomainEvent({\n content: {\n type: EntityType.USER_ATTRIBUTE,\n event,\n data,\n },\n destinations: [\n {\n channel: (id) => buildEntityChannelName(EntityType.USER_ATTRIBUTE, id),\n namespace: buildEntityNamespaceName(data.realm_id),\n },\n { channel: (id) => buildEntityChannelName(EntityType.USER_ATTRIBUTE, id) },\n ],\n });\n}\n\n@EventSubscriber()\nexport class UserAttributeSubscriber implements EntitySubscriberInterface<UserAttribute> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n listenTo(): Function | string {\n return UserAttributeEntity;\n }\n\n async afterInsert(event: InsertEvent<UserAttribute>): Promise<any> {\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_ATTRIBUTES,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.CREATED, event.entity);\n\n return Promise.resolve(undefined);\n }\n\n async afterUpdate(event: UpdateEvent<UserAttribute>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_ATTRIBUTES,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.UPDATED, event.entity as UserAttribute);\n }\n\n async afterRemove(event: RemoveEvent<UserAttribute>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_ATTRIBUTES,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.DELETED, event.entity);\n }\n}\n"],"mappings":";;;;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;AAqBD,eAAeS,aACXC,OACAC,MAAmB;CAEnB,MAAML,mBAAmB;EACrBM,SAAS;GACLC,MAAMZ,WAAWa;GACjBJ;GACAC;EACJ;EACAI,cAAc,CACV;GACIC,UAAUC,OAAOf,uBAAuBD,WAAWa,gBAAgBG,EAAAA;GACnEC,WAAWf,yBAAyBQ,KAAKQ,QAAQ;EACrD,GACA,EAAEH,UAAUC,OAAOf,uBAAuBD,WAAWa,gBAAgBG,EAAAA,EAAI,CAAA;CAEjF,CAAA;AACJ;AAGA,IAAaG,0BAAb,MAAaA;CAETC,WAA8B;EAC1B,OAAOd;CACX;CAEA,MAAMe,YAAYZ,OAAiD;EAC/D,IAAIA,MAAMa,WAAWC,kBACjB,MAAMd,MAAMa,WAAWC,iBAAiBC,OAAO,CAC3CrB,kBAAkB;GACdsB,QAAQlB,YAAYmB;GACpBC,KAAKlB,MAAMmB,OAAOC;EACtB,CAAA,CAAA,CACH;EAGL,MAAMrB,aAAaT,uBAAuB+B,SAASrB,MAAMmB,MAAM;EAE/D,OAAOG,QAAQC,QAAQC,KAAAA,CAAAA;CAC3B;CAEA,MAAMC,YAAYzB,OAAiD;EAC/D,IAAI,CAACA,MAAMmB,QACP;EAGJ,IAAInB,MAAMa,WAAWC,kBACjB,MAAMd,MAAMa,WAAWC,iBAAiBC,OAAO,CAC3CrB,kBAAkB;GACdsB,QAAQlB,YAAYmB;GACpBC,KAAKlB,MAAMmB,OAAOC;EACtB,CAAA,CAAA,CACH;EAGL,MAAMrB,aAAaT,uBAAuBoC,SAAS1B,MAAMmB,MAAM;CACnE;CAEA,MAAMQ,YAAY3B,OAAiD;EAC/D,IAAI,CAACA,MAAMmB,QACP;EAGJ,IAAInB,MAAMa,WAAWC,kBACjB,MAAMd,MAAMa,WAAWC,iBAAiBC,OAAO,CAC3CrB,kBAAkB;GACdsB,QAAQlB,YAAYmB;GACpBC,KAAKlB,MAAMmB,OAAOC;EACtB,CAAA,CAAA,CACH;EAGL,MAAMrB,aAAaT,uBAAuBsC,SAAS5B,MAAMmB,MAAM;CACnE;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.mjs","names":["Column","CreateDateColumn","Entity","Index","JoinColumn","ManyToOne","PrimaryGeneratedColumn","UpdateDateColumn","PolicyEntity","UserEntity","PermissionEntity","RealmEntity","UserPermissionEntity","id","created_at","updated_at","policy_id","policy","user_id","user","user_realm_id","user_realm","permission_id","permission","permission_realm_id","permission_realm","nullable","onDelete","name","unique"],"sources":["../../../../../src/adapters/database/domains/user-permission/entity.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-2021.\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 Column,\n CreateDateColumn,\n Entity, \n Index,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n UpdateDateColumn,\n} from 'typeorm';\nimport type {\n Permission,\n Policy,\n Realm,\n User, \n UserPermission,\n} from '@authup/core-kit';\nimport { PolicyEntity } from '../policy/index.ts';\nimport { UserEntity } from '../user/entity.ts';\nimport { PermissionEntity } from '../permission/entity.ts';\nimport { RealmEntity } from '../realm/index.ts';\n\n@Entity({ name: 'auth_user_permissions' })\n@Index(['permission_id', 'user_id'], { unique: true })\nexport class UserPermissionEntity implements UserPermission {\n @PrimaryGeneratedColumn('uuid')\n id: string;\n\n // ------------------------------------------------------------------\n\n @CreateDateColumn()\n created_at: Date;\n\n @UpdateDateColumn()\n updated_at: Date;\n\n // ------------------------------------------------------------------\n\n @Column({ nullable: true })\n policy_id: string | null;\n\n @ManyToOne(() => PolicyEntity, {\n onDelete: 'SET NULL',\n nullable: true, \n })\n @JoinColumn({ name: 'policy_id' })\n policy: Policy | null;\n\n @Column()\n user_id: User['id'];\n\n @ManyToOne(() => UserEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'user_id' })\n user: User;\n\n @Column({ nullable: true })\n user_realm_id: Realm['id'] | null;\n\n @ManyToOne(() => RealmEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'user_realm_id' })\n user_realm: Realm | null;\n\n @Column()\n permission_id: Permission['id'];\n\n @ManyToOne(() => PermissionEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'permission_id' })\n permission: Permission;\n\n @Column({ nullable: true })\n permission_realm_id: Realm['id'] | null;\n\n @ManyToOne(() => RealmEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'permission_realm_id' })\n permission_realm: Realm | null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AA+BA,IAAaY,uBAAb,MAAaA;CAETC;CAKAC;CAGAC;CAKAC;CAOAC;CAGAC;CAIAC;CAGAC;CAOAC;CAGAC;CAIAC;CAGAC;CAOAC
|
|
1
|
+
{"version":3,"file":"entity.mjs","names":["Column","CreateDateColumn","Entity","Index","JoinColumn","ManyToOne","PrimaryGeneratedColumn","UpdateDateColumn","PolicyEntity","UserEntity","PermissionEntity","RealmEntity","UserPermissionEntity","id","created_at","updated_at","policy_id","policy","user_id","user","user_realm_id","user_realm","permission_id","permission","permission_realm_id","permission_realm","nullable","onDelete","name","unique"],"sources":["../../../../../src/adapters/database/domains/user-permission/entity.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-2021.\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 Column,\n CreateDateColumn,\n Entity, \n Index,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n UpdateDateColumn,\n} from 'typeorm';\nimport type {\n Permission,\n Policy,\n Realm,\n User, \n UserPermission,\n} from '@authup/core-kit';\nimport { PolicyEntity } from '../policy/index.ts';\nimport { UserEntity } from '../user/entity.ts';\nimport { PermissionEntity } from '../permission/entity.ts';\nimport { RealmEntity } from '../realm/index.ts';\n\n@Entity({ name: 'auth_user_permissions' })\n@Index(['permission_id', 'user_id'], { unique: true })\nexport class UserPermissionEntity implements UserPermission {\n @PrimaryGeneratedColumn('uuid')\n id: string;\n\n // ------------------------------------------------------------------\n\n @CreateDateColumn()\n created_at: Date;\n\n @UpdateDateColumn()\n updated_at: Date;\n\n // ------------------------------------------------------------------\n\n @Column({ nullable: true })\n policy_id: string | null;\n\n @ManyToOne(() => PolicyEntity, {\n onDelete: 'SET NULL',\n nullable: true, \n })\n @JoinColumn({ name: 'policy_id' })\n policy: Policy | null;\n\n @Column()\n user_id: User['id'];\n\n @ManyToOne(() => UserEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'user_id' })\n user: User;\n\n @Column({ nullable: true })\n user_realm_id: Realm['id'] | null;\n\n @ManyToOne(() => RealmEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'user_realm_id' })\n user_realm: Realm | null;\n\n @Column()\n permission_id: Permission['id'];\n\n @ManyToOne(() => PermissionEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'permission_id' })\n permission: Permission;\n\n @Column({ nullable: true })\n permission_realm_id: Realm['id'] | null;\n\n @ManyToOne(() => RealmEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'permission_realm_id' })\n permission_realm: Realm | null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AA+BA,IAAaY,uBAAb,MAAaA;CAETC;CAKAC;CAGAC;CAKAC;CAOAC;CAGAC;CAIAC;CAGAC;CAOAC;CAGAC;CAIAC;CAGAC;CAOAC;AACJ;;;;uBA3CcC,UAAU,KAAA,CAAA,GAAA,aAAA,eAAA,MAAA,CAAA,GAAA,qBAAA,WAAA,aAAA,KAAA,CAAA;;iBAGHlB,cAAAA;EACbmB,UAAU;EACVD,UAAU;;cAEAE,MAAM,YAAA,CAAA;;;;;iBAMHnB,YAAAA,EAAckB,UAAU,UAAA,CAAA;cAC3BC,MAAM,UAAA,CAAA;;;uBAGVF,UAAU,KAAA,CAAA,GAAA,aAAA,eAAA,MAAA,CAAA,GAAA,qBAAA,WAAA,iBAAA,KAAA,CAAA;;iBAGHf,aAAAA;EACbgB,UAAU;EACVD,UAAU;;cAEAE,MAAM,gBAAA,CAAA;;;;;iBAMHlB,kBAAAA,EAAoBiB,UAAU,UAAA,CAAA;cACjCC,MAAM,gBAAA,CAAA;;;uBAGVF,UAAU,KAAA,CAAA,GAAA,aAAA,eAAA,MAAA,CAAA,GAAA,qBAAA,WAAA,uBAAA,KAAA,CAAA;;iBAGHf,aAAAA;EACbgB,UAAU;EACVD,UAAU;;cAEAE,MAAM,sBAAA,CAAA;;;8CAzDdA,MAAM,wBAAA,CAAA,GAAA,MAAA,CACR,iBAAiB,SAAA,GAAA,EAAcC,QAAQ,KAAA,CAAA,CAAA,GAAA,oBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriber.mjs","names":["EntityDefaultEventName","EntityType","buildEntityChannelName","buildEntityNamespaceName","buildRedisKeyPath","EventSubscriber","publishDomainEvent","UserPermissionEntity","CachePrefix","publishEvent","event","data","destinations","channel","id","USER_PERMISSION","user_realm_id","push","namespace","permission_realm_id","content","type","UserPermissionSubscriber","listenTo","afterInsert","connection","queryResultCache","remove","prefix","USER_OWNED_PERMISSIONS","key","entity","user_id","CREATED","Promise","resolve","undefined","afterUpdate","UPDATED","afterRemove","DELETED"],"sources":["../../../../../src/adapters/database/domains/user-permission/subscriber.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { UserPermission } from '@authup/core-kit';\nimport {\n EntityDefaultEventName, \n EntityType,\n buildEntityChannelName,\n buildEntityNamespaceName,\n} from '@authup/core-kit';\nimport type { DomainEventDestination } from '@authup/server-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport type {\n EntitySubscriberInterface, \n InsertEvent,\n RemoveEvent,\n UpdateEvent,\n} from 'typeorm';\nimport { EventSubscriber } from 'typeorm';\nimport { publishDomainEvent } from '../../event-publisher/index.ts';\nimport { UserPermissionEntity } from './entity.ts';\nimport { CachePrefix } from '../constants.ts';\n\nasync function publishEvent(\n event: `${EntityDefaultEventName}`,\n data: UserPermission,\n) {\n const destinations : DomainEventDestination[] = [\n { channel: (id) => buildEntityChannelName(EntityType.USER_PERMISSION, id) },\n ];\n if (data.user_realm_id) {\n destinations.push({\n channel: (id) => buildEntityChannelName(EntityType.USER_PERMISSION, id),\n namespace: buildEntityNamespaceName(data.user_realm_id),\n });\n }\n\n if (data.permission_realm_id) {\n destinations.push({\n channel: (id) => buildEntityChannelName(EntityType.USER_PERMISSION, id),\n namespace: buildEntityNamespaceName(data.permission_realm_id),\n });\n }\n\n await publishDomainEvent({\n content: {\n type: EntityType.USER_PERMISSION,\n event,\n data,\n },\n destinations,\n });\n}\n\n@EventSubscriber()\nexport class UserPermissionSubscriber implements EntitySubscriberInterface<UserPermission> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n listenTo(): Function | string {\n return UserPermissionEntity;\n }\n\n async afterInsert(event: InsertEvent<UserPermission>): Promise<any> {\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_PERMISSIONS,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.CREATED, event.entity);\n\n return Promise.resolve(undefined);\n }\n\n async afterUpdate(event: UpdateEvent<UserPermission>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_PERMISSIONS,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.UPDATED, event.entity as UserPermission);\n }\n\n async afterRemove(event: RemoveEvent<UserPermission>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_PERMISSIONS,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.DELETED, event.entity);\n }\n}\n"],"mappings":";;;;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;AAsBD,eAAeS,aACXC,OACAC,MAAoB;CAEpB,MAAMC,eAA0C,CAC5C,EAAEC,UAAUC,OAAOZ,uBAAuBD,WAAWc,iBAAiBD,
|
|
1
|
+
{"version":3,"file":"subscriber.mjs","names":["EntityDefaultEventName","EntityType","buildEntityChannelName","buildEntityNamespaceName","buildRedisKeyPath","EventSubscriber","publishDomainEvent","UserPermissionEntity","CachePrefix","publishEvent","event","data","destinations","channel","id","USER_PERMISSION","user_realm_id","push","namespace","permission_realm_id","content","type","UserPermissionSubscriber","listenTo","afterInsert","connection","queryResultCache","remove","prefix","USER_OWNED_PERMISSIONS","key","entity","user_id","CREATED","Promise","resolve","undefined","afterUpdate","UPDATED","afterRemove","DELETED"],"sources":["../../../../../src/adapters/database/domains/user-permission/subscriber.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { UserPermission } from '@authup/core-kit';\nimport {\n EntityDefaultEventName, \n EntityType,\n buildEntityChannelName,\n buildEntityNamespaceName,\n} from '@authup/core-kit';\nimport type { DomainEventDestination } from '@authup/server-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport type {\n EntitySubscriberInterface, \n InsertEvent,\n RemoveEvent,\n UpdateEvent,\n} from 'typeorm';\nimport { EventSubscriber } from 'typeorm';\nimport { publishDomainEvent } from '../../event-publisher/index.ts';\nimport { UserPermissionEntity } from './entity.ts';\nimport { CachePrefix } from '../constants.ts';\n\nasync function publishEvent(\n event: `${EntityDefaultEventName}`,\n data: UserPermission,\n) {\n const destinations : DomainEventDestination[] = [\n { channel: (id) => buildEntityChannelName(EntityType.USER_PERMISSION, id) },\n ];\n if (data.user_realm_id) {\n destinations.push({\n channel: (id) => buildEntityChannelName(EntityType.USER_PERMISSION, id),\n namespace: buildEntityNamespaceName(data.user_realm_id),\n });\n }\n\n if (data.permission_realm_id) {\n destinations.push({\n channel: (id) => buildEntityChannelName(EntityType.USER_PERMISSION, id),\n namespace: buildEntityNamespaceName(data.permission_realm_id),\n });\n }\n\n await publishDomainEvent({\n content: {\n type: EntityType.USER_PERMISSION,\n event,\n data,\n },\n destinations,\n });\n}\n\n@EventSubscriber()\nexport class UserPermissionSubscriber implements EntitySubscriberInterface<UserPermission> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n listenTo(): Function | string {\n return UserPermissionEntity;\n }\n\n async afterInsert(event: InsertEvent<UserPermission>): Promise<any> {\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_PERMISSIONS,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.CREATED, event.entity);\n\n return Promise.resolve(undefined);\n }\n\n async afterUpdate(event: UpdateEvent<UserPermission>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_PERMISSIONS,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.UPDATED, event.entity as UserPermission);\n }\n\n async afterRemove(event: RemoveEvent<UserPermission>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_PERMISSIONS,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.DELETED, event.entity);\n }\n}\n"],"mappings":";;;;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;AAsBD,eAAeS,aACXC,OACAC,MAAoB;CAEpB,MAAMC,eAA0C,CAC5C,EAAEC,UAAUC,OAAOZ,uBAAuBD,WAAWc,iBAAiBD,EAAAA,EAAI,CAAA;CAE9E,IAAIH,KAAKK,eACLJ,aAAaK,KAAK;EACdJ,UAAUC,OAAOZ,uBAAuBD,WAAWc,iBAAiBD,EAAAA;EACpEI,WAAWf,yBAAyBQ,KAAKK,aAAa;CAC1D,CAAA;CAGJ,IAAIL,KAAKQ,qBACLP,aAAaK,KAAK;EACdJ,UAAUC,OAAOZ,uBAAuBD,WAAWc,iBAAiBD,EAAAA;EACpEI,WAAWf,yBAAyBQ,KAAKQ,mBAAmB;CAChE,CAAA;CAGJ,MAAMb,mBAAmB;EACrBc,SAAS;GACLC,MAAMpB,WAAWc;GACjBL;GACAC;EACJ;EACAC;CACJ,CAAA;AACJ;AAGA,IAAaU,2BAAb,MAAaA;CAETC,WAA8B;EAC1B,OAAOhB;CACX;CAEA,MAAMiB,YAAYd,OAAkD;EAChE,IAAIA,MAAMe,WAAWC,kBACjB,MAAMhB,MAAMe,WAAWC,iBAAiBC,OAAO,CAC3CvB,kBAAkB;GACdwB,QAAQpB,YAAYqB;GACpBC,KAAKpB,MAAMqB,OAAOC;EACtB,CAAA,CAAA,CACH;EAGL,MAAMvB,aAAaT,uBAAuBiC,SAASvB,MAAMqB,MAAM;EAE/D,OAAOG,QAAQC,QAAQC,KAAAA,CAAAA;CAC3B;CAEA,MAAMC,YAAY3B,OAAkD;EAChE,IAAI,CAACA,MAAMqB,QACP;EAGJ,IAAIrB,MAAMe,WAAWC,kBACjB,MAAMhB,MAAMe,WAAWC,iBAAiBC,OAAO,CAC3CvB,kBAAkB;GACdwB,QAAQpB,YAAYqB;GACpBC,KAAKpB,MAAMqB,OAAOC;EACtB,CAAA,CAAA,CACH;EAGL,MAAMvB,aAAaT,uBAAuBsC,SAAS5B,MAAMqB,MAAM;CACnE;CAEA,MAAMQ,YAAY7B,OAAkD;EAChE,IAAI,CAACA,MAAMqB,QACP;EAGJ,IAAIrB,MAAMe,WAAWC,kBACjB,MAAMhB,MAAMe,WAAWC,iBAAiBC,OAAO,CAC3CvB,kBAAkB;GACdwB,QAAQpB,YAAYqB;GACpBC,KAAKpB,MAAMqB,OAAOC;EACtB,CAAA,CAAA,CACH;EAGL,MAAMvB,aAAaT,uBAAuBwC,SAAS9B,MAAMqB,MAAM;CACnE;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.mjs","names":["Column","CreateDateColumn","Entity","Index","JoinColumn","ManyToOne","PrimaryGeneratedColumn","UpdateDateColumn","RoleEntity","UserEntity","RealmEntity","UserRoleEntity","id","role_id","role","role_realm_id","role_realm","user_id","user","user_realm_id","user_realm","created_at","updated_at","onDelete","name","nullable","unique"],"sources":["../../../../../src/adapters/database/domains/user-role/entity.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-2021.\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 Column,\n CreateDateColumn,\n Entity,\n Index,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n UpdateDateColumn,\n} from 'typeorm';\nimport type {\n Realm, \n Role, \n User, \n UserRole,\n} from '@authup/core-kit';\nimport { RoleEntity } from '../role/index.ts';\nimport { UserEntity } from '../user/entity.ts';\nimport { RealmEntity } from '../realm/index.ts';\n\n@Entity({ name: 'auth_user_roles' })\n@Index(['role_id', 'user_id'], { unique: true })\nexport class UserRoleEntity implements UserRole {\n @PrimaryGeneratedColumn('uuid')\n id: string;\n\n // ------------------------------------------------------------------\n\n @Column()\n role_id: string;\n\n @ManyToOne(() => RoleEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'role_id' })\n role: Role;\n\n @Column({ nullable: true })\n role_realm_id: Realm['id'] | null;\n\n @ManyToOne(() => RealmEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'role_realm_id' })\n role_realm: Realm | null;\n\n @Column()\n user_id: string;\n\n @ManyToOne(() => UserEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'user_id' })\n user: User;\n\n @Column({ nullable: true })\n user_realm_id: Realm['id'] | null;\n\n @ManyToOne(() => RealmEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'user_realm_id' })\n user_realm: Realm | null;\n\n // ------------------------------------------------------------------\n\n @CreateDateColumn()\n created_at: string;\n\n @UpdateDateColumn()\n updated_at: string;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AA6BA,IAAaW,iBAAb,MAAaA;CAETC;CAKAC;CAIAC;CAGAC;CAOAC;CAGAC;CAIAC;CAGAC;CAOAC;CAKAC;CAGAC
|
|
1
|
+
{"version":3,"file":"entity.mjs","names":["Column","CreateDateColumn","Entity","Index","JoinColumn","ManyToOne","PrimaryGeneratedColumn","UpdateDateColumn","RoleEntity","UserEntity","RealmEntity","UserRoleEntity","id","role_id","role","role_realm_id","role_realm","user_id","user","user_realm_id","user_realm","created_at","updated_at","onDelete","name","nullable","unique"],"sources":["../../../../../src/adapters/database/domains/user-role/entity.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-2021.\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 Column,\n CreateDateColumn,\n Entity,\n Index,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n UpdateDateColumn,\n} from 'typeorm';\nimport type {\n Realm, \n Role, \n User, \n UserRole,\n} from '@authup/core-kit';\nimport { RoleEntity } from '../role/index.ts';\nimport { UserEntity } from '../user/entity.ts';\nimport { RealmEntity } from '../realm/index.ts';\n\n@Entity({ name: 'auth_user_roles' })\n@Index(['role_id', 'user_id'], { unique: true })\nexport class UserRoleEntity implements UserRole {\n @PrimaryGeneratedColumn('uuid')\n id: string;\n\n // ------------------------------------------------------------------\n\n @Column()\n role_id: string;\n\n @ManyToOne(() => RoleEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'role_id' })\n role: Role;\n\n @Column({ nullable: true })\n role_realm_id: Realm['id'] | null;\n\n @ManyToOne(() => RealmEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'role_realm_id' })\n role_realm: Realm | null;\n\n @Column()\n user_id: string;\n\n @ManyToOne(() => UserEntity, { onDelete: 'CASCADE' })\n @JoinColumn({ name: 'user_id' })\n user: User;\n\n @Column({ nullable: true })\n user_realm_id: Realm['id'] | null;\n\n @ManyToOne(() => RealmEntity, {\n onDelete: 'CASCADE',\n nullable: true, \n })\n @JoinColumn({ name: 'user_realm_id' })\n user_realm: Realm | null;\n\n // ------------------------------------------------------------------\n\n @CreateDateColumn()\n created_at: string;\n\n @UpdateDateColumn()\n updated_at: string;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AA6BA,IAAaW,iBAAb,MAAaA;CAETC;CAKAC;CAIAC;CAGAC;CAOAC;CAGAC;CAIAC;CAGAC;CAOAC;CAKAC;CAGAC;AACJ;;;;iBAtCqBd,YAAAA,EAAce,UAAU,UAAA,CAAA;cAC3BC,MAAM,UAAA,CAAA;;;uBAGVC,UAAU,KAAA,CAAA,GAAA,aAAA,eAAA,MAAA,CAAA,GAAA,eAAA,WAAA,iBAAA,KAAA,CAAA;;iBAGHf,aAAAA;EACba,UAAU;EACVE,UAAU;;cAEAD,MAAM,gBAAA,CAAA;;;;;iBAMHf,YAAAA,EAAcc,UAAU,UAAA,CAAA;cAC3BC,MAAM,UAAA,CAAA;;;uBAGVC,UAAU,KAAA,CAAA,GAAA,aAAA,eAAA,MAAA,CAAA,GAAA,eAAA,WAAA,iBAAA,KAAA,CAAA;;iBAGHf,aAAAA;EACba,UAAU;EACVE,UAAU;;cAEAD,MAAM,gBAAA,CAAA;;;;;wCAvCdA,MAAM,kBAAA,CAAA,GAAA,MAAA,CACR,WAAW,SAAA,GAAA,EAAcE,QAAQ,KAAA,CAAA,CAAA,GAAA,cAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriber.mjs","names":["EntityDefaultEventName","EntityType","buildEntityChannelName","buildEntityNamespaceName","buildRedisKeyPath","EventSubscriber","publishDomainEvent","UserRoleEntity","CachePrefix","publishEvent","event","data","destinations","channel","id","USER_ROLE","user_realm_id","push","namespace","role_realm_id","content","type","UserRoleSubscriber","listenTo","afterInsert","entity","connection","queryResultCache","remove","prefix","USER_OWNED_ROLES","key","user_id","CREATED","afterUpdate","UPDATED","afterRemove","DELETED"],"sources":["../../../../../src/adapters/database/domains/user-role/subscriber.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { UserRole } from '@authup/core-kit';\nimport {\n EntityDefaultEventName, \n EntityType,\n buildEntityChannelName,\n buildEntityNamespaceName,\n} from '@authup/core-kit';\nimport type { DomainEventDestination } from '@authup/server-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport type {\n EntitySubscriberInterface, \n InsertEvent,\n RemoveEvent,\n UpdateEvent,\n} from 'typeorm';\nimport { EventSubscriber } from 'typeorm';\nimport { publishDomainEvent } from '../../event-publisher/index.ts';\nimport { UserRoleEntity } from './entity.ts';\nimport { CachePrefix } from '../constants.ts';\n\nasync function publishEvent(\n event: `${EntityDefaultEventName}`,\n data: UserRole,\n) {\n const destinations : DomainEventDestination[] = [\n { channel: (id) => buildEntityChannelName(EntityType.USER_ROLE, id) },\n ];\n if (data.user_realm_id) {\n destinations.push({\n channel: (id) => buildEntityChannelName(EntityType.USER_ROLE, id),\n namespace: buildEntityNamespaceName(data.user_realm_id),\n });\n }\n if (data.role_realm_id) {\n destinations.push({\n channel: (id) => buildEntityChannelName(EntityType.USER_ROLE, id),\n namespace: buildEntityNamespaceName(data.role_realm_id),\n });\n }\n\n await publishDomainEvent({\n content: {\n type: EntityType.USER_ROLE,\n event,\n data,\n },\n destinations,\n });\n}\n\n@EventSubscriber()\nexport class UserRoleSubscriber implements EntitySubscriberInterface<UserRole> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n listenTo(): Function | string {\n return UserRoleEntity;\n }\n\n async afterInsert(event: InsertEvent<UserRole>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_ROLES,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.CREATED, event.entity);\n }\n\n async afterUpdate(event: UpdateEvent<UserRole>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_ROLES,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.UPDATED, event.entity as UserRole);\n }\n\n async afterRemove(event: RemoveEvent<UserRole>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_ROLES,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.DELETED, event.entity);\n }\n}\n"],"mappings":";;;;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;AAsBD,eAAeS,aACXC,OACAC,MAAc;CAEd,MAAMC,eAA0C,CAC5C,EAAEC,UAAUC,OAAOZ,uBAAuBD,WAAWc,WAAWD,
|
|
1
|
+
{"version":3,"file":"subscriber.mjs","names":["EntityDefaultEventName","EntityType","buildEntityChannelName","buildEntityNamespaceName","buildRedisKeyPath","EventSubscriber","publishDomainEvent","UserRoleEntity","CachePrefix","publishEvent","event","data","destinations","channel","id","USER_ROLE","user_realm_id","push","namespace","role_realm_id","content","type","UserRoleSubscriber","listenTo","afterInsert","entity","connection","queryResultCache","remove","prefix","USER_OWNED_ROLES","key","user_id","CREATED","afterUpdate","UPDATED","afterRemove","DELETED"],"sources":["../../../../../src/adapters/database/domains/user-role/subscriber.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { UserRole } from '@authup/core-kit';\nimport {\n EntityDefaultEventName, \n EntityType,\n buildEntityChannelName,\n buildEntityNamespaceName,\n} from '@authup/core-kit';\nimport type { DomainEventDestination } from '@authup/server-kit';\nimport { buildRedisKeyPath } from '@authup/server-kit';\nimport type {\n EntitySubscriberInterface, \n InsertEvent,\n RemoveEvent,\n UpdateEvent,\n} from 'typeorm';\nimport { EventSubscriber } from 'typeorm';\nimport { publishDomainEvent } from '../../event-publisher/index.ts';\nimport { UserRoleEntity } from './entity.ts';\nimport { CachePrefix } from '../constants.ts';\n\nasync function publishEvent(\n event: `${EntityDefaultEventName}`,\n data: UserRole,\n) {\n const destinations : DomainEventDestination[] = [\n { channel: (id) => buildEntityChannelName(EntityType.USER_ROLE, id) },\n ];\n if (data.user_realm_id) {\n destinations.push({\n channel: (id) => buildEntityChannelName(EntityType.USER_ROLE, id),\n namespace: buildEntityNamespaceName(data.user_realm_id),\n });\n }\n if (data.role_realm_id) {\n destinations.push({\n channel: (id) => buildEntityChannelName(EntityType.USER_ROLE, id),\n namespace: buildEntityNamespaceName(data.role_realm_id),\n });\n }\n\n await publishDomainEvent({\n content: {\n type: EntityType.USER_ROLE,\n event,\n data,\n },\n destinations,\n });\n}\n\n@EventSubscriber()\nexport class UserRoleSubscriber implements EntitySubscriberInterface<UserRole> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n listenTo(): Function | string {\n return UserRoleEntity;\n }\n\n async afterInsert(event: InsertEvent<UserRole>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_ROLES,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.CREATED, event.entity);\n }\n\n async afterUpdate(event: UpdateEvent<UserRole>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_ROLES,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.UPDATED, event.entity as UserRole);\n }\n\n async afterRemove(event: RemoveEvent<UserRole>): Promise<any> {\n if (!event.entity) {\n return;\n }\n\n if (event.connection.queryResultCache) {\n await event.connection.queryResultCache.remove([\n buildRedisKeyPath({\n prefix: CachePrefix.USER_OWNED_ROLES,\n key: event.entity.user_id,\n }),\n ]);\n }\n\n await publishEvent(EntityDefaultEventName.DELETED, event.entity);\n }\n}\n"],"mappings":";;;;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;AAsBD,eAAeS,aACXC,OACAC,MAAc;CAEd,MAAMC,eAA0C,CAC5C,EAAEC,UAAUC,OAAOZ,uBAAuBD,WAAWc,WAAWD,EAAAA,EAAI,CAAA;CAExE,IAAIH,KAAKK,eACLJ,aAAaK,KAAK;EACdJ,UAAUC,OAAOZ,uBAAuBD,WAAWc,WAAWD,EAAAA;EAC9DI,WAAWf,yBAAyBQ,KAAKK,aAAa;CAC1D,CAAA;CAEJ,IAAIL,KAAKQ,eACLP,aAAaK,KAAK;EACdJ,UAAUC,OAAOZ,uBAAuBD,WAAWc,WAAWD,EAAAA;EAC9DI,WAAWf,yBAAyBQ,KAAKQ,aAAa;CAC1D,CAAA;CAGJ,MAAMb,mBAAmB;EACrBc,SAAS;GACLC,MAAMpB,WAAWc;GACjBL;GACAC;EACJ;EACAC;CACJ,CAAA;AACJ;AAGA,IAAaU,qBAAb,MAAaA;CAETC,WAA8B;EAC1B,OAAOhB;CACX;CAEA,MAAMiB,YAAYd,OAA4C;EAC1D,IAAI,CAACA,MAAMe,QACP;EAGJ,IAAIf,MAAMgB,WAAWC,kBACjB,MAAMjB,MAAMgB,WAAWC,iBAAiBC,OAAO,CAC3CxB,kBAAkB;GACdyB,QAAQrB,YAAYsB;GACpBC,KAAKrB,MAAMe,OAAOO;EACtB,CAAA,CAAA,CACH;EAGL,MAAMvB,aAAaT,uBAAuBiC,SAASvB,MAAMe,MAAM;CACnE;CAEA,MAAMS,YAAYxB,OAA4C;EAC1D,IAAI,CAACA,MAAMe,QACP;EAGJ,IAAIf,MAAMgB,WAAWC,kBACjB,MAAMjB,MAAMgB,WAAWC,iBAAiBC,OAAO,CAC3CxB,kBAAkB;GACdyB,QAAQrB,YAAYsB;GACpBC,KAAKrB,MAAMe,OAAOO;EACtB,CAAA,CAAA,CACH;EAGL,MAAMvB,aAAaT,uBAAuBmC,SAASzB,MAAMe,MAAM;CACnE;CAEA,MAAMW,YAAY1B,OAA4C;EAC1D,IAAI,CAACA,MAAMe,QACP;EAGJ,IAAIf,MAAMgB,WAAWC,kBACjB,MAAMjB,MAAMgB,WAAWC,iBAAiBC,OAAO,CAC3CxB,kBAAkB;GACdyB,QAAQrB,YAAYsB;GACpBC,KAAKrB,MAAMe,OAAOO;EACtB,CAAA,CAAA,CACH;EAGL,MAAMvB,aAAaT,uBAAuBqC,SAAS3B,MAAMe,MAAM;CACnE;AACJ"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare class DatabaseConflictError extends
|
|
1
|
+
import { AuthupError } from '@authup/errors';
|
|
2
|
+
export declare class DatabaseConflictError extends AuthupError {
|
|
3
3
|
constructor();
|
|
4
4
|
}
|
|
5
5
|
//# sourceMappingURL=conflict.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conflict.d.ts","sourceRoot":"","sources":["../../../../src/adapters/database/errors/conflict.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"conflict.d.ts","sourceRoot":"","sources":["../../../../src/adapters/database/errors/conflict.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAa,MAAM,gBAAgB,CAAC;AAExD,qBAAa,qBAAsB,SAAQ,WAAW;;CAOrD"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AuthupError, ErrorCode } from "@authup/errors";
|
|
2
2
|
//#region src/adapters/database/errors/conflict.ts
|
|
3
|
-
var DatabaseConflictError = class extends
|
|
3
|
+
var DatabaseConflictError = class extends AuthupError {
|
|
4
4
|
constructor() {
|
|
5
|
-
super(
|
|
5
|
+
super({
|
|
6
|
+
code: ErrorCode.ENTITY_CONFLICT,
|
|
7
|
+
message: "A db entry with some unique attributes already exists."
|
|
8
|
+
});
|
|
6
9
|
}
|
|
7
10
|
};
|
|
8
11
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conflict.mjs","names":["
|
|
1
|
+
{"version":3,"file":"conflict.mjs","names":["AuthupError","ErrorCode","DatabaseConflictError","code","ENTITY_CONFLICT","message"],"sources":["../../../../src/adapters/database/errors/conflict.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 { AuthupError, ErrorCode } from '@authup/errors';\n\nexport class DatabaseConflictError extends AuthupError {\n constructor() {\n super({\n code: ErrorCode.ENTITY_CONFLICT,\n message: 'A db entry with some unique attributes already exists.',\n });\n }\n}\n"],"mappings":";;AASA,IAAaE,wBAAb,cAA2CF,YAAAA;CACvC,cAAc;EACV,MAAM;GACFG,MAAMF,UAAUG;GAChBC,SAAS;EACb,CAAA;CACJ;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":["DomainEventPublisher","singa","singleton","name","factory","useDomainEventPublisher","use","setDomainEventPublisher","domainEventPublisher","set","publishDomainEvent","ctx","publish"],"sources":["../../../../src/adapters/database/event-publisher/module.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 type { DomainEventPublishContext } from '@authup/server-kit';\nimport { DomainEventPublisher } from '@authup/server-kit';\nimport { singa } from 'singa';\n\nconst singleton = singa<DomainEventPublisher>({\n name: 'domainEvent',\n factory() {\n return new DomainEventPublisher();\n },\n});\n\nexport function useDomainEventPublisher() {\n return singleton.use();\n}\n\nexport function setDomainEventPublisher(domainEventPublisher: DomainEventPublisher) {\n singleton.set(domainEventPublisher);\n}\n\nexport async function publishDomainEvent(ctx: DomainEventPublishContext) : Promise<void> {\n await useDomainEventPublisher()\n .publish(ctx);\n}\n"],"mappings":";;;AAWA,MAAME,YAAYD,MAA4B;CAC1CE,MAAM;CACNC,UAAAA;
|
|
1
|
+
{"version":3,"file":"module.mjs","names":["DomainEventPublisher","singa","singleton","name","factory","useDomainEventPublisher","use","setDomainEventPublisher","domainEventPublisher","set","publishDomainEvent","ctx","publish"],"sources":["../../../../src/adapters/database/event-publisher/module.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 type { DomainEventPublishContext } from '@authup/server-kit';\nimport { DomainEventPublisher } from '@authup/server-kit';\nimport { singa } from 'singa';\n\nconst singleton = singa<DomainEventPublisher>({\n name: 'domainEvent',\n factory() {\n return new DomainEventPublisher();\n },\n});\n\nexport function useDomainEventPublisher() {\n return singleton.use();\n}\n\nexport function setDomainEventPublisher(domainEventPublisher: DomainEventPublisher) {\n singleton.set(domainEventPublisher);\n}\n\nexport async function publishDomainEvent(ctx: DomainEventPublishContext) : Promise<void> {\n await useDomainEventPublisher()\n .publish(ctx);\n}\n"],"mappings":";;;AAWA,MAAME,YAAYD,MAA4B;CAC1CE,MAAM;CACNC,UAAAA;EACI,OAAO,IAAIJ,qBAAAA;CACf;AACJ,CAAA;AAEA,SAAgBK,0BAAAA;CACZ,OAAOH,UAAUI,IAAG;AACxB;AAEA,SAAgBC,wBAAwBC,sBAA0C;CAC9EN,UAAUO,IAAID,oBAAAA;AAClB;AAEA,eAAsBE,mBAAmBC,KAA8B;CACnE,MAAMN,wBAAAA,EACDO,QAAQD,GAAAA;AACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.mjs","names":["hasOwnProperty","In","ExtraAttributesRepositoryAdapter","repository","primaryColumn","attributeRepository","attributeForeignColumn","cachePrefix","extra","ctx","attributeProperties","input","entityPrimaryColumn","findOneWithEA","options","extraOptions","entity","findOne","undefined","extendWithEA","findWithEA","entities","find","extendManyWithEA","saveWithEA","attributes","columns","i","metadata","length","push","propertyName","relations","keys","Object","key_","key","index","indexOf","save","saveEA","extraKeys","extraKey","findOneWithEAByPrimaryColumn","value","attributesByPrimary","findWithEAByPrimaryColumn","attributeKeys","attributeKey","where","name","output","element","entityAttributes","filter","attribute","reduce","acc","curr","attributesByPrimaryKey","getPrimaryKeyValues","parent","foreignColumn","foreignColumnValue","items","findBy","itemsToDelete","itemsToUpdate","keysProcessed","item","keepAll","remove","itemsToAdd","keyIndex","insert","map"],"sources":["../../../../src/adapters/database/extra-attribute-repository/adapter.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 type { ObjectLiteral } from '@authup/kit';\nimport { hasOwnProperty } from '@authup/kit';\nimport type {\n FindManyOptions,\n FindOneOptions,\n FindOptionsWhere,\n FindOptionsWhereProperty,\n Repository,\n} from 'typeorm';\nimport { In } from 'typeorm';\nimport type {\n EARepositoryAdapterOptions,\n EARepositoryEntityBase,\n EARepositoryFindOptions,\n EARepositoryPropertiesModifyFn,\n EARepositorySaveOptions,\n} from './types.ts';\n\nexport class ExtraAttributesRepositoryAdapter<\n T extends ObjectLiteral = ObjectLiteral,\n A extends EARepositoryEntityBase = EARepositoryEntityBase,\n> {\n protected repository : Repository<T>;\n\n public primaryColumn : keyof T;\n\n protected attributeRepository : Repository<A>;\n\n public attributeForeignColumn : keyof A;\n\n protected cachePrefix?: string;\n\n protected extra : EARepositoryPropertiesModifyFn<T, A>;\n\n // ------------------------------------------------------------------------------\n\n constructor(ctx: EARepositoryAdapterOptions<T, A>) {\n let extra : EARepositoryPropertiesModifyFn<T, A>;\n if (ctx.attributeProperties) {\n extra = ctx.attributeProperties;\n } else {\n extra = (input) => input;\n }\n this.extra = extra;\n\n this.repository = ctx.repository;\n this.primaryColumn = ctx.entityPrimaryColumn;\n this.attributeRepository = ctx.attributeRepository;\n this.attributeForeignColumn = ctx.attributeForeignColumn;\n this.cachePrefix = ctx.cachePrefix;\n }\n\n // ------------------------------------------------------------------------------\n\n async findOneWithEA(\n options: FindOneOptions<T>,\n extraOptions: EARepositoryFindOptions = {},\n ) : Promise<T | undefined> {\n const entity = await this.repository.findOne(options);\n if (!entity) {\n return undefined;\n }\n\n await this.extendWithEA(entity, extraOptions);\n\n return entity;\n }\n\n async findWithEA<\n E extends Record<string, any>,\n >(\n options: FindManyOptions<T>,\n extraOptions: EARepositoryFindOptions = {},\n ) : Promise<(T & E)[]> {\n const entities = await this.repository.find(options);\n\n return this.extendManyWithEA(entities, extraOptions);\n }\n\n async saveWithEA<E extends Record<string, any>>(\n input: T & E,\n attributes?: E,\n options?: EARepositorySaveOptions<T>,\n ) : Promise<T & E> {\n const columns : string[] = [];\n\n for (let i = 0; i < this.repository.metadata.columns.length; i++) {\n columns.push(this.repository.metadata.columns[i].propertyName);\n }\n for (let i = 0; i < this.repository.metadata.relations.length; i++) {\n columns.push(this.repository.metadata.relations[i].propertyName);\n }\n\n let extra : Record<string, any> = {};\n if (attributes) {\n extra = { ...attributes };\n }\n\n const keys = Object.keys(input) as (keyof T)[];\n for (const key_ of keys) {\n const key = key_ as string;\n const index = columns.indexOf(key);\n if (index === -1) {\n extra[key] = input[key];\n delete input[key];\n }\n }\n\n await this.repository.save(input);\n\n await this.saveEA(\n input,\n extra,\n options,\n );\n\n const extraKeys = Object.keys(extra);\n for (const extraKey of extraKeys) {\n input[extraKey as keyof T] = extra[extraKey];\n }\n\n return input;\n }\n\n async findOneWithEAByPrimaryColumn<E extends Record<string, any>>(\n value: T[keyof T],\n extraOptions: EARepositoryFindOptions = {},\n ) : Promise<E> {\n const attributesByPrimary = await this.findWithEAByPrimaryColumn([value], extraOptions);\n return (attributesByPrimary[value as string] || {}) as E;\n }\n\n async extendWithEA<E extends Record<string, any>>(\n entity: T,\n extraOptions: EARepositoryFindOptions = {},\n ) : Promise<T & E> {\n const attributes = await this.findOneWithEAByPrimaryColumn(entity[this.primaryColumn], extraOptions);\n const attributeKeys = Object.keys(attributes);\n for (const attributeKey of attributeKeys) {\n entity[attributeKey as keyof T] = attributes[attributeKey] as T[keyof T];\n }\n\n return entity as T & E;\n }\n\n async findWithEAByPrimaryColumn<E extends Record<string, any>>(\n value: (T[keyof T])[],\n extraOptions: EARepositoryFindOptions = {},\n ) : Promise<Record<string, E>> {\n const where : FindOptionsWhere<A> = {};\n where[this.attributeForeignColumn as keyof FindOptionsWhere<A>] = In(value) as any;\n if (extraOptions.attributes) {\n where.name = In(extraOptions.attributes) as FindOptionsWhereProperty<A['name']>;\n }\n\n const attributes = await this.attributeRepository.find({ where });\n const output : Record<string, E> = {};\n\n for (const element of value) {\n const entityAttributes = attributes.filter(\n (attribute) => attribute[this.attributeForeignColumn] === element as unknown as A[keyof A],\n );\n\n output[element as string] = entityAttributes\n .reduce((acc, curr) => {\n acc[curr.name as keyof E] = curr.value as E[keyof E];\n\n return acc;\n }, {} as E);\n }\n\n return output;\n }\n\n async extendManyWithEA<E extends Record<string, any>>(\n entities: T[],\n extraOptions: EARepositoryFindOptions = {},\n ) : Promise<(T & E)[]> {\n const attributesByPrimaryKey = await this.findWithEAByPrimaryColumn(\n this.getPrimaryKeyValues(entities),\n extraOptions,\n );\n\n for (const entity of entities) {\n const attributes = attributesByPrimaryKey[entity[this.primaryColumn] as string];\n if (!attributes) {\n continue;\n }\n\n const attributeKeys = Object.keys(attributes);\n for (const attributeKey of attributeKeys) {\n entity[attributeKey as keyof T] = attributes[attributeKey] as T[keyof T];\n }\n }\n\n return entities as (T & E)[];\n }\n\n // ------------------------------------------------------------------------------\n\n private async saveEA(\n parent: T,\n input: Record<string, any>,\n options: EARepositorySaveOptions<T> = {},\n ) {\n const foreignColumn = this.attributeForeignColumn as keyof A;\n const foreignColumnValue = parent[this.primaryColumn] as unknown as A[keyof A];\n\n const where : Partial<A> = {};\n where[foreignColumn] = foreignColumnValue;\n\n const items = await this.attributeRepository.findBy(where);\n\n const itemsToDelete : A[] = [];\n const itemsToUpdate : A[] = [];\n\n const keysProcessed : string[] = [];\n for (const item of items) {\n if (hasOwnProperty(input, item.name)) {\n item.value = input[item.name];\n item[foreignColumn] = foreignColumnValue;\n\n itemsToUpdate.push(this.extra(item, parent));\n\n keysProcessed.push(item.name);\n } else if (!options.keepAll) {\n itemsToDelete.push(item);\n }\n }\n\n if (itemsToUpdate.length > 0) {\n await this.attributeRepository.save(itemsToUpdate);\n }\n\n if (itemsToDelete.length > 0) {\n await this.attributeRepository.remove(itemsToDelete);\n }\n\n const itemsToAdd : A[] = [];\n\n const keys = Object.keys(input);\n let keyIndex : number;\n\n for (const key of keys) {\n keyIndex = keysProcessed.indexOf(key);\n if (keyIndex === -1) {\n itemsToAdd.push(this.extra({\n name: key,\n value: input[key],\n [foreignColumn]: foreignColumnValue,\n } as A, parent));\n }\n }\n\n if (itemsToAdd.length > 0) {\n await this.attributeRepository.insert(itemsToAdd);\n }\n }\n\n getPrimaryKeyValues(entities: T[]) : T[keyof T][] {\n return entities.map((entity) => entity[this.primaryColumn as keyof T]);\n }\n}\n"],"mappings":";;;AAyBA,IAAaE,mCAAb,MAAaA;CAICC;CAEHC;CAEGC;CAEHC;CAEGC;CAEAC;CAIV,YAAYC,KAAuC;EAC/C,IAAID;AACJ,MAAIC,IAAIC,oBACJF,SAAQC,IAAIC;MAEZF,UAASG,UAAUA;AAEvB,OAAKH,QAAQA;AAEb,OAAKL,aAAaM,IAAIN;AACtB,OAAKC,gBAAgBK,IAAIG;AACzB,OAAKP,sBAAsBI,IAAIJ;AAC/B,OAAKC,yBAAyBG,IAAIH;AAClC,OAAKC,cAAcE,IAAIF;;CAK3B,MAAMM,cACFC,SACAC,eAAwC,EAAE,EACnB;EACvB,MAAMC,SAAS,MAAM,KAAKb,WAAWc,QAAQH,QAAAA;AAC7C,MAAI,CAACE,OACD;AAGJ,QAAM,KAAKG,aAAaH,QAAQD,aAAAA;AAEhC,SAAOC;;CAGX,MAAMI,WAGFN,SACAC,eAAwC,EAAE,EACvB;EACnB,MAAMM,WAAW,MAAM,KAAKlB,WAAWmB,KAAKR,QAAAA;AAE5C,SAAO,KAAKS,iBAAiBF,UAAUN,aAAAA;;CAG3C,MAAMS,WACFb,OACAc,YACAX,SACe;EACf,MAAMY,UAAqB,EAAE;AAE7B,OAAK,IAAIC,IAAI,GAAGA,IAAI,KAAKxB,WAAWyB,SAASF,QAAQG,QAAQF,IACzDD,SAAQI,KAAK,KAAK3B,WAAWyB,SAASF,QAAQC,GAAGI,aAAY;AAEjE,OAAK,IAAIJ,IAAI,GAAGA,IAAI,KAAKxB,WAAWyB,SAASI,UAAUH,QAAQF,IAC3DD,SAAQI,KAAK,KAAK3B,WAAWyB,SAASI,UAAUL,GAAGI,aAAY;EAGnE,IAAIvB,QAA8B,EAAC;AACnC,MAAIiB,WACAjB,SAAQ,EAAE,GAAGiB,YAAW;EAG5B,MAAMQ,OAAOC,OAAOD,KAAKtB,MAAAA;AACzB,OAAK,MAAMwB,QAAQF,MAAM;GACrB,MAAMG,MAAMD;AAEZ,OADcT,QAAQY,QAAQF,IAC1BC,KAAU,IAAI;AACd7B,UAAM4B,OAAOzB,MAAMyB;AACnB,WAAOzB,MAAMyB;;;AAIrB,QAAM,KAAKjC,WAAWoC,KAAK5B,MAAAA;AAE3B,QAAM,KAAK6B,OACP7B,OACAH,OACAM,QAAAA;EAGJ,MAAM2B,YAAYP,OAAOD,KAAKzB,MAAAA;AAC9B,OAAK,MAAMkC,YAAYD,UACnB9B,OAAM+B,YAAuBlC,MAAMkC;AAGvC,SAAO/B;;CAGX,MAAMgC,6BACFC,OACA7B,eAAwC,EAAE,EAC/B;AAEX,UAAQ8B,MAD0B,KAAKC,0BAA0B,CAACF,MAAM,EAAE7B,aAAAA,EAC9C6B,UAAoB,EAAC;;CAGrD,MAAMzB,aACFH,QACAD,eAAwC,EAAE,EAC3B;EACf,MAAMU,aAAa,MAAM,KAAKkB,6BAA6B3B,OAAO,KAAKZ,gBAAgBW,aAAAA;EACvF,MAAMgC,gBAAgBb,OAAOD,KAAKR,WAAAA;AAClC,OAAK,MAAMuB,gBAAgBD,cACvB/B,QAAOgC,gBAA2BvB,WAAWuB;AAGjD,SAAOhC;;CAGX,MAAM8B,0BACFF,OACA7B,eAAwC,EAAE,EACf;EAC3B,MAAMkC,QAA8B,EAAC;AACrCA,QAAM,KAAK3C,0BAAuDL,GAAG2C,MAAAA;AACrE,MAAI7B,aAAaU,WACbwB,OAAMC,OAAOjD,GAAGc,aAAaU,WAAU;EAG3C,MAAMA,aAAa,MAAM,KAAKpB,oBAAoBiB,KAAK,EAAE2B,OAAM,CAAA;EAC/D,MAAME,SAA6B,EAAC;AAEpC,OAAK,MAAMC,WAAWR,MAKlBO,QAAOC,WAJkB3B,WAAW6B,QAC/BC,cAAcA,UAAU,KAAKjD,4BAA4B8C,QAGlCC,CACvBG,QAAQC,KAAKC,SAAAA;AACVD,OAAIC,KAAKR,QAAmBQ,KAAKd;AAEjC,UAAOa;KACR,EAAC,CAAA;AAGZ,SAAON;;CAGX,MAAM5B,iBACFF,UACAN,eAAwC,EAAE,EACvB;EACnB,MAAM4C,yBAAyB,MAAM,KAAKb,0BACtC,KAAKc,oBAAoBvC,SAAAA,EACzBN,aAAAA;AAGJ,OAAK,MAAMC,UAAUK,UAAU;GAC3B,MAAMI,aAAakC,uBAAuB3C,OAAO,KAAKZ;AACtD,OAAI,CAACqB,WACD;GAGJ,MAAMsB,gBAAgBb,OAAOD,KAAKR,WAAAA;AAClC,QAAK,MAAMuB,gBAAgBD,cACvB/B,QAAOgC,gBAA2BvB,WAAWuB;;AAIrD,SAAO3B;;CAKX,MAAcmB,OACVqB,QACAlD,OACAG,UAAsC,EAAE,EAC1C;EACE,MAAMgD,gBAAgB,KAAKxD;EAC3B,MAAMyD,qBAAqBF,OAAO,KAAKzD;EAEvC,MAAM6C,QAAqB,EAAC;AAC5BA,QAAMa,iBAAiBC;EAEvB,MAAMC,QAAQ,MAAM,KAAK3D,oBAAoB4D,OAAOhB,MAAAA;EAEpD,MAAMiB,gBAAsB,EAAE;EAC9B,MAAMC,gBAAsB,EAAE;EAE9B,MAAMC,gBAA2B,EAAE;AACnC,OAAK,MAAMC,QAAQL,MACf,KAAIhE,eAAeW,OAAO0D,KAAKnB,KAAI,EAAG;AAClCmB,QAAKzB,QAAQjC,MAAM0D,KAAKnB;AACxBmB,QAAKP,iBAAiBC;AAEtBI,iBAAcrC,KAAK,KAAKtB,MAAM6D,MAAMR,OAAAA,CAAAA;AAEpCO,iBAActC,KAAKuC,KAAKnB,KAAI;aACrB,CAACpC,QAAQwD,QAChBJ,eAAcpC,KAAKuC,KAAAA;AAI3B,MAAIF,cAActC,SAAS,EACvB,OAAM,KAAKxB,oBAAoBkC,KAAK4B,cAAAA;AAGxC,MAAID,cAAcrC,SAAS,EACvB,OAAM,KAAKxB,oBAAoBkE,OAAOL,cAAAA;EAG1C,MAAMM,aAAmB,EAAE;EAE3B,MAAMvC,OAAOC,OAAOD,KAAKtB,MAAAA;EACzB,IAAI8D;AAEJ,OAAK,MAAMrC,OAAOH,MAAM;AACpBwC,cAAWL,cAAc9B,QAAQF,IAAAA;AACjC,OAAIqC,aAAa,GACbD,YAAW1C,KAAK,KAAKtB,MAAM;IACvB0C,MAAMd;IACNQ,OAAOjC,MAAMyB;KACZ0B,gBAAgBC;IACrB,EAAQF,OAAAA,CAAAA;;AAIhB,MAAIW,WAAW3C,SAAS,EACpB,OAAM,KAAKxB,oBAAoBqE,OAAOF,WAAAA;;CAI9CZ,oBAAoBvC,UAA8B;AAC9C,SAAOA,SAASsD,KAAK3D,WAAWA,OAAO,KAAKZ,eAAyB"}
|
|
1
|
+
{"version":3,"file":"adapter.mjs","names":["hasOwnProperty","In","ExtraAttributesRepositoryAdapter","repository","primaryColumn","attributeRepository","attributeForeignColumn","cachePrefix","extra","ctx","attributeProperties","input","entityPrimaryColumn","findOneWithEA","options","extraOptions","entity","findOne","undefined","extendWithEA","findWithEA","entities","find","extendManyWithEA","saveWithEA","attributes","columns","i","metadata","length","push","propertyName","relations","keys","Object","key_","key","index","indexOf","save","saveEA","extraKeys","extraKey","findOneWithEAByPrimaryColumn","value","attributesByPrimary","findWithEAByPrimaryColumn","attributeKeys","attributeKey","where","name","output","element","entityAttributes","filter","attribute","reduce","acc","curr","attributesByPrimaryKey","getPrimaryKeyValues","parent","foreignColumn","foreignColumnValue","items","findBy","itemsToDelete","itemsToUpdate","keysProcessed","item","keepAll","remove","itemsToAdd","keyIndex","insert","map"],"sources":["../../../../src/adapters/database/extra-attribute-repository/adapter.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 type { ObjectLiteral } from '@authup/kit';\nimport { hasOwnProperty } from '@authup/kit';\nimport type {\n FindManyOptions,\n FindOneOptions,\n FindOptionsWhere,\n FindOptionsWhereProperty,\n Repository,\n} from 'typeorm';\nimport { In } from 'typeorm';\nimport type {\n EARepositoryAdapterOptions,\n EARepositoryEntityBase,\n EARepositoryFindOptions,\n EARepositoryPropertiesModifyFn,\n EARepositorySaveOptions,\n} from './types.ts';\n\nexport class ExtraAttributesRepositoryAdapter<\n T extends ObjectLiteral = ObjectLiteral,\n A extends EARepositoryEntityBase = EARepositoryEntityBase,\n> {\n protected repository : Repository<T>;\n\n public primaryColumn : keyof T;\n\n protected attributeRepository : Repository<A>;\n\n public attributeForeignColumn : keyof A;\n\n protected cachePrefix?: string;\n\n protected extra : EARepositoryPropertiesModifyFn<T, A>;\n\n // ------------------------------------------------------------------------------\n\n constructor(ctx: EARepositoryAdapterOptions<T, A>) {\n let extra : EARepositoryPropertiesModifyFn<T, A>;\n if (ctx.attributeProperties) {\n extra = ctx.attributeProperties;\n } else {\n extra = (input) => input;\n }\n this.extra = extra;\n\n this.repository = ctx.repository;\n this.primaryColumn = ctx.entityPrimaryColumn;\n this.attributeRepository = ctx.attributeRepository;\n this.attributeForeignColumn = ctx.attributeForeignColumn;\n this.cachePrefix = ctx.cachePrefix;\n }\n\n // ------------------------------------------------------------------------------\n\n async findOneWithEA(\n options: FindOneOptions<T>,\n extraOptions: EARepositoryFindOptions = {},\n ) : Promise<T | undefined> {\n const entity = await this.repository.findOne(options);\n if (!entity) {\n return undefined;\n }\n\n await this.extendWithEA(entity, extraOptions);\n\n return entity;\n }\n\n async findWithEA<\n E extends Record<string, any>,\n >(\n options: FindManyOptions<T>,\n extraOptions: EARepositoryFindOptions = {},\n ) : Promise<(T & E)[]> {\n const entities = await this.repository.find(options);\n\n return this.extendManyWithEA(entities, extraOptions);\n }\n\n async saveWithEA<E extends Record<string, any>>(\n input: T & E,\n attributes?: E,\n options?: EARepositorySaveOptions<T>,\n ) : Promise<T & E> {\n const columns : string[] = [];\n\n for (let i = 0; i < this.repository.metadata.columns.length; i++) {\n columns.push(this.repository.metadata.columns[i].propertyName);\n }\n for (let i = 0; i < this.repository.metadata.relations.length; i++) {\n columns.push(this.repository.metadata.relations[i].propertyName);\n }\n\n let extra : Record<string, any> = {};\n if (attributes) {\n extra = { ...attributes };\n }\n\n const keys = Object.keys(input) as (keyof T)[];\n for (const key_ of keys) {\n const key = key_ as string;\n const index = columns.indexOf(key);\n if (index === -1) {\n extra[key] = input[key];\n delete input[key];\n }\n }\n\n await this.repository.save(input);\n\n await this.saveEA(\n input,\n extra,\n options,\n );\n\n const extraKeys = Object.keys(extra);\n for (const extraKey of extraKeys) {\n input[extraKey as keyof T] = extra[extraKey];\n }\n\n return input;\n }\n\n async findOneWithEAByPrimaryColumn<E extends Record<string, any>>(\n value: T[keyof T],\n extraOptions: EARepositoryFindOptions = {},\n ) : Promise<E> {\n const attributesByPrimary = await this.findWithEAByPrimaryColumn([value], extraOptions);\n return (attributesByPrimary[value as string] || {}) as E;\n }\n\n async extendWithEA<E extends Record<string, any>>(\n entity: T,\n extraOptions: EARepositoryFindOptions = {},\n ) : Promise<T & E> {\n const attributes = await this.findOneWithEAByPrimaryColumn(entity[this.primaryColumn], extraOptions);\n const attributeKeys = Object.keys(attributes);\n for (const attributeKey of attributeKeys) {\n entity[attributeKey as keyof T] = attributes[attributeKey] as T[keyof T];\n }\n\n return entity as T & E;\n }\n\n async findWithEAByPrimaryColumn<E extends Record<string, any>>(\n value: (T[keyof T])[],\n extraOptions: EARepositoryFindOptions = {},\n ) : Promise<Record<string, E>> {\n const where : FindOptionsWhere<A> = {};\n where[this.attributeForeignColumn as keyof FindOptionsWhere<A>] = In(value) as any;\n if (extraOptions.attributes) {\n where.name = In(extraOptions.attributes) as FindOptionsWhereProperty<A['name']>;\n }\n\n const attributes = await this.attributeRepository.find({ where });\n const output : Record<string, E> = {};\n\n for (const element of value) {\n const entityAttributes = attributes.filter(\n (attribute) => attribute[this.attributeForeignColumn] === element as unknown as A[keyof A],\n );\n\n output[element as string] = entityAttributes\n .reduce((acc, curr) => {\n acc[curr.name as keyof E] = curr.value as E[keyof E];\n\n return acc;\n }, {} as E);\n }\n\n return output;\n }\n\n async extendManyWithEA<E extends Record<string, any>>(\n entities: T[],\n extraOptions: EARepositoryFindOptions = {},\n ) : Promise<(T & E)[]> {\n const attributesByPrimaryKey = await this.findWithEAByPrimaryColumn(\n this.getPrimaryKeyValues(entities),\n extraOptions,\n );\n\n for (const entity of entities) {\n const attributes = attributesByPrimaryKey[entity[this.primaryColumn] as string];\n if (!attributes) {\n continue;\n }\n\n const attributeKeys = Object.keys(attributes);\n for (const attributeKey of attributeKeys) {\n entity[attributeKey as keyof T] = attributes[attributeKey] as T[keyof T];\n }\n }\n\n return entities as (T & E)[];\n }\n\n // ------------------------------------------------------------------------------\n\n private async saveEA(\n parent: T,\n input: Record<string, any>,\n options: EARepositorySaveOptions<T> = {},\n ) {\n const foreignColumn = this.attributeForeignColumn as keyof A;\n const foreignColumnValue = parent[this.primaryColumn] as unknown as A[keyof A];\n\n const where : Partial<A> = {};\n where[foreignColumn] = foreignColumnValue;\n\n const items = await this.attributeRepository.findBy(where);\n\n const itemsToDelete : A[] = [];\n const itemsToUpdate : A[] = [];\n\n const keysProcessed : string[] = [];\n for (const item of items) {\n if (hasOwnProperty(input, item.name)) {\n item.value = input[item.name];\n item[foreignColumn] = foreignColumnValue;\n\n itemsToUpdate.push(this.extra(item, parent));\n\n keysProcessed.push(item.name);\n } else if (!options.keepAll) {\n itemsToDelete.push(item);\n }\n }\n\n if (itemsToUpdate.length > 0) {\n await this.attributeRepository.save(itemsToUpdate);\n }\n\n if (itemsToDelete.length > 0) {\n await this.attributeRepository.remove(itemsToDelete);\n }\n\n const itemsToAdd : A[] = [];\n\n const keys = Object.keys(input);\n let keyIndex : number;\n\n for (const key of keys) {\n keyIndex = keysProcessed.indexOf(key);\n if (keyIndex === -1) {\n itemsToAdd.push(this.extra({\n name: key,\n value: input[key],\n [foreignColumn]: foreignColumnValue,\n } as A, parent));\n }\n }\n\n if (itemsToAdd.length > 0) {\n await this.attributeRepository.insert(itemsToAdd);\n }\n }\n\n getPrimaryKeyValues(entities: T[]) : T[keyof T][] {\n return entities.map((entity) => entity[this.primaryColumn as keyof T]);\n }\n}\n"],"mappings":";;;AAyBA,IAAaE,mCAAb,MAAaA;CAICC;CAEHC;CAEGC;CAEHC;CAEGC;CAEAC;CAIV,YAAYC,KAAuC;EAC/C,IAAID;EACJ,IAAIC,IAAIC,qBACJF,QAAQC,IAAIC;OAEZF,SAASG,UAAUA;EAEvB,KAAKH,QAAQA;EAEb,KAAKL,aAAaM,IAAIN;EACtB,KAAKC,gBAAgBK,IAAIG;EACzB,KAAKP,sBAAsBI,IAAIJ;EAC/B,KAAKC,yBAAyBG,IAAIH;EAClC,KAAKC,cAAcE,IAAIF;CAC3B;CAIA,MAAMM,cACFC,SACAC,eAAwC,CAAC,GAClB;EACvB,MAAMC,SAAS,MAAM,KAAKb,WAAWc,QAAQH,OAAAA;EAC7C,IAAI,CAACE,QACD;EAGJ,MAAM,KAAKG,aAAaH,QAAQD,YAAAA;EAEhC,OAAOC;CACX;CAEA,MAAMI,WAGFN,SACAC,eAAwC,CAAC,GACtB;EACnB,MAAMM,WAAW,MAAM,KAAKlB,WAAWmB,KAAKR,OAAAA;EAE5C,OAAO,KAAKS,iBAAiBF,UAAUN,YAAAA;CAC3C;CAEA,MAAMS,WACFb,OACAc,YACAX,SACe;EACf,MAAMY,UAAqB,CAAA;EAE3B,KAAK,IAAIC,IAAI,GAAGA,IAAI,KAAKxB,WAAWyB,SAASF,QAAQG,QAAQF,KACzDD,QAAQI,KAAK,KAAK3B,WAAWyB,SAASF,QAAQC,GAAGI,YAAY;EAEjE,KAAK,IAAIJ,IAAI,GAAGA,IAAI,KAAKxB,WAAWyB,SAASI,UAAUH,QAAQF,KAC3DD,QAAQI,KAAK,KAAK3B,WAAWyB,SAASI,UAAUL,GAAGI,YAAY;EAGnE,IAAIvB,QAA8B,CAAC;EACnC,IAAIiB,YACAjB,QAAQ,EAAE,GAAGiB,WAAW;EAG5B,MAAMQ,OAAOC,OAAOD,KAAKtB,KAAAA;EACzB,KAAK,MAAMwB,QAAQF,MAAM;GACrB,MAAMG,MAAMD;GAEZ,IADcT,QAAQY,QAAQF,GAC1BC,MAAU,IAAI;IACd7B,MAAM4B,OAAOzB,MAAMyB;IACnB,OAAOzB,MAAMyB;GACjB;EACJ;EAEA,MAAM,KAAKjC,WAAWoC,KAAK5B,KAAAA;EAE3B,MAAM,KAAK6B,OACP7B,OACAH,OACAM,OAAAA;EAGJ,MAAM2B,YAAYP,OAAOD,KAAKzB,KAAAA;EAC9B,KAAK,MAAMkC,YAAYD,WACnB9B,MAAM+B,YAAuBlC,MAAMkC;EAGvC,OAAO/B;CACX;CAEA,MAAMgC,6BACFC,OACA7B,eAAwC,CAAC,GAC9B;EAEX,QAAQ8B,MAD0B,KAAKC,0BAA0B,CAACF,KAAAA,GAAQ7B,YAAAA,GAC9C6B,UAAoB,CAAC;CACrD;CAEA,MAAMzB,aACFH,QACAD,eAAwC,CAAC,GAC1B;EACf,MAAMU,aAAa,MAAM,KAAKkB,6BAA6B3B,OAAO,KAAKZ,gBAAgBW,YAAAA;EACvF,MAAMgC,gBAAgBb,OAAOD,KAAKR,UAAAA;EAClC,KAAK,MAAMuB,gBAAgBD,eACvB/B,OAAOgC,gBAA2BvB,WAAWuB;EAGjD,OAAOhC;CACX;CAEA,MAAM8B,0BACFF,OACA7B,eAAwC,CAAC,GACd;EAC3B,MAAMkC,QAA8B,CAAC;EACrCA,MAAM,KAAK3C,0BAAuDL,GAAG2C,KAAAA;EACrE,IAAI7B,aAAaU,YACbwB,MAAMC,OAAOjD,GAAGc,aAAaU,UAAU;EAG3C,MAAMA,aAAa,MAAM,KAAKpB,oBAAoBiB,KAAK,EAAE2B,MAAM,CAAA;EAC/D,MAAME,SAA6B,CAAC;EAEpC,KAAK,MAAMC,WAAWR,OAKlBO,OAAOC,WAJkB3B,WAAW6B,QAC/BC,cAAcA,UAAU,KAAKjD,4BAA4B8C,OAGlCC,EACvBG,QAAQC,KAAKC,SAAAA;GACVD,IAAIC,KAAKR,QAAmBQ,KAAKd;GAEjC,OAAOa;EACX,GAAG,CAAC,CAAA;EAGZ,OAAON;CACX;CAEA,MAAM5B,iBACFF,UACAN,eAAwC,CAAC,GACtB;EACnB,MAAM4C,yBAAyB,MAAM,KAAKb,0BACtC,KAAKc,oBAAoBvC,QAAAA,GACzBN,YAAAA;EAGJ,KAAK,MAAMC,UAAUK,UAAU;GAC3B,MAAMI,aAAakC,uBAAuB3C,OAAO,KAAKZ;GACtD,IAAI,CAACqB,YACD;GAGJ,MAAMsB,gBAAgBb,OAAOD,KAAKR,UAAAA;GAClC,KAAK,MAAMuB,gBAAgBD,eACvB/B,OAAOgC,gBAA2BvB,WAAWuB;EAErD;EAEA,OAAO3B;CACX;CAIA,MAAcmB,OACVqB,QACAlD,OACAG,UAAsC,CAAC,GACzC;EACE,MAAMgD,gBAAgB,KAAKxD;EAC3B,MAAMyD,qBAAqBF,OAAO,KAAKzD;EAEvC,MAAM6C,QAAqB,CAAC;EAC5BA,MAAMa,iBAAiBC;EAEvB,MAAMC,QAAQ,MAAM,KAAK3D,oBAAoB4D,OAAOhB,KAAAA;EAEpD,MAAMiB,gBAAsB,CAAA;EAC5B,MAAMC,gBAAsB,CAAA;EAE5B,MAAMC,gBAA2B,CAAA;EACjC,KAAK,MAAMC,QAAQL,OACf,IAAIhE,eAAeW,OAAO0D,KAAKnB,IAAI,GAAG;GAClCmB,KAAKzB,QAAQjC,MAAM0D,KAAKnB;GACxBmB,KAAKP,iBAAiBC;GAEtBI,cAAcrC,KAAK,KAAKtB,MAAM6D,MAAMR,MAAAA,CAAAA;GAEpCO,cAActC,KAAKuC,KAAKnB,IAAI;EAChC,OAAO,IAAI,CAACpC,QAAQwD,SAChBJ,cAAcpC,KAAKuC,IAAAA;EAI3B,IAAIF,cAActC,SAAS,GACvB,MAAM,KAAKxB,oBAAoBkC,KAAK4B,aAAAA;EAGxC,IAAID,cAAcrC,SAAS,GACvB,MAAM,KAAKxB,oBAAoBkE,OAAOL,aAAAA;EAG1C,MAAMM,aAAmB,CAAA;EAEzB,MAAMvC,OAAOC,OAAOD,KAAKtB,KAAAA;EACzB,IAAI8D;EAEJ,KAAK,MAAMrC,OAAOH,MAAM;GACpBwC,WAAWL,cAAc9B,QAAQF,GAAAA;GACjC,IAAIqC,aAAa,IACbD,WAAW1C,KAAK,KAAKtB,MAAM;IACvB0C,MAAMd;IACNQ,OAAOjC,MAAMyB;KACZ0B,gBAAgBC;GACrB,GAAQF,MAAAA,CAAAA;EAEhB;EAEA,IAAIW,WAAW3C,SAAS,GACpB,MAAM,KAAKxB,oBAAoBqE,OAAOF,UAAAA;CAE9C;CAEAZ,oBAAoBvC,UAA8B;EAC9C,OAAOA,SAASsD,KAAK3D,WAAWA,OAAO,KAAKZ,cAAyB;CACzE;AACJ"}
|