@ptc-org/nestjs-query-graphql 0.30.1 → 1.0.0-alpha.1
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/CHANGELOG.md +149 -149
- package/README.md +4 -4
- package/package.json +7 -6
- package/src/auth/authorizer.d.ts +26 -0
- package/src/auth/authorizer.js +12 -0
- package/src/auth/authorizer.js.map +1 -0
- package/src/auth/default-crud.authorizer.d.ts +6 -0
- package/src/auth/default-crud.authorizer.js +74 -0
- package/src/auth/default-crud.authorizer.js.map +1 -0
- package/src/auth/index.d.ts +3 -0
- package/src/auth/index.js +7 -0
- package/src/auth/index.js.map +1 -0
- package/src/auth/tokens.d.ts +3 -0
- package/src/auth/tokens.js +8 -0
- package/src/auth/tokens.js.map +1 -0
- package/src/common/dto.utils.d.ts +15 -0
- package/src/common/dto.utils.js +32 -0
- package/src/common/dto.utils.js.map +1 -0
- package/src/common/external.utils.d.ts +10 -0
- package/src/common/external.utils.js +33 -0
- package/src/common/external.utils.js.map +1 -0
- package/src/common/index.d.ts +4 -0
- package/src/common/index.js +11 -0
- package/src/common/index.js.map +1 -0
- package/src/common/object.utils.d.ts +1 -0
- package/src/common/object.utils.js +14 -0
- package/src/common/object.utils.js.map +1 -0
- package/src/common/resolver.utils.d.ts +2 -0
- package/src/common/resolver.utils.js +19 -0
- package/src/common/resolver.utils.js.map +1 -0
- package/src/decorators/aggregate-query-param.decorator.d.ts +1 -0
- package/src/decorators/aggregate-query-param.decorator.js +21 -0
- package/src/decorators/aggregate-query-param.decorator.js.map +1 -0
- package/src/decorators/authorize-filter.decorator.d.ts +6 -0
- package/src/decorators/authorize-filter.decorator.js +67 -0
- package/src/decorators/authorize-filter.decorator.js.map +1 -0
- package/src/decorators/authorizer.decorator.d.ts +5 -0
- package/src/decorators/authorizer.decorator.js +24 -0
- package/src/decorators/authorizer.decorator.js.map +1 -0
- package/src/decorators/constants.d.ts +8 -0
- package/src/decorators/constants.js +12 -0
- package/src/decorators/constants.js.map +1 -0
- package/src/decorators/decorator.utils.d.ts +3 -0
- package/src/decorators/decorator.utils.js +21 -0
- package/src/decorators/decorator.utils.js.map +1 -0
- package/src/decorators/filterable-field.decorator.d.ts +47 -0
- package/src/decorators/filterable-field.decorator.js +53 -0
- package/src/decorators/filterable-field.decorator.js.map +1 -0
- package/src/decorators/hook-args.decorator.d.ts +3 -0
- package/src/decorators/hook-args.decorator.js +43 -0
- package/src/decorators/hook-args.decorator.js.map +1 -0
- package/src/decorators/hook.decorator.d.ts +13 -0
- package/src/decorators/hook.decorator.js +31 -0
- package/src/decorators/hook.decorator.js.map +1 -0
- package/src/decorators/id-field.decorator.d.ts +32 -0
- package/src/decorators/id-field.decorator.js +48 -0
- package/src/decorators/id-field.decorator.js.map +1 -0
- package/src/decorators/index.d.ts +21 -0
- package/src/decorators/index.js +39 -0
- package/src/decorators/index.js.map +1 -0
- package/src/decorators/inject-authorizer.decorator.d.ts +2 -0
- package/src/decorators/inject-authorizer.decorator.js +8 -0
- package/src/decorators/inject-authorizer.decorator.js.map +1 -0
- package/src/decorators/inject-custom-authorizer.decorator.d.ts +2 -0
- package/src/decorators/inject-custom-authorizer.decorator.js +8 -0
- package/src/decorators/inject-custom-authorizer.decorator.js.map +1 -0
- package/src/decorators/inject-pub-sub.decorator.d.ts +1 -0
- package/src/decorators/inject-pub-sub.decorator.js +8 -0
- package/src/decorators/inject-pub-sub.decorator.js.map +1 -0
- package/src/decorators/key-set.decorator.d.ts +3 -0
- package/src/decorators/key-set.decorator.js +13 -0
- package/src/decorators/key-set.decorator.js.map +1 -0
- package/src/decorators/query-options.decorator.d.ts +5 -0
- package/src/decorators/query-options.decorator.js +16 -0
- package/src/decorators/query-options.decorator.js.map +1 -0
- package/src/decorators/reference.decorator.d.ts +8 -0
- package/src/decorators/reference.decorator.js +36 -0
- package/src/decorators/reference.decorator.js.map +1 -0
- package/src/decorators/relation.decorator.d.ts +16 -0
- package/src/decorators/relation.decorator.js +53 -0
- package/src/decorators/relation.decorator.js.map +1 -0
- package/src/decorators/resolver-field.decorator.d.ts +11 -0
- package/src/decorators/resolver-field.decorator.js +22 -0
- package/src/decorators/resolver-field.decorator.js.map +1 -0
- package/src/decorators/resolver-method.decorator.d.ts +34 -0
- package/src/decorators/resolver-method.decorator.js +35 -0
- package/src/decorators/resolver-method.decorator.js.map +1 -0
- package/src/decorators/resolver-mutation.decorator.d.ts +10 -0
- package/src/decorators/resolver-mutation.decorator.js +21 -0
- package/src/decorators/resolver-mutation.decorator.js.map +1 -0
- package/src/decorators/resolver-query.decorator.d.ts +13 -0
- package/src/decorators/resolver-query.decorator.js +21 -0
- package/src/decorators/resolver-query.decorator.js.map +1 -0
- package/src/decorators/resolver-subscription.decorator.d.ts +7 -0
- package/src/decorators/resolver-subscription.decorator.js +18 -0
- package/src/decorators/resolver-subscription.decorator.js.map +1 -0
- package/src/decorators/skip-if.decorator.d.ts +8 -0
- package/src/decorators/skip-if.decorator.js +18 -0
- package/src/decorators/skip-if.decorator.js.map +1 -0
- package/src/federation/index.d.ts +1 -0
- package/src/federation/index.js +3 -0
- package/src/federation/index.js.map +1 -0
- package/src/federation/representation.type.d.ts +3 -0
- package/src/federation/representation.type.js +3 -0
- package/src/federation/representation.type.js.map +1 -0
- package/src/hooks/default.hook.d.ts +3 -0
- package/src/hooks/default.hook.js +13 -0
- package/src/hooks/default.hook.js.map +1 -0
- package/src/hooks/hooks.d.ts +14 -0
- package/src/hooks/hooks.js +8 -0
- package/src/hooks/hooks.js.map +1 -0
- package/src/hooks/index.d.ts +4 -0
- package/src/hooks/index.js +10 -0
- package/src/hooks/index.js.map +1 -0
- package/src/hooks/tokens.d.ts +3 -0
- package/src/hooks/tokens.js +6 -0
- package/src/hooks/tokens.js.map +1 -0
- package/src/hooks/types.d.ts +10 -0
- package/src/hooks/types.js +15 -0
- package/src/hooks/types.js.map +1 -0
- package/src/index.d.ts +11 -0
- package/src/index.js.map +1 -0
- package/src/interceptors/authorizer.interceptor.d.ts +7 -0
- package/src/interceptors/authorizer.interceptor.js +33 -0
- package/src/interceptors/authorizer.interceptor.js.map +1 -0
- package/src/interceptors/hook.interceptor.d.ts +7 -0
- package/src/interceptors/hook.interceptor.js +44 -0
- package/src/interceptors/hook.interceptor.js.map +1 -0
- package/src/interceptors/index.d.ts +2 -0
- package/src/interceptors/index.js +6 -0
- package/src/interceptors/index.js.map +1 -0
- package/src/loader/aggregate-relations.loader.d.ts +16 -0
- package/src/loader/aggregate-relations.loader.js +43 -0
- package/src/loader/aggregate-relations.loader.js.map +1 -0
- package/src/loader/count-relations.loader.d.ts +15 -0
- package/src/loader/count-relations.loader.js +42 -0
- package/src/loader/count-relations.loader.js.map +1 -0
- package/src/loader/dataloader.factory.d.ts +9 -0
- package/src/loader/dataloader.factory.js +27 -0
- package/src/loader/dataloader.factory.js.map +1 -0
- package/src/loader/find-relations.loader.d.ts +14 -0
- package/src/loader/find-relations.loader.js +42 -0
- package/src/loader/find-relations.loader.js.map +1 -0
- package/src/loader/index.d.ts +5 -0
- package/src/loader/index.js +9 -0
- package/src/loader/index.js.map +1 -0
- package/src/loader/query-relations.loader.d.ts +15 -0
- package/src/loader/query-relations.loader.js +43 -0
- package/src/loader/query-relations.loader.js.map +1 -0
- package/src/loader/relations.loader.d.ts +4 -0
- package/src/loader/relations.loader.js +3 -0
- package/src/loader/relations.loader.js.map +1 -0
- package/src/module.d.ts +31 -0
- package/src/module.js +55 -0
- package/src/module.js.map +1 -0
- package/src/providers/authorizer.provider.d.ts +3 -0
- package/src/providers/authorizer.provider.js +31 -0
- package/src/providers/authorizer.provider.js.map +1 -0
- package/src/providers/hook.provider.d.ts +5 -0
- package/src/providers/hook.provider.js +33 -0
- package/src/providers/hook.provider.js.map +1 -0
- package/src/providers/index.d.ts +3 -0
- package/src/providers/index.js +7 -0
- package/src/providers/index.js.map +1 -0
- package/src/providers/resolver.provider.d.ts +26 -0
- package/src/providers/resolver.provider.js +112 -0
- package/src/providers/resolver.provider.js.map +1 -0
- package/src/resolvers/aggregate.resolver.d.ts +16 -0
- package/src/resolvers/aggregate.resolver.js +56 -0
- package/src/resolvers/aggregate.resolver.js.map +1 -0
- package/src/resolvers/create.resolver.d.ts +57 -0
- package/src/resolvers/create.resolver.js +190 -0
- package/src/resolvers/create.resolver.js.map +1 -0
- package/src/resolvers/crud.resolver.d.ts +52 -0
- package/src/resolvers/crud.resolver.js +68 -0
- package/src/resolvers/crud.resolver.js.map +1 -0
- package/src/resolvers/delete.resolver.d.ts +32 -0
- package/src/resolvers/delete.resolver.js +186 -0
- package/src/resolvers/delete.resolver.js.map +1 -0
- package/src/resolvers/federation/federation.resolver.d.ts +4 -0
- package/src/resolvers/federation/federation.resolver.js +8 -0
- package/src/resolvers/federation/federation.resolver.js.map +1 -0
- package/src/resolvers/federation/index.d.ts +1 -0
- package/src/resolvers/federation/index.js +6 -0
- package/src/resolvers/federation/index.js.map +1 -0
- package/src/resolvers/helpers.d.ts +6 -0
- package/src/resolvers/helpers.js +38 -0
- package/src/resolvers/helpers.js.map +1 -0
- package/src/resolvers/index.d.ts +9 -0
- package/src/resolvers/index.js +20 -0
- package/src/resolvers/index.js.map +1 -0
- package/src/resolvers/read.resolver.d.ts +18 -0
- package/src/resolvers/read.resolver.js +75 -0
- package/src/resolvers/read.resolver.js.map +1 -0
- package/src/resolvers/reference.resolver.d.ts +11 -0
- package/src/resolvers/reference.resolver.js +41 -0
- package/src/resolvers/reference.resolver.js.map +1 -0
- package/src/resolvers/relations/aggregate-relations.resolver.d.ts +11 -0
- package/src/resolvers/relations/aggregate-relations.resolver.js +76 -0
- package/src/resolvers/relations/aggregate-relations.resolver.js.map +1 -0
- package/src/resolvers/relations/helpers.d.ts +4 -0
- package/src/resolvers/relations/helpers.js +10 -0
- package/src/resolvers/relations/helpers.js.map +1 -0
- package/src/resolvers/relations/index.d.ts +7 -0
- package/src/resolvers/relations/index.js +16 -0
- package/src/resolvers/relations/index.js.map +1 -0
- package/src/resolvers/relations/read-relations.resolver.d.ts +8 -0
- package/src/resolvers/relations/read-relations.resolver.js +114 -0
- package/src/resolvers/relations/read-relations.resolver.js.map +1 -0
- package/src/resolvers/relations/references-relation.resolver.d.ts +5 -0
- package/src/resolvers/relations/references-relation.resolver.js +55 -0
- package/src/resolvers/relations/references-relation.resolver.js.map +1 -0
- package/src/resolvers/relations/relations.interface.d.ts +78 -0
- package/src/resolvers/relations/relations.interface.js +3 -0
- package/src/resolvers/relations/relations.interface.js.map +1 -0
- package/src/resolvers/relations/relations.resolver.d.ts +8 -0
- package/src/resolvers/relations/relations.resolver.js +22 -0
- package/src/resolvers/relations/relations.resolver.js.map +1 -0
- package/src/resolvers/relations/remove-relations.resolver.d.ts +5 -0
- package/src/resolvers/relations/remove-relations.resolver.js +107 -0
- package/src/resolvers/relations/remove-relations.resolver.js.map +1 -0
- package/src/resolvers/relations/update-relations.resolver.d.ts +5 -0
- package/src/resolvers/relations/update-relations.resolver.js +138 -0
- package/src/resolvers/relations/update-relations.resolver.js.map +1 -0
- package/src/resolvers/resolver.interface.d.ts +47 -0
- package/src/resolvers/resolver.interface.js +14 -0
- package/src/resolvers/resolver.interface.js.map +1 -0
- package/src/resolvers/update.resolver.d.ts +23 -0
- package/src/resolvers/update.resolver.js +198 -0
- package/src/resolvers/update.resolver.js.map +1 -0
- package/src/subscription/index.d.ts +14 -0
- package/src/subscription/index.js +32 -0
- package/src/subscription/index.js.map +1 -0
- package/src/subscription/pub-sub.interface.d.ts +6 -0
- package/src/subscription/pub-sub.interface.js +3 -0
- package/src/subscription/pub-sub.interface.js.map +1 -0
- package/src/types/aggregate/aggregate-args.type.d.ts +9 -0
- package/src/types/aggregate/aggregate-args.type.js +30 -0
- package/src/types/aggregate/aggregate-args.type.js.map +1 -0
- package/src/types/aggregate/aggregate-response.type.d.ts +5 -0
- package/src/types/aggregate/aggregate-response.type.js +96 -0
- package/src/types/aggregate/aggregate-response.type.js.map +1 -0
- package/src/types/aggregate/index.d.ts +2 -0
- package/src/types/aggregate/index.js +8 -0
- package/src/types/aggregate/index.js.map +1 -0
- package/src/types/connection/array-connection.type.d.ts +4 -0
- package/src/types/connection/array-connection.type.js +20 -0
- package/src/types/connection/array-connection.type.js.map +1 -0
- package/src/types/connection/cursor/cursor-connection.type.d.ts +4 -0
- package/src/types/connection/cursor/cursor-connection.type.js +72 -0
- package/src/types/connection/cursor/cursor-connection.type.js.map +1 -0
- package/src/types/connection/cursor/edge.type.d.ts +7 -0
- package/src/types/connection/cursor/edge.type.js +36 -0
- package/src/types/connection/cursor/edge.type.js.map +1 -0
- package/src/types/connection/cursor/index.d.ts +1 -0
- package/src/types/connection/cursor/index.js +5 -0
- package/src/types/connection/cursor/index.js.map +1 -0
- package/src/types/connection/cursor/page-info.type.d.ts +6 -0
- package/src/types/connection/cursor/page-info.type.js +49 -0
- package/src/types/connection/cursor/page-info.type.js.map +1 -0
- package/src/types/connection/cursor/pager/index.d.ts +7 -0
- package/src/types/connection/cursor/pager/index.js +16 -0
- package/src/types/connection/cursor/pager/index.js.map +1 -0
- package/src/types/connection/cursor/pager/interfaces.d.ts +12 -0
- package/src/types/connection/cursor/pager/interfaces.js +3 -0
- package/src/types/connection/cursor/pager/interfaces.js.map +1 -0
- package/src/types/connection/cursor/pager/pager.d.ts +15 -0
- package/src/types/connection/cursor/pager/pager.js +83 -0
- package/src/types/connection/cursor/pager/pager.js.map +1 -0
- package/src/types/connection/cursor/pager/strategies/helpers.d.ts +6 -0
- package/src/types/connection/cursor/pager/strategies/helpers.js +24 -0
- package/src/types/connection/cursor/pager/strategies/helpers.js.map +1 -0
- package/src/types/connection/cursor/pager/strategies/index.d.ts +4 -0
- package/src/types/connection/cursor/pager/strategies/index.js +8 -0
- package/src/types/connection/cursor/pager/strategies/index.js.map +1 -0
- package/src/types/connection/cursor/pager/strategies/keyset.pager-strategy.d.ts +19 -0
- package/src/types/connection/cursor/pager/strategies/keyset.pager-strategy.js +123 -0
- package/src/types/connection/cursor/pager/strategies/keyset.pager-strategy.js.map +1 -0
- package/src/types/connection/cursor/pager/strategies/limit-offset.pager-strategy.d.ts +15 -0
- package/src/types/connection/cursor/pager/strategies/limit-offset.pager-strategy.js +88 -0
- package/src/types/connection/cursor/pager/strategies/limit-offset.pager-strategy.js.map +1 -0
- package/src/types/connection/cursor/pager/strategies/pager-strategy.d.ts +33 -0
- package/src/types/connection/cursor/pager/strategies/pager-strategy.js +3 -0
- package/src/types/connection/cursor/pager/strategies/pager-strategy.js.map +1 -0
- package/src/types/connection/index.d.ts +4 -0
- package/src/types/connection/index.js +10 -0
- package/src/types/connection/index.js.map +1 -0
- package/src/types/connection/interfaces.d.ts +60 -0
- package/src/types/connection/interfaces.js +3 -0
- package/src/types/connection/interfaces.js.map +1 -0
- package/src/types/connection/offset/index.d.ts +2 -0
- package/src/types/connection/offset/index.js +6 -0
- package/src/types/connection/offset/index.js.map +1 -0
- package/src/types/connection/offset/offset-connection.type.d.ts +4 -0
- package/src/types/connection/offset/offset-connection.type.js +68 -0
- package/src/types/connection/offset/offset-connection.type.js.map +1 -0
- package/src/types/connection/offset/offset-page-info.type.d.ts +5 -0
- package/src/types/connection/offset/offset-page-info.type.js +35 -0
- package/src/types/connection/offset/offset-page-info.type.js.map +1 -0
- package/src/types/connection/offset/pager/index.d.ts +4 -0
- package/src/types/connection/offset/pager/index.js +8 -0
- package/src/types/connection/offset/pager/index.js.map +1 -0
- package/src/types/connection/offset/pager/interfaces.d.ts +12 -0
- package/src/types/connection/offset/pager/interfaces.js +3 -0
- package/src/types/connection/offset/pager/interfaces.js.map +1 -0
- package/src/types/connection/offset/pager/pager.d.ts +12 -0
- package/src/types/connection/offset/pager/pager.js +62 -0
- package/src/types/connection/offset/pager/pager.js.map +1 -0
- package/src/types/create-many-input.type.d.ts +10 -0
- package/src/types/create-many-input.type.js +42 -0
- package/src/types/create-many-input.type.js.map +1 -0
- package/src/types/create-one-input.type.d.ts +11 -0
- package/src/types/create-one-input.type.js +42 -0
- package/src/types/create-one-input.type.js.map +1 -0
- package/src/types/cursor.scalar.d.ts +3 -0
- package/src/types/cursor.scalar.js +21 -0
- package/src/types/cursor.scalar.js.map +1 -0
- package/src/types/delete-many-input.type.d.ts +9 -0
- package/src/types/delete-many-input.type.js +31 -0
- package/src/types/delete-many-input.type.js.map +1 -0
- package/src/types/delete-many-reponse.type.d.ts +2 -0
- package/src/types/delete-many-reponse.type.js +25 -0
- package/src/types/delete-many-reponse.type.js.map +1 -0
- package/src/types/delete-one-input.type.d.ts +8 -0
- package/src/types/delete-one-input.type.js +27 -0
- package/src/types/delete-one-input.type.js.map +1 -0
- package/src/types/find-one-args.type.d.ts +8 -0
- package/src/types/find-one-args.type.js +27 -0
- package/src/types/find-one-args.type.js.map +1 -0
- package/src/types/index.d.ts +18 -0
- package/src/types/index.js +44 -0
- package/src/types/index.js.map +1 -0
- package/src/types/mutation-args.type.d.ts +5 -0
- package/src/types/mutation-args.type.js +24 -0
- package/src/types/mutation-args.type.js.map +1 -0
- package/src/types/query/field-comparison/boolean-field-comparison.type.d.ts +3 -0
- package/src/types/query/field-comparison/boolean-field-comparison.type.js +35 -0
- package/src/types/query/field-comparison/boolean-field-comparison.type.js.map +1 -0
- package/src/types/query/field-comparison/date-field-comparison.type.d.ts +3 -0
- package/src/types/query/field-comparison/date-field-comparison.type.js +112 -0
- package/src/types/query/field-comparison/date-field-comparison.type.js.map +1 -0
- package/src/types/query/field-comparison/field-comparison.factory.d.ts +11 -0
- package/src/types/query/field-comparison/field-comparison.factory.js +166 -0
- package/src/types/query/field-comparison/field-comparison.factory.js.map +1 -0
- package/src/types/query/field-comparison/float-field-comparison.type.d.ts +3 -0
- package/src/types/query/field-comparison/float-field-comparison.type.js +112 -0
- package/src/types/query/field-comparison/float-field-comparison.type.js.map +1 -0
- package/src/types/query/field-comparison/index.d.ts +8 -0
- package/src/types/query/field-comparison/index.js +12 -0
- package/src/types/query/field-comparison/index.js.map +1 -0
- package/src/types/query/field-comparison/int-field-comparison.type.d.ts +3 -0
- package/src/types/query/field-comparison/int-field-comparison.type.js +112 -0
- package/src/types/query/field-comparison/int-field-comparison.type.js.map +1 -0
- package/src/types/query/field-comparison/number-field-comparison.type.d.ts +3 -0
- package/src/types/query/field-comparison/number-field-comparison.type.js +112 -0
- package/src/types/query/field-comparison/number-field-comparison.type.js.map +1 -0
- package/src/types/query/field-comparison/string-field-comparison.type.d.ts +3 -0
- package/src/types/query/field-comparison/string-field-comparison.type.js +108 -0
- package/src/types/query/field-comparison/string-field-comparison.type.js.map +1 -0
- package/src/types/query/field-comparison/timestamp-field-comparison.type.d.ts +3 -0
- package/src/types/query/field-comparison/timestamp-field-comparison.type.js +112 -0
- package/src/types/query/field-comparison/timestamp-field-comparison.type.js.map +1 -0
- package/src/types/query/filter.type.d.ts +14 -0
- package/src/types/query/filter.type.js +103 -0
- package/src/types/query/filter.type.js.map +1 -0
- package/src/types/query/helpers.d.ts +1 -0
- package/src/types/query/helpers.js +6 -0
- package/src/types/query/helpers.js.map +1 -0
- package/src/types/query/index.d.ts +4 -0
- package/src/types/query/index.js +14 -0
- package/src/types/query/index.js.map +1 -0
- package/src/types/query/paging/constants.d.ts +5 -0
- package/src/types/query/paging/constants.js +10 -0
- package/src/types/query/paging/constants.js.map +1 -0
- package/src/types/query/paging/cursor-paging.type.d.ts +3 -0
- package/src/types/query/paging/cursor-paging.type.js +69 -0
- package/src/types/query/paging/cursor-paging.type.js.map +1 -0
- package/src/types/query/paging/index.d.ts +5 -0
- package/src/types/query/paging/index.js +12 -0
- package/src/types/query/paging/index.js.map +1 -0
- package/src/types/query/paging/interfaces.d.ts +13 -0
- package/src/types/query/paging/interfaces.js +3 -0
- package/src/types/query/paging/interfaces.js.map +1 -0
- package/src/types/query/paging/none-paging.type.d.ts +3 -0
- package/src/types/query/paging/none-paging.type.js +18 -0
- package/src/types/query/paging/none-paging.type.js.map +1 -0
- package/src/types/query/paging/offset-paging.type.d.ts +3 -0
- package/src/types/query/paging/offset-paging.type.js +43 -0
- package/src/types/query/paging/offset-paging.type.js.map +1 -0
- package/src/types/query/query-args/constants.d.ts +6 -0
- package/src/types/query/query-args/constants.js +10 -0
- package/src/types/query/query-args/constants.js.map +1 -0
- package/src/types/query/query-args/cursor-query-args.type.d.ts +5 -0
- package/src/types/query/query-args/cursor-query-args.type.js +61 -0
- package/src/types/query/query-args/cursor-query-args.type.js.map +1 -0
- package/src/types/query/query-args/index.d.ts +5 -0
- package/src/types/query/query-args/index.js +9 -0
- package/src/types/query/query-args/index.js.map +1 -0
- package/src/types/query/query-args/interfaces.d.ts +45 -0
- package/src/types/query/query-args/interfaces.js +3 -0
- package/src/types/query/query-args/interfaces.js.map +1 -0
- package/src/types/query/query-args/none-paging-query-args.type.d.ts +5 -0
- package/src/types/query/query-args/none-paging-query-args.type.js +49 -0
- package/src/types/query/query-args/none-paging-query-args.type.js.map +1 -0
- package/src/types/query/query-args/offset-query-args.type.d.ts +5 -0
- package/src/types/query/query-args/offset-query-args.type.js +60 -0
- package/src/types/query/query-args/offset-query-args.type.js.map +1 -0
- package/src/types/query/query-args.type.d.ts +8 -0
- package/src/types/query/query-args.type.js +33 -0
- package/src/types/query/query-args.type.js.map +1 -0
- package/src/types/query/sorting.type.d.ts +2 -0
- package/src/types/query/sorting.type.js +55 -0
- package/src/types/query/sorting.type.js.map +1 -0
- package/src/types/relation-input.type.d.ts +6 -0
- package/src/types/relation-input.type.js +30 -0
- package/src/types/relation-input.type.js.map +1 -0
- package/src/types/relations-input.type.d.ts +6 -0
- package/src/types/relations-input.type.js +31 -0
- package/src/types/relations-input.type.js.map +1 -0
- package/src/types/subscription-args.type.d.ts +5 -0
- package/src/types/subscription-args.type.js +24 -0
- package/src/types/subscription-args.type.js.map +1 -0
- package/src/types/subscription-filter-input.type.d.ts +9 -0
- package/src/types/subscription-filter-input.type.js +32 -0
- package/src/types/subscription-filter-input.type.js.map +1 -0
- package/src/types/type.errors.d.ts +5 -0
- package/src/types/type.errors.js +11 -0
- package/src/types/type.errors.js.map +1 -0
- package/src/types/update-many-input.type.d.ts +11 -0
- package/src/types/update-many-input.type.js +38 -0
- package/src/types/update-many-input.type.js.map +1 -0
- package/src/types/update-many-response.type.d.ts +2 -0
- package/src/types/update-many-response.type.js +25 -0
- package/src/types/update-many-response.type.js.map +1 -0
- package/src/types/update-one-input.type.d.ts +11 -0
- package/src/types/update-one-input.type.js +36 -0
- package/src/types/update-one-input.type.js.map +1 -0
- package/src/types/validators/cannot-use-with.validator.d.ts +6 -0
- package/src/types/validators/cannot-use-with.validator.js +21 -0
- package/src/types/validators/cannot-use-with.validator.js.map +1 -0
- package/src/types/validators/cannot-use-without.validator.d.ts +6 -0
- package/src/types/validators/cannot-use-without.validator.js +22 -0
- package/src/types/validators/cannot-use-without.validator.js.map +1 -0
- package/src/types/validators/index.d.ts +3 -0
- package/src/types/validators/index.js +7 -0
- package/src/types/validators/index.js.map +1 -0
- package/src/types/validators/is-undefined.validator.d.ts +3 -0
- package/src/types/validators/is-undefined.validator.js +11 -0
- package/src/types/validators/is-undefined.validator.js.map +1 -0
- package/src/types/validators/property-max.validator.d.ts +6 -0
- package/src/types/validators/property-max.validator.js +30 -0
- package/src/types/validators/property-max.validator.js.map +1 -0
package/README.md
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
<a href="https://doug-martin.github.io/nestjs-query" target="blank"><img src="https://doug-martin.github.io/nestjs-query/img/logo.svg" width="120" alt="Nestjs-query Logo" /></a>
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
-
[](https://www.npmjs.org/package/@ptc-org/nestjs-query-graphql)
|
|
6
|
+
[](https://github.com/tripss/nestjs-query/actions?query=workflow%3ATest+and+branch%3Amaster+)
|
|
7
7
|
[](https://coveralls.io/github/doug-martin/nestjs-query?branch=master)
|
|
8
8
|
[](https://snyk.io/test/github/doug-martin/nestjs-query?targetFile=packages/query-graphql/package.json)
|
|
9
9
|
|
|
10
|
-
# `@nestjs-query
|
|
10
|
+
# `@ptc-org/nestjs-query-graphql`
|
|
11
11
|
|
|
12
12
|
This package provides a code first implementation of graphql CRUD endpoints. It is built on top of of [nestjs](https://nestjs.com/).
|
|
13
13
|
|
|
@@ -17,6 +17,6 @@ This package provides a code first implementation of graphql CRUD endpoints. It
|
|
|
17
17
|
|
|
18
18
|
## Getting Started
|
|
19
19
|
|
|
20
|
-
The get started with the `@nestjs-query
|
|
20
|
+
The get started with the `@ptc-org/nestjs-query-graphql` package checkout the [Getting Started](https://doug-martin.github.io/nestjs-query/docs/graphql/getting-started) docs.
|
|
21
21
|
|
|
22
22
|
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ptc-org/nestjs-query-graphql",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0-alpha.1",
|
|
4
4
|
"description": "Nestjs graphql query adapter",
|
|
5
5
|
"author": "doug-martin <doug@dougamartin.com>",
|
|
6
|
-
"homepage": "https://github.com/
|
|
6
|
+
"homepage": "https://github.com/tripss/nestjs-query#readme",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"graphql",
|
|
9
9
|
"crud",
|
|
@@ -18,18 +18,18 @@
|
|
|
18
18
|
"test": "__tests__"
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
|
-
"
|
|
21
|
+
"src/**"
|
|
22
22
|
],
|
|
23
23
|
"publishConfig": {
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"repository": {
|
|
27
27
|
"type": "git",
|
|
28
|
-
"url": "git+https://github.com/
|
|
28
|
+
"url": "git+https://github.com/tripss/nestjs-query.git",
|
|
29
29
|
"directory": "packages/query-graphql"
|
|
30
30
|
},
|
|
31
31
|
"bugs": {
|
|
32
|
-
"url": "https://github.com/
|
|
32
|
+
"url": "https://github.com/tripss/nestjs-query/issues"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"graphql-fields": "^2.0.3",
|
|
@@ -38,7 +38,8 @@
|
|
|
38
38
|
"pluralize": "^8.0.0",
|
|
39
39
|
"tslib": "^2.1.0",
|
|
40
40
|
"upper-case-first": "^2.0.1",
|
|
41
|
-
"@ptc-org/nestjs-query-core": "0.
|
|
41
|
+
"@ptc-org/nestjs-query-core": "1.0.0-alpha.1",
|
|
42
|
+
"reflect-metadata": "^0.1.13"
|
|
42
43
|
},
|
|
43
44
|
"peerDependencies": {
|
|
44
45
|
"@apollo/gateway": "^0.41.0 || ^0.42.0",
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Filter } from '@ptc-org/nestjs-query-core';
|
|
2
|
+
export declare enum OperationGroup {
|
|
3
|
+
READ = "read",
|
|
4
|
+
AGGREGATE = "aggregate",
|
|
5
|
+
CREATE = "create",
|
|
6
|
+
UPDATE = "update",
|
|
7
|
+
DELETE = "delete"
|
|
8
|
+
}
|
|
9
|
+
export interface AuthorizationContext {
|
|
10
|
+
/** The name of the method that uses the @AuthorizeFilter decorator */
|
|
11
|
+
readonly operationName: string;
|
|
12
|
+
/** The group this operation belongs to */
|
|
13
|
+
readonly operationGroup: OperationGroup;
|
|
14
|
+
/** If the operation does not modify any entities */
|
|
15
|
+
readonly readonly: boolean;
|
|
16
|
+
/** If the operation can affect multiple entities */
|
|
17
|
+
readonly many: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface CustomAuthorizer<DTO> {
|
|
20
|
+
authorize(context: any, authorizerContext: AuthorizationContext): Promise<Filter<DTO>>;
|
|
21
|
+
authorizeRelation?(relationName: string, context: any, authorizerContext: AuthorizationContext): Promise<Filter<unknown> | undefined>;
|
|
22
|
+
}
|
|
23
|
+
export interface Authorizer<DTO> extends CustomAuthorizer<DTO> {
|
|
24
|
+
authorize(context: any, authorizerContext: AuthorizationContext): Promise<Filter<DTO>>;
|
|
25
|
+
authorizeRelation(relationName: string, context: any, authorizerContext: AuthorizationContext): Promise<Filter<unknown | undefined>>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OperationGroup = void 0;
|
|
4
|
+
var OperationGroup;
|
|
5
|
+
(function (OperationGroup) {
|
|
6
|
+
OperationGroup["READ"] = "read";
|
|
7
|
+
OperationGroup["AGGREGATE"] = "aggregate";
|
|
8
|
+
OperationGroup["CREATE"] = "create";
|
|
9
|
+
OperationGroup["UPDATE"] = "update";
|
|
10
|
+
OperationGroup["DELETE"] = "delete";
|
|
11
|
+
})(OperationGroup = exports.OperationGroup || (exports.OperationGroup = {}));
|
|
12
|
+
//# sourceMappingURL=authorizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorizer.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/auth/authorizer.ts"],"names":[],"mappings":";;;AAEA,IAAY,cAMX;AAND,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,yCAAuB,CAAA;IACvB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;AACnB,CAAC,EANW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAMzB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Class, Filter } from '@ptc-org/nestjs-query-core';
|
|
2
|
+
import { Authorizer, AuthorizationContext, CustomAuthorizer } from './authorizer';
|
|
3
|
+
export interface AuthorizerOptions<DTO> {
|
|
4
|
+
authorize: (context: any, authorizationContext: AuthorizationContext) => Filter<DTO> | Promise<Filter<DTO>>;
|
|
5
|
+
}
|
|
6
|
+
export declare function createDefaultAuthorizer<DTO>(DTOClass: Class<DTO>, opts?: CustomAuthorizer<DTO> | AuthorizerOptions<DTO>): Class<Authorizer<DTO>>;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDefaultAuthorizer = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const core_1 = require("@nestjs/core");
|
|
6
|
+
const common_1 = require("@nestjs/common");
|
|
7
|
+
const decorators_1 = require("../decorators");
|
|
8
|
+
const tokens_1 = require("./tokens");
|
|
9
|
+
const createRelationAuthorizer = (opts) => ({
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
11
|
+
async authorize(context, authorizationContext) {
|
|
12
|
+
return opts.authorize(context, authorizationContext) ?? {};
|
|
13
|
+
},
|
|
14
|
+
authorizeRelation() {
|
|
15
|
+
return Promise.reject(new Error('Not implemented'));
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
function createDefaultAuthorizer(DTOClass, opts) {
|
|
19
|
+
let DefaultAuthorizer = class DefaultAuthorizer {
|
|
20
|
+
constructor(moduleRef, customAuthorizer) {
|
|
21
|
+
this.moduleRef = moduleRef;
|
|
22
|
+
this.customAuthorizer = customAuthorizer;
|
|
23
|
+
this.authOptions = opts;
|
|
24
|
+
this.relationsAuthorizers = new Map();
|
|
25
|
+
this.relations = this.getRelations();
|
|
26
|
+
}
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
|
+
async authorize(context, authorizationContext) {
|
|
29
|
+
return (this.customAuthorizer?.authorize(context, authorizationContext) ??
|
|
30
|
+
this.authOptions?.authorize(context, authorizationContext) ??
|
|
31
|
+
{});
|
|
32
|
+
}
|
|
33
|
+
async authorizeRelation(relationName,
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
35
|
+
context, authorizationContext) {
|
|
36
|
+
if (this.customAuthorizer && typeof this.customAuthorizer.authorizeRelation === 'function') {
|
|
37
|
+
const filterFromCustomAuthorizer = await this.customAuthorizer.authorizeRelation(relationName, context, authorizationContext);
|
|
38
|
+
if (filterFromCustomAuthorizer)
|
|
39
|
+
return filterFromCustomAuthorizer;
|
|
40
|
+
}
|
|
41
|
+
this.addRelationAuthorizerIfNotExist(relationName);
|
|
42
|
+
return this.relationsAuthorizers.get(relationName)?.authorize(context, authorizationContext) ?? {};
|
|
43
|
+
}
|
|
44
|
+
addRelationAuthorizerIfNotExist(relationName) {
|
|
45
|
+
if (!this.relationsAuthorizers.has(relationName)) {
|
|
46
|
+
const relation = this.relations.get(relationName);
|
|
47
|
+
if (!relation)
|
|
48
|
+
return;
|
|
49
|
+
if (relation.auth) {
|
|
50
|
+
this.relationsAuthorizers.set(relationName, createRelationAuthorizer(relation.auth));
|
|
51
|
+
}
|
|
52
|
+
else if ((0, decorators_1.getAuthorizer)(relation.DTO)) {
|
|
53
|
+
this.relationsAuthorizers.set(relationName, this.moduleRef.get((0, tokens_1.getAuthorizerToken)(relation.DTO), { strict: false }));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
getRelations() {
|
|
58
|
+
const { many = {}, one = {} } = (0, decorators_1.getRelations)(DTOClass);
|
|
59
|
+
const relationsMap = new Map();
|
|
60
|
+
Object.keys(many).forEach((relation) => relationsMap.set(relation, many[relation]));
|
|
61
|
+
Object.keys(one).forEach((relation) => relationsMap.set(relation, one[relation]));
|
|
62
|
+
return relationsMap;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
DefaultAuthorizer = (0, tslib_1.__decorate)([
|
|
66
|
+
(0, common_1.Injectable)(),
|
|
67
|
+
(0, tslib_1.__param)(1, (0, common_1.Optional)()),
|
|
68
|
+
(0, tslib_1.__param)(1, (0, common_1.Inject)((0, tokens_1.getCustomAuthorizerToken)(DTOClass))),
|
|
69
|
+
(0, tslib_1.__metadata)("design:paramtypes", [core_1.ModuleRef, Object])
|
|
70
|
+
], DefaultAuthorizer);
|
|
71
|
+
return DefaultAuthorizer;
|
|
72
|
+
}
|
|
73
|
+
exports.createDefaultAuthorizer = createDefaultAuthorizer;
|
|
74
|
+
//# sourceMappingURL=default-crud.authorizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-crud.authorizer.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/auth/default-crud.authorizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
(0, tslib_1.__exportStar)(require("./authorizer"), exports);
|
|
5
|
+
(0, tslib_1.__exportStar)(require("./default-crud.authorizer"), exports);
|
|
6
|
+
(0, tslib_1.__exportStar)(require("./tokens"), exports);
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/auth/index.ts"],"names":[],"mappings":";;;AAAA,4DAA6B;AAC7B,yEAA0C;AAC1C,wDAAyB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCustomAuthorizerToken = exports.getAuthorizerToken = void 0;
|
|
4
|
+
const getAuthorizerToken = (DTOClass) => `${DTOClass.name}Authorizer`;
|
|
5
|
+
exports.getAuthorizerToken = getAuthorizerToken;
|
|
6
|
+
const getCustomAuthorizerToken = (DTOClass) => `${DTOClass.name}CustomAuthorizer`;
|
|
7
|
+
exports.getCustomAuthorizerToken = getCustomAuthorizerToken;
|
|
8
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/auth/tokens.ts"],"names":[],"mappings":";;;AAEO,MAAM,kBAAkB,GAAG,CAAM,QAAoB,EAAU,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,YAAY,CAAC;AAAzF,QAAA,kBAAkB,sBAAuE;AAC/F,MAAM,wBAAwB,GAAG,CAAM,QAAoB,EAAU,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,kBAAkB,CAAC;AAArG,QAAA,wBAAwB,4BAA6E"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Class } from '@ptc-org/nestjs-query-core';
|
|
2
|
+
import { ReturnTypeFuncValue } from '@nestjs/graphql';
|
|
3
|
+
export interface DTONamesOpts {
|
|
4
|
+
dtoName?: string;
|
|
5
|
+
}
|
|
6
|
+
/** @internal */
|
|
7
|
+
export interface DTONames {
|
|
8
|
+
baseName: string;
|
|
9
|
+
baseNameLower: string;
|
|
10
|
+
pluralBaseName: string;
|
|
11
|
+
pluralBaseNameLower: string;
|
|
12
|
+
}
|
|
13
|
+
/** @internal */
|
|
14
|
+
export declare const getDTONames: <DTO>(DTOClass: Class<DTO>, opts?: DTONamesOpts) => DTONames;
|
|
15
|
+
export declare const getDTOIdTypeOrDefault: (DTOS: Class<unknown>[], defaultType?: ReturnTypeFuncValue) => ReturnTypeFuncValue;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getDTOIdTypeOrDefault = exports.getDTONames = void 0;
|
|
4
|
+
const pluralize_1 = require("pluralize");
|
|
5
|
+
const upper_case_first_1 = require("upper-case-first");
|
|
6
|
+
const lower_case_first_1 = require("lower-case-first");
|
|
7
|
+
const graphql_1 = require("@nestjs/graphql");
|
|
8
|
+
const external_utils_1 = require("./external.utils");
|
|
9
|
+
const decorators_1 = require("../decorators");
|
|
10
|
+
/** @internal */
|
|
11
|
+
const getDTONames = (DTOClass, opts) => {
|
|
12
|
+
const baseName = (0, upper_case_first_1.upperCaseFirst)(opts?.dtoName ?? (0, external_utils_1.findGraphqlObjectMetadata)(DTOClass)?.name ?? DTOClass.name);
|
|
13
|
+
const pluralBaseName = (0, pluralize_1.plural)(baseName);
|
|
14
|
+
const baseNameLower = (0, lower_case_first_1.lowerCaseFirst)(baseName);
|
|
15
|
+
const pluralBaseNameLower = (0, pluralize_1.plural)(baseNameLower);
|
|
16
|
+
return {
|
|
17
|
+
baseName,
|
|
18
|
+
baseNameLower,
|
|
19
|
+
pluralBaseName,
|
|
20
|
+
pluralBaseNameLower,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
exports.getDTONames = getDTONames;
|
|
24
|
+
const getDTOIdTypeOrDefault = (DTOS, defaultType = graphql_1.ID) => {
|
|
25
|
+
const dtoWithIDField = DTOS.find((dto) => !!(0, decorators_1.getIDField)(dto));
|
|
26
|
+
if (dtoWithIDField) {
|
|
27
|
+
return (0, decorators_1.getIDField)(dtoWithIDField)?.returnTypeFunc() ?? defaultType;
|
|
28
|
+
}
|
|
29
|
+
return defaultType;
|
|
30
|
+
};
|
|
31
|
+
exports.getDTOIdTypeOrDefault = getDTOIdTypeOrDefault;
|
|
32
|
+
//# sourceMappingURL=dto.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dto.utils.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/common/dto.utils.ts"],"names":[],"mappings":";;;AACA,yCAAmC;AACnC,uDAAkD;AAClD,uDAAkD;AAClD,6CAA0D;AAC1D,qDAA6D;AAC7D,8CAA2C;AAc3C,gBAAgB;AACT,MAAM,WAAW,GAAG,CAAM,QAAoB,EAAE,IAAmB,EAAY,EAAE;IACtF,MAAM,QAAQ,GAAG,IAAA,iCAAc,EAAC,IAAI,EAAE,OAAO,IAAI,IAAA,0CAAyB,EAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7G,MAAM,cAAc,GAAG,IAAA,kBAAM,EAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,IAAA,iCAAc,EAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,mBAAmB,GAAG,IAAA,kBAAM,EAAC,aAAa,CAAC,CAAC;IAClD,OAAO;QACL,QAAQ;QACR,aAAa;QACb,cAAc;QACd,mBAAmB;KACpB,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,WAAW,eAWtB;AAEK,MAAM,qBAAqB,GAAG,CACnC,IAAsB,EACtB,cAAmC,YAAE,EAChB,EAAE;IACvB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAA,uBAAU,EAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,IAAI,cAAc,EAAE;QAClB,OAAO,IAAA,uBAAU,EAAC,cAAc,CAAC,EAAE,cAAc,EAAE,IAAI,WAAW,CAAC;KACpE;IACD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AATW,QAAA,qBAAqB,yBAShC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ObjectTypeMetadata } from '@nestjs/graphql/dist/schema-builder/metadata/object-type.metadata';
|
|
2
|
+
import { EnumMetadata } from '@nestjs/graphql/dist/schema-builder/metadata';
|
|
3
|
+
import { Class } from '@ptc-org/nestjs-query-core';
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export declare function findGraphqlObjectMetadata<T>(objType: Class<T>): ObjectTypeMetadata | undefined;
|
|
8
|
+
export declare function getGraphqlObjectMetadata<T>(objType: Class<T>, notFoundMsg: string): ObjectTypeMetadata;
|
|
9
|
+
export declare function getGraphqlObjectName<DTO>(DTOClass: Class<DTO>, notFoundMsg: string): string;
|
|
10
|
+
export declare function getGraphqlEnumMetadata(objType: object): EnumMetadata | undefined;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getGraphqlEnumMetadata = exports.getGraphqlObjectName = exports.getGraphqlObjectMetadata = exports.findGraphqlObjectMetadata = void 0;
|
|
4
|
+
const lazy_metadata_storage_1 = require("@nestjs/graphql/dist/schema-builder/storages/lazy-metadata.storage");
|
|
5
|
+
const graphql_1 = require("@nestjs/graphql");
|
|
6
|
+
const type_errors_1 = require("../types/type.errors");
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
function findGraphqlObjectMetadata(objType) {
|
|
11
|
+
return graphql_1.TypeMetadataStorage.getObjectTypesMetadata().find((o) => o.target === objType);
|
|
12
|
+
}
|
|
13
|
+
exports.findGraphqlObjectMetadata = findGraphqlObjectMetadata;
|
|
14
|
+
function getGraphqlObjectMetadata(objType, notFoundMsg) {
|
|
15
|
+
const metadata = findGraphqlObjectMetadata(objType);
|
|
16
|
+
if (!metadata) {
|
|
17
|
+
throw new type_errors_1.UnregisteredObjectType(objType, notFoundMsg);
|
|
18
|
+
}
|
|
19
|
+
return metadata;
|
|
20
|
+
}
|
|
21
|
+
exports.getGraphqlObjectMetadata = getGraphqlObjectMetadata;
|
|
22
|
+
function getGraphqlObjectName(DTOClass, notFoundMsg) {
|
|
23
|
+
return getGraphqlObjectMetadata(DTOClass, notFoundMsg).name;
|
|
24
|
+
}
|
|
25
|
+
exports.getGraphqlObjectName = getGraphqlObjectName;
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
27
|
+
function getGraphqlEnumMetadata(objType) {
|
|
28
|
+
// hack to get enums loaded it may break in the future :(
|
|
29
|
+
lazy_metadata_storage_1.LazyMetadataStorage.load();
|
|
30
|
+
return graphql_1.TypeMetadataStorage.getEnumsMetadata().find((o) => o.ref === objType);
|
|
31
|
+
}
|
|
32
|
+
exports.getGraphqlEnumMetadata = getGraphqlEnumMetadata;
|
|
33
|
+
//# sourceMappingURL=external.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external.utils.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/common/external.utils.ts"],"names":[],"mappings":";;;AAAA,8GAAyG;AAIzG,6CAAsD;AACtD,sDAA8D;AAE9D;;GAEG;AACH,SAAgB,yBAAyB,CAAI,OAAiB;IAC5D,OAAO,6BAAmB,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;AACxF,CAAC;AAFD,8DAEC;AAED,SAAgB,wBAAwB,CAAI,OAAiB,EAAE,WAAmB;IAChF,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,oCAAsB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;KACxD;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAND,4DAMC;AAED,SAAgB,oBAAoB,CAAM,QAAoB,EAAE,WAAmB;IACjF,OAAO,wBAAwB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAFD,oDAEC;AAED,wDAAwD;AACxD,SAAgB,sBAAsB,CAAC,OAAe;IACpD,yDAAyD;IACzD,2CAAmB,CAAC,IAAI,EAAE,CAAC;IAC3B,OAAO,6BAAmB,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC;AAC/E,CAAC;AAJD,wDAIC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getDTOIdTypeOrDefault = exports.getDTONames = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
var dto_utils_1 = require("./dto.utils");
|
|
6
|
+
Object.defineProperty(exports, "getDTONames", { enumerable: true, get: function () { return dto_utils_1.getDTONames; } });
|
|
7
|
+
Object.defineProperty(exports, "getDTOIdTypeOrDefault", { enumerable: true, get: function () { return dto_utils_1.getDTOIdTypeOrDefault; } });
|
|
8
|
+
(0, tslib_1.__exportStar)(require("./external.utils"), exports);
|
|
9
|
+
(0, tslib_1.__exportStar)(require("./resolver.utils"), exports);
|
|
10
|
+
(0, tslib_1.__exportStar)(require("./object.utils"), exports);
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/common/index.ts"],"names":[],"mappings":";;;;AAAA,yCAAyF;AAAlE,wGAAA,WAAW,OAAA;AAAY,kHAAA,qBAAqB,OAAA;AACnE,gEAAiC;AACjC,gEAAiC;AACjC,8DAA+B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const removeUndefinedValues: <T>(obj: T) => T;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.removeUndefinedValues = void 0;
|
|
4
|
+
const removeUndefinedValues = (obj) => {
|
|
5
|
+
const keys = Object.keys(obj);
|
|
6
|
+
return keys.reduce((cleansed, key) => {
|
|
7
|
+
if (obj[key] === undefined) {
|
|
8
|
+
return cleansed;
|
|
9
|
+
}
|
|
10
|
+
return { ...cleansed, [key]: obj[key] };
|
|
11
|
+
}, {});
|
|
12
|
+
};
|
|
13
|
+
exports.removeUndefinedValues = removeUndefinedValues;
|
|
14
|
+
//# sourceMappingURL=object.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.utils.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/common/object.utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,qBAAqB,GAAG,CAAI,GAAM,EAAK,EAAE;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAgB,CAAC;IAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,QAAW,EAAE,GAAG,EAAE,EAAE;QACtC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;YAC1B,OAAO,QAAQ,CAAC;SACjB;QACD,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1C,CAAC,EAAE,EAAO,CAAC,CAAC;AACd,CAAC,CAAC;AARW,QAAA,qBAAqB,yBAQhC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeBaseResolverOpts = void 0;
|
|
4
|
+
const mergeArrays = (arr1, arr2) => {
|
|
5
|
+
if (arr1 || arr2) {
|
|
6
|
+
return [...(arr1 ?? []), ...(arr2 ?? [])];
|
|
7
|
+
}
|
|
8
|
+
return undefined;
|
|
9
|
+
};
|
|
10
|
+
const mergeBaseResolverOpts = (into, from) => {
|
|
11
|
+
const guards = mergeArrays(from.guards, into.guards);
|
|
12
|
+
const interceptors = mergeArrays(from.interceptors, into.interceptors);
|
|
13
|
+
const pipes = mergeArrays(from.pipes, into.pipes);
|
|
14
|
+
const filters = mergeArrays(from.filters, into.filters);
|
|
15
|
+
const decorators = mergeArrays(from.decorators, into.decorators);
|
|
16
|
+
return { ...into, guards, interceptors, pipes, filters, decorators };
|
|
17
|
+
};
|
|
18
|
+
exports.mergeBaseResolverOpts = mergeBaseResolverOpts;
|
|
19
|
+
//# sourceMappingURL=resolver.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.utils.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/common/resolver.utils.ts"],"names":[],"mappings":";;;AAEA,MAAM,WAAW,GAAG,CAAI,IAAU,EAAE,IAAU,EAAmB,EAAE;IACjE,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;KAC3C;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEK,MAAM,qBAAqB,GAAG,CACnC,IAAU,EACV,IAAyB,EACnB,EAAE;IACR,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACjE,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACvE,CAAC,CAAC;AAVW,QAAA,qBAAqB,yBAUhC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const AggregateQueryParam: <DTO>(...dataOrPipes: unknown[]) => ParameterDecorator;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AggregateQueryParam = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const graphql_1 = require("@nestjs/graphql");
|
|
6
|
+
const common_1 = require("@nestjs/common");
|
|
7
|
+
const graphql_fields_1 = (0, tslib_1.__importDefault)(require("graphql-fields"));
|
|
8
|
+
const EXCLUDED_FIELDS = ['__typename'];
|
|
9
|
+
const QUERY_OPERATORS = ['groupBy', 'count', 'avg', 'sum', 'min', 'max'];
|
|
10
|
+
exports.AggregateQueryParam = (0, common_1.createParamDecorator)((data, ctx) => {
|
|
11
|
+
const info = graphql_1.GqlExecutionContext.create(ctx).getInfo();
|
|
12
|
+
const fields = (0, graphql_fields_1.default)(info, {}, { excludedFields: EXCLUDED_FIELDS });
|
|
13
|
+
return QUERY_OPERATORS.filter((operator) => !!fields[operator]).reduce((query, operator) => {
|
|
14
|
+
const queryFields = Object.keys(fields[operator]);
|
|
15
|
+
if (queryFields && queryFields.length) {
|
|
16
|
+
return { ...query, [operator]: queryFields };
|
|
17
|
+
}
|
|
18
|
+
return query;
|
|
19
|
+
}, {});
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=aggregate-query-param.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregate-query-param.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/aggregate-query-param.decorator.ts"],"names":[],"mappings":";;;;AAEA,6CAAsD;AACtD,2CAAwE;AACxE,iFAA2C;AAE3C,MAAM,eAAe,GAAG,CAAC,YAAY,CAAC,CAAC;AACvC,MAAM,eAAe,GAAsC,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC/F,QAAA,mBAAmB,GAAG,IAAA,6BAAoB,EAAC,CAAM,IAAa,EAAE,GAAqB,EAAE,EAAE;IACpG,MAAM,IAAI,GAAG,6BAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAsB,CAAC;IAC3E,MAAM,MAAM,GAAG,IAAA,wBAAa,EAAC,IAAI,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE,CAGzE,CAAC;IACF,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QACzF,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAkB,CAAC;QACnE,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;YACrC,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;SAC9C;QACD,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,EAAyB,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AuthorizationContext } from '../auth';
|
|
2
|
+
declare type PartialAuthorizationContext = Partial<AuthorizationContext> & Pick<AuthorizationContext, 'operationGroup' | 'many'>;
|
|
3
|
+
export declare function AuthorizerFilter<DTO>(partialAuthContext?: PartialAuthorizationContext): ParameterDecorator;
|
|
4
|
+
export declare function RelationAuthorizerFilter<DTO>(relationName: string, partialAuthContext?: PartialAuthorizationContext): ParameterDecorator;
|
|
5
|
+
export declare function ModifyRelationAuthorizerFilter<DTO>(relationName: string, partialAuthContext?: PartialAuthorizationContext): ParameterDecorator;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModifyRelationAuthorizerFilter = exports.RelationAuthorizerFilter = exports.AuthorizerFilter = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const graphql_1 = require("@nestjs/graphql");
|
|
6
|
+
const auth_1 = require("../auth");
|
|
7
|
+
function getContext(executionContext) {
|
|
8
|
+
const gqlExecutionContext = graphql_1.GqlExecutionContext.create(executionContext);
|
|
9
|
+
return gqlExecutionContext.getContext();
|
|
10
|
+
}
|
|
11
|
+
function getAuthorizerFilter(context, authorizationContext) {
|
|
12
|
+
if (!context.authorizer) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
return context.authorizer.authorize(context, authorizationContext);
|
|
16
|
+
}
|
|
17
|
+
function getRelationAuthFilter(context, relationName, authorizationContext) {
|
|
18
|
+
if (!context.authorizer) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
return context.authorizer.authorizeRelation(relationName, context, authorizationContext);
|
|
22
|
+
}
|
|
23
|
+
function getAuthorizationContext(methodName, partialAuthContext) {
|
|
24
|
+
if (!partialAuthContext)
|
|
25
|
+
return new Proxy({}, {
|
|
26
|
+
get: () => {
|
|
27
|
+
throw new Error(`No AuthorizationContext available for method ${methodName.toString()}! Make sure that you provide an AuthorizationContext to your custom methods as argument of the @AuthorizerFilter decorator.`);
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
return {
|
|
31
|
+
operationName: methodName.toString(),
|
|
32
|
+
readonly: partialAuthContext.operationGroup === auth_1.OperationGroup.READ ||
|
|
33
|
+
partialAuthContext.operationGroup === auth_1.OperationGroup.AGGREGATE,
|
|
34
|
+
...partialAuthContext,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function AuthorizerFilter(partialAuthContext) {
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
39
|
+
return (target, propertyKey, parameterIndex) => {
|
|
40
|
+
const authorizationContext = getAuthorizationContext(propertyKey, partialAuthContext);
|
|
41
|
+
return (0, common_1.createParamDecorator)((data, executionContext) => getAuthorizerFilter(getContext(executionContext), authorizationContext))()(target, propertyKey, parameterIndex);
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
exports.AuthorizerFilter = AuthorizerFilter;
|
|
45
|
+
function RelationAuthorizerFilter(relationName, partialAuthContext) {
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
47
|
+
return (target, propertyKey, parameterIndex) => {
|
|
48
|
+
const authorizationContext = getAuthorizationContext(propertyKey, partialAuthContext);
|
|
49
|
+
return (0, common_1.createParamDecorator)((data, executionContext) => getRelationAuthFilter(getContext(executionContext), relationName, authorizationContext))()(target, propertyKey, parameterIndex);
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
exports.RelationAuthorizerFilter = RelationAuthorizerFilter;
|
|
53
|
+
function ModifyRelationAuthorizerFilter(relationName, partialAuthContext) {
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
55
|
+
return (target, propertyKey, parameterIndex) => {
|
|
56
|
+
const authorizationContext = getAuthorizationContext(propertyKey, partialAuthContext);
|
|
57
|
+
return (0, common_1.createParamDecorator)(async (data, executionContext) => {
|
|
58
|
+
const context = getContext(executionContext);
|
|
59
|
+
return {
|
|
60
|
+
filter: await getAuthorizerFilter(context, authorizationContext),
|
|
61
|
+
relationFilter: await getRelationAuthFilter(context, relationName, authorizationContext),
|
|
62
|
+
};
|
|
63
|
+
})()(target, propertyKey, parameterIndex);
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
exports.ModifyRelationAuthorizerFilter = ModifyRelationAuthorizerFilter;
|
|
67
|
+
//# sourceMappingURL=authorize-filter.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorize-filter.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/authorize-filter.decorator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Class, MetaValue } from '@ptc-org/nestjs-query-core';
|
|
2
|
+
import { AuthorizerOptions, Authorizer, CustomAuthorizer } from '../auth';
|
|
3
|
+
export declare function Authorize<DTO>(optsOrAuthorizerOrClass: Class<CustomAuthorizer<DTO>> | CustomAuthorizer<DTO> | AuthorizerOptions<DTO>): (DTOClass: Class<DTO>) => void;
|
|
4
|
+
export declare const getAuthorizer: <DTO>(DTOClass: Class<DTO>) => Class<Authorizer<DTO>>;
|
|
5
|
+
export declare const getCustomAuthorizer: <DTO>(DTOClass: Class<DTO>) => Class<CustomAuthorizer<DTO>>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCustomAuthorizer = exports.getAuthorizer = exports.Authorize = void 0;
|
|
4
|
+
const nestjs_query_core_1 = require("@ptc-org/nestjs-query-core");
|
|
5
|
+
const auth_1 = require("../auth");
|
|
6
|
+
const constants_1 = require("./constants");
|
|
7
|
+
const reflector = new nestjs_query_core_1.ValueReflector(constants_1.AUTHORIZER_KEY);
|
|
8
|
+
const customAuthorizerReflector = new nestjs_query_core_1.ValueReflector(constants_1.CUSTOM_AUTHORIZER_KEY);
|
|
9
|
+
function Authorize(optsOrAuthorizerOrClass) {
|
|
10
|
+
return (DTOClass) => {
|
|
11
|
+
if (!('authorize' in optsOrAuthorizerOrClass)) {
|
|
12
|
+
// If the user provided a class, provide the custom authorizer and create a default authorizer that injects the custom authorizer
|
|
13
|
+
customAuthorizerReflector.set(DTOClass, optsOrAuthorizerOrClass);
|
|
14
|
+
return reflector.set(DTOClass, (0, auth_1.createDefaultAuthorizer)(DTOClass));
|
|
15
|
+
}
|
|
16
|
+
return reflector.set(DTOClass, (0, auth_1.createDefaultAuthorizer)(DTOClass, optsOrAuthorizerOrClass));
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
exports.Authorize = Authorize;
|
|
20
|
+
const getAuthorizer = (DTOClass) => reflector.get(DTOClass);
|
|
21
|
+
exports.getAuthorizer = getAuthorizer;
|
|
22
|
+
const getCustomAuthorizer = (DTOClass) => customAuthorizerReflector.get(DTOClass);
|
|
23
|
+
exports.getCustomAuthorizer = getCustomAuthorizer;
|
|
24
|
+
//# sourceMappingURL=authorizer.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorizer.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/authorizer.decorator.ts"],"names":[],"mappings":";;;AAAA,kEAA8E;AAC9E,kCAAmG;AACnG,2CAAoE;AAEpE,MAAM,SAAS,GAAG,IAAI,kCAAc,CAAC,0BAAc,CAAC,CAAC;AACrD,MAAM,yBAAyB,GAAG,IAAI,kCAAc,CAAC,iCAAqB,CAAC,CAAC;AAC5E,SAAgB,SAAS,CACvB,uBAAsG;IAEtG,OAAO,CAAC,QAAoB,EAAQ,EAAE;QACpC,IAAI,CAAC,CAAC,WAAW,IAAI,uBAAuB,CAAC,EAAE;YAC7C,iIAAiI;YACjI,yBAAyB,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;YACjE,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAA,8BAAuB,EAAC,QAAQ,CAAC,CAAC,CAAC;SACnE;QACD,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAA,8BAAuB,EAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAC7F,CAAC,CAAC;AACJ,CAAC;AAXD,8BAWC;AAEM,MAAM,aAAa,GAAG,CAAM,QAAoB,EAAqC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAA1G,QAAA,aAAa,iBAA6F;AAChH,MAAM,mBAAmB,GAAG,CAAM,QAAoB,EAA2C,EAAE,CACxG,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAD7B,QAAA,mBAAmB,uBACU"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const FILTERABLE_FIELD_KEY = "nestjs-query:filterable-field";
|
|
2
|
+
export declare const ID_FIELD_KEY = "nestjs-query:id-field";
|
|
3
|
+
export declare const RELATION_KEY = "nestjs-query:relation";
|
|
4
|
+
export declare const REFERENCE_KEY = "nestjs-query:reference";
|
|
5
|
+
export declare const AUTHORIZER_KEY = "nestjs-query:authorizer";
|
|
6
|
+
export declare const CUSTOM_AUTHORIZER_KEY = "nestjs-query:custom-authorizer";
|
|
7
|
+
export declare const KEY_SET_KEY = "nestjs-query:key-set";
|
|
8
|
+
export declare const QUERY_OPTIONS_KEY = "nestjs-query:query-options";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QUERY_OPTIONS_KEY = exports.KEY_SET_KEY = exports.CUSTOM_AUTHORIZER_KEY = exports.AUTHORIZER_KEY = exports.REFERENCE_KEY = exports.RELATION_KEY = exports.ID_FIELD_KEY = exports.FILTERABLE_FIELD_KEY = void 0;
|
|
4
|
+
exports.FILTERABLE_FIELD_KEY = 'nestjs-query:filterable-field';
|
|
5
|
+
exports.ID_FIELD_KEY = 'nestjs-query:id-field';
|
|
6
|
+
exports.RELATION_KEY = 'nestjs-query:relation';
|
|
7
|
+
exports.REFERENCE_KEY = 'nestjs-query:reference';
|
|
8
|
+
exports.AUTHORIZER_KEY = 'nestjs-query:authorizer';
|
|
9
|
+
exports.CUSTOM_AUTHORIZER_KEY = 'nestjs-query:custom-authorizer';
|
|
10
|
+
exports.KEY_SET_KEY = 'nestjs-query:key-set';
|
|
11
|
+
exports.QUERY_OPTIONS_KEY = 'nestjs-query:query-options';
|
|
12
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,+BAA+B,CAAC;AACvD,QAAA,YAAY,GAAG,uBAAuB,CAAC;AACvC,QAAA,YAAY,GAAG,uBAAuB,CAAC;AACvC,QAAA,aAAa,GAAG,wBAAwB,CAAC;AAEzC,QAAA,cAAc,GAAG,yBAAyB,CAAC;AAC3C,QAAA,qBAAqB,GAAG,gCAAgC,CAAC;AAEzD,QAAA,WAAW,GAAG,sBAAsB,CAAC;AAErC,QAAA,iBAAiB,GAAG,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare type ComposableDecorator = MethodDecorator | PropertyDecorator | ClassDecorator | ParameterDecorator;
|
|
2
|
+
export declare type ComposedDecorator = MethodDecorator & PropertyDecorator & ClassDecorator & ParameterDecorator;
|
|
3
|
+
export declare function composeDecorators(...decorators: ComposableDecorator[]): ComposedDecorator;
|