@infrab4a/connect 3.3.0-beta.2 → 3.3.0
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/bundles/infrab4a-connect.umd.js +5079 -0
- package/bundles/infrab4a-connect.umd.js.map +1 -0
- package/{esm2020/domain/catalog/models/kit-product.mjs → esm2015/domain/catalog/models/kit-product.js} +1 -1
- package/{esm2020/domain/catalog/models/product.mjs → esm2015/domain/catalog/models/product.js} +1 -1
- package/esm2015/domain/generic/model/base.model.js +23 -0
- package/{esm2020/domain/shopping/models/buy-2-win.mjs → esm2015/domain/shopping/models/buy-2-win.js} +1 -1
- package/esm2015/domain/shopping/models/checkout.js +38 -0
- package/{esm2020/domain/shopping/models/coupons/coupon.mjs → esm2015/domain/shopping/models/coupons/coupon.js} +1 -1
- package/{esm2020/domain/shopping/models/order.mjs → esm2015/domain/shopping/models/order.js} +1 -1
- package/{esm2020/domain/shopping/models/payment.mjs → esm2015/domain/shopping/models/payment.js} +1 -1
- package/{esm2020/domain/shopping/models/subscription/checkout.mjs → esm2015/domain/shopping/models/subscription/checkout.js} +1 -1
- package/{esm2020/domain/users/models/subscription/payment.mjs → esm2015/domain/users/models/subscription/payment.js} +1 -1
- package/{esm2020/domain/users/models/subscription/subscription.mjs → esm2015/domain/users/models/subscription/subscription.js} +1 -1
- package/{esm2020/domain/users/models/user.mjs → esm2015/domain/users/models/user.js} +1 -1
- package/esm2015/domain/users/use-cases/authentication.js +40 -0
- package/esm2015/domain/users/use-cases/recovery-password.js +12 -0
- package/esm2015/domain/users/use-cases/register.js +34 -0
- package/esm2015/domain/users/use-cases/signout.js +12 -0
- package/esm2015/infra/elasticsearch/adapters/axios.adapter.js +57 -0
- package/esm2015/infra/elasticsearch/indexes/products-index.js +93 -0
- package/esm2015/infra/firebase/auth/authentication-firebase-auth.service.js +52 -0
- package/esm2015/infra/firebase/auth/register-firebase-auth.service.js +26 -0
- package/{esm2020/infra/firebase/firestore/mixins/with-create-firestore.mixin.mjs → esm2015/infra/firebase/firestore/mixins/with-create-firestore.mixin.js} +19 -13
- package/esm2015/infra/firebase/firestore/mixins/with-delete-firestore.mixin.js +18 -0
- package/esm2015/infra/firebase/firestore/mixins/with-find-firestore.mixin.js +96 -0
- package/esm2015/infra/firebase/firestore/mixins/with-firestore.mixin.js +49 -0
- package/esm2015/infra/firebase/firestore/mixins/with-get-firestore.mixin.js +24 -0
- package/esm2015/infra/firebase/firestore/mixins/with-update-firestore.mixin.js +45 -0
- package/esm2015/infra/firebase/firestore/repositories/catalog/category-firestore.repository.js +71 -0
- package/esm2015/infra/firebase/firestore/repositories/catalog/product-firestore.repository.js +52 -0
- package/esm2015/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.js +56 -0
- package/esm2015/infra/firebase/firestore/repositories/shopping/order-firestore.repository.js +40 -0
- package/esm2015/infra/firebase/firestore/repositories/users/user-firestore.repository.js +68 -0
- package/esm2015/infra/hasura-graphql/mixins/helpers/attribute-option.helper.js +31 -0
- package/esm2015/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.js +53 -0
- package/esm2015/infra/hasura-graphql/mixins/helpers/filter-option.helper.js +22 -0
- package/esm2015/infra/hasura-graphql/mixins/helpers/graphql-field.helper.js +86 -0
- package/esm2015/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.js +45 -0
- package/esm2015/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.js +29 -0
- package/esm2015/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.js +45 -0
- package/esm2015/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.js +35 -0
- package/esm2015/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.js +94 -0
- package/esm2015/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.js +56 -0
- package/{esm2020/infra/hasura-graphql/models/kit-product-hasura-graphql.mjs → esm2015/infra/hasura-graphql/models/kit-product-hasura-graphql.js} +1 -1
- package/{esm2020/infra/hasura-graphql/models/product-hasura-graphql.mjs → esm2015/infra/hasura-graphql/models/product-hasura-graphql.js} +1 -1
- package/esm2015/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.js +241 -0
- package/esm2015/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.js +462 -0
- package/esm2015/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.js +116 -0
- package/fesm2015/{infrab4a-connect.mjs → infrab4a-connect.js} +1 -1
- package/fesm2015/infrab4a-connect.js.map +1 -0
- package/infra/firebase/firestore/mixins/with-helpers.mixin.d.ts +1 -1
- package/infrab4a-connect.d.ts +5 -0
- package/package.json +7 -20
- package/esm2020/domain/generic/model/base.model.mjs +0 -23
- package/esm2020/domain/shopping/models/checkout.mjs +0 -38
- package/esm2020/domain/users/use-cases/authentication.mjs +0 -43
- package/esm2020/domain/users/use-cases/recovery-password.mjs +0 -9
- package/esm2020/domain/users/use-cases/register.mjs +0 -38
- package/esm2020/domain/users/use-cases/signout.mjs +0 -9
- package/esm2020/infra/elasticsearch/adapters/axios.adapter.mjs +0 -48
- package/esm2020/infra/elasticsearch/indexes/products-index.mjs +0 -88
- package/esm2020/infra/firebase/auth/authentication-firebase-auth.service.mjs +0 -41
- package/esm2020/infra/firebase/auth/register-firebase-auth.service.mjs +0 -23
- package/esm2020/infra/firebase/firestore/mixins/with-delete-firestore.mixin.mjs +0 -15
- package/esm2020/infra/firebase/firestore/mixins/with-find-firestore.mixin.mjs +0 -94
- package/esm2020/infra/firebase/firestore/mixins/with-firestore.mixin.mjs +0 -52
- package/esm2020/infra/firebase/firestore/mixins/with-get-firestore.mixin.mjs +0 -21
- package/esm2020/infra/firebase/firestore/mixins/with-update-firestore.mixin.mjs +0 -42
- package/esm2020/infra/firebase/firestore/repositories/catalog/category-firestore.repository.mjs +0 -64
- package/esm2020/infra/firebase/firestore/repositories/catalog/product-firestore.repository.mjs +0 -45
- package/esm2020/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.mjs +0 -54
- package/esm2020/infra/firebase/firestore/repositories/shopping/order-firestore.repository.mjs +0 -38
- package/esm2020/infra/firebase/firestore/repositories/users/user-firestore.repository.mjs +0 -56
- package/esm2020/infra/hasura-graphql/mixins/helpers/attribute-option.helper.mjs +0 -32
- package/esm2020/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.mjs +0 -68
- package/esm2020/infra/hasura-graphql/mixins/helpers/filter-option.helper.mjs +0 -22
- package/esm2020/infra/hasura-graphql/mixins/helpers/graphql-field.helper.mjs +0 -96
- package/esm2020/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.mjs +0 -37
- package/esm2020/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.mjs +0 -29
- package/esm2020/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.mjs +0 -46
- package/esm2020/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.mjs +0 -34
- package/esm2020/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.mjs +0 -92
- package/esm2020/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.mjs +0 -58
- package/esm2020/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.mjs +0 -219
- package/esm2020/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.mjs +0 -466
- package/esm2020/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.mjs +0 -106
- package/fesm2015/infrab4a-connect.mjs.map +0 -1
- package/fesm2020/infrab4a-connect.mjs +0 -3261
- package/fesm2020/infrab4a-connect.mjs.map +0 -1
- /package/{esm2020/domain/catalog/index.mjs → esm2015/domain/catalog/index.js} +0 -0
- /package/{esm2020/domain/catalog/models/category.mjs → esm2015/domain/catalog/models/category.js} +0 -0
- /package/{esm2020/domain/catalog/models/enums/index.mjs → esm2015/domain/catalog/models/enums/index.js} +0 -0
- /package/{esm2020/domain/catalog/models/enums/product-genders.enum.mjs → esm2015/domain/catalog/models/enums/product-genders.enum.js} +0 -0
- /package/{esm2020/domain/catalog/models/enums/shops.enum.mjs → esm2015/domain/catalog/models/enums/shops.enum.js} +0 -0
- /package/{esm2020/domain/catalog/models/index.mjs → esm2015/domain/catalog/models/index.js} +0 -0
- /package/{esm2020/domain/catalog/models/types/category-condition.type.mjs → esm2015/domain/catalog/models/types/category-condition.type.js} +0 -0
- /package/{esm2020/domain/catalog/models/types/category-filter.type.mjs → esm2015/domain/catalog/models/types/category-filter.type.js} +0 -0
- /package/{esm2020/domain/catalog/models/types/category-metadata.type.mjs → esm2015/domain/catalog/models/types/category-metadata.type.js} +0 -0
- /package/{esm2020/domain/catalog/models/types/index.mjs → esm2015/domain/catalog/models/types/index.js} +0 -0
- /package/{esm2020/domain/catalog/models/types/product-gender.type.mjs → esm2015/domain/catalog/models/types/product-gender.type.js} +0 -0
- /package/{esm2020/domain/catalog/models/types/product-metadata.type.mjs → esm2015/domain/catalog/models/types/product-metadata.type.js} +0 -0
- /package/{esm2020/domain/catalog/models/types/product-review.type.mjs → esm2015/domain/catalog/models/types/product-review.type.js} +0 -0
- /package/{esm2020/domain/catalog/models/types/shop-description.type.mjs → esm2015/domain/catalog/models/types/shop-description.type.js} +0 -0
- /package/{esm2020/domain/catalog/models/types/shop-price.type.mjs → esm2015/domain/catalog/models/types/shop-price.type.js} +0 -0
- /package/{esm2020/domain/catalog/models/types/stock.type.mjs → esm2015/domain/catalog/models/types/stock.type.js} +0 -0
- /package/{esm2020/domain/catalog/models/types/variant-grade.type.mjs → esm2015/domain/catalog/models/types/variant-grade.type.js} +0 -0
- /package/{esm2020/domain/catalog/models/variant.mjs → esm2015/domain/catalog/models/variant.js} +0 -0
- /package/{esm2020/domain/catalog/repositories/category.repository.mjs → esm2015/domain/catalog/repositories/category.repository.js} +0 -0
- /package/{esm2020/domain/catalog/repositories/index.mjs → esm2015/domain/catalog/repositories/index.js} +0 -0
- /package/{esm2020/domain/catalog/repositories/product.repository.mjs → esm2015/domain/catalog/repositories/product.repository.js} +0 -0
- /package/{esm2020/domain/catalog/repositories/subscription-product.repository.mjs → esm2015/domain/catalog/repositories/subscription-product.repository.js} +0 -0
- /package/{esm2020/domain/catalog/repositories/variant.repository.mjs → esm2015/domain/catalog/repositories/variant.repository.js} +0 -0
- /package/{esm2020/domain/generic/index.mjs → esm2015/domain/generic/index.js} +0 -0
- /package/{esm2020/domain/generic/model/identifier-fields.mjs → esm2015/domain/generic/model/identifier-fields.js} +0 -0
- /package/{esm2020/domain/generic/model/index.mjs → esm2015/domain/generic/model/index.js} +0 -0
- /package/{esm2020/domain/generic/model/types/base-model-builder.type.mjs → esm2015/domain/generic/model/types/base-model-builder.type.js} +0 -0
- /package/{esm2020/domain/generic/model/types/identifier-model.type.mjs → esm2015/domain/generic/model/types/identifier-model.type.js} +0 -0
- /package/{esm2020/domain/generic/model/types/index.mjs → esm2015/domain/generic/model/types/index.js} +0 -0
- /package/{esm2020/domain/generic/model/types/model-base-structure.type.mjs → esm2015/domain/generic/model/types/model-base-structure.type.js} +0 -0
- /package/{esm2020/domain/generic/model/types/non-function-properties.type.mjs → esm2015/domain/generic/model/types/non-function-properties.type.js} +0 -0
- /package/{esm2020/domain/generic/model/types/non-function-property-name.type.mjs → esm2015/domain/generic/model/types/non-function-property-name.type.js} +0 -0
- /package/{esm2020/domain/generic/repository/create.repository.mjs → esm2015/domain/generic/repository/create.repository.js} +0 -0
- /package/{esm2020/domain/generic/repository/crud.repository.mjs → esm2015/domain/generic/repository/crud.repository.js} +0 -0
- /package/{esm2020/domain/generic/repository/delete.repository.mjs → esm2015/domain/generic/repository/delete.repository.js} +0 -0
- /package/{esm2020/domain/generic/repository/enums/index.mjs → esm2015/domain/generic/repository/enums/index.js} +0 -0
- /package/{esm2020/domain/generic/repository/enums/update-option-actions.enum.mjs → esm2015/domain/generic/repository/enums/update-option-actions.enum.js} +0 -0
- /package/{esm2020/domain/generic/repository/enums/where.enum.mjs → esm2015/domain/generic/repository/enums/where.enum.js} +0 -0
- /package/{esm2020/domain/generic/repository/find.repository.mjs → esm2015/domain/generic/repository/find.repository.js} +0 -0
- /package/{esm2020/domain/generic/repository/get.repository.mjs → esm2015/domain/generic/repository/get.repository.js} +0 -0
- /package/{esm2020/domain/generic/repository/index.mjs → esm2015/domain/generic/repository/index.js} +0 -0
- /package/{esm2020/domain/generic/repository/read.repository.mjs → esm2015/domain/generic/repository/read.repository.js} +0 -0
- /package/{esm2020/domain/generic/repository/types/index.mjs → esm2015/domain/generic/repository/types/index.js} +0 -0
- /package/{esm2020/domain/generic/repository/types/repository-find-filters.type.mjs → esm2015/domain/generic/repository/types/repository-find-filters.type.js} +0 -0
- /package/{esm2020/domain/generic/repository/types/repository-find-result.type.mjs → esm2015/domain/generic/repository/types/repository-find-result.type.js} +0 -0
- /package/{esm2020/domain/generic/repository/types/repository-limit-options.type.mjs → esm2015/domain/generic/repository/types/repository-limit-options.type.js} +0 -0
- /package/{esm2020/domain/generic/repository/types/repository-order-by-list.type.mjs → esm2015/domain/generic/repository/types/repository-order-by-list.type.js} +0 -0
- /package/{esm2020/domain/generic/repository/types/repository-update-params.type.mjs → esm2015/domain/generic/repository/types/repository-update-params.type.js} +0 -0
- /package/{esm2020/domain/generic/repository/types/where-options.type.mjs → esm2015/domain/generic/repository/types/where-options.type.js} +0 -0
- /package/{esm2020/domain/generic/repository/update.repository.mjs → esm2015/domain/generic/repository/update.repository.js} +0 -0
- /package/{esm2020/domain/index.mjs → esm2015/domain/index.js} +0 -0
- /package/{esm2020/domain/location/index.mjs → esm2015/domain/location/index.js} +0 -0
- /package/{esm2020/domain/location/models/address.mjs → esm2015/domain/location/models/address.js} +0 -0
- /package/{esm2020/domain/location/models/index.mjs → esm2015/domain/location/models/index.js} +0 -0
- /package/{esm2020/domain/location/models/types/index.mjs → esm2015/domain/location/models/types/index.js} +0 -0
- /package/{esm2020/domain/location/models/types/location-bound.type.mjs → esm2015/domain/location/models/types/location-bound.type.js} +0 -0
- /package/{esm2020/domain/location/models/types/location-geometry.type.mjs → esm2015/domain/location/models/types/location-geometry.type.js} +0 -0
- /package/{esm2020/domain/location/models/types/location-lat-lng.type.mjs → esm2015/domain/location/models/types/location-lat-lng.type.js} +0 -0
- /package/{esm2020/domain/shop-settings/enums/filter-type.enum.mjs → esm2015/domain/shop-settings/enums/filter-type.enum.js} +0 -0
- /package/{esm2020/domain/shop-settings/enums/index.mjs → esm2015/domain/shop-settings/enums/index.js} +0 -0
- /package/{esm2020/domain/shop-settings/enums/questions-filters.enum.mjs → esm2015/domain/shop-settings/enums/questions-filters.enum.js} +0 -0
- /package/{esm2020/domain/shop-settings/helpers/beauty-questions.helper.mjs → esm2015/domain/shop-settings/helpers/beauty-questions.helper.js} +0 -0
- /package/{esm2020/domain/shop-settings/helpers/index.mjs → esm2015/domain/shop-settings/helpers/index.js} +0 -0
- /package/{esm2020/domain/shop-settings/index.mjs → esm2015/domain/shop-settings/index.js} +0 -0
- /package/{esm2020/domain/shop-settings/models/home.mjs → esm2015/domain/shop-settings/models/home.js} +0 -0
- /package/{esm2020/domain/shop-settings/models/index.mjs → esm2015/domain/shop-settings/models/index.js} +0 -0
- /package/{esm2020/domain/shop-settings/models/shop-menu.mjs → esm2015/domain/shop-settings/models/shop-menu.js} +0 -0
- /package/{esm2020/domain/shop-settings/models/types/banner.type.mjs → esm2015/domain/shop-settings/models/types/banner.type.js} +0 -0
- /package/{esm2020/domain/shop-settings/models/types/benefit.type.mjs → esm2015/domain/shop-settings/models/types/benefit.type.js} +0 -0
- /package/{esm2020/domain/shop-settings/models/types/home-data.type.mjs → esm2015/domain/shop-settings/models/types/home-data.type.js} +0 -0
- /package/{esm2020/domain/shop-settings/models/types/index.mjs → esm2015/domain/shop-settings/models/types/index.js} +0 -0
- /package/{esm2020/domain/shop-settings/models/types/menu-nav.type.mjs → esm2015/domain/shop-settings/models/types/menu-nav.type.js} +0 -0
- /package/{esm2020/domain/shop-settings/models/types/sub-menu.type.mjs → esm2015/domain/shop-settings/models/types/sub-menu.type.js} +0 -0
- /package/{esm2020/domain/shop-settings/repositories/home.repository.mjs → esm2015/domain/shop-settings/repositories/home.repository.js} +0 -0
- /package/{esm2020/domain/shop-settings/repositories/index.mjs → esm2015/domain/shop-settings/repositories/index.js} +0 -0
- /package/{esm2020/domain/shop-settings/repositories/shop-menu.repository.mjs → esm2015/domain/shop-settings/repositories/shop-menu.repository.js} +0 -0
- /package/{esm2020/domain/shopping/index.mjs → esm2015/domain/shopping/index.js} +0 -0
- /package/{esm2020/domain/shopping/models/coupons/enums/coupon-club-mens.enum.mjs → esm2015/domain/shopping/models/coupons/enums/coupon-club-mens.enum.js} +0 -0
- /package/{esm2020/domain/shopping/models/coupons/enums/coupon-subtypes.enum.mjs → esm2015/domain/shopping/models/coupons/enums/coupon-subtypes.enum.js} +0 -0
- /package/{esm2020/domain/shopping/models/coupons/enums/coupon-types.enum.mjs → esm2015/domain/shopping/models/coupons/enums/coupon-types.enum.js} +0 -0
- /package/{esm2020/domain/shopping/models/coupons/enums/exclusivities.enum.mjs → esm2015/domain/shopping/models/coupons/enums/exclusivities.enum.js} +0 -0
- /package/{esm2020/domain/shopping/models/coupons/enums/index.mjs → esm2015/domain/shopping/models/coupons/enums/index.js} +0 -0
- /package/{esm2020/domain/shopping/models/coupons/index.mjs → esm2015/domain/shopping/models/coupons/index.js} +0 -0
- /package/{esm2020/domain/shopping/models/enums/checkout-types.enum.mjs → esm2015/domain/shopping/models/enums/checkout-types.enum.js} +0 -0
- /package/{esm2020/domain/shopping/models/enums/index.mjs → esm2015/domain/shopping/models/enums/index.js} +0 -0
- /package/{esm2020/domain/shopping/models/enums/order-status.enum.mjs → esm2015/domain/shopping/models/enums/order-status.enum.js} +0 -0
- /package/{esm2020/domain/shopping/models/index.mjs → esm2015/domain/shopping/models/index.js} +0 -0
- /package/{esm2020/domain/shopping/models/line-item.mjs → esm2015/domain/shopping/models/line-item.js} +0 -0
- /package/{esm2020/domain/shopping/models/shipping-method.mjs → esm2015/domain/shopping/models/shipping-method.js} +0 -0
- /package/{esm2020/domain/shopping/models/subscription/index.mjs → esm2015/domain/shopping/models/subscription/index.js} +0 -0
- /package/{esm2020/domain/shopping/models/subscription/plan.mjs → esm2015/domain/shopping/models/subscription/plan.js} +0 -0
- /package/{esm2020/domain/shopping/models/types/index.mjs → esm2015/domain/shopping/models/types/index.js} +0 -0
- /package/{esm2020/domain/shopping/models/types/payment-address.type.mjs → esm2015/domain/shopping/models/types/payment-address.type.js} +0 -0
- /package/{esm2020/domain/shopping/models/types/payment-billing.type.mjs → esm2015/domain/shopping/models/types/payment-billing.type.js} +0 -0
- /package/{esm2020/domain/shopping/models/types/payment-card.type.mjs → esm2015/domain/shopping/models/types/payment-card.type.js} +0 -0
- /package/{esm2020/domain/shopping/models/types/payment-customer.type.mjs → esm2015/domain/shopping/models/types/payment-customer.type.js} +0 -0
- /package/{esm2020/domain/shopping/models/types/payment-document.type.mjs → esm2015/domain/shopping/models/types/payment-document.type.js} +0 -0
- /package/{esm2020/domain/shopping/models/types/payment-item.type.mjs → esm2015/domain/shopping/models/types/payment-item.type.js} +0 -0
- /package/{esm2020/domain/shopping/models/types/payment-shipping.type.mjs → esm2015/domain/shopping/models/types/payment-shipping.type.js} +0 -0
- /package/{esm2020/domain/shopping/repositories/buy-2-win.repository.mjs → esm2015/domain/shopping/repositories/buy-2-win.repository.js} +0 -0
- /package/{esm2020/domain/shopping/repositories/checkout.repository.mjs → esm2015/domain/shopping/repositories/checkout.repository.js} +0 -0
- /package/{esm2020/domain/shopping/repositories/coupon.repository.mjs → esm2015/domain/shopping/repositories/coupon.repository.js} +0 -0
- /package/{esm2020/domain/shopping/repositories/index.mjs → esm2015/domain/shopping/repositories/index.js} +0 -0
- /package/{esm2020/domain/shopping/repositories/legacy-order.repository.mjs → esm2015/domain/shopping/repositories/legacy-order.repository.js} +0 -0
- /package/{esm2020/domain/shopping/repositories/order.repository.mjs → esm2015/domain/shopping/repositories/order.repository.js} +0 -0
- /package/{esm2020/domain/shopping/repositories/payment.repository.mjs → esm2015/domain/shopping/repositories/payment.repository.js} +0 -0
- /package/{esm2020/domain/shopping/repositories/subscription/checkout.repository.mjs → esm2015/domain/shopping/repositories/subscription/checkout.repository.js} +0 -0
- /package/{esm2020/domain/shopping/repositories/subscription/index.mjs → esm2015/domain/shopping/repositories/subscription/index.js} +0 -0
- /package/{esm2020/domain/shopping/repositories/subscription/plan.repository.mjs → esm2015/domain/shopping/repositories/subscription/plan.repository.js} +0 -0
- /package/{esm2020/domain/users/errors/index.mjs → esm2015/domain/users/errors/index.js} +0 -0
- /package/{esm2020/domain/users/errors/unauthorized.error.mjs → esm2015/domain/users/errors/unauthorized.error.js} +0 -0
- /package/{esm2020/domain/users/errors/user-already-registered.error.mjs → esm2015/domain/users/errors/user-already-registered.error.js} +0 -0
- /package/{esm2020/domain/users/errors/weak-password.error.mjs → esm2015/domain/users/errors/weak-password.error.js} +0 -0
- /package/{esm2020/domain/users/index.mjs → esm2015/domain/users/index.js} +0 -0
- /package/{esm2020/domain/users/models/beauty-profile.mjs → esm2015/domain/users/models/beauty-profile.js} +0 -0
- /package/{esm2020/domain/users/models/enums/accessory-importances.enum.mjs → esm2015/domain/users/models/enums/accessory-importances.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/area.enum.mjs → esm2015/domain/users/models/enums/area.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/beard-problems.enum.mjs → esm2015/domain/users/models/enums/beard-problems.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/beard-sizes.enum.mjs → esm2015/domain/users/models/enums/beard-sizes.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/beauty-product-importances.enum.mjs → esm2015/domain/users/models/enums/beauty-product-importances.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/body-problems.enum.mjs → esm2015/domain/users/models/enums/body-problems.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/body-shapes.enum.mjs → esm2015/domain/users/models/enums/body-shapes.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/body-tattoos.enum.mjs → esm2015/domain/users/models/enums/body-tattoos.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/face-skin-oilinesses.enum.mjs → esm2015/domain/users/models/enums/face-skin-oilinesses.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/face-skin-problems.enum.mjs → esm2015/domain/users/models/enums/face-skin-problems.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/face-skin-tones.enum.mjs → esm2015/domain/users/models/enums/face-skin-tones.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/family-incomes.enum.mjs → esm2015/domain/users/models/enums/family-incomes.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/fragrance-importances.enum.mjs → esm2015/domain/users/models/enums/fragrance-importances.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/hair-colors.enum.mjs → esm2015/domain/users/models/enums/hair-colors.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/hair-problems.enum.mjs → esm2015/domain/users/models/enums/hair-problems.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/hair-strands.enum.mjs → esm2015/domain/users/models/enums/hair-strands.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/hair-types.enum.mjs → esm2015/domain/users/models/enums/hair-types.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/index.mjs → esm2015/domain/users/models/enums/index.js} +0 -0
- /package/{esm2020/domain/users/models/enums/office-position.enum.mjs → esm2015/domain/users/models/enums/office-position.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/product-spents.enum.mjs → esm2015/domain/users/models/enums/product-spents.enum.js} +0 -0
- /package/{esm2020/domain/users/models/enums/user-type.enum.mjs → esm2015/domain/users/models/enums/user-type.enum.js} +0 -0
- /package/{esm2020/domain/users/models/index.mjs → esm2015/domain/users/models/index.js} +0 -0
- /package/{esm2020/domain/users/models/lead.mjs → esm2015/domain/users/models/lead.js} +0 -0
- /package/{esm2020/domain/users/models/subscription/edition.mjs → esm2015/domain/users/models/subscription/edition.js} +0 -0
- /package/{esm2020/domain/users/models/subscription/enums/billing-status.enum.mjs → esm2015/domain/users/models/subscription/enums/billing-status.enum.js} +0 -0
- /package/{esm2020/domain/users/models/subscription/enums/edition-status.enum.mjs → esm2015/domain/users/models/subscription/enums/edition-status.enum.js} +0 -0
- /package/{esm2020/domain/users/models/subscription/enums/index.mjs → esm2015/domain/users/models/subscription/enums/index.js} +0 -0
- /package/{esm2020/domain/users/models/subscription/enums/payment-type.enum.mjs → esm2015/domain/users/models/subscription/enums/payment-type.enum.js} +0 -0
- /package/{esm2020/domain/users/models/subscription/enums/status.enum.mjs → esm2015/domain/users/models/subscription/enums/status.enum.js} +0 -0
- /package/{esm2020/domain/users/models/subscription/index.mjs → esm2015/domain/users/models/subscription/index.js} +0 -0
- /package/{esm2020/domain/users/models/user-address.mjs → esm2015/domain/users/models/user-address.js} +0 -0
- /package/{esm2020/domain/users/models/user-payment-method.mjs → esm2015/domain/users/models/user-payment-method.js} +0 -0
- /package/{esm2020/domain/users/repositories/beauty-profile.repository.mjs → esm2015/domain/users/repositories/beauty-profile.repository.js} +0 -0
- /package/{esm2020/domain/users/repositories/edition.repository.mjs → esm2015/domain/users/repositories/edition.repository.js} +0 -0
- /package/{esm2020/domain/users/repositories/index.mjs → esm2015/domain/users/repositories/index.js} +0 -0
- /package/{esm2020/domain/users/repositories/lead.repository.mjs → esm2015/domain/users/repositories/lead.repository.js} +0 -0
- /package/{esm2020/domain/users/repositories/subscription-payment.repository.mjs → esm2015/domain/users/repositories/subscription-payment.repository.js} +0 -0
- /package/{esm2020/domain/users/repositories/subscription.repository.mjs → esm2015/domain/users/repositories/subscription.repository.js} +0 -0
- /package/{esm2020/domain/users/repositories/user-address.repository.mjs → esm2015/domain/users/repositories/user-address.repository.js} +0 -0
- /package/{esm2020/domain/users/repositories/user-payment-method.repository.mjs → esm2015/domain/users/repositories/user-payment-method.repository.js} +0 -0
- /package/{esm2020/domain/users/repositories/user.repository.mjs → esm2015/domain/users/repositories/user.repository.js} +0 -0
- /package/{esm2020/domain/users/services/authentication.service.mjs → esm2015/domain/users/services/authentication.service.js} +0 -0
- /package/{esm2020/domain/users/services/index.mjs → esm2015/domain/users/services/index.js} +0 -0
- /package/{esm2020/domain/users/services/register.service.mjs → esm2015/domain/users/services/register.service.js} +0 -0
- /package/{esm2020/domain/users/services/types/basic-user-data.type.mjs → esm2015/domain/users/services/types/basic-user-data.type.js} +0 -0
- /package/{esm2020/domain/users/services/types/index.mjs → esm2015/domain/users/services/types/index.js} +0 -0
- /package/{esm2020/domain/users/use-cases/index.mjs → esm2015/domain/users/use-cases/index.js} +0 -0
- /package/{esm2020/errors/duplicated-results.error.mjs → esm2015/errors/duplicated-results.error.js} +0 -0
- /package/{esm2020/errors/index.mjs → esm2015/errors/index.js} +0 -0
- /package/{esm2020/errors/invalid-argument.error.mjs → esm2015/errors/invalid-argument.error.js} +0 -0
- /package/{esm2020/errors/not-found.error.mjs → esm2015/errors/not-found.error.js} +0 -0
- /package/{esm2020/errors/required-argument.error.mjs → esm2015/errors/required-argument.error.js} +0 -0
- /package/{esm2020/index.mjs → esm2015/index.js} +0 -0
- /package/{esm2020/infra/elasticsearch/adapters/elastic-search.adapter.mjs → esm2015/infra/elasticsearch/adapters/elastic-search.adapter.js} +0 -0
- /package/{esm2020/infra/elasticsearch/adapters/index.mjs → esm2015/infra/elasticsearch/adapters/index.js} +0 -0
- /package/{esm2020/infra/elasticsearch/index.mjs → esm2015/infra/elasticsearch/index.js} +0 -0
- /package/{esm2020/infra/elasticsearch/indexes/index.mjs → esm2015/infra/elasticsearch/indexes/index.js} +0 -0
- /package/{esm2020/infra/elasticsearch/types/elastic-search-result.mjs → esm2015/infra/elasticsearch/types/elastic-search-result.js} +0 -0
- /package/{esm2020/infra/elasticsearch/types/index.mjs → esm2015/infra/elasticsearch/types/index.js} +0 -0
- /package/{esm2020/infra/firebase/auth/index.mjs → esm2015/infra/firebase/auth/index.js} +0 -0
- /package/{esm2020/infra/firebase/auth/types/firebase-user-with-id.type.mjs → esm2015/infra/firebase/auth/types/firebase-user-with-id.type.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/enums/firestore-field-type.enum.mjs → esm2015/infra/firebase/firestore/enums/firestore-field-type.enum.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/enums/index.mjs → esm2015/infra/firebase/firestore/enums/index.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/index.mjs → esm2015/infra/firebase/firestore/index.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/mixins/index.mjs → esm2015/infra/firebase/firestore/mixins/index.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/mixins/with-crud-firestore.mixin.mjs → esm2015/infra/firebase/firestore/mixins/with-crud-firestore.mixin.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/mixins/with-helpers.mixin.mjs → esm2015/infra/firebase/firestore/mixins/with-helpers.mixin.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/mixins/with-sub-collection.mixin.mjs → esm2015/infra/firebase/firestore/mixins/with-sub-collection.mixin.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/catalog/index.mjs → esm2015/infra/firebase/firestore/repositories/catalog/index.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.mjs → esm2015/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.mjs → esm2015/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/index.mjs → esm2015/infra/firebase/firestore/repositories/index.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/shop-settings/index.mjs → esm2015/infra/firebase/firestore/repositories/shop-settings/index.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.mjs → esm2015/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.mjs → esm2015/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.mjs → esm2015/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.mjs → esm2015/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.mjs → esm2015/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/shopping/index.mjs → esm2015/infra/firebase/firestore/repositories/shopping/index.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.mjs → esm2015/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.mjs → esm2015/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.mjs → esm2015/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/users/index.mjs → esm2015/infra/firebase/firestore/repositories/users/index.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/users/lead-firestore.repository.mjs → esm2015/infra/firebase/firestore/repositories/users/lead-firestore.repository.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.mjs → esm2015/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/users/subscription-firestore.repository.mjs → esm2015/infra/firebase/firestore/repositories/users/subscription-firestore.repository.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.mjs → esm2015/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/users/user-address-firestore.repository.mjs → esm2015/infra/firebase/firestore/repositories/users/user-address-firestore.repository.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.mjs → esm2015/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.mjs → esm2015/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/types/firestore-sub.repository.type.mjs → esm2015/infra/firebase/firestore/types/firestore-sub.repository.type.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/types/firestore.helpers.type.mjs → esm2015/infra/firebase/firestore/types/firestore.helpers.type.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/types/firestore.repository.type.mjs → esm2015/infra/firebase/firestore/types/firestore.repository.type.js} +0 -0
- /package/{esm2020/infra/firebase/firestore/types/index.mjs → esm2015/infra/firebase/firestore/types/index.js} +0 -0
- /package/{esm2020/infra/firebase/index.mjs → esm2015/infra/firebase/index.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/enums/hasura-graphql-column-type.enum.mjs → esm2015/infra/hasura-graphql/enums/hasura-graphql-column-type.enum.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/enums/hasura-graphql-where.enum.mjs → esm2015/infra/hasura-graphql/enums/hasura-graphql-where.enum.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/enums/index.mjs → esm2015/infra/hasura-graphql/enums/index.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/index.mjs → esm2015/infra/hasura-graphql/index.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/mixins/helpers/index.mjs → esm2015/infra/hasura-graphql/mixins/helpers/index.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/mixins/index.mjs → esm2015/infra/hasura-graphql/mixins/index.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/mixins/with-crud-hasura-graphql.mixin.mjs → esm2015/infra/hasura-graphql/mixins/with-crud-hasura-graphql.mixin.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/models/category-hasura-graphql.mjs → esm2015/infra/hasura-graphql/models/category-hasura-graphql.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/models/index.mjs → esm2015/infra/hasura-graphql/models/index.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/models/variant-hasura-graphql.mjs → esm2015/infra/hasura-graphql/models/variant-hasura-graphql.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/repositories/catalog/index.mjs → esm2015/infra/hasura-graphql/repositories/catalog/index.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/repositories/index.mjs → esm2015/infra/hasura-graphql/repositories/index.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/types/fields.type.mjs → esm2015/infra/hasura-graphql/types/fields.type.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/types/graphql.repository.type.mjs → esm2015/infra/hasura-graphql/types/graphql.repository.type.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/types/hasura-graphql-auth-options.type.mjs → esm2015/infra/hasura-graphql/types/hasura-graphql-auth-options.type.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/types/hasura-graphql-fields.type.mjs → esm2015/infra/hasura-graphql/types/hasura-graphql-fields.type.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/types/hasura-graphql-headers.type.mjs → esm2015/infra/hasura-graphql/types/hasura-graphql-headers.type.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/types/index.mjs → esm2015/infra/hasura-graphql/types/index.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/types/nested-field.type.mjs → esm2015/infra/hasura-graphql/types/nested-field.type.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/types/query-builder-options.type.mjs → esm2015/infra/hasura-graphql/types/query-builder-options.type.js} +0 -0
- /package/{esm2020/infra/hasura-graphql/types/variable-options.type.mjs → esm2015/infra/hasura-graphql/types/variable-options.type.js} +0 -0
- /package/{esm2020/infra/index.mjs → esm2015/infra/index.js} +0 -0
- /package/{esm2020/infrab4a-connect.mjs → esm2015/infrab4a-connect.js} +0 -0
- /package/{esm2020/utils/index.mjs → esm2015/utils/index.js} +0 -0
- /package/{esm2020/utils/is-uuid.mjs → esm2015/utils/is-uuid.js} +0 -0
- /package/{esm2020/utils/mixins/base.mixin.mjs → esm2015/utils/mixins/base.mixin.js} +0 -0
- /package/{esm2020/utils/mixins/index.mjs → esm2015/utils/mixins/index.js} +0 -0
- /package/{esm2020/utils/mixins/merge-constructor-params.type.mjs → esm2015/utils/mixins/merge-constructor-params.type.js} +0 -0
- /package/{esm2020/utils/mixins/mixin-ctor.type.mjs → esm2015/utils/mixins/mixin-ctor.type.js} +0 -0
- /package/{esm2020/utils/parse-datetime.mjs → esm2015/utils/parse-datetime.js} +0 -0
- /package/{esm2020/utils/types/array-element.type.mjs → esm2015/utils/types/array-element.type.js} +0 -0
- /package/{esm2020/utils/types/index.mjs → esm2015/utils/types/index.js} +0 -0
- /package/{esm2020/utils/types/prop.type.mjs → esm2015/utils/types/prop.type.js} +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { isNil } from '../../../utils';
|
|
3
|
+
import { BindFilterQueryHelper } from './helpers';
|
|
4
|
+
export const withFindHasuraGraphQL = (MixinBase) => {
|
|
5
|
+
return class FindHasuraGraphQLMixin extends MixinBase {
|
|
6
|
+
find(options) {
|
|
7
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
8
|
+
const { filters, limits, orderBy } = options || {};
|
|
9
|
+
const variablesCount = Object.assign(Object.assign({}, (isNil(orderBy) ? {} : { order_by: { type: `${this.tableName}_order_by!`, list: true, value: orderBy } })), (isNil(filters)
|
|
10
|
+
? {}
|
|
11
|
+
: {
|
|
12
|
+
where: {
|
|
13
|
+
value: BindFilterQueryHelper.MakeGraphQLWhere(filters, this.fields),
|
|
14
|
+
type: `${this.tableName}_bool_exp`,
|
|
15
|
+
required: true,
|
|
16
|
+
},
|
|
17
|
+
}));
|
|
18
|
+
const variables = Object.assign(Object.assign({}, (isNil(limits) ? {} : limits)), variablesCount);
|
|
19
|
+
const result = yield this.query([
|
|
20
|
+
{
|
|
21
|
+
operation: this.tableName,
|
|
22
|
+
fields: options.fields
|
|
23
|
+
? options.fields
|
|
24
|
+
.map((fieldName) => {
|
|
25
|
+
var _a;
|
|
26
|
+
return (_a = this.fields.find((fieldOption) => fieldOption === fieldName)) !== null && _a !== void 0 ? _a : this.fields.find((fieldOption) => Object.keys(fieldOption).shift() === fieldName);
|
|
27
|
+
})
|
|
28
|
+
.filter(Boolean)
|
|
29
|
+
: this.fields,
|
|
30
|
+
variables,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
operation: `${this.tableName}_aggregate`,
|
|
34
|
+
fields: [{ aggregate: ['count'] }],
|
|
35
|
+
variables: variablesCount,
|
|
36
|
+
},
|
|
37
|
+
]);
|
|
38
|
+
const data = result[this.tableName].map((row) => this.convertDataFromHasura(row));
|
|
39
|
+
const count = result[`${this.tableName}_aggregate`].aggregate.count;
|
|
40
|
+
return { count, data };
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1maW5kLWhhc3VyYS1ncmFwaHFsLm1peGluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvaW5mcmEvaGFzdXJhLWdyYXBocWwvbWl4aW5zL3dpdGgtZmluZC1oYXN1cmEtZ3JhcGhxbC5taXhpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBU0EsT0FBTyxFQUFFLEtBQUssRUFBYSxNQUFNLGdCQUFnQixDQUFBO0FBR2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUVqRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUluQyxTQUEyRCxFQUMzRCxFQUFFO0lBQ0YsT0FBTyxNQUFNLHNCQUF1QixTQUFRLFNBQVM7UUFDN0MsSUFBSSxDQUFDLE9BS1Y7O2dCQUNDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUE7Z0JBQ2xELE1BQU0sY0FBYyxtQ0FDZixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLFlBQVksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQ3pHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztvQkFDaEIsQ0FBQyxDQUFDLEVBQUU7b0JBQ0osQ0FBQyxDQUFDO3dCQUNFLEtBQUssRUFBRTs0QkFDTCxLQUFLLEVBQUUscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7NEJBQ25FLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLFdBQVc7NEJBQ2xDLFFBQVEsRUFBRSxJQUFJO3lCQUNmO3FCQUNGLENBQUMsQ0FDUCxDQUFBO2dCQUNELE1BQU0sU0FBUyxtQ0FDVixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FDN0IsY0FBYyxDQUNsQixDQUFBO2dCQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQztvQkFDOUI7d0JBQ0UsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO3dCQUN6QixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07NEJBQ3BCLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTTtpQ0FDWCxHQUFHLENBQ0YsQ0FBQyxTQUFTLEVBQUUsRUFBRTs7Z0NBQ1osT0FBQSxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEtBQUssU0FBUyxDQUFDLG1DQUM1RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQTs2QkFBQSxDQUNwRjtpQ0FDQSxNQUFNLENBQUMsT0FBTyxDQUFDOzRCQUNwQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU07d0JBQ2YsU0FBUztxQkFDVjtvQkFDRDt3QkFDRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxZQUFZO3dCQUN4QyxNQUFNLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7d0JBQ2xDLFNBQVMsRUFBRSxjQUFjO3FCQUMxQjtpQkFDRixDQUFDLENBQUE7Z0JBQ0YsTUFBTSxJQUFJLEdBQVksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO2dCQUMxRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFBO2dCQUVuRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFBO1lBQ3hCLENBQUM7U0FBQTtLQUNGLENBQUE7QUFDSCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBGaW5kUmVwb3NpdG9yeSxcbiAgTW9kZWxCYXNlU3RydWN0dXJlLFxuICBOb25GdW5jdGlvblByb3BlcnR5TmFtZXMsXG4gIFJlcG9zaXRvcnlGaW5kRmllbHRlcnMsXG4gIFJlcG9zaXRvcnlGaW5kUmVzdWx0LFxuICBSZXBvc2l0b3J5TGltaXRPcHRpb25zLFxuICBSZXBvc2l0b3J5T3JkZXJCeSxcbn0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJ1xuaW1wb3J0IHsgaXNOaWwsIE1peGluQ3RvciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgR3JhcGhRTFJlcG9zaXRvcnkgfSBmcm9tICcuLi90eXBlcydcblxuaW1wb3J0IHsgQmluZEZpbHRlclF1ZXJ5SGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzJ1xuXG5leHBvcnQgY29uc3Qgd2l0aEZpbmRIYXN1cmFHcmFwaFFMID0gPFxuICBNQmFzZSBleHRlbmRzIE1vZGVsQmFzZVN0cnVjdHVyZSxcbiAgVE1peGluQmFzZSBleHRlbmRzIE1peGluQ3RvcjxHcmFwaFFMUmVwb3NpdG9yeTxNQmFzZT4+LFxuPihcbiAgTWl4aW5CYXNlOiBNaXhpbkN0b3I8R3JhcGhRTFJlcG9zaXRvcnk8TUJhc2U+PiAmIFRNaXhpbkJhc2UsXG4pID0+IHtcbiAgcmV0dXJuIGNsYXNzIEZpbmRIYXN1cmFHcmFwaFFMTWl4aW4gZXh0ZW5kcyBNaXhpbkJhc2UgaW1wbGVtZW50cyBGaW5kUmVwb3NpdG9yeTxNQmFzZT4ge1xuICAgIGFzeW5jIGZpbmQob3B0aW9ucz86IHtcbiAgICAgIGZpbHRlcnM/OiBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPE1CYXNlPlxuICAgICAgZmllbGRzPzogTm9uRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPE1CYXNlPltdXG4gICAgICBsaW1pdHM/OiBSZXBvc2l0b3J5TGltaXRPcHRpb25zPE1CYXNlPlxuICAgICAgb3JkZXJCeT86IFJlcG9zaXRvcnlPcmRlckJ5PE1CYXNlPlxuICAgIH0pOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PE1CYXNlPj4ge1xuICAgICAgY29uc3QgeyBmaWx0ZXJzLCBsaW1pdHMsIG9yZGVyQnkgfSA9IG9wdGlvbnMgfHwge31cbiAgICAgIGNvbnN0IHZhcmlhYmxlc0NvdW50ID0ge1xuICAgICAgICAuLi4oaXNOaWwob3JkZXJCeSkgPyB7fSA6IHsgb3JkZXJfYnk6IHsgdHlwZTogYCR7dGhpcy50YWJsZU5hbWV9X29yZGVyX2J5IWAsIGxpc3Q6IHRydWUsIHZhbHVlOiBvcmRlckJ5IH0gfSksXG4gICAgICAgIC4uLihpc05pbChmaWx0ZXJzKVxuICAgICAgICAgID8ge31cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgd2hlcmU6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogQmluZEZpbHRlclF1ZXJ5SGVscGVyLk1ha2VHcmFwaFFMV2hlcmUoZmlsdGVycywgdGhpcy5maWVsZHMpLFxuICAgICAgICAgICAgICAgIHR5cGU6IGAke3RoaXMudGFibGVOYW1lfV9ib29sX2V4cGAsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHtcbiAgICAgICAgLi4uKGlzTmlsKGxpbWl0cykgPyB7fSA6IGxpbWl0cyksXG4gICAgICAgIC4uLnZhcmlhYmxlc0NvdW50LFxuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5xdWVyeShbXG4gICAgICAgIHtcbiAgICAgICAgICBvcGVyYXRpb246IHRoaXMudGFibGVOYW1lLFxuICAgICAgICAgIGZpZWxkczogb3B0aW9ucy5maWVsZHNcbiAgICAgICAgICAgID8gb3B0aW9ucy5maWVsZHNcbiAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgKGZpZWxkTmFtZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZHMuZmluZCgoZmllbGRPcHRpb24pID0+IGZpZWxkT3B0aW9uID09PSBmaWVsZE5hbWUpID8/XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGRzLmZpbmQoKGZpZWxkT3B0aW9uKSA9PiBPYmplY3Qua2V5cyhmaWVsZE9wdGlvbikuc2hpZnQoKSA9PT0gZmllbGROYW1lKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgOiB0aGlzLmZpZWxkcyxcbiAgICAgICAgICB2YXJpYWJsZXMsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvcGVyYXRpb246IGAke3RoaXMudGFibGVOYW1lfV9hZ2dyZWdhdGVgLFxuICAgICAgICAgIGZpZWxkczogW3sgYWdncmVnYXRlOiBbJ2NvdW50J10gfV0sXG4gICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXNDb3VudCxcbiAgICAgICAgfSxcbiAgICAgIF0pXG4gICAgICBjb25zdCBkYXRhOiBNQmFzZVtdID0gcmVzdWx0W3RoaXMudGFibGVOYW1lXS5tYXAoKHJvdykgPT4gdGhpcy5jb252ZXJ0RGF0YUZyb21IYXN1cmEocm93KSlcbiAgICAgIGNvbnN0IGNvdW50ID0gcmVzdWx0W2Ake3RoaXMudGFibGVOYW1lfV9hZ2dyZWdhdGVgXS5hZ2dyZWdhdGUuY291bnRcblxuICAgICAgcmV0dXJuIHsgY291bnQsIGRhdGEgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { NotFoundError } from '../../../errors';
|
|
3
|
+
import { isNil } from '../../../utils';
|
|
4
|
+
import { AttributeOptionHelper } from './helpers';
|
|
5
|
+
export const withGetHasuraGraphQL = (MixinBase) => {
|
|
6
|
+
return class GetHasuraGraphQLMixin extends MixinBase {
|
|
7
|
+
constructor(...params) {
|
|
8
|
+
const options = params === null || params === void 0 ? void 0 : params[0];
|
|
9
|
+
super(...params);
|
|
10
|
+
this.getGraphQLOperation = (options === null || options === void 0 ? void 0 : options.getGraphQLOperation) || `${this.tableName}_by_pk`;
|
|
11
|
+
}
|
|
12
|
+
get(identifiers) {
|
|
13
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
14
|
+
const instance = this.model.toInstance(identifiers);
|
|
15
|
+
const result = yield this.query(this.getGraphQLOperation, this.fields, this.model.identifiersFields.reduce((ids, identifier) => {
|
|
16
|
+
var _a;
|
|
17
|
+
if (isNil(instance[identifier]))
|
|
18
|
+
return ids;
|
|
19
|
+
const columnOption = AttributeOptionHelper.FindByAttribute(identifier, this.fields);
|
|
20
|
+
const value = ((_a = columnOption === null || columnOption === void 0 ? void 0 : columnOption.to) === null || _a === void 0 ? void 0 : _a.call(columnOption, identifiers[identifier.toString()], instance)) || identifiers[identifier.toString()];
|
|
21
|
+
return Object.assign(Object.assign({}, ids), { [columnOption.columnName]: {
|
|
22
|
+
type: this.getAttributeGraphQLTypeOf(columnOption.type || value),
|
|
23
|
+
value,
|
|
24
|
+
required: true,
|
|
25
|
+
} });
|
|
26
|
+
}, {}));
|
|
27
|
+
const data = result[this.getGraphQLOperation];
|
|
28
|
+
if (isNil(data))
|
|
29
|
+
throw new NotFoundError(`${instance.constructor.name} not found`);
|
|
30
|
+
return this.convertDataFromHasura(result[this.getGraphQLOperation]);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1nZXQtaGFzdXJhLWdyYXBocWwubWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9oYXN1cmEtZ3JhcGhxbC9taXhpbnMvd2l0aC1nZXQtaGFzdXJhLWdyYXBocWwubWl4aW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFhLE1BQU0sZ0JBQWdCLENBQUE7QUFHakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sV0FBVyxDQUFBO0FBTWpELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBSWxDLFNBQTJELEVBQzNELEVBQUU7SUFDRixPQUFPLE1BQU0scUJBQXNCLFNBQVEsU0FBUztRQUdsRCxZQUFZLEdBQUcsTUFBTTtZQUNuQixNQUFNLE9BQU8sR0FBeUIsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFHLENBQUMsQ0FBQyxDQUFBO1lBRWpELEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFBO1lBRWhCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxtQkFBbUIsS0FBSSxHQUFHLElBQUksQ0FBQyxTQUFTLFFBQVEsQ0FBQTtRQUN0RixDQUFDO1FBRUssR0FBRyxDQUFDLFdBQXVDOztnQkFDL0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUE7Z0JBQ25ELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FDN0IsSUFBSSxDQUFDLG1CQUFtQixFQUN4QixJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFOztvQkFDdEQsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUFFLE9BQU8sR0FBRyxDQUFBO29CQUUzQyxNQUFNLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFDbkYsTUFBTSxLQUFLLEdBQ1QsQ0FBQSxNQUFBLFlBQVksYUFBWixZQUFZLHVCQUFaLFlBQVksQ0FBRSxFQUFFLCtDQUFoQixZQUFZLEVBQU8sV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtvQkFFeEcsdUNBQ0ssR0FBRyxLQUNOLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFOzRCQUN6QixJQUFJLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDOzRCQUNoRSxLQUFLOzRCQUNMLFFBQVEsRUFBRSxJQUFJO3lCQUNmLElBQ0Y7Z0JBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUNQLENBQUE7Z0JBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO2dCQUU3QyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUM7b0JBQUUsTUFBTSxJQUFJLGFBQWEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQTtnQkFFbEYsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUE7WUFDckUsQ0FBQztTQUFBO0tBQ0YsQ0FBQTtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdldFJlcG9zaXRvcnksIEdldFJlcG9zaXRvcnlQYXJhbXMsIE1vZGVsQmFzZVN0cnVjdHVyZSB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbidcbmltcG9ydCB7IE5vdEZvdW5kRXJyb3IgfSBmcm9tICcuLi8uLi8uLi9lcnJvcnMnXG5pbXBvcnQgeyBpc05pbCwgTWl4aW5DdG9yIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBHcmFwaFFMUmVwb3NpdG9yeSB9IGZyb20gJy4uL3R5cGVzJ1xuXG5pbXBvcnQgeyBBdHRyaWJ1dGVPcHRpb25IZWxwZXIgfSBmcm9tICcuL2hlbHBlcnMnXG5cbmV4cG9ydCB0eXBlIEdldENvbnN0cnVjdG9yUGFyYW1zID0ge1xuICBnZXRHcmFwaFFMT3BlcmF0aW9uPzogc3RyaW5nXG59XG5cbmV4cG9ydCBjb25zdCB3aXRoR2V0SGFzdXJhR3JhcGhRTCA9IDxcbiAgTUJhc2UgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmUsXG4gIFRNaXhpbkJhc2UgZXh0ZW5kcyBNaXhpbkN0b3I8R3JhcGhRTFJlcG9zaXRvcnk8TUJhc2U+Pixcbj4oXG4gIE1peGluQmFzZTogTWl4aW5DdG9yPEdyYXBoUUxSZXBvc2l0b3J5PE1CYXNlPj4gJiBUTWl4aW5CYXNlLFxuKSA9PiB7XG4gIHJldHVybiBjbGFzcyBHZXRIYXN1cmFHcmFwaFFMTWl4aW4gZXh0ZW5kcyBNaXhpbkJhc2UgaW1wbGVtZW50cyBHZXRSZXBvc2l0b3J5PE1CYXNlPiB7XG4gICAgZ2V0R3JhcGhRTE9wZXJhdGlvbjogc3RyaW5nXG5cbiAgICBjb25zdHJ1Y3RvciguLi5wYXJhbXMpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnM6IEdldENvbnN0cnVjdG9yUGFyYW1zID0gcGFyYW1zPy5bMF1cblxuICAgICAgc3VwZXIoLi4ucGFyYW1zKVxuXG4gICAgICB0aGlzLmdldEdyYXBoUUxPcGVyYXRpb24gPSBvcHRpb25zPy5nZXRHcmFwaFFMT3BlcmF0aW9uIHx8IGAke3RoaXMudGFibGVOYW1lfV9ieV9wa2BcbiAgICB9XG5cbiAgICBhc3luYyBnZXQoaWRlbnRpZmllcnM6IEdldFJlcG9zaXRvcnlQYXJhbXM8TUJhc2U+KTogUHJvbWlzZTxNQmFzZT4ge1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLm1vZGVsLnRvSW5zdGFuY2UoaWRlbnRpZmllcnMpXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXJ5KFxuICAgICAgICB0aGlzLmdldEdyYXBoUUxPcGVyYXRpb24sXG4gICAgICAgIHRoaXMuZmllbGRzLFxuICAgICAgICB0aGlzLm1vZGVsLmlkZW50aWZpZXJzRmllbGRzLnJlZHVjZSgoaWRzLCBpZGVudGlmaWVyKSA9PiB7XG4gICAgICAgICAgaWYgKGlzTmlsKGluc3RhbmNlW2lkZW50aWZpZXJdKSkgcmV0dXJuIGlkc1xuXG4gICAgICAgICAgY29uc3QgY29sdW1uT3B0aW9uID0gQXR0cmlidXRlT3B0aW9uSGVscGVyLkZpbmRCeUF0dHJpYnV0ZShpZGVudGlmaWVyLCB0aGlzLmZpZWxkcylcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9XG4gICAgICAgICAgICBjb2x1bW5PcHRpb24/LnRvPy4oaWRlbnRpZmllcnNbaWRlbnRpZmllci50b1N0cmluZygpXSwgaW5zdGFuY2UpIHx8IGlkZW50aWZpZXJzW2lkZW50aWZpZXIudG9TdHJpbmcoKV1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5pZHMsXG4gICAgICAgICAgICBbY29sdW1uT3B0aW9uLmNvbHVtbk5hbWVdOiB7XG4gICAgICAgICAgICAgIHR5cGU6IHRoaXMuZ2V0QXR0cmlidXRlR3JhcGhRTFR5cGVPZihjb2x1bW5PcHRpb24udHlwZSB8fCB2YWx1ZSksXG4gICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICB9LCB7fSksXG4gICAgICApXG4gICAgICBjb25zdCBkYXRhID0gcmVzdWx0W3RoaXMuZ2V0R3JhcGhRTE9wZXJhdGlvbl1cblxuICAgICAgaWYgKGlzTmlsKGRhdGEpKSB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgJHtpbnN0YW5jZS5jb25zdHJ1Y3Rvci5uYW1lfSBub3QgZm91bmRgKVxuXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0RGF0YUZyb21IYXN1cmEocmVzdWx0W3RoaXMuZ2V0R3JhcGhRTE9wZXJhdGlvbl0pXG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { mutation, query } from 'gql-query-builder';
|
|
3
|
+
import fetch from 'node-fetch';
|
|
4
|
+
import { isBoolean, isInteger, isNaN, isNil, isNumber, isString, isUUID, parseISO, } from '../../../utils';
|
|
5
|
+
import { GraphQLFieldHelper } from './helpers';
|
|
6
|
+
export const withHasuraGraphQL = (MixinBase) => {
|
|
7
|
+
return class HasuraGraphQLMixin extends MixinBase {
|
|
8
|
+
constructor(...params) {
|
|
9
|
+
const options = params[0];
|
|
10
|
+
super(...params);
|
|
11
|
+
this.tableName = options.tableName;
|
|
12
|
+
this.endpoint = options.endpoint;
|
|
13
|
+
this.authOptions = options.authOptions;
|
|
14
|
+
this.model = options.model;
|
|
15
|
+
this.fields = options.fields || this.model.identifiersFields;
|
|
16
|
+
}
|
|
17
|
+
get headers() {
|
|
18
|
+
return Object.assign(Object.assign(Object.assign({ 'Content-Type': 'application/json' }, (isNil(this.authOptions.authToken) ? {} : { Authorization: this.authOptions.authToken })), (isNil(this.authOptions.adminSecret) ? {} : { 'X-Hasura-Admin-Secret': this.authOptions.adminSecret })), (isNil(this.authOptions.authRole)
|
|
19
|
+
? {}
|
|
20
|
+
: { 'X-Hasura-Role': this.authOptions.authRole.role, 'X-Hasura-User-Id': this.authOptions.authRole.userId }));
|
|
21
|
+
}
|
|
22
|
+
mutation(operation, fields, variables) {
|
|
23
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
const resultQuery = mutation({
|
|
25
|
+
operation,
|
|
26
|
+
variables,
|
|
27
|
+
fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fields),
|
|
28
|
+
});
|
|
29
|
+
return this.fetch(resultQuery);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
query(operation, fields, variables) {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
const resultQuery = GraphQLFieldHelper.CheckIsGraphQLParams(operation)
|
|
35
|
+
? query(operation.map((option) => ({
|
|
36
|
+
operation: option.operation,
|
|
37
|
+
variables: option.variables,
|
|
38
|
+
fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(option.fields),
|
|
39
|
+
})))
|
|
40
|
+
: query({
|
|
41
|
+
operation,
|
|
42
|
+
variables,
|
|
43
|
+
fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fields),
|
|
44
|
+
});
|
|
45
|
+
return this.fetch(resultQuery);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
fetch(params) {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
const headers = this.headers;
|
|
51
|
+
const response = yield fetch(`${this.endpoint}`, {
|
|
52
|
+
method: 'POST',
|
|
53
|
+
body: JSON.stringify(params),
|
|
54
|
+
headers,
|
|
55
|
+
});
|
|
56
|
+
const result = yield response.json();
|
|
57
|
+
if (!isNil(result.errors))
|
|
58
|
+
throw new Error(JSON.stringify(result.errors));
|
|
59
|
+
return result.data;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
getAttributeGraphQLTypeOf(value) {
|
|
63
|
+
if (isUUID(value))
|
|
64
|
+
return 'uuid';
|
|
65
|
+
if (isString(value))
|
|
66
|
+
return 'String';
|
|
67
|
+
if (isBoolean(value))
|
|
68
|
+
return 'Boolean';
|
|
69
|
+
if (value instanceof Date)
|
|
70
|
+
return 'timestamptz';
|
|
71
|
+
if (isInteger(value))
|
|
72
|
+
return 'Int';
|
|
73
|
+
if (isNumber(value))
|
|
74
|
+
return 'numeric';
|
|
75
|
+
throw new Error('Type not implemented yet');
|
|
76
|
+
}
|
|
77
|
+
checkIfIsDateTimeAndParse(value) {
|
|
78
|
+
if (!/^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/.test(value))
|
|
79
|
+
return value;
|
|
80
|
+
const date = parseISO(value);
|
|
81
|
+
if (isNaN(date.getTime()))
|
|
82
|
+
return value;
|
|
83
|
+
return date;
|
|
84
|
+
}
|
|
85
|
+
convertDataFromHasura(data) {
|
|
86
|
+
const plain = GraphQLFieldHelper.ConvertFieldValueFrom(data, this.fields);
|
|
87
|
+
return this.model.toInstance(plain);
|
|
88
|
+
}
|
|
89
|
+
convertDataToHasura(instance, update = false) {
|
|
90
|
+
return GraphQLFieldHelper.ConvertFieldValueTo(instance, this.fields, update);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1oYXN1cmEtZ3JhcGhxbC5taXhpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2luZnJhL2hhc3VyYS1ncmFwaHFsL21peGlucy93aXRoLWhhc3VyYS1ncmFwaHFsLm1peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ25ELE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQTtBQUc5QixPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFFBQVEsRUFDUixRQUFRLEVBQ1IsTUFBTSxFQUdOLFFBQVEsR0FDVCxNQUFNLGdCQUFnQixDQUFBO0FBVXZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQVU5QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUMvQixTQUFZLEVBQ3FHLEVBQUU7SUFDbkgsT0FBTyxNQUFNLGtCQUFtQixTQUFRLFNBQVM7UUFrQi9DLFlBQVksR0FBRyxNQUFNO1lBQ25CLE1BQU0sT0FBTyxHQUE2QixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFFbkQsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUE7WUFFaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFBO1lBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQTtZQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUE7WUFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFBO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFnRCxDQUFBO1FBQzlG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bXV0YXRpb24sIHF1ZXJ5IH0gZnJvbSAnZ3FsLXF1ZXJ5LWJ1aWxkZXInXG5pbXBvcnQgZmV0Y2ggZnJvbSAnbm9kZS1mZXRjaCdcblxuaW1wb3J0IHsgQmFzZU1vZGVsQnVpbGRlciwgTW9kZWxCYXNlU3RydWN0dXJlIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJ1xuaW1wb3J0IHtcbiAgaXNCb29sZWFuLFxuICBpc0ludGVnZXIsXG4gIGlzTmFOLFxuICBpc05pbCxcbiAgaXNOdW1iZXIsXG4gIGlzU3RyaW5nLFxuICBpc1VVSUQsXG4gIE1lcmdlQ29uc3RydWN0b3JQYXJhbXMsXG4gIE1peGluQ3RvcixcbiAgcGFyc2VJU08sXG59IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHtcbiAgR3JhcGhRTFBhcmFtcyxcbiAgR3JhcGhRTFJlcG9zaXRvcnksXG4gIEhhc3VyYUdyYXBoUUxBdXRoT3B0aW9ucyxcbiAgSGFzdXJhR3JhcGhRTEZpZWxkcyxcbiAgSGFzdXJhR3JhcGhRTEhlYWRlcnMsXG4gIFZhcmlhYmxlT3B0aW9ucyxcbn0gZnJvbSAnLi4vdHlwZXMnXG5cbmltcG9ydCB7IEdyYXBoUUxGaWVsZEhlbHBlciB9IGZyb20gJy4vaGVscGVycydcblxuZXhwb3J0IHR5cGUgQ29uc3RydWN0b3JQYXJhbXM8TW9kZWwgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU+ID0ge1xuICB0YWJsZU5hbWU6IHN0cmluZ1xuICBtb2RlbDogQmFzZU1vZGVsQnVpbGRlcjxNb2RlbD5cbiAgZmllbGRzOiBIYXN1cmFHcmFwaFFMRmllbGRzPE1vZGVsPlxuICBlbmRwb2ludDogc3RyaW5nXG4gIGF1dGhPcHRpb25zOiBIYXN1cmFHcmFwaFFMQXV0aE9wdGlvbnNcbn1cblxuZXhwb3J0IGNvbnN0IHdpdGhIYXN1cmFHcmFwaFFMID0gPE1CYXNlIGV4dGVuZHMgTW9kZWxCYXNlU3RydWN0dXJlLCBUIGV4dGVuZHMgTWl4aW5DdG9yID0gTWl4aW5DdG9yPihcbiAgTWl4aW5CYXNlOiBULFxuKTogTWl4aW5DdG9yPEdyYXBoUUxSZXBvc2l0b3J5PE1CYXNlPiwgTWVyZ2VDb25zdHJ1Y3RvclBhcmFtczxDb25zdHJ1Y3RvclBhcmFtczxNQmFzZT4sIENvbnN0cnVjdG9yUGFyYW1ldGVyczxUPj4+ID0+IHtcbiAgcmV0dXJuIGNsYXNzIEhhc3VyYUdyYXBoUUxNaXhpbiBleHRlbmRzIE1peGluQmFzZSBpbXBsZW1lbnRzIEdyYXBoUUxSZXBvc2l0b3J5PE1CYXNlPiB7XG4gICAgdGFibGVOYW1lOiBzdHJpbmdcbiAgICBlbmRwb2ludDogc3RyaW5nXG4gICAgYXV0aE9wdGlvbnM6IEhhc3VyYUdyYXBoUUxBdXRoT3B0aW9uc1xuICAgIG1vZGVsOiBCYXNlTW9kZWxCdWlsZGVyPE1CYXNlPlxuICAgIGZpZWxkczogSGFzdXJhR3JhcGhRTEZpZWxkczxNQmFzZT5cblxuICAgIGdldCBoZWFkZXJzKCk6IEhhc3VyYUdyYXBoUUxIZWFkZXJzIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIC4uLihpc05pbCh0aGlzLmF1dGhPcHRpb25zLmF1dGhUb2tlbikgPyB7fSA6IHsgQXV0aG9yaXphdGlvbjogdGhpcy5hdXRoT3B0aW9ucy5hdXRoVG9rZW4gfSksXG4gICAgICAgIC4uLihpc05pbCh0aGlzLmF1dGhPcHRpb25zLmFkbWluU2VjcmV0KSA/IHt9IDogeyAnWC1IYXN1cmEtQWRtaW4tU2VjcmV0JzogdGhpcy5hdXRoT3B0aW9ucy5hZG1pblNlY3JldCB9KSxcbiAgICAgICAgLi4uKGlzTmlsKHRoaXMuYXV0aE9wdGlvbnMuYXV0aFJvbGUpXG4gICAgICAgICAgPyB7fVxuICAgICAgICAgIDogeyAnWC1IYXN1cmEtUm9sZSc6IHRoaXMuYXV0aE9wdGlvbnMuYXV0aFJvbGUucm9sZSwgJ1gtSGFzdXJhLVVzZXItSWQnOiB0aGlzLmF1dGhPcHRpb25zLmF1dGhSb2xlLnVzZXJJZCB9KSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciguLi5wYXJhbXMpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnM6IENvbnN0cnVjdG9yUGFyYW1zPE1CYXNlPiA9IHBhcmFtc1swXVxuXG4gICAgICBzdXBlciguLi5wYXJhbXMpXG5cbiAgICAgIHRoaXMudGFibGVOYW1lID0gb3B0aW9ucy50YWJsZU5hbWVcbiAgICAgIHRoaXMuZW5kcG9pbnQgPSBvcHRpb25zLmVuZHBvaW50XG4gICAgICB0aGlzLmF1dGhPcHRpb25zID0gb3B0aW9ucy5hdXRoT3B0aW9uc1xuICAgICAgdGhpcy5tb2RlbCA9IG9wdGlvbnMubW9kZWxcbiAgICAgIHRoaXMuZmllbGRzID0gb3B0aW9ucy5maWVsZHMgfHwgKHRoaXMubW9kZWwuaWRlbnRpZmllcnNGaWVsZHMgYXMgSGFzdXJhR3JhcGhRTEZpZWxkczxNQmFzZT4pXG4gICAgfVxuXG4gICAgYXN5bmMgbXV0YXRpb248UmV0dXJuRmllbGRzID0gYW55PihcbiAgICAgIG9wZXJhdGlvbjogc3RyaW5nLFxuICAgICAgZmllbGRzPzogSGFzdXJhR3JhcGhRTEZpZWxkczxNQmFzZT4sXG4gICAgICB2YXJpYWJsZXM/OiBWYXJpYWJsZU9wdGlvbnMsXG4gICAgKTogUHJvbWlzZTxSZXR1cm5GaWVsZHM+IHtcbiAgICAgIGNvbnN0IHJlc3VsdFF1ZXJ5ID0gbXV0YXRpb24oe1xuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIHZhcmlhYmxlcyxcbiAgICAgICAgZmllbGRzOiBHcmFwaFFMRmllbGRIZWxwZXIuQ29udmVydE1vZGVsRmllbGRzVG9HcmFwaFFMRmllbGRzKGZpZWxkcyksXG4gICAgICB9KVxuXG4gICAgICByZXR1cm4gdGhpcy5mZXRjaChyZXN1bHRRdWVyeSlcbiAgICB9XG5cbiAgICBhc3luYyBxdWVyeTxSZXR1cm5GaWVsZHMgPSBhbnk+KFxuICAgICAgb3BlcmF0aW9uOiBzdHJpbmcgfCBHcmFwaFFMUGFyYW1zPE1CYXNlPltdLFxuICAgICAgZmllbGRzPzogSGFzdXJhR3JhcGhRTEZpZWxkczxNQmFzZT4sXG4gICAgICB2YXJpYWJsZXM/OiBWYXJpYWJsZU9wdGlvbnMsXG4gICAgKTogUHJvbWlzZTxSZXR1cm5GaWVsZHM+IHtcbiAgICAgIGNvbnN0IHJlc3VsdFF1ZXJ5ID0gR3JhcGhRTEZpZWxkSGVscGVyLkNoZWNrSXNHcmFwaFFMUGFyYW1zKG9wZXJhdGlvbilcbiAgICAgICAgPyBxdWVyeShcbiAgICAgICAgICAgIG9wZXJhdGlvbi5tYXAoKG9wdGlvbikgPT4gKHtcbiAgICAgICAgICAgICAgb3BlcmF0aW9uOiBvcHRpb24ub3BlcmF0aW9uLFxuICAgICAgICAgICAgICB2YXJpYWJsZXM6IG9wdGlvbi52YXJpYWJsZXMsXG4gICAgICAgICAgICAgIGZpZWxkczogR3JhcGhRTEZpZWxkSGVscGVyLkNvbnZlcnRNb2RlbEZpZWxkc1RvR3JhcGhRTEZpZWxkcyhvcHRpb24uZmllbGRzKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICApXG4gICAgICAgIDogcXVlcnkoe1xuICAgICAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICAgICAgdmFyaWFibGVzLFxuICAgICAgICAgICAgZmllbGRzOiBHcmFwaFFMRmllbGRIZWxwZXIuQ29udmVydE1vZGVsRmllbGRzVG9HcmFwaFFMRmllbGRzKGZpZWxkcyksXG4gICAgICAgICAgfSlcblxuICAgICAgcmV0dXJuIHRoaXMuZmV0Y2gocmVzdWx0UXVlcnkpXG4gICAgfVxuXG4gICAgYXN5bmMgZmV0Y2g8UmV0dXJuRmllbGRzID0gYW55PihwYXJhbXM6IHsgdmFyaWFibGVzOiBhbnk7IHF1ZXJ5OiBzdHJpbmcgfSk6IFByb21pc2U8UmV0dXJuRmllbGRzPiB7XG4gICAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke3RoaXMuZW5kcG9pbnR9YCwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkocGFyYW1zKSxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pXG4gICAgICBjb25zdCByZXN1bHQ6IGFueSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuXG4gICAgICBpZiAoIWlzTmlsKHJlc3VsdC5lcnJvcnMpKSB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkocmVzdWx0LmVycm9ycykpXG5cbiAgICAgIHJldHVybiByZXN1bHQuZGF0YVxuICAgIH1cblxuICAgIGdldEF0dHJpYnV0ZUdyYXBoUUxUeXBlT2Y8RmllbGRUeXBlPih2YWx1ZTogRmllbGRUeXBlKTogc3RyaW5nIHtcbiAgICAgIGlmIChpc1VVSUQodmFsdWUgYXMgYW55KSkgcmV0dXJuICd1dWlkJ1xuICAgICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkgcmV0dXJuICdTdHJpbmcnXG4gICAgICBpZiAoaXNCb29sZWFuKHZhbHVlKSkgcmV0dXJuICdCb29sZWFuJ1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuICd0aW1lc3RhbXB0eidcbiAgICAgIGlmIChpc0ludGVnZXIodmFsdWUpKSByZXR1cm4gJ0ludCdcbiAgICAgIGlmIChpc051bWJlcih2YWx1ZSkpIHJldHVybiAnbnVtZXJpYydcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeXBlIG5vdCBpbXBsZW1lbnRlZCB5ZXQnKVxuICAgIH1cblxuICAgIGNoZWNrSWZJc0RhdGVUaW1lQW5kUGFyc2UodmFsdWU6IHN0cmluZyk6IERhdGUgfCBzdHJpbmcge1xuICAgICAgaWYgKCEvXlxcZHs0fS0oMFsxLTldfDFbMC0yXSktKDBbMS05XXxbMTJdWzAtOV18M1swMV0pJC8udGVzdCh2YWx1ZSkpIHJldHVybiB2YWx1ZVxuXG4gICAgICBjb25zdCBkYXRlID0gcGFyc2VJU08odmFsdWUpXG5cbiAgICAgIGlmIChpc05hTihkYXRlLmdldFRpbWUoKSkpIHJldHVybiB2YWx1ZVxuXG4gICAgICByZXR1cm4gZGF0ZVxuICAgIH1cblxuICAgIGNvbnZlcnREYXRhRnJvbUhhc3VyYShkYXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+KTogTUJhc2Uge1xuICAgICAgY29uc3QgcGxhaW4gPSBHcmFwaFFMRmllbGRIZWxwZXIuQ29udmVydEZpZWxkVmFsdWVGcm9tKGRhdGEsIHRoaXMuZmllbGRzKVxuXG4gICAgICByZXR1cm4gdGhpcy5tb2RlbC50b0luc3RhbmNlKHBsYWluKVxuICAgIH1cblxuICAgIGNvbnZlcnREYXRhVG9IYXN1cmEoaW5zdGFuY2U6IE1CYXNlLCB1cGRhdGUgPSBmYWxzZSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4ge1xuICAgICAgcmV0dXJuIEdyYXBoUUxGaWVsZEhlbHBlci5Db252ZXJ0RmllbGRWYWx1ZVRvKGluc3RhbmNlLCB0aGlzLmZpZWxkcywgdXBkYXRlKVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { BaseModel, UpdateOptionActions, } from '../../../domain';
|
|
3
|
+
import { isNil } from '../../../utils';
|
|
4
|
+
import { AttributeOptionHelper } from './helpers';
|
|
5
|
+
export const withUpdateHasuraGraphQL = (MixinBase) => {
|
|
6
|
+
const getValueByAction = (options) => {
|
|
7
|
+
if (options instanceof BaseModel)
|
|
8
|
+
return options.toPlain();
|
|
9
|
+
if (isNil(options === null || options === void 0 ? void 0 : options.action))
|
|
10
|
+
return options;
|
|
11
|
+
if ([UpdateOptionActions.REMOVE_FIELD.toString(), UpdateOptionActions.NULL.toString()].includes(options.action))
|
|
12
|
+
return null;
|
|
13
|
+
return options.value;
|
|
14
|
+
};
|
|
15
|
+
return class UpdateHasuraGraphQLMixin extends MixinBase {
|
|
16
|
+
constructor(...params) {
|
|
17
|
+
const options = params === null || params === void 0 ? void 0 : params[0];
|
|
18
|
+
super(...params);
|
|
19
|
+
this.updateGraphQLOperation = (options === null || options === void 0 ? void 0 : options.updateGraphQLOperation) || `update_${this.tableName}_by_pk`;
|
|
20
|
+
this.updateGraphQLObjectType = (options === null || options === void 0 ? void 0 : options.updateGraphQLObjectType) || `${this.tableName}_set_input`;
|
|
21
|
+
this.updateGraphQLPKType = (options === null || options === void 0 ? void 0 : options.updateGraphQLPKType) || `${this.tableName}_pk_columns_input`;
|
|
22
|
+
}
|
|
23
|
+
update(data) {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
const plainData = this.paramsToPlain(data);
|
|
26
|
+
yield this.mutation(this.updateGraphQLOperation, this.model.identifiersFields.map((field) => AttributeOptionHelper.FindByAttribute(field, this.fields).columnName), {
|
|
27
|
+
_set: {
|
|
28
|
+
type: this.updateGraphQLObjectType,
|
|
29
|
+
value: this.convertDataToHasura(this.model.toInstance(plainData), true),
|
|
30
|
+
required: true,
|
|
31
|
+
},
|
|
32
|
+
pk_columns: { type: this.updateGraphQLPKType, value: this.getUpdateModelKeys(plainData), required: true },
|
|
33
|
+
});
|
|
34
|
+
return this.model.toInstance(plainData);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
paramsToPlain(params) {
|
|
38
|
+
const model = this.model;
|
|
39
|
+
if (model.isModel(params))
|
|
40
|
+
return params.toPlain();
|
|
41
|
+
return Object.keys(params).reduce((data, currentKey) => (Object.assign(Object.assign({}, data), (params[currentKey] !== undefined && { [currentKey]: getValueByAction(params[currentKey]) }))), {});
|
|
42
|
+
}
|
|
43
|
+
getUpdateModelKeys(data) {
|
|
44
|
+
const instance = this.model.toInstance(data);
|
|
45
|
+
return this.model.identifiersFields.reduce((ids, identifier) => {
|
|
46
|
+
var _a;
|
|
47
|
+
if (isNil(instance[identifier]))
|
|
48
|
+
return ids;
|
|
49
|
+
const columnOption = AttributeOptionHelper.FindByAttribute(identifier, this.fields);
|
|
50
|
+
const value = ((_a = columnOption === null || columnOption === void 0 ? void 0 : columnOption.to) === null || _a === void 0 ? void 0 : _a.call(columnOption, data[identifier.toString()], instance)) || data[columnOption.attributeName];
|
|
51
|
+
return Object.assign(Object.assign({}, ids), { [columnOption.columnName]: value });
|
|
52
|
+
}, {});
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC11cGRhdGUtaGFzdXJhLWdyYXBocWwubWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9oYXN1cmEtZ3JhcGhxbC9taXhpbnMvd2l0aC11cGRhdGUtaGFzdXJhLWdyYXBocWwubWl4aW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBSVQsbUJBQW1CLEdBR3BCLE1BQU0saUJBQWlCLENBQUE7QUFDeEIsT0FBTyxFQUFFLEtBQUssRUFBcUMsTUFBTSxnQkFBZ0IsQ0FBQTtBQUd6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFZakQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FJckMsU0FBMkQsRUFJM0QsRUFBRTtJQUNGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxPQUE2QixFQUFXLEVBQUU7UUFDbEUsSUFBSSxPQUFPLFlBQVksU0FBUztZQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQzFELElBQUksS0FBSyxDQUFDLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLENBQUM7WUFBRSxPQUFPLE9BQU8sQ0FBQTtRQUMxQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQzdHLE9BQU8sSUFBSSxDQUFBO1FBRWIsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFBO0lBQ3RCLENBQUMsQ0FBQTtJQUVELE9BQU8sTUFBTSx3QkFBeUIsU0FBUSxTQUFTO1FBS3JELFlBQVksR0FBRyxNQUFNO1lBQ25CLE1BQU0sT0FBTyxHQUE0QixNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUcsQ0FB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QkFBWixZQUFZLENBQUUsRUFBRSwrQ0FBaEIsWUFBWSxFQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFBO2dCQUUzRyx1Q0FDSyxHQUFHLEtBQ04sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxJQUNqQztZQUNILENBQUMsRUFBRSxFQUErQyxDQUFDLENBQUE7UUFDckQsQ0FBQztLQUNLLENBQUE7QUFDVixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlTW9kZWwsXG4gIE1vZGVsQmFzZVN0cnVjdHVyZSxcbiAgTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydGllcyxcbiAgUmVwb3NpdG9yeVVwZGF0ZVBhcmFtcyxcbiAgVXBkYXRlT3B0aW9uQWN0aW9ucyxcbiAgVXBkYXRlT3B0aW9ucyxcbiAgVXBkYXRlUmVwb3NpdG9yeSxcbn0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJ1xuaW1wb3J0IHsgaXNOaWwsIE1lcmdlQ29uc3RydWN0b3JQYXJhbXMsIE1peGluQ3RvciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgR3JhcGhRTFJlcG9zaXRvcnksIEhhc3VyYUdyYXBoUUxGaWVsZHMgfSBmcm9tICcuLi90eXBlcydcblxuaW1wb3J0IHsgQXR0cmlidXRlT3B0aW9uSGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzJ1xuXG5leHBvcnQgdHlwZSBVcGRhdGVIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeVR5cGU8TUJhc2UgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU+ID0gVXBkYXRlUmVwb3NpdG9yeTxNQmFzZT4gJiB7XG4gIHBhcmFtc1RvUGxhaW4ocGFyYW1zOiBSZXBvc2l0b3J5VXBkYXRlUGFyYW1zPE1CYXNlPik6IFBhcnRpYWw8TUJhc2U+XG59XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZUNvbnN0cnVjdG9yUGFyYW1zID0ge1xuICB1cGRhdGVHcmFwaFFMT3BlcmF0aW9uPzogc3RyaW5nXG4gIHVwZGF0ZUdyYXBoUUxPYmplY3RUeXBlPzogc3RyaW5nXG4gIHVwZGF0ZUdyYXBoUUxQS1R5cGU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IHdpdGhVcGRhdGVIYXN1cmFHcmFwaFFMID0gPFxuICBNQmFzZSBleHRlbmRzIE1vZGVsQmFzZVN0cnVjdHVyZSxcbiAgVE1peGluQmFzZSBleHRlbmRzIE1peGluQ3RvcjxHcmFwaFFMUmVwb3NpdG9yeTxNQmFzZT4+LFxuPihcbiAgTWl4aW5CYXNlOiBNaXhpbkN0b3I8R3JhcGhRTFJlcG9zaXRvcnk8TUJhc2U+PiAmIFRNaXhpbkJhc2UsXG4pOiBNaXhpbkN0b3I8XG4gIEdyYXBoUUxSZXBvc2l0b3J5PE1CYXNlPiAmIFVwZGF0ZUhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5VHlwZTxNQmFzZT4gJiBJbnN0YW5jZVR5cGU8VE1peGluQmFzZT4sXG4gIE1lcmdlQ29uc3RydWN0b3JQYXJhbXM8VXBkYXRlQ29uc3RydWN0b3JQYXJhbXMsIENvbnN0cnVjdG9yUGFyYW1ldGVyczxUTWl4aW5CYXNlPj5cbj4gPT4ge1xuICBjb25zdCBnZXRWYWx1ZUJ5QWN0aW9uID0gKG9wdGlvbnM6IFVwZGF0ZU9wdGlvbnM8TUJhc2U+KTogdW5rbm93biA9PiB7XG4gICAgaWYgKG9wdGlvbnMgaW5zdGFuY2VvZiBCYXNlTW9kZWwpIHJldHVybiBvcHRpb25zLnRvUGxhaW4oKVxuICAgIGlmIChpc05pbChvcHRpb25zPy5hY3Rpb24pKSByZXR1cm4gb3B0aW9uc1xuICAgIGlmIChbVXBkYXRlT3B0aW9uQWN0aW9ucy5SRU1PVkVfRklFTEQudG9TdHJpbmcoKSwgVXBkYXRlT3B0aW9uQWN0aW9ucy5OVUxMLnRvU3RyaW5nKCldLmluY2x1ZGVzKG9wdGlvbnMuYWN0aW9uKSlcbiAgICAgIHJldHVybiBudWxsXG5cbiAgICByZXR1cm4gb3B0aW9ucy52YWx1ZVxuICB9XG5cbiAgcmV0dXJuIGNsYXNzIFVwZGF0ZUhhc3VyYUdyYXBoUUxNaXhpbiBleHRlbmRzIE1peGluQmFzZSBpbXBsZW1lbnRzIFVwZGF0ZVJlcG9zaXRvcnk8TUJhc2U+IHtcbiAgICB1cGRhdGVHcmFwaFFMT3BlcmF0aW9uOiBzdHJpbmdcbiAgICB1cGRhdGVHcmFwaFFMT2JqZWN0VHlwZTogc3RyaW5nXG4gICAgdXBkYXRlR3JhcGhRTFBLVHlwZTogc3RyaW5nXG5cbiAgICBjb25zdHJ1Y3RvciguLi5wYXJhbXMpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnM6IFVwZGF0ZUNvbnN0cnVjdG9yUGFyYW1zID0gcGFyYW1zPy5bMF1cblxuICAgICAgc3VwZXIoLi4ucGFyYW1zKVxuXG4gICAgICB0aGlzLnVwZGF0ZUdyYXBoUUxPcGVyYXRpb24gPSBvcHRpb25zPy51cGRhdGVHcmFwaFFMT3BlcmF0aW9uIHx8IGB1cGRhdGVfJHt0aGlzLnRhYmxlTmFtZX1fYnlfcGtgXG4gICAgICB0aGlzLnVwZGF0ZUdyYXBoUUxPYmplY3RUeXBlID0gb3B0aW9ucz8udXBkYXRlR3JhcGhRTE9iamVjdFR5cGUgfHwgYCR7dGhpcy50YWJsZU5hbWV9X3NldF9pbnB1dGBcbiAgICAgIHRoaXMudXBkYXRlR3JhcGhRTFBLVHlwZSA9IG9wdGlvbnM/LnVwZGF0ZUdyYXBoUUxQS1R5cGUgfHwgYCR7dGhpcy50YWJsZU5hbWV9X3BrX2NvbHVtbnNfaW5wdXRgXG4gICAgfVxuXG4gICAgYXN5bmMgdXBkYXRlKGRhdGE6IFJlcG9zaXRvcnlVcGRhdGVQYXJhbXM8TUJhc2U+KTogUHJvbWlzZTxNQmFzZT4ge1xuICAgICAgY29uc3QgcGxhaW5EYXRhID0gdGhpcy5wYXJhbXNUb1BsYWluKGRhdGEpXG5cbiAgICAgIGF3YWl0IHRoaXMubXV0YXRpb24oXG4gICAgICAgIHRoaXMudXBkYXRlR3JhcGhRTE9wZXJhdGlvbixcbiAgICAgICAgdGhpcy5tb2RlbC5pZGVudGlmaWVyc0ZpZWxkcy5tYXAoXG4gICAgICAgICAgKGZpZWxkKSA9PiBBdHRyaWJ1dGVPcHRpb25IZWxwZXIuRmluZEJ5QXR0cmlidXRlKGZpZWxkLCB0aGlzLmZpZWxkcykuY29sdW1uTmFtZSxcbiAgICAgICAgKSBhcyBIYXN1cmFHcmFwaFFMRmllbGRzPE1CYXNlPixcbiAgICAgICAge1xuICAgICAgICAgIF9zZXQ6IHtcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudXBkYXRlR3JhcGhRTE9iamVjdFR5cGUsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5jb252ZXJ0RGF0YVRvSGFzdXJhKHRoaXMubW9kZWwudG9JbnN0YW5jZShwbGFpbkRhdGEpLCB0cnVlKSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGtfY29sdW1uczogeyB0eXBlOiB0aGlzLnVwZGF0ZUdyYXBoUUxQS1R5cGUsIHZhbHVlOiB0aGlzLmdldFVwZGF0ZU1vZGVsS2V5cyhwbGFpbkRhdGEpLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgKVxuXG4gICAgICByZXR1cm4gdGhpcy5tb2RlbC50b0luc3RhbmNlKHBsYWluRGF0YSlcbiAgICB9XG5cbiAgICBwYXJhbXNUb1BsYWluKHBhcmFtczogUmVwb3NpdG9yeVVwZGF0ZVBhcmFtczxNQmFzZT4pOiBQYXJ0aWFsPE1CYXNlPiB7XG4gICAgICBjb25zdCBtb2RlbCA9IHRoaXMubW9kZWxcblxuICAgICAgaWYgKG1vZGVsLmlzTW9kZWwocGFyYW1zKSkgcmV0dXJuIHBhcmFtcy50b1BsYWluKClcblxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHBhcmFtcykucmVkdWNlKFxuICAgICAgICAoZGF0YSwgY3VycmVudEtleSkgPT4gKHtcbiAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgIC4uLihwYXJhbXNbY3VycmVudEtleV0gIT09IHVuZGVmaW5lZCAmJiB7IFtjdXJyZW50S2V5XTogZ2V0VmFsdWVCeUFjdGlvbihwYXJhbXNbY3VycmVudEtleV0pIH0pLFxuICAgICAgICB9KSxcbiAgICAgICAge30sXG4gICAgICApXG4gICAgfVxuXG4gICAgZ2V0VXBkYXRlTW9kZWxLZXlzKGRhdGE6IFBhcnRpYWw8TUJhc2U+KTogTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydGllczxNQmFzZT4ge1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLm1vZGVsLnRvSW5zdGFuY2UoZGF0YSlcblxuICAgICAgcmV0dXJuIHRoaXMubW9kZWwuaWRlbnRpZmllcnNGaWVsZHMucmVkdWNlKChpZHMsIGlkZW50aWZpZXIpID0+IHtcbiAgICAgICAgaWYgKGlzTmlsKGluc3RhbmNlW2lkZW50aWZpZXJdKSkgcmV0dXJuIGlkc1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbk9wdGlvbiA9IEF0dHJpYnV0ZU9wdGlvbkhlbHBlci5GaW5kQnlBdHRyaWJ1dGUoaWRlbnRpZmllciwgdGhpcy5maWVsZHMpXG4gICAgICAgIGNvbnN0IHZhbHVlID0gY29sdW1uT3B0aW9uPy50bz8uKGRhdGFbaWRlbnRpZmllci50b1N0cmluZygpXSwgaW5zdGFuY2UpIHx8IGRhdGFbY29sdW1uT3B0aW9uLmF0dHJpYnV0ZU5hbWVdXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5pZHMsXG4gICAgICAgICAgW2NvbHVtbk9wdGlvbi5jb2x1bW5OYW1lXTogdmFsdWUsXG4gICAgICAgIH1cbiAgICAgIH0sIHt9IGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnRpZXM8TUJhc2U+KVxuICAgIH1cbiAgfSBhcyBhbnlcbn1cbiJdfQ==
|
|
@@ -12,4 +12,4 @@ __decorate([
|
|
|
12
12
|
Type(() => ProductHasuraGraphQL),
|
|
13
13
|
__metadata("design:type", ProductHasuraGraphQL)
|
|
14
14
|
], KitProductHasuraGraphQL.prototype, "product", void 0);
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2l0LXByb2R1Y3QtaGFzdXJhLWdyYXBocWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9oYXN1cmEtZ3JhcGhxbC9tb2RlbHMva2l0LXByb2R1Y3QtaGFzdXJhLWdyYXBocWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFL0QsTUFBTSxPQUFPLHVCQUF3QixTQUFRLFVBQVU7Q0FNdEQ7QUFKQztJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQzs4QkFDNUIsb0JBQW9CO29EQUFBO0FBR3pCO0lBREMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDOzhCQUN4QixvQkFBb0I7d0RBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInXG5cbmltcG9ydCB7IEtpdFByb2R1Y3QgfSBmcm9tICcuLi8uLi8uLi9kb21haW4nXG5cbmltcG9ydCB7IFByb2R1Y3RIYXN1cmFHcmFwaFFMIH0gZnJvbSAnLi9wcm9kdWN0LWhhc3VyYS1ncmFwaHFsJ1xuXG5leHBvcnQgY2xhc3MgS2l0UHJvZHVjdEhhc3VyYUdyYXBoUUwgZXh0ZW5kcyBLaXRQcm9kdWN0IHtcbiAgQFR5cGUoKCkgPT4gUHJvZHVjdEhhc3VyYUdyYXBoUUwpXG4gIGtpdDogUHJvZHVjdEhhc3VyYUdyYXBoUUxcblxuICBAVHlwZSgoKSA9PiBQcm9kdWN0SGFzdXJhR3JhcGhRTClcbiAgcHJvZHVjdDogUHJvZHVjdEhhc3VyYUdyYXBoUUxcbn1cbiJdfQ==
|
|
@@ -8,4 +8,4 @@ __decorate([
|
|
|
8
8
|
Type(() => KitProductHasuraGraphQL),
|
|
9
9
|
__metadata("design:type", Array)
|
|
10
10
|
], ProductHasuraGraphQL.prototype, "kitProducts", void 0);
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1oYXN1cmEtZ3JhcGhxbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2luZnJhL2hhc3VyYS1ncmFwaHFsL21vZGVscy9wcm9kdWN0LWhhc3VyYS1ncmFwaHFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRXpDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBRXRFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxPQUFPO0NBYWhEO0FBREM7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7O3lEQUNHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJ1xuXG5pbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJ1xuXG5pbXBvcnQgeyBLaXRQcm9kdWN0SGFzdXJhR3JhcGhRTCB9IGZyb20gJy4va2l0LXByb2R1Y3QtaGFzdXJhLWdyYXBocWwnXG5cbmV4cG9ydCBjbGFzcyBQcm9kdWN0SGFzdXJhR3JhcGhRTCBleHRlbmRzIFByb2R1Y3Qge1xuICBmaXJlc3RvcmVJZD86IHN0cmluZ1xuICBmdWxsUHJpY2U/OiBudW1iZXJcbiAgc3Vic2NyaWJlckRpc2NvdW50UGVyY2VudGFnZT86IG51bWJlclxuICBzdWJzY3JpYmVyUHJpY2U/OiBudW1iZXJcbiAgcHJvZHVjdElkPzogbnVtYmVyXG4gIGRpZmZlcmVudGlhbHM/OiBzdHJpbmdcbiAgd2hvTXVzdFVzZT86IHN0cmluZ1xuICBob3dUb1VzZT86IHN0cmluZ1xuICBicmFuZERlc2NyaXB0aW9uPzogc3RyaW5nXG5cbiAgQFR5cGUoKCkgPT4gS2l0UHJvZHVjdEhhc3VyYUdyYXBoUUwpXG4gIGtpdFByb2R1Y3RzPzogS2l0UHJvZHVjdEhhc3VyYUdyYXBoUUxbXVxufVxuIl19
|
package/esm2015/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.js
ADDED
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import { __awaiter, __rest } from "tslib";
|
|
2
|
+
import { Category, Where, } from '../../../../domain';
|
|
3
|
+
import { DuplicatedResultsError, NotFoundError } from '../../../../errors';
|
|
4
|
+
import { Base, omit } from '../../../../utils';
|
|
5
|
+
import { HasuraGraphQLColumnType } from '../../enums';
|
|
6
|
+
import { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins';
|
|
7
|
+
export class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGraphQL(Base)) {
|
|
8
|
+
constructor(endpoint, authOptions, productRepository) {
|
|
9
|
+
super({
|
|
10
|
+
tableName: 'category',
|
|
11
|
+
model: Category,
|
|
12
|
+
endpoint,
|
|
13
|
+
authOptions,
|
|
14
|
+
fields: [
|
|
15
|
+
{ id: { columnName: 'id', to: (value) => +value, from: (value) => value.toString() } },
|
|
16
|
+
{ firestoreId: { columnName: 'firestore_id' } },
|
|
17
|
+
'name',
|
|
18
|
+
'description',
|
|
19
|
+
'image',
|
|
20
|
+
'published',
|
|
21
|
+
'shop',
|
|
22
|
+
'slug',
|
|
23
|
+
{ brandCategory: { columnName: 'brand_category' } },
|
|
24
|
+
{ brandCategoryBanner: { columnName: 'brand_banner' } },
|
|
25
|
+
{ brandCategoryBannerMobile: { columnName: 'brand_banner_mobile' } },
|
|
26
|
+
{ brandLogo: { columnName: 'brand_logo' } },
|
|
27
|
+
{ brandCondition: { columnName: 'brand_condition' } },
|
|
28
|
+
{
|
|
29
|
+
conditions: {
|
|
30
|
+
columnName: 'tag_condition',
|
|
31
|
+
type: HasuraGraphQLColumnType.Jsonb,
|
|
32
|
+
from: (tags, row) => ({ brand: row.brand_condition, tags: Array.isArray(tags) ? tags : [] }),
|
|
33
|
+
bindPersistData: (value) => {
|
|
34
|
+
return {
|
|
35
|
+
brand_condition: value.brand,
|
|
36
|
+
tag_condition: (value === null || value === void 0 ? void 0 : value.tags) || [],
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
bindFindFilter: (sentence) => {
|
|
40
|
+
return Object.assign(Object.assign({}, (sentence.brand ? { brand_condition: sentence.brand } : {})), (sentence.tags ? { tag_condition: sentence.tags } : {}));
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
'filters',
|
|
45
|
+
{ createdAt: { columnName: 'created_at' } },
|
|
46
|
+
{ updatedAt: { columnName: 'updated_at' } },
|
|
47
|
+
{
|
|
48
|
+
products: {
|
|
49
|
+
columnName: 'products',
|
|
50
|
+
fields: ['product_id'],
|
|
51
|
+
from: (value) => value.map((product) => product.product_id.toString()),
|
|
52
|
+
to: (productIds) => productIds.map((productId) => ({
|
|
53
|
+
product_id: +productId,
|
|
54
|
+
})),
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
metadata: {
|
|
59
|
+
columnName: 'metadata',
|
|
60
|
+
fields: ['title', 'description'],
|
|
61
|
+
bindPersistData: (value) => ({
|
|
62
|
+
metadata: { data: value },
|
|
63
|
+
}),
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
});
|
|
68
|
+
this.productRepository = productRepository;
|
|
69
|
+
}
|
|
70
|
+
create(params) {
|
|
71
|
+
const _super = Object.create(null, {
|
|
72
|
+
create: { get: () => super.create }
|
|
73
|
+
});
|
|
74
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
const { metadata } = params, data = __rest(params, ["metadata"]);
|
|
76
|
+
return _super.create.call(this, Object.assign(Object.assign({}, data), { metadata: metadata || { description: null, title: null } }));
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
get(identifiers) {
|
|
80
|
+
const _super = Object.create(null, {
|
|
81
|
+
get: { get: () => super.get }
|
|
82
|
+
});
|
|
83
|
+
var _a;
|
|
84
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
85
|
+
return Number.isNaN(+identifiers.id)
|
|
86
|
+
? (_a = (yield this.find({ filters: { firestoreId: identifiers.id } })).data) === null || _a === void 0 ? void 0 : _a[0]
|
|
87
|
+
: _super.get.call(this, identifiers);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
update(params) {
|
|
91
|
+
const _super = Object.create(null, {
|
|
92
|
+
update: { get: () => super.update }
|
|
93
|
+
});
|
|
94
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
+
const { products, id: checkId, metadata } = params, data = __rest(params, ["products", "id", "metadata"]);
|
|
96
|
+
const plainData = this.paramsToPlain({ id: checkId });
|
|
97
|
+
const id = yield this.getId(plainData.id);
|
|
98
|
+
const category = yield _super.update.call(this, Object.assign({ id }, data));
|
|
99
|
+
category.products = products && (yield this.updateProducts(+id, { products }));
|
|
100
|
+
category.metadata = metadata && (yield this.updateMetadata(+id, { metadata }));
|
|
101
|
+
return category;
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
getCategoryBySlug(slug, shop) {
|
|
105
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
106
|
+
if (!slug)
|
|
107
|
+
return;
|
|
108
|
+
const { data, count } = yield this.find({ filters: { slug, shop, published: true } });
|
|
109
|
+
if (count > 1)
|
|
110
|
+
throw new DuplicatedResultsError('Query returned duplicated values');
|
|
111
|
+
if (!count)
|
|
112
|
+
throw new NotFoundError(`Category with slug ${slug} not found`);
|
|
113
|
+
return data.shift();
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
getCategoriesForHome(categoryIds, limit = 4) {
|
|
117
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
+
if (!(categoryIds === null || categoryIds === void 0 ? void 0 : categoryIds.length))
|
|
119
|
+
return [];
|
|
120
|
+
const categoriesFirestore = categoryIds.filter((categoryId) => Number.isNaN(+categoryId));
|
|
121
|
+
const categoriesHasura = categoryIds.filter((categoryId) => +categoryId > 0);
|
|
122
|
+
const categories = [];
|
|
123
|
+
if (categoriesFirestore.length)
|
|
124
|
+
categories.push(...(yield this.find({
|
|
125
|
+
filters: { firestoreId: { operator: Where.IN, value: categoriesFirestore.filter(Boolean) }, published: true },
|
|
126
|
+
}).then(({ data }) => data)));
|
|
127
|
+
if (categoriesHasura.length)
|
|
128
|
+
categories.push(...(yield this.find({
|
|
129
|
+
filters: { id: { operator: Where.IN, value: categoriesHasura.filter(Boolean) }, published: true },
|
|
130
|
+
}).then(({ data }) => data)));
|
|
131
|
+
if (!categories.length)
|
|
132
|
+
return [];
|
|
133
|
+
const homeSections = yield Promise.all(categories.map((category) => __awaiter(this, void 0, void 0, function* () {
|
|
134
|
+
return ({
|
|
135
|
+
category,
|
|
136
|
+
products: yield this.mountCategory(category, { limit, hasStock: true }),
|
|
137
|
+
});
|
|
138
|
+
})));
|
|
139
|
+
return homeSections;
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
mountCategory(category, options) {
|
|
143
|
+
var _a;
|
|
144
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
145
|
+
if (!((_a = category === null || category === void 0 ? void 0 : category.products) === null || _a === void 0 ? void 0 : _a.length))
|
|
146
|
+
return [];
|
|
147
|
+
const products = [];
|
|
148
|
+
const { data: productsData } = yield this.productRepository.find(Object.assign({ filters: Object.assign({ id: { operator: Where.IN, value: category.products }, published: true }, ((options === null || options === void 0 ? void 0 : options.hasStock) ? { stock: { quantity: { operator: Where.GT, value: 0 } } } : {})), fields: [
|
|
149
|
+
'id',
|
|
150
|
+
'name',
|
|
151
|
+
'slug',
|
|
152
|
+
'images',
|
|
153
|
+
'miniatures',
|
|
154
|
+
'price',
|
|
155
|
+
'fullPrice',
|
|
156
|
+
'subscriberDiscountPercentage',
|
|
157
|
+
'subscriberPrice',
|
|
158
|
+
'stock',
|
|
159
|
+
'published',
|
|
160
|
+
'CEST',
|
|
161
|
+
'EAN',
|
|
162
|
+
'NCM',
|
|
163
|
+
'brand',
|
|
164
|
+
'costPrice',
|
|
165
|
+
'hasVariants',
|
|
166
|
+
'isKit',
|
|
167
|
+
'sku',
|
|
168
|
+
'rate',
|
|
169
|
+
'tags',
|
|
170
|
+
'type',
|
|
171
|
+
'shoppingCount',
|
|
172
|
+
] }, ((options === null || options === void 0 ? void 0 : options.limit) ? { limits: { limit: options === null || options === void 0 ? void 0 : options.limit } } : {})));
|
|
173
|
+
products.push(...productsData);
|
|
174
|
+
return products;
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
getId(id) {
|
|
178
|
+
var _a, _b;
|
|
179
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
180
|
+
if (!Number.isNaN(+id))
|
|
181
|
+
return id;
|
|
182
|
+
const { data } = yield this.find({ filters: { firestoreId: id } });
|
|
183
|
+
if ((_a = data === null || data === void 0 ? void 0 : data[0]) === null || _a === void 0 ? void 0 : _a.id)
|
|
184
|
+
return (_b = data === null || data === void 0 ? void 0 : data[0]) === null || _b === void 0 ? void 0 : _b.id;
|
|
185
|
+
throw new NotFoundError(`Category with id ${id} not found`);
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
updateProducts(categoryId, { products }) {
|
|
189
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
190
|
+
if ('action' in products && products.action === 'remove') {
|
|
191
|
+
yield this.mutation('delete_category_product', ['affected_rows'], {
|
|
192
|
+
where: {
|
|
193
|
+
type: 'category_product_bool_exp',
|
|
194
|
+
required: true,
|
|
195
|
+
value: { category_id: { _eq: categoryId } },
|
|
196
|
+
},
|
|
197
|
+
});
|
|
198
|
+
return [];
|
|
199
|
+
}
|
|
200
|
+
const plainData = this.paramsToPlain({ products });
|
|
201
|
+
if (!plainData.products || plainData.products.length <= 0)
|
|
202
|
+
return [];
|
|
203
|
+
yield this.mutation('delete_category_product', ['affected_rows'], {
|
|
204
|
+
where: {
|
|
205
|
+
type: 'category_product_bool_exp',
|
|
206
|
+
required: true,
|
|
207
|
+
value: { category_id: { _eq: categoryId } },
|
|
208
|
+
},
|
|
209
|
+
});
|
|
210
|
+
yield this.mutation('insert_category_product', ['affected_rows'], {
|
|
211
|
+
objects: {
|
|
212
|
+
type: '[category_product_insert_input!]',
|
|
213
|
+
required: true,
|
|
214
|
+
value: plainData.products.map((productId) => ({ category_id: categoryId, product_id: productId })),
|
|
215
|
+
},
|
|
216
|
+
});
|
|
217
|
+
return plainData.products;
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
updateMetadata(categoryId, { metadata }) {
|
|
221
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
222
|
+
const plainData = this.paramsToPlain({ metadata });
|
|
223
|
+
if (!plainData.metadata)
|
|
224
|
+
return;
|
|
225
|
+
yield this.mutation('update_category_metadata_by_pk', ['category_id'], {
|
|
226
|
+
pk_columns: {
|
|
227
|
+
value: { category_id: categoryId },
|
|
228
|
+
type: 'category_metadata_pk_columns_input',
|
|
229
|
+
required: true,
|
|
230
|
+
},
|
|
231
|
+
_set: {
|
|
232
|
+
value: omit(metadata, ['category_id']),
|
|
233
|
+
type: 'category_metadata_set_input',
|
|
234
|
+
required: true,
|
|
235
|
+
},
|
|
236
|
+
});
|
|
237
|
+
return plainData.metadata;
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktaGFzdXJhLWdyYXBocWwucmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2luZnJhL2hhc3VyYS1ncmFwaHFsL3JlcG9zaXRvcmllcy9jYXRhbG9nL2NhdGVnb3J5LWhhc3VyYS1ncmFwaHFsLnJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxRQUFRLEVBUVIsS0FBSyxHQUNOLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQU12RSxNQUFNLE9BQU8sK0JBQ1gsU0FBUSxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBd0IsSUFBSSxDQUFDLENBQUM7SUFHN0UsWUFDRSxRQUFnQixFQUNoQixXQUFxQyxFQUNwQixpQkFBaUQ7UUFFbEUsS0FBSyxDQUFDO1lBQ0osU0FBUyxFQUFFLFVBQVU7WUFDckIsS0FBSyxFQUFFLFFBQVE7WUFDZixRQUFRO1lBQ1IsV0FBVztZQUNYLE1BQU0sRUFBRTtnQkFDTixFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFO2dCQUN0RixFQUFFLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVB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QyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7WUFFbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRO2dCQUFFLE9BQU07WUFFL0IsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLGdDQUFnQyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQ3JFLFVBQVUsRUFBRTtvQkFDVixLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFO29CQUNsQyxJQUFJLEVBQUUsb0NBQW9DO29CQUMxQyxRQUFRLEVBQUUsSUFBSTtpQkFDZjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDdEMsSUFBSSxFQUFFLDZCQUE2QjtvQkFDbkMsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7YUFDRixDQUFDLENBQUE7WUFFRixPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUE7UUFDM0IsQ0FBQztLQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDYXRlZ29yeSxcbiAgQ2F0ZWdvcnlNZXRhZGF0YSxcbiAgQ2F0ZWdvcnlSZXBvc2l0b3J5LFxuICBDcmVhdGVSZXBvc2l0b3J5UGFyYW1zLFxuICBHZXRSZXBvc2l0b3J5UGFyYW1zLFxuICBQcm9kdWN0LFxuICBTaG9wcyxcbiAgVXBkYXRlUmVwb3NpdG9yeVBhcmFtcyxcbiAgV2hlcmUsXG59IGZyb20gJy4uLy4uLy4uLy4uL2RvbWFpbidcbmltcG9ydCB7IER1cGxpY2F0ZWRSZXN1bHRzRXJyb3IsIE5vdEZvdW5kRXJyb3IgfSBmcm9tICcuLi8uLi8uLi8uLi9lcnJvcnMnXG5pbXBvcnQgeyBCYXNlLCBvbWl0IH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBIYXN1cmFHcmFwaFFMQ29sdW1uVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zJ1xuaW1wb3J0IHsgd2l0aENydWRIYXN1cmFHcmFwaFFMLCB3aXRoSGFzdXJhR3JhcGhRTCB9IGZyb20gJy4uLy4uL21peGlucydcbmltcG9ydCB7IENhdGVnb3J5SGFzdXJhR3JhcGhRTCB9IGZyb20gJy4uLy4uL21vZGVscydcbmltcG9ydCB7IEhhc3VyYUdyYXBoUUxBdXRoT3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuXG5pbXBvcnQgeyBQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnkgfSBmcm9tICcuL3Byb2R1Y3QtaGFzdXJhLWdyYXBocWwucmVwb3NpdG9yeSdcblxuZXhwb3J0IGNsYXNzIENhdGVnb3J5SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnlcbiAgZXh0ZW5kcyB3aXRoQ3J1ZEhhc3VyYUdyYXBoUUwod2l0aEhhc3VyYUdyYXBoUUw8Q2F0ZWdvcnlIYXN1cmFHcmFwaFFMPihCYXNlKSlcbiAgaW1wbGVtZW50cyBDYXRlZ29yeVJlcG9zaXRvcnlcbntcbiAgY29uc3RydWN0b3IoXG4gICAgZW5kcG9pbnQ6IHN0cmluZyxcbiAgICBhdXRoT3B0aW9uczogSGFzdXJhR3JhcGhRTEF1dGhPcHRpb25zLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgKSB7XG4gICAgc3VwZXIoe1xuICAgICAgdGFibGVOYW1lOiAnY2F0ZWdvcnknLFxuICAgICAgbW9kZWw6IENhdGVnb3J5LFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBhdXRoT3B0aW9ucyxcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7IGlkOiB7IGNvbHVtbk5hbWU6ICdpZCcsIHRvOiAodmFsdWUpID0+ICt2YWx1ZSwgZnJvbTogKHZhbHVlKSA9PiB2YWx1ZS50b1N0cmluZygpIH0gfSxcbiAgICAgICAgeyBmaXJlc3RvcmVJZDogeyBjb2x1bW5OYW1lOiAnZmlyZXN0b3JlX2lkJyB9IH0sXG4gICAgICAgICduYW1lJyxcbiAgICAgICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgJ2ltYWdlJyxcbiAgICAgICAgJ3B1Ymxpc2hlZCcsXG4gICAgICAgICdzaG9wJyxcbiAgICAgICAgJ3NsdWcnLFxuICAgICAgICB7IGJyYW5kQ2F0ZWdvcnk6IHsgY29sdW1uTmFtZTogJ2JyYW5kX2NhdGVnb3J5JyB9IH0sXG4gICAgICAgIHsgYnJhbmRDYXRlZ29yeUJhbm5lcjogeyBjb2x1bW5OYW1lOiAnYnJhbmRfYmFubmVyJyB9IH0sXG4gICAgICAgIHsgYnJhbmRDYXRlZ29yeUJhbm5lck1vYmlsZTogeyBjb2x1bW5OYW1lOiAnYnJhbmRfYmFubmVyX21vYmlsZScgfSB9LFxuICAgICAgICB7IGJyYW5kTG9nbzogeyBjb2x1bW5OYW1lOiAnYnJhbmRfbG9nbycgfSB9LFxuICAgICAgICB7IGJyYW5kQ29uZGl0aW9uOiB7IGNvbHVtbk5hbWU6ICdicmFuZF9jb25kaXRpb24nIH0gfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6ICd0YWdfY29uZGl0aW9uJyxcbiAgICAgICAgICAgIHR5cGU6IEhhc3VyYUdyYXBoUUxDb2x1bW5UeXBlLkpzb25iLFxuICAgICAgICAgICAgZnJvbTogKHRhZ3M6IHVua25vd24sIHJvdykgPT4gKHsgYnJhbmQ6IHJvdy5icmFuZF9jb25kaXRpb24sIHRhZ3M6IEFycmF5LmlzQXJyYXkodGFncykgPyB0YWdzIDogW10gfSksXG4gICAgICAgICAgICBiaW5kUGVyc2lzdERhdGE6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGJyYW5kX2NvbmRpdGlvbjogdmFsdWUuYnJhbmQsXG4gICAgICAgICAgICAgICAgdGFnX2NvbmRpdGlvbjogdmFsdWU/LnRhZ3MgfHwgW10sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBiaW5kRmluZEZpbHRlcjogKHNlbnRlbmNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi4oc2VudGVuY2UuYnJhbmQgPyB7IGJyYW5kX2NvbmRpdGlvbjogc2VudGVuY2UuYnJhbmQgfSA6IHt9KSxcbiAgICAgICAgICAgICAgICAuLi4oc2VudGVuY2UudGFncyA/IHsgdGFnX2NvbmRpdGlvbjogc2VudGVuY2UudGFncyB9IDoge30pLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgICdmaWx0ZXJzJyxcbiAgICAgICAgeyBjcmVhdGVkQXQ6IHsgY29sdW1uTmFtZTogJ2NyZWF0ZWRfYXQnIH0gfSxcbiAgICAgICAgeyB1cGRhdGVkQXQ6IHsgY29sdW1uTmFtZTogJ3VwZGF0ZWRfYXQnIH0gfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb2R1Y3RzOiB7XG4gICAgICAgICAgICBjb2x1bW5OYW1lOiAncHJvZHVjdHMnLFxuICAgICAgICAgICAgZmllbGRzOiBbJ3Byb2R1Y3RfaWQnXSxcbiAgICAgICAgICAgIGZyb206ICh2YWx1ZTogeyBwcm9kdWN0X2lkOiBudW1iZXIgfVtdKSA9PiB2YWx1ZS5tYXAoKHByb2R1Y3QpID0+IHByb2R1Y3QucHJvZHVjdF9pZC50b1N0cmluZygpKSxcbiAgICAgICAgICAgIHRvOiAocHJvZHVjdElkcykgPT5cbiAgICAgICAgICAgICAgcHJvZHVjdElkcy5tYXAoKHByb2R1Y3RJZCkgPT4gKHtcbiAgICAgICAgICAgICAgICBwcm9kdWN0X2lkOiArcHJvZHVjdElkLFxuICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgICBjb2x1bW5OYW1lOiAnbWV0YWRhdGEnLFxuICAgICAgICAgICAgZmllbGRzOiBbJ3RpdGxlJywgJ2Rlc2NyaXB0aW9uJ10sXG4gICAgICAgICAgICBiaW5kUGVyc2lzdERhdGE6ICh2YWx1ZSkgPT4gKHtcbiAgICAgICAgICAgICAgbWV0YWRhdGE6IHsgZGF0YTogdmFsdWUgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pXG4gIH1cblxuICBhc3luYyBjcmVhdGUocGFyYW1zOiBDcmVhdGVSZXBvc2l0b3J5UGFyYW1zPENhdGVnb3J5SGFzdXJhR3JhcGhRTD4pOiBQcm9taXNlPENhdGVnb3J5SGFzdXJhR3JhcGhRTD4ge1xuICAgIGNvbnN0IHsgbWV0YWRhdGEsIC4uLmRhdGEgfSA9IHBhcmFtc1xuXG4gICAgcmV0dXJuIHN1cGVyLmNyZWF0ZSh7IC4uLmRhdGEsIG1ldGFkYXRhOiBtZXRhZGF0YSB8fCB7IGRlc2NyaXB0aW9uOiBudWxsLCB0aXRsZTogbnVsbCB9IH0pXG4gIH1cblxuICBhc3luYyBnZXQoaWRlbnRpZmllcnM6IEdldFJlcG9zaXRvcnlQYXJhbXM8Q2F0ZWdvcnlIYXN1cmFHcmFwaFFMPik6IFByb21pc2U8Q2F0ZWdvcnlIYXN1cmFHcmFwaFFMPiB7XG4gICAgcmV0dXJuIE51bWJlci5pc05hTigraWRlbnRpZmllcnMuaWQpXG4gICAgICA/IChhd2FpdCB0aGlzLmZpbmQoeyBmaWx0ZXJzOiB7IGZpcmVzdG9yZUlkOiBpZGVudGlmaWVycy5pZCB9IH0pKS5kYXRhPy5bMF1cbiAgICAgIDogc3VwZXIuZ2V0KGlkZW50aWZpZXJzKVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlKHBhcmFtczogVXBkYXRlUmVwb3NpdG9yeVBhcmFtczxDYXRlZ29yeUhhc3VyYUdyYXBoUUw+KTogUHJvbWlzZTxDYXRlZ29yeUhhc3VyYUdyYXBoUUw+IHtcbiAgICBjb25zdCB7IHByb2R1Y3RzLCBpZDogY2hlY2tJZCwgbWV0YWRhdGEsIC4uLmRhdGEgfSA9IHBhcmFtc1xuICAgIGNvbnN0IHBsYWluRGF0YSA9IHRoaXMucGFyYW1zVG9QbGFpbih7IGlkOiBjaGVja0lkIH0pXG4gICAgY29uc3QgaWQgPSBhd2FpdCB0aGlzLmdldElkKHBsYWluRGF0YS5pZClcbiAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IHN1cGVyLnVwZGF0ZSh7IGlkLCAuLi5kYXRhIH0pXG5cbiAgICBjYXRlZ29yeS5wcm9kdWN0cyA9IHByb2R1Y3RzICYmIChhd2FpdCB0aGlzLnVwZGF0ZVByb2R1Y3RzKCtpZCwgeyBwcm9kdWN0cyB9KSlcbiAgICBjYXRlZ29yeS5tZXRhZGF0YSA9IG1ldGFkYXRhICYmIChhd2FpdCB0aGlzLnVwZGF0ZU1ldGFkYXRhKCtpZCwgeyBtZXRhZGF0YSB9KSlcblxuICAgIHJldHVybiBjYXRlZ29yeVxuICB9XG5cbiAgYXN5bmMgZ2V0Q2F0ZWdvcnlCeVNsdWcoc2x1Zzogc3RyaW5nLCBzaG9wOiBTaG9wcyk6IFByb21pc2U8Q2F0ZWdvcnk+IHtcbiAgICBpZiAoIXNsdWcpIHJldHVyblxuXG4gICAgY29uc3QgeyBkYXRhLCBjb3VudCB9ID0gYXdhaXQgdGhpcy5maW5kKHsgZmlsdGVyczogeyBzbHVnLCBzaG9wLCBwdWJsaXNoZWQ6IHRydWUgfSB9KVxuXG4gICAgaWYgKGNvdW50ID4gMSkgdGhyb3cgbmV3IER1cGxpY2F0ZWRSZXN1bHRzRXJyb3IoJ1F1ZXJ5IHJldHVybmVkIGR1cGxpY2F0ZWQgdmFsdWVzJylcbiAgICBpZiAoIWNvdW50KSB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgQ2F0ZWdvcnkgd2l0aCBzbHVnICR7c2x1Z30gbm90IGZvdW5kYClcblxuICAgIHJldHVybiBkYXRhLnNoaWZ0KClcbiAgfVxuXG4gIGFzeW5jIGdldENhdGVnb3JpZXNGb3JIb21lKGNhdGVnb3J5SWRzOiBzdHJpbmdbXSwgbGltaXQgPSA0KTogUHJvbWlzZTx7IGNhdGVnb3J5OiBDYXRlZ29yeTsgcHJvZHVjdHM6IFByb2R1Y3RbXSB9W10+IHtcbiAgICBpZiAoIWNhdGVnb3J5SWRzPy5sZW5ndGgpIHJldHVybiBbXVxuXG4gICAgY29uc3QgY2F0ZWdvcmllc0ZpcmVzdG9yZSA9IGNhdGVnb3J5SWRzLmZpbHRlcigoY2F0ZWdvcnlJZCkgPT4gTnVtYmVyLmlzTmFOKCtjYXRlZ29yeUlkKSlcbiAgICBjb25zdCBjYXRlZ29yaWVzSGFzdXJhID0gY2F0ZWdvcnlJZHMuZmlsdGVyKChjYXRlZ29yeUlkKSA9PiArY2F0ZWdvcnlJZCA+IDApXG4gICAgY29uc3QgY2F0ZWdvcmllcyA9IFtdXG5cbiAgICBpZiAoY2F0ZWdvcmllc0ZpcmVzdG9yZS5sZW5ndGgpXG4gICAgICBjYXRlZ29yaWVzLnB1c2goXG4gICAgICAgIC4uLihhd2FpdCB0aGlzLmZpbmQoe1xuICAgICAgICAgIGZpbHRlcnM6IHsgZmlyZXN0b3JlSWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogY2F0ZWdvcmllc0ZpcmVzdG9yZS5maWx0ZXIoQm9vbGVhbikgfSwgcHVibGlzaGVkOiB0cnVlIH0sXG4gICAgICAgIH0pLnRoZW4oKHsgZGF0YSB9KSA9PiBkYXRhKSksXG4gICAgICApXG4gICAgaWYgKGNhdGVnb3JpZXNIYXN1cmEubGVuZ3RoKVxuICAgICAgY2F0ZWdvcmllcy5wdXNoKFxuICAgICAgICAuLi4oYXdhaXQgdGhpcy5maW5kKHtcbiAgICAgICAgICBmaWx0ZXJzOiB7IGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGNhdGVnb3JpZXNIYXN1cmEuZmlsdGVyKEJvb2xlYW4pIH0sIHB1Ymxpc2hlZDogdHJ1ZSB9LFxuICAgICAgICB9KS50aGVuKCh7IGRhdGEgfSkgPT4gZGF0YSkpLFxuICAgICAgKVxuXG4gICAgaWYgKCFjYXRlZ29yaWVzLmxlbmd0aCkgcmV0dXJuIFtdXG5cbiAgICBjb25zdCBob21lU2VjdGlvbnMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGNhdGVnb3JpZXMubWFwKGFzeW5jIChjYXRlZ29yeSkgPT4gKHtcbiAgICAgICAgY2F0ZWdvcnksXG4gICAgICAgIHByb2R1Y3RzOiBhd2FpdCB0aGlzLm1vdW50Q2F0ZWdvcnkoY2F0ZWdvcnksIHsgbGltaXQsIGhhc1N0b2NrOiB0cnVlIH0pLFxuICAgICAgfSkpLFxuICAgIClcblxuICAgIHJldHVybiBob21lU2VjdGlvbnNcbiAgfVxuXG4gIGFzeW5jIG1vdW50Q2F0ZWdvcnkoY2F0ZWdvcnk6IENhdGVnb3J5LCBvcHRpb25zPzogeyBsaW1pdD86IG51bWJlcjsgaGFzU3RvY2s/OiBib29sZWFuIH0pOiBQcm9taXNlPFByb2R1Y3RbXT4ge1xuICAgIGlmICghY2F0ZWdvcnk/LnByb2R1Y3RzPy5sZW5ndGgpIHJldHVybiBbXVxuXG4gICAgY29uc3QgcHJvZHVjdHMgPSBbXVxuICAgIGNvbnN0IHsgZGF0YTogcHJvZHVjdHNEYXRhIH0gPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmQoe1xuICAgICAgZmlsdGVyczoge1xuICAgICAgICBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBjYXRlZ29yeS5wcm9kdWN0cyB9LFxuICAgICAgICBwdWJsaXNoZWQ6IHRydWUsXG4gICAgICAgIC4uLihvcHRpb25zPy5oYXNTdG9jayA/IHsgc3RvY2s6IHsgcXVhbnRpdHk6IHsgb3BlcmF0b3I6IFdoZXJlLkdULCB2YWx1ZTogMCB9IH0gfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAgJ2lkJyxcbiAgICAgICAgJ25hbWUnLFxuICAgICAgICAnc2x1ZycsXG4gICAgICAgICdpbWFnZXMnLFxuICAgICAgICAnbWluaWF0dXJlcycsXG4gICAgICAgICdwcmljZScsXG4gICAgICAgICdmdWxsUHJpY2UnLFxuICAgICAgICAnc3Vic2NyaWJlckRpc2NvdW50UGVyY2VudGFnZScsXG4gICAgICAgICdzdWJzY3JpYmVyUHJpY2UnLFxuICAgICAgICAnc3RvY2snLFxuICAgICAgICAncHVibGlzaGVkJyxcbiAgICAgICAgJ0NFU1QnLFxuICAgICAgICAnRUFOJyxcbiAgICAgICAgJ05DTScsXG4gICAgICAgICdicmFuZCcsXG4gICAgICAgICdjb3N0UHJpY2UnLFxuICAgICAgICAnaGFzVmFyaWFudHMnLFxuICAgICAgICAnaXNLaXQnLFxuICAgICAgICAnc2t1JyxcbiAgICAgICAgJ3JhdGUnLFxuICAgICAgICAndGFncycsXG4gICAgICAgICd0eXBlJyxcbiAgICAgICAgJ3Nob3BwaW5nQ291bnQnLFxuICAgICAgXSxcbiAgICAgIC4uLihvcHRpb25zPy5saW1pdCA/IHsgbGltaXRzOiB7IGxpbWl0OiBvcHRpb25zPy5saW1pdCB9IH0gOiB7fSksXG4gICAgfSlcblxuICAgIHByb2R1Y3RzLnB1c2goLi4ucHJvZHVjdHNEYXRhKVxuXG4gICAgcmV0dXJuIHByb2R1Y3RzXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldElkKGlkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghTnVtYmVyLmlzTmFOKCtpZCkpIHJldHVybiBpZFxuXG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmZpbmQoeyBmaWx0ZXJzOiB7IGZpcmVzdG9yZUlkOiBpZCB9IH0pXG5cbiAgICBpZiAoZGF0YT8uWzBdPy5pZCkgcmV0dXJuIGRhdGE/LlswXT8uaWRcblxuICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBDYXRlZ29yeSB3aXRoIGlkICR7aWR9IG5vdCBmb3VuZGApXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVByb2R1Y3RzKFxuICAgIGNhdGVnb3J5SWQ6IG51bWJlcixcbiAgICB7IHByb2R1Y3RzIH06IFBpY2s8VXBkYXRlUmVwb3NpdG9yeVBhcmFtczxDYXRlZ29yeUhhc3VyYUdyYXBoUUw+LCAncHJvZHVjdHMnPixcbiAgKTogUHJvbWlzZTxDYXRlZ29yeUhhc3VyYUdyYXBoUUxbJ3Byb2R1Y3RzJ10+IHtcbiAgICBpZiAoJ2FjdGlvbicgaW4gcHJvZHVjdHMgJiYgcHJvZHVjdHMuYWN0aW9uID09PSAncmVtb3ZlJykge1xuICAgICAgYXdhaXQgdGhpcy5tdXRhdGlvbignZGVsZXRlX2NhdGVnb3J5X3Byb2R1Y3QnLCBbJ2FmZmVjdGVkX3Jvd3MnXSwge1xuICAgICAgICB3aGVyZToge1xuICAgICAgICAgIHR5cGU6ICdjYXRlZ29yeV9wcm9kdWN0X2Jvb2xfZXhwJyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICB2YWx1ZTogeyBjYXRlZ29yeV9pZDogeyBfZXE6IGNhdGVnb3J5SWQgfSB9LFxuICAgICAgICB9LFxuICAgICAgfSlcblxuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuXG4gICAgY29uc3QgcGxhaW5EYXRhID0gdGhpcy5wYXJhbXNUb1BsYWluKHsgcHJvZHVjdHMgfSlcblxuICAgIGlmICghcGxhaW5EYXRhLnByb2R1Y3RzIHx8IHBsYWluRGF0YS5wcm9kdWN0cy5sZW5ndGggPD0gMCkgcmV0dXJuIFtdXG5cbiAgICBhd2FpdCB0aGlzLm11dGF0aW9uKCdkZWxldGVfY2F0ZWdvcnlfcHJvZHVjdCcsIFsnYWZmZWN0ZWRfcm93cyddLCB7XG4gICAgICB3aGVyZToge1xuICAgICAgICB0eXBlOiAnY2F0ZWdvcnlfcHJvZHVjdF9ib29sX2V4cCcsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB2YWx1ZTogeyBjYXRlZ29yeV9pZDogeyBfZXE6IGNhdGVnb3J5SWQgfSB9LFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgYXdhaXQgdGhpcy5tdXRhdGlvbignaW5zZXJ0X2NhdGVnb3J5X3Byb2R1Y3QnLCBbJ2FmZmVjdGVkX3Jvd3MnXSwge1xuICAgICAgb2JqZWN0czoge1xuICAgICAgICB0eXBlOiAnW2NhdGVnb3J5X3Byb2R1Y3RfaW5zZXJ0X2lucHV0IV0nLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IHBsYWluRGF0YS5wcm9kdWN0cy5tYXAoKHByb2R1Y3RJZCkgPT4gKHsgY2F0ZWdvcnlfaWQ6IGNhdGVnb3J5SWQsIHByb2R1Y3RfaWQ6IHByb2R1Y3RJZCB9KSksXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICByZXR1cm4gcGxhaW5EYXRhLnByb2R1Y3RzXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZU1ldGFkYXRhKFxuICAgIGNhdGVnb3J5SWQ6IG51bWJlcixcbiAgICB7IG1ldGFkYXRhIH06IFBpY2s8VXBkYXRlUmVwb3NpdG9yeVBhcmFtczxDYXRlZ29yeUhhc3VyYUdyYXBoUUw+LCAnbWV0YWRhdGEnPixcbiAgKTogUHJvbWlzZTxDYXRlZ29yeU1ldGFkYXRhPiB7XG4gICAgY29uc3QgcGxhaW5EYXRhID0gdGhpcy5wYXJhbXNUb1BsYWluKHsgbWV0YWRhdGEgfSlcblxuICAgIGlmICghcGxhaW5EYXRhLm1ldGFkYXRhKSByZXR1cm5cblxuICAgIGF3YWl0IHRoaXMubXV0YXRpb24oJ3VwZGF0ZV9jYXRlZ29yeV9tZXRhZGF0YV9ieV9waycsIFsnY2F0ZWdvcnlfaWQnXSwge1xuICAgICAgcGtfY29sdW1uczoge1xuICAgICAgICB2YWx1ZTogeyBjYXRlZ29yeV9pZDogY2F0ZWdvcnlJZCB9LFxuICAgICAgICB0eXBlOiAnY2F0ZWdvcnlfbWV0YWRhdGFfcGtfY29sdW1uc19pbnB1dCcsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIF9zZXQ6IHtcbiAgICAgICAgdmFsdWU6IG9taXQobWV0YWRhdGEsIFsnY2F0ZWdvcnlfaWQnXSksXG4gICAgICAgIHR5cGU6ICdjYXRlZ29yeV9tZXRhZGF0YV9zZXRfaW5wdXQnLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIHJldHVybiBwbGFpbkRhdGEubWV0YWRhdGFcbiAgfVxufVxuIl19
|