@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
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOrCreateCursorConnectionType = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const graphql_1 = require("@nestjs/graphql");
|
|
6
|
+
const nestjs_query_core_1 = require("@ptc-org/nestjs-query-core");
|
|
7
|
+
const common_1 = require("@nestjs/common");
|
|
8
|
+
const decorators_1 = require("../../../decorators");
|
|
9
|
+
const query_1 = require("../../query");
|
|
10
|
+
const pager_1 = require("./pager");
|
|
11
|
+
const edge_type_1 = require("./edge.type");
|
|
12
|
+
const page_info_type_1 = require("./page-info.type");
|
|
13
|
+
const common_2 = require("../../../common");
|
|
14
|
+
const DEFAULT_COUNT = () => Promise.reject(new common_1.NotImplementedException('totalCount not implemented'));
|
|
15
|
+
const reflector = new nestjs_query_core_1.MapReflector('nestjs-query:cursor-connection-type');
|
|
16
|
+
function getOrCreateConnectionName(DTOClass, opts) {
|
|
17
|
+
const { connectionName } = opts;
|
|
18
|
+
if (connectionName) {
|
|
19
|
+
return connectionName;
|
|
20
|
+
}
|
|
21
|
+
const objName = (0, common_2.getGraphqlObjectName)(DTOClass, 'Unable to make ConnectionType.');
|
|
22
|
+
return `${objName}Connection`;
|
|
23
|
+
}
|
|
24
|
+
function getOrCreateCursorConnectionType(TItemClass, maybeOpts) {
|
|
25
|
+
const opts = maybeOpts ?? { pagingStrategy: query_1.PagingStrategies.CURSOR };
|
|
26
|
+
const connectionName = getOrCreateConnectionName(TItemClass, opts);
|
|
27
|
+
return reflector.memoize(TItemClass, connectionName, () => {
|
|
28
|
+
var AbstractConnection_1;
|
|
29
|
+
const pager = (0, pager_1.createPager)(TItemClass, opts);
|
|
30
|
+
const E = (0, edge_type_1.getOrCreateEdgeType)(TItemClass);
|
|
31
|
+
const PIT = (0, page_info_type_1.getOrCreatePageInfoType)();
|
|
32
|
+
let AbstractConnection = AbstractConnection_1 = class AbstractConnection {
|
|
33
|
+
constructor(pageInfo, edges, totalCountFn) {
|
|
34
|
+
this.pageInfo = pageInfo ?? { hasNextPage: false, hasPreviousPage: false };
|
|
35
|
+
this.edges = edges ?? [];
|
|
36
|
+
this.totalCountFn = totalCountFn ?? DEFAULT_COUNT;
|
|
37
|
+
}
|
|
38
|
+
static get resolveType() {
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
static async createFromPromise(queryMany, query, count) {
|
|
42
|
+
const { pageInfo, edges, totalCount } = await pager.page(queryMany, query, count ?? DEFAULT_COUNT);
|
|
43
|
+
return new AbstractConnection_1(
|
|
44
|
+
// create the appropriate graphql instance
|
|
45
|
+
new PIT(pageInfo.hasNextPage, pageInfo.hasPreviousPage, pageInfo.startCursor, pageInfo.endCursor), edges.map(({ node, cursor }) => new E(node, cursor)), totalCount);
|
|
46
|
+
}
|
|
47
|
+
get totalCount() {
|
|
48
|
+
return this.totalCountFn();
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
(0, tslib_1.__decorate)([
|
|
52
|
+
(0, graphql_1.Field)(() => PIT, { description: 'Paging information' }),
|
|
53
|
+
(0, tslib_1.__metadata)("design:type", Object)
|
|
54
|
+
], AbstractConnection.prototype, "pageInfo", void 0);
|
|
55
|
+
(0, tslib_1.__decorate)([
|
|
56
|
+
(0, graphql_1.Field)(() => [E], { description: 'Array of edges.' }),
|
|
57
|
+
(0, tslib_1.__metadata)("design:type", Array)
|
|
58
|
+
], AbstractConnection.prototype, "edges", void 0);
|
|
59
|
+
(0, tslib_1.__decorate)([
|
|
60
|
+
(0, decorators_1.SkipIf)(() => !opts.enableTotalCount, (0, graphql_1.Field)(() => graphql_1.Int, { description: 'Fetch total count of records' })),
|
|
61
|
+
(0, tslib_1.__metadata)("design:type", Promise),
|
|
62
|
+
(0, tslib_1.__metadata)("design:paramtypes", [])
|
|
63
|
+
], AbstractConnection.prototype, "totalCount", null);
|
|
64
|
+
AbstractConnection = AbstractConnection_1 = (0, tslib_1.__decorate)([
|
|
65
|
+
(0, graphql_1.ObjectType)(connectionName),
|
|
66
|
+
(0, tslib_1.__metadata)("design:paramtypes", [Object, Array, Function])
|
|
67
|
+
], AbstractConnection);
|
|
68
|
+
return AbstractConnection;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
exports.getOrCreateCursorConnectionType = getOrCreateCursorConnectionType;
|
|
72
|
+
//# sourceMappingURL=cursor-connection.type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-connection.type.js","sourceRoot":"","sources":["../../../../../../../packages/query-graphql/src/types/connection/cursor/cursor-connection.type.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Class } from '@ptc-org/nestjs-query-core';
|
|
2
|
+
import { ConnectionCursorType } from '../../cursor.scalar';
|
|
3
|
+
import { EdgeType } from '../interfaces';
|
|
4
|
+
export interface EdgeTypeConstructor<DTO> {
|
|
5
|
+
new (node: DTO, cursor: ConnectionCursorType): EdgeType<DTO>;
|
|
6
|
+
}
|
|
7
|
+
export declare function getOrCreateEdgeType<DTO>(DTOClass: Class<DTO>): EdgeTypeConstructor<DTO>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOrCreateEdgeType = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const graphql_1 = require("@nestjs/graphql");
|
|
6
|
+
const nestjs_query_core_1 = require("@ptc-org/nestjs-query-core");
|
|
7
|
+
const cursor_scalar_1 = require("../../cursor.scalar");
|
|
8
|
+
const common_1 = require("../../../common");
|
|
9
|
+
const reflector = new nestjs_query_core_1.ValueReflector('nestjs-query:edge-type');
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare -- intentional
|
|
11
|
+
function getOrCreateEdgeType(DTOClass) {
|
|
12
|
+
return reflector.memoize(DTOClass, () => {
|
|
13
|
+
const objName = (0, common_1.getGraphqlObjectName)(DTOClass, 'Unable to make EdgeType for class.');
|
|
14
|
+
let AbstractEdge = class AbstractEdge {
|
|
15
|
+
constructor(node, cursor) {
|
|
16
|
+
this.node = node;
|
|
17
|
+
this.cursor = cursor;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
(0, tslib_1.__decorate)([
|
|
21
|
+
(0, graphql_1.Field)(() => DTOClass, { description: `The node containing the ${objName}` }),
|
|
22
|
+
(0, tslib_1.__metadata)("design:type", Object)
|
|
23
|
+
], AbstractEdge.prototype, "node", void 0);
|
|
24
|
+
(0, tslib_1.__decorate)([
|
|
25
|
+
(0, graphql_1.Field)(() => cursor_scalar_1.ConnectionCursorScalar, { description: 'Cursor for this node.' }),
|
|
26
|
+
(0, tslib_1.__metadata)("design:type", String)
|
|
27
|
+
], AbstractEdge.prototype, "cursor", void 0);
|
|
28
|
+
AbstractEdge = (0, tslib_1.__decorate)([
|
|
29
|
+
(0, graphql_1.ObjectType)(`${objName}Edge`),
|
|
30
|
+
(0, tslib_1.__metadata)("design:paramtypes", [Object, String])
|
|
31
|
+
], AbstractEdge);
|
|
32
|
+
return AbstractEdge;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
exports.getOrCreateEdgeType = getOrCreateEdgeType;
|
|
36
|
+
//# sourceMappingURL=edge.type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge.type.js","sourceRoot":"","sources":["../../../../../../../packages/query-graphql/src/types/connection/cursor/edge.type.ts"],"names":[],"mappings":";;;;AAAA,6CAAoD;AACpD,kEAAmE;AACnE,uDAAmF;AACnF,4CAAuD;AAOvD,MAAM,SAAS,GAAG,IAAI,kCAAc,CAAC,wBAAwB,CAAC,CAAC;AAC/D,0EAA0E;AAC1E,SAAgB,mBAAmB,CAAM,QAAoB;IAC3D,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtC,MAAM,OAAO,GAAG,IAAA,6BAAoB,EAAC,QAAQ,EAAE,oCAAoC,CAAC,CAAC;QAErF,IAAM,YAAY,GAAlB,MAAM,YAAY;YAChB,YAAY,IAAS,EAAE,MAA4B;gBACjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACvB,CAAC;SAOF,CAAA;QAJC;YADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,2BAA2B,OAAO,EAAE,EAAE,CAAC;;kDAClE;QAGX;YADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,sCAAsB,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;;oDAChD;QAV1B,YAAY;YADjB,IAAA,oBAAU,EAAC,GAAG,OAAO,MAAM,CAAC;;WACvB,YAAY,CAWjB;QACD,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC;AAlBD,kDAkBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './cursor-connection.type';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/query-graphql/src/types/connection/cursor/index.ts"],"names":[],"mappings":";;;AAAA,wEAAyC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ConnectionCursorType } from '../../cursor.scalar';
|
|
2
|
+
import { PageInfoType } from '../interfaces';
|
|
3
|
+
export interface PageInfoTypeConstructor {
|
|
4
|
+
new (hasNextPage: boolean, hasPreviousPage: boolean, startCursor: ConnectionCursorType | undefined, endCursor: ConnectionCursorType | undefined): PageInfoType;
|
|
5
|
+
}
|
|
6
|
+
export declare const getOrCreatePageInfoType: () => PageInfoTypeConstructor;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOrCreatePageInfoType = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const graphql_1 = require("@nestjs/graphql");
|
|
6
|
+
const cursor_scalar_1 = require("../../cursor.scalar");
|
|
7
|
+
/** @internal */
|
|
8
|
+
let pageInfoType = null;
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare -- intentional
|
|
10
|
+
const getOrCreatePageInfoType = () => {
|
|
11
|
+
if (pageInfoType) {
|
|
12
|
+
return pageInfoType;
|
|
13
|
+
}
|
|
14
|
+
let PageInfoTypeImpl = class PageInfoTypeImpl {
|
|
15
|
+
constructor(hasNextPage, hasPreviousPage, startCursor, endCursor) {
|
|
16
|
+
this.hasNextPage = hasNextPage;
|
|
17
|
+
this.hasPreviousPage = hasPreviousPage;
|
|
18
|
+
this.startCursor = startCursor;
|
|
19
|
+
this.endCursor = endCursor;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
(0, tslib_1.__decorate)([
|
|
23
|
+
(0, graphql_1.Field)(() => Boolean, { nullable: true, description: 'true if paging forward and there are more records.' }),
|
|
24
|
+
(0, tslib_1.__metadata)("design:type", Boolean)
|
|
25
|
+
], PageInfoTypeImpl.prototype, "hasNextPage", void 0);
|
|
26
|
+
(0, tslib_1.__decorate)([
|
|
27
|
+
(0, graphql_1.Field)(() => Boolean, { nullable: true, description: 'true if paging backwards and there are more records.' }),
|
|
28
|
+
(0, tslib_1.__metadata)("design:type", Boolean)
|
|
29
|
+
], PageInfoTypeImpl.prototype, "hasPreviousPage", void 0);
|
|
30
|
+
(0, tslib_1.__decorate)([
|
|
31
|
+
(0, graphql_1.Field)(() => cursor_scalar_1.ConnectionCursorScalar, { nullable: true, description: 'The cursor of the first returned record.' }),
|
|
32
|
+
(0, tslib_1.__metadata)("design:type", String)
|
|
33
|
+
], PageInfoTypeImpl.prototype, "startCursor", void 0);
|
|
34
|
+
(0, tslib_1.__decorate)([
|
|
35
|
+
(0, graphql_1.Field)(() => cursor_scalar_1.ConnectionCursorScalar, {
|
|
36
|
+
nullable: true,
|
|
37
|
+
description: 'The cursor of the last returned record.',
|
|
38
|
+
}),
|
|
39
|
+
(0, tslib_1.__metadata)("design:type", String)
|
|
40
|
+
], PageInfoTypeImpl.prototype, "endCursor", void 0);
|
|
41
|
+
PageInfoTypeImpl = (0, tslib_1.__decorate)([
|
|
42
|
+
(0, graphql_1.ObjectType)('PageInfo'),
|
|
43
|
+
(0, tslib_1.__metadata)("design:paramtypes", [Boolean, Boolean, String, String])
|
|
44
|
+
], PageInfoTypeImpl);
|
|
45
|
+
pageInfoType = PageInfoTypeImpl;
|
|
46
|
+
return pageInfoType;
|
|
47
|
+
};
|
|
48
|
+
exports.getOrCreatePageInfoType = getOrCreatePageInfoType;
|
|
49
|
+
//# sourceMappingURL=page-info.type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-info.type.js","sourceRoot":"","sources":["../../../../../../../packages/query-graphql/src/types/connection/cursor/page-info.type.ts"],"names":[],"mappings":";;;;AAAA,6CAAoD;AAEpD,uDAAmF;AAYnF,gBAAgB;AAChB,IAAI,YAAY,GAA+B,IAAI,CAAC;AACpD,0EAA0E;AACnE,MAAM,uBAAuB,GAAG,GAA4B,EAAE;IACnE,IAAI,YAAY,EAAE;QAChB,OAAO,YAAY,CAAC;KACrB;IAGD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;QACpB,YACE,WAAoB,EACpB,eAAwB,EACxB,WAA6C,EAC7C,SAA2C;YAE3C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YAC/B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;YACvC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC;KAgBF,CAAA;IAbC;QADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,oDAAoD,EAAE,CAAC;;yDACvF;IAGrB;QADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,sDAAsD,EAAE,CAAC;;6DACrF;IAGzB;QADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,sCAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC;;yDAClE;IAM/C;QAJC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,sCAAsB,EAAE;YACnC,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,yCAAyC;SACvD,CAAC;;uDAC2C;IA1BzC,gBAAgB;QADrB,IAAA,oBAAU,EAAC,UAAU,CAAC;;OACjB,gBAAgB,CA2BrB;IAED,YAAY,GAAG,gBAAgB,CAAC;IAChC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AArCW,QAAA,uBAAuB,2BAqClC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Class } from '@ptc-org/nestjs-query-core';
|
|
2
|
+
import { Pager } from '../../interfaces';
|
|
3
|
+
import { CursorPagerResult } from './interfaces';
|
|
4
|
+
export declare type PagerOpts = {
|
|
5
|
+
disableKeySetPagination?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare const createPager: <DTO>(DTOClass: Class<DTO>, opts: PagerOpts) => Pager<DTO, CursorPagerResult<DTO>>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createPager = void 0;
|
|
4
|
+
const decorators_1 = require("../../../../decorators");
|
|
5
|
+
const pager_1 = require("./pager");
|
|
6
|
+
const strategies_1 = require("./strategies");
|
|
7
|
+
// default pager factory to plug in addition paging strategies later on.
|
|
8
|
+
const createPager = (DTOClass, opts) => {
|
|
9
|
+
const keySet = opts.disableKeySetPagination ? undefined : (0, decorators_1.getKeySet)(DTOClass);
|
|
10
|
+
if (keySet && keySet.length) {
|
|
11
|
+
return new pager_1.CursorPager(new strategies_1.KeysetPagerStrategy(DTOClass, keySet));
|
|
12
|
+
}
|
|
13
|
+
return new pager_1.CursorPager(new strategies_1.LimitOffsetPagerStrategy());
|
|
14
|
+
};
|
|
15
|
+
exports.createPager = createPager;
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/query-graphql/src/types/connection/cursor/pager/index.ts"],"names":[],"mappings":";;;AACA,uDAAmD;AAGnD,mCAAsC;AACtC,6CAA6E;AAM7E,wEAAwE;AACjE,MAAM,WAAW,GAAG,CAAM,QAAoB,EAAE,IAAe,EAAsC,EAAE;IAC5G,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,sBAAS,EAAC,QAAQ,CAAC,CAAC;IAC9E,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;QAC3B,OAAO,IAAI,mBAAW,CAAM,IAAI,gCAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;KACxE;IACD,OAAO,IAAI,mBAAW,CAAM,IAAI,qCAAwB,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC;AANW,QAAA,WAAW,eAMtB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Query } from '@ptc-org/nestjs-query-core';
|
|
2
|
+
import { CursorPagingOpts } from './strategies';
|
|
3
|
+
import { CursorConnectionType, PagerResult } from '../../interfaces';
|
|
4
|
+
export interface PagingMeta<DTO, Opts extends CursorPagingOpts<DTO>> {
|
|
5
|
+
opts: Opts;
|
|
6
|
+
query: Query<DTO>;
|
|
7
|
+
}
|
|
8
|
+
export interface QueryResults<DTO> {
|
|
9
|
+
nodes: DTO[];
|
|
10
|
+
hasExtraNode: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare type CursorPagerResult<DTO> = PagerResult & Omit<CursorConnectionType<DTO>, 'totalCount'>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../../../../packages/query-graphql/src/types/connection/cursor/pager/interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { PagerStrategy } from './strategies';
|
|
2
|
+
import { Count, Pager, QueryMany } from '../../interfaces';
|
|
3
|
+
import { CursorQueryArgsType } from '../../../query';
|
|
4
|
+
import { CursorPagerResult } from './interfaces';
|
|
5
|
+
export declare class CursorPager<DTO> implements Pager<DTO, CursorPagerResult<DTO>> {
|
|
6
|
+
readonly strategy: PagerStrategy<DTO>;
|
|
7
|
+
constructor(strategy: PagerStrategy<DTO>);
|
|
8
|
+
page<Q extends CursorQueryArgsType<DTO>>(queryMany: QueryMany<DTO, Q>, query: Q, count: Count<DTO>): Promise<CursorPagerResult<DTO>>;
|
|
9
|
+
private isValidPaging;
|
|
10
|
+
private runQuery;
|
|
11
|
+
private getPageMeta;
|
|
12
|
+
private createPagingResult;
|
|
13
|
+
private hasPreviousPage;
|
|
14
|
+
private isEmptyPage;
|
|
15
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CursorPager = void 0;
|
|
4
|
+
const EMPTY_PAGING_RESULTS = () => ({
|
|
5
|
+
edges: [],
|
|
6
|
+
pageInfo: { hasNextPage: false, hasPreviousPage: false },
|
|
7
|
+
totalCount: () => Promise.resolve(0),
|
|
8
|
+
});
|
|
9
|
+
const DEFAULT_PAGING_META = (query) => ({
|
|
10
|
+
opts: { offset: 0, limit: 0, isBackward: false, isForward: true, hasBefore: false },
|
|
11
|
+
query,
|
|
12
|
+
});
|
|
13
|
+
class CursorPager {
|
|
14
|
+
constructor(strategy) {
|
|
15
|
+
this.strategy = strategy;
|
|
16
|
+
}
|
|
17
|
+
async page(queryMany, query, count) {
|
|
18
|
+
const pagingMeta = this.getPageMeta(query);
|
|
19
|
+
if (!this.isValidPaging(pagingMeta)) {
|
|
20
|
+
return EMPTY_PAGING_RESULTS();
|
|
21
|
+
}
|
|
22
|
+
const results = await this.runQuery(queryMany, query, pagingMeta);
|
|
23
|
+
if (this.isEmptyPage(results, pagingMeta)) {
|
|
24
|
+
return EMPTY_PAGING_RESULTS();
|
|
25
|
+
}
|
|
26
|
+
return this.createPagingResult(results, pagingMeta, () => count(query.filter ?? {}));
|
|
27
|
+
}
|
|
28
|
+
isValidPaging(pagingMeta) {
|
|
29
|
+
if ('offset' in pagingMeta.opts) {
|
|
30
|
+
return pagingMeta.opts.offset > 0 || pagingMeta.opts.limit > 0;
|
|
31
|
+
}
|
|
32
|
+
return pagingMeta.opts.limit > 0;
|
|
33
|
+
}
|
|
34
|
+
async runQuery(queryMany, query, pagingMeta) {
|
|
35
|
+
const { opts } = pagingMeta;
|
|
36
|
+
const windowedQuery = this.strategy.createQuery(query, opts, true);
|
|
37
|
+
const nodes = await queryMany(windowedQuery);
|
|
38
|
+
const returnNodes = this.strategy.checkForExtraNode(nodes, opts);
|
|
39
|
+
const hasExtraNode = returnNodes.length !== nodes.length;
|
|
40
|
+
return { nodes: returnNodes, hasExtraNode };
|
|
41
|
+
}
|
|
42
|
+
getPageMeta(query) {
|
|
43
|
+
const { paging } = query;
|
|
44
|
+
if (!paging) {
|
|
45
|
+
return DEFAULT_PAGING_META(query);
|
|
46
|
+
}
|
|
47
|
+
return { opts: this.strategy.fromCursorArgs(paging), query };
|
|
48
|
+
}
|
|
49
|
+
createPagingResult(results, pagingMeta, totalCount) {
|
|
50
|
+
const { nodes, hasExtraNode } = results;
|
|
51
|
+
const { isForward, hasBefore } = pagingMeta.opts;
|
|
52
|
+
const edges = nodes.map((node, i) => ({
|
|
53
|
+
node,
|
|
54
|
+
cursor: this.strategy.toCursor(node, i, pagingMeta.opts, pagingMeta.query),
|
|
55
|
+
}));
|
|
56
|
+
const pageInfo = {
|
|
57
|
+
startCursor: edges[0]?.cursor,
|
|
58
|
+
endCursor: edges[edges.length - 1]?.cursor,
|
|
59
|
+
// if we have are going forward and have an extra node or there was a before cursor
|
|
60
|
+
hasNextPage: isForward ? hasExtraNode : hasBefore,
|
|
61
|
+
// we have a previous page if we are going backwards and have an extra node.
|
|
62
|
+
hasPreviousPage: this.hasPreviousPage(results, pagingMeta),
|
|
63
|
+
};
|
|
64
|
+
return { edges, pageInfo, totalCount };
|
|
65
|
+
}
|
|
66
|
+
hasPreviousPage(results, pagingMeta) {
|
|
67
|
+
const { hasExtraNode } = results;
|
|
68
|
+
const { opts } = pagingMeta;
|
|
69
|
+
return opts.isBackward ? hasExtraNode : !this.strategy.isEmptyCursor(opts);
|
|
70
|
+
}
|
|
71
|
+
isEmptyPage(results, pagingMeta) {
|
|
72
|
+
// it is an empty page if
|
|
73
|
+
// 1. we dont have an extra node
|
|
74
|
+
// 2. there were no nodes returned
|
|
75
|
+
// 3. we're paging forward
|
|
76
|
+
// 4. and we dont have an offset
|
|
77
|
+
const { opts } = pagingMeta;
|
|
78
|
+
const isEmpty = !results.hasExtraNode && !results.nodes.length && pagingMeta.opts.isForward;
|
|
79
|
+
return isEmpty && this.strategy.isEmptyCursor(opts);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.CursorPager = CursorPager;
|
|
83
|
+
//# sourceMappingURL=pager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pager.js","sourceRoot":"","sources":["../../../../../../../../packages/query-graphql/src/types/connection/cursor/pager/pager.ts"],"names":[],"mappings":";;;AAMA,MAAM,oBAAoB,GAAG,GAAgC,EAAE,CAAC,CAAC;IAC/D,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;IACxD,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;CACrC,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAAM,KAAiB,EAAqC,EAAE,CAAC,CAAC;IAC1F,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;IACnF,KAAK;CACN,CAAC,CAAC;AAEH,MAAa,WAAW;IACtB,YAAqB,QAA4B;QAA5B,aAAQ,GAAR,QAAQ,CAAoB;IAAG,CAAC;IAErD,KAAK,CAAC,IAAI,CACR,SAA4B,EAC5B,KAAQ,EACR,KAAiB;QAEjB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;YACnC,OAAO,oBAAoB,EAAE,CAAC;SAC/B;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;YACzC,OAAO,oBAAoB,EAAE,CAAC;SAC/B;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;IACvF,CAAC;IAEO,aAAa,CAAC,UAAkD;QACtE,IAAI,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE;YAC/B,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAChE;QACD,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,SAA4B,EAC5B,KAAQ,EACR,UAAkD;QAElD,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;QAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;QACzD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;IAC9C,CAAC;IAEO,WAAW,CAAC,KAA+B;QACjD,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;SACnC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IAC/D,CAAC;IAEO,kBAAkB,CACxB,OAA0B,EAC1B,UAAkD,EAClD,UAAiC;QAEjC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QACxC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC;QACjD,MAAM,KAAK,GAAoB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,IAAI;YACJ,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC;SAC3E,CAAC,CAAC,CAAC;QACJ,MAAM,QAAQ,GAAG;YACf,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM;YAC7B,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM;YAC1C,mFAAmF;YACnF,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;YACjD,4EAA4E;YAC5E,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC;SAC3D,CAAC;QAEF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IACzC,CAAC;IAEO,eAAe,CAAC,OAA0B,EAAE,UAAkD;QACpG,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QACjC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC;IAEO,WAAW,CAAC,OAA0B,EAAE,UAAkD;QAChG,yBAAyB;QACzB,gCAAgC;QAChC,kCAAkC;QAClC,0BAA0B;QAC1B,gCAAgC;QAChC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;QAC5B,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5F,OAAO,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;CACF;AAtFD,kCAsFC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CursorPagingType } from '../../../../query';
|
|
2
|
+
export declare function isBackwardPaging(cursor: CursorPagingType): boolean;
|
|
3
|
+
export declare function isForwardPaging(cursor: CursorPagingType): boolean;
|
|
4
|
+
export declare function hasBeforeCursor(cursor: CursorPagingType): boolean;
|
|
5
|
+
export declare function encodeBase64(str: string): string;
|
|
6
|
+
export declare function decodeBase64(str: string): string;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.decodeBase64 = exports.encodeBase64 = exports.hasBeforeCursor = exports.isForwardPaging = exports.isBackwardPaging = void 0;
|
|
4
|
+
function isBackwardPaging(cursor) {
|
|
5
|
+
return typeof cursor.last !== 'undefined';
|
|
6
|
+
}
|
|
7
|
+
exports.isBackwardPaging = isBackwardPaging;
|
|
8
|
+
function isForwardPaging(cursor) {
|
|
9
|
+
return !isBackwardPaging(cursor);
|
|
10
|
+
}
|
|
11
|
+
exports.isForwardPaging = isForwardPaging;
|
|
12
|
+
function hasBeforeCursor(cursor) {
|
|
13
|
+
return isBackwardPaging(cursor) && !!cursor.before;
|
|
14
|
+
}
|
|
15
|
+
exports.hasBeforeCursor = hasBeforeCursor;
|
|
16
|
+
function encodeBase64(str) {
|
|
17
|
+
return Buffer.from(str, 'utf8').toString('base64');
|
|
18
|
+
}
|
|
19
|
+
exports.encodeBase64 = encodeBase64;
|
|
20
|
+
function decodeBase64(str) {
|
|
21
|
+
return Buffer.from(str, 'base64').toString('utf8');
|
|
22
|
+
}
|
|
23
|
+
exports.decodeBase64 = decodeBase64;
|
|
24
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../../../../../packages/query-graphql/src/types/connection/cursor/pager/strategies/helpers.ts"],"names":[],"mappings":";;;AAEA,SAAgB,gBAAgB,CAAC,MAAwB;IACvD,OAAO,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC;AAC5C,CAAC;AAFD,4CAEC;AAED,SAAgB,eAAe,CAAC,MAAwB;IACtD,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAFD,0CAEC;AAED,SAAgB,eAAe,CAAC,MAAwB;IACtD,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACrD,CAAC;AAFD,0CAEC;AAED,SAAgB,YAAY,CAAC,GAAW;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACrD,CAAC;AAFD,oCAEC;AAED,SAAgB,YAAY,CAAC,GAAW;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC;AAFD,oCAEC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
(0, tslib_1.__exportStar)(require("./pager-strategy"), exports);
|
|
5
|
+
(0, tslib_1.__exportStar)(require("./limit-offset.pager-strategy"), exports);
|
|
6
|
+
(0, tslib_1.__exportStar)(require("./keyset.pager-strategy"), exports);
|
|
7
|
+
(0, tslib_1.__exportStar)(require("./helpers"), exports);
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../packages/query-graphql/src/types/connection/cursor/pager/strategies/index.ts"],"names":[],"mappings":";;;AAAA,gEAAiC;AACjC,6EAA8C;AAC9C,uEAAwC;AACxC,yDAA0B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Class, Query } from '@ptc-org/nestjs-query-core';
|
|
2
|
+
import { KeySetPagingOpts, PagerStrategy } from './pager-strategy';
|
|
3
|
+
import { CursorPagingType } from '../../../../query';
|
|
4
|
+
export declare class KeysetPagerStrategy<DTO> implements PagerStrategy<DTO> {
|
|
5
|
+
readonly DTOClass: Class<DTO>;
|
|
6
|
+
readonly pageFields: (keyof DTO)[];
|
|
7
|
+
constructor(DTOClass: Class<DTO>, pageFields: (keyof DTO)[]);
|
|
8
|
+
fromCursorArgs(cursor: CursorPagingType): KeySetPagingOpts<DTO>;
|
|
9
|
+
toCursor(dto: DTO, index: number, opts: KeySetPagingOpts<DTO>, query: Query<DTO>): string;
|
|
10
|
+
isEmptyCursor(opts: KeySetPagingOpts<DTO>): boolean;
|
|
11
|
+
createQuery<Q extends Query<DTO>>(query: Q, opts: KeySetPagingOpts<DTO>, includeExtraNode: boolean): Q;
|
|
12
|
+
checkForExtraNode(nodes: DTO[], opts: KeySetPagingOpts<DTO>): DTO[];
|
|
13
|
+
private get defaultSort();
|
|
14
|
+
private encodeCursor;
|
|
15
|
+
private decodeCursor;
|
|
16
|
+
private createFieldsFilter;
|
|
17
|
+
private getSortFields;
|
|
18
|
+
private createKeySetPayload;
|
|
19
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KeysetPagerStrategy = void 0;
|
|
4
|
+
const nestjs_query_core_1 = require("@ptc-org/nestjs-query-core");
|
|
5
|
+
const class_transformer_1 = require("class-transformer");
|
|
6
|
+
const common_1 = require("@nestjs/common");
|
|
7
|
+
const helpers_1 = require("./helpers");
|
|
8
|
+
class KeysetPagerStrategy {
|
|
9
|
+
constructor(DTOClass, pageFields) {
|
|
10
|
+
this.DTOClass = DTOClass;
|
|
11
|
+
this.pageFields = pageFields;
|
|
12
|
+
}
|
|
13
|
+
fromCursorArgs(cursor) {
|
|
14
|
+
const { defaultSort } = this;
|
|
15
|
+
const isForward = (0, helpers_1.isForwardPaging)(cursor);
|
|
16
|
+
const isBackward = (0, helpers_1.isBackwardPaging)(cursor);
|
|
17
|
+
const hasBefore = (0, helpers_1.hasBeforeCursor)(cursor);
|
|
18
|
+
let payload;
|
|
19
|
+
let limit = 0;
|
|
20
|
+
if ((0, helpers_1.isForwardPaging)(cursor)) {
|
|
21
|
+
payload = cursor.after ? this.decodeCursor(cursor.after) : undefined;
|
|
22
|
+
limit = cursor.first ?? 0;
|
|
23
|
+
}
|
|
24
|
+
if ((0, helpers_1.isBackwardPaging)(cursor)) {
|
|
25
|
+
payload = cursor.before ? this.decodeCursor(cursor.before) : undefined;
|
|
26
|
+
limit = cursor.last ?? 0;
|
|
27
|
+
}
|
|
28
|
+
return { payload, defaultSort, limit, isBackward, isForward, hasBefore };
|
|
29
|
+
}
|
|
30
|
+
toCursor(dto, index, opts, query) {
|
|
31
|
+
const cursorFields = [
|
|
32
|
+
...(query.sorting ?? []).map((f) => f.field),
|
|
33
|
+
...this.pageFields,
|
|
34
|
+
];
|
|
35
|
+
return this.encodeCursor(this.createKeySetPayload(dto, cursorFields));
|
|
36
|
+
}
|
|
37
|
+
isEmptyCursor(opts) {
|
|
38
|
+
return !opts.payload || !opts.payload.fields.length;
|
|
39
|
+
}
|
|
40
|
+
createQuery(query, opts, includeExtraNode) {
|
|
41
|
+
const paging = { limit: opts.limit };
|
|
42
|
+
if (includeExtraNode) {
|
|
43
|
+
// Add 1 to the limit so we will fetch an additional node
|
|
44
|
+
paging.limit += 1;
|
|
45
|
+
}
|
|
46
|
+
const { payload } = opts;
|
|
47
|
+
// Add 1 to the limit so we will fetch an additional node with the current node
|
|
48
|
+
const sorting = this.getSortFields(query, opts);
|
|
49
|
+
const filter = (0, nestjs_query_core_1.mergeFilter)(query.filter ?? {}, this.createFieldsFilter(sorting, payload));
|
|
50
|
+
return { ...query, filter, paging, sorting };
|
|
51
|
+
}
|
|
52
|
+
checkForExtraNode(nodes, opts) {
|
|
53
|
+
const hasExtraNode = nodes.length > opts.limit;
|
|
54
|
+
const returnNodes = [...nodes];
|
|
55
|
+
if (hasExtraNode) {
|
|
56
|
+
returnNodes.pop();
|
|
57
|
+
}
|
|
58
|
+
if (opts.isBackward) {
|
|
59
|
+
returnNodes.reverse();
|
|
60
|
+
}
|
|
61
|
+
return returnNodes;
|
|
62
|
+
}
|
|
63
|
+
get defaultSort() {
|
|
64
|
+
return this.pageFields.map((field) => ({ field, direction: nestjs_query_core_1.SortDirection.ASC }));
|
|
65
|
+
}
|
|
66
|
+
encodeCursor(fields) {
|
|
67
|
+
return (0, helpers_1.encodeBase64)(JSON.stringify(fields));
|
|
68
|
+
}
|
|
69
|
+
decodeCursor(cursor) {
|
|
70
|
+
try {
|
|
71
|
+
const payload = JSON.parse((0, helpers_1.decodeBase64)(cursor));
|
|
72
|
+
if (payload.type !== 'keyset') {
|
|
73
|
+
throw new common_1.BadRequestException('Invalid cursor');
|
|
74
|
+
}
|
|
75
|
+
const partial = payload.fields.reduce((dtoPartial, { field, value }) => ({ ...dtoPartial, [field]: value }), {});
|
|
76
|
+
const transformed = (0, class_transformer_1.plainToClass)(this.DTOClass, partial);
|
|
77
|
+
const typesafeFields = payload.fields.map(({ field }) => ({ field, value: transformed[field] }));
|
|
78
|
+
return { ...payload, fields: typesafeFields };
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
throw new common_1.BadRequestException('Invalid cursor');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
createFieldsFilter(sortFields, payload) {
|
|
85
|
+
if (!payload) {
|
|
86
|
+
return {};
|
|
87
|
+
}
|
|
88
|
+
const { fields } = payload;
|
|
89
|
+
const equalities = [];
|
|
90
|
+
const oredFilter = sortFields.reduce((dtoFilters, sortField, index) => {
|
|
91
|
+
const keySetField = fields[index];
|
|
92
|
+
if (keySetField.field !== sortField.field) {
|
|
93
|
+
throw new Error(`Cursor Payload does not match query sort expected ${keySetField.field} found ${sortField.field}`);
|
|
94
|
+
}
|
|
95
|
+
const isAsc = sortField.direction === nestjs_query_core_1.SortDirection.ASC;
|
|
96
|
+
const subFilter = {
|
|
97
|
+
and: [...equalities, { [keySetField.field]: { [isAsc ? 'gt' : 'lt']: keySetField.value } }],
|
|
98
|
+
};
|
|
99
|
+
equalities.push({ [keySetField.field]: { eq: keySetField.value } });
|
|
100
|
+
return [...dtoFilters, subFilter];
|
|
101
|
+
}, []);
|
|
102
|
+
return { or: oredFilter };
|
|
103
|
+
}
|
|
104
|
+
getSortFields(query, opts) {
|
|
105
|
+
const { sorting = [] } = query;
|
|
106
|
+
const defaultSort = opts.defaultSort.filter((dsf) => !sorting.some((sf) => dsf.field === sf.field));
|
|
107
|
+
const sortFields = [...sorting, ...defaultSort];
|
|
108
|
+
return opts.isForward ? sortFields : (0, nestjs_query_core_1.invertSort)(sortFields);
|
|
109
|
+
}
|
|
110
|
+
createKeySetPayload(dto, fields) {
|
|
111
|
+
const fieldSet = new Set();
|
|
112
|
+
return fields.reduce((payload, field) => {
|
|
113
|
+
if (fieldSet.has(field)) {
|
|
114
|
+
return payload;
|
|
115
|
+
}
|
|
116
|
+
fieldSet.add(field);
|
|
117
|
+
payload.fields.push({ field, value: dto[field] });
|
|
118
|
+
return payload;
|
|
119
|
+
}, { type: 'keyset', fields: [] });
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
exports.KeysetPagerStrategy = KeysetPagerStrategy;
|
|
123
|
+
//# sourceMappingURL=keyset.pager-strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyset.pager-strategy.js","sourceRoot":"","sources":["../../../../../../../../../packages/query-graphql/src/types/connection/cursor/pager/strategies/keyset.pager-strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Query } from '@ptc-org/nestjs-query-core';
|
|
2
|
+
import { CursorPagingType } from '../../../../query';
|
|
3
|
+
import { OffsetPagingOpts, PagerStrategy } from './pager-strategy';
|
|
4
|
+
export declare class LimitOffsetPagerStrategy<DTO> implements PagerStrategy<DTO> {
|
|
5
|
+
private static CURSOR_PREFIX;
|
|
6
|
+
toCursor(dto: DTO, index: number, pagingOpts: OffsetPagingOpts): string;
|
|
7
|
+
fromCursorArgs(cursor: CursorPagingType): OffsetPagingOpts;
|
|
8
|
+
isEmptyCursor(opts: OffsetPagingOpts): boolean;
|
|
9
|
+
createQuery<Q extends Query<DTO>>(query: Q, opts: OffsetPagingOpts, includeExtraNode: boolean): Q;
|
|
10
|
+
checkForExtraNode(nodes: DTO[], opts: OffsetPagingOpts): DTO[];
|
|
11
|
+
private getLimit;
|
|
12
|
+
private getOffset;
|
|
13
|
+
private static offsetToCursor;
|
|
14
|
+
private static cursorToOffset;
|
|
15
|
+
}
|