@vendure/core 2.0.0-next.0 → 2.0.0-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/common/configurable-operation-codec.js +2 -2
- package/dist/api/common/configurable-operation-codec.js.map +1 -1
- package/dist/api/config/configure-graphql-module.js +2 -0
- package/dist/api/config/configure-graphql-module.js.map +1 -1
- package/dist/api/config/generate-permissions.js +29 -4
- package/dist/api/config/generate-permissions.js.map +1 -1
- package/dist/api/decorators/relations.decorator.d.ts +102 -0
- package/dist/api/decorators/relations.decorator.js +185 -0
- package/dist/api/decorators/relations.decorator.js.map +1 -0
- package/dist/api/decorators/request-context.decorator.js +9 -2
- package/dist/api/decorators/request-context.decorator.js.map +1 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.js +1 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/middleware/transaction-interceptor.d.ts +9 -0
- package/dist/api/middleware/transaction-interceptor.js +16 -1
- package/dist/api/middleware/transaction-interceptor.js.map +1 -1
- package/dist/api/resolvers/admin/administrator.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/administrator.resolver.js +10 -6
- package/dist/api/resolvers/admin/administrator.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/asset.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/asset.resolver.js +10 -6
- package/dist/api/resolvers/admin/asset.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/collection.resolver.d.ts +5 -3
- package/dist/api/resolvers/admin/collection.resolver.js +25 -7
- package/dist/api/resolvers/admin/collection.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/country.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/country.resolver.js +10 -6
- package/dist/api/resolvers/admin/country.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/customer-group.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/customer-group.resolver.js +8 -4
- package/dist/api/resolvers/admin/customer-group.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/customer.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/customer.resolver.js +10 -6
- package/dist/api/resolvers/admin/customer.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/facet.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/facet.resolver.js +10 -6
- package/dist/api/resolvers/admin/facet.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/global-settings.resolver.js +1 -1
- package/dist/api/resolvers/admin/global-settings.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/order.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/order.resolver.js +10 -6
- package/dist/api/resolvers/admin/order.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/payment-method.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/payment-method.resolver.js +10 -6
- package/dist/api/resolvers/admin/payment-method.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/product-option.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/product-option.resolver.js +8 -4
- package/dist/api/resolvers/admin/product-option.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/product.resolver.d.ts +4 -3
- package/dist/api/resolvers/admin/product.resolver.js +16 -10
- package/dist/api/resolvers/admin/product.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/promotion.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/promotion.resolver.js +9 -6
- package/dist/api/resolvers/admin/promotion.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/role.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/role.resolver.js +10 -6
- package/dist/api/resolvers/admin/role.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/shipping-method.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/shipping-method.resolver.js +10 -6
- package/dist/api/resolvers/admin/shipping-method.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/tax-rate.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/tax-rate.resolver.js +10 -6
- package/dist/api/resolvers/admin/tax-rate.resolver.js.map +1 -1
- package/dist/api/resolvers/entity/collection-entity.resolver.d.ts +2 -1
- package/dist/api/resolvers/entity/collection-entity.resolver.js +5 -3
- package/dist/api/resolvers/entity/collection-entity.resolver.js.map +1 -1
- package/dist/api/resolvers/entity/customer-entity.resolver.d.ts +2 -1
- package/dist/api/resolvers/entity/customer-entity.resolver.js +5 -3
- package/dist/api/resolvers/entity/customer-entity.resolver.js.map +1 -1
- package/dist/api/resolvers/entity/order-line-entity.resolver.d.ts +6 -3
- package/dist/api/resolvers/entity/order-line-entity.resolver.js +19 -2
- package/dist/api/resolvers/entity/order-line-entity.resolver.js.map +1 -1
- package/dist/api/resolvers/entity/product-entity.resolver.d.ts +3 -2
- package/dist/api/resolvers/entity/product-entity.resolver.js +10 -6
- package/dist/api/resolvers/entity/product-entity.resolver.js.map +1 -1
- package/dist/api/resolvers/shop/shop-order.resolver.d.ts +4 -3
- package/dist/api/resolvers/shop/shop-order.resolver.js +16 -8
- package/dist/api/resolvers/shop/shop-order.resolver.js.map +1 -1
- package/dist/api/resolvers/shop/shop-products.resolver.d.ts +8 -8
- package/dist/api/resolvers/shop/shop-products.resolver.js +32 -21
- package/dist/api/resolvers/shop/shop-products.resolver.js.map +1 -1
- package/dist/api/schema/admin-api/collection-admin.type.graphql +1 -0
- package/dist/api/schema/admin-api/collection.api.graphql +9 -0
- package/dist/api/schema/admin-api/order.api.graphql +4 -0
- package/dist/api/schema/common/common-error-results.graphql +22 -0
- package/dist/api/schema/shop-api/shop-error-results.graphql +0 -29
- package/dist/bootstrap.js +8 -3
- package/dist/bootstrap.js.map +1 -1
- package/dist/common/calculated-decorator.d.ts +16 -3
- package/dist/common/calculated-decorator.js +3 -0
- package/dist/common/calculated-decorator.js.map +1 -1
- package/dist/common/constants.d.ts +1 -0
- package/dist/common/constants.js +2 -1
- package/dist/common/constants.js.map +1 -1
- package/dist/common/error/generated-graphql-admin-errors.d.ts +29 -0
- package/dist/common/error/generated-graphql-admin-errors.js +33 -2
- package/dist/common/error/generated-graphql-admin-errors.js.map +1 -1
- package/dist/common/finite-state-machine/finite-state-machine.js +2 -1
- package/dist/common/finite-state-machine/finite-state-machine.js.map +1 -1
- package/dist/common/types/entity-relation-paths.d.ts +1 -1
- package/dist/config/catalog/collection-filter.d.ts +32 -0
- package/dist/config/catalog/collection-filter.js +32 -0
- package/dist/config/catalog/collection-filter.js.map +1 -1
- package/dist/config/catalog/default-collection-filters.d.ts +42 -0
- package/dist/config/catalog/default-collection-filters.js +41 -8
- package/dist/config/catalog/default-collection-filters.js.map +1 -1
- package/dist/config/default-config.js +2 -0
- package/dist/config/default-config.js.map +1 -1
- package/dist/config/entity-metadata/add-foreign-key-indices.d.ts +12 -0
- package/dist/config/entity-metadata/add-foreign-key-indices.js +33 -0
- package/dist/config/entity-metadata/add-foreign-key-indices.js.map +1 -0
- package/dist/config/entity-metadata/entity-metadata-modifier.d.ts +55 -0
- package/dist/config/entity-metadata/entity-metadata-modifier.js +3 -0
- package/dist/config/entity-metadata/entity-metadata-modifier.js.map +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.js +2 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/promotion/index.d.ts +4 -0
- package/dist/config/promotion/index.js +4 -0
- package/dist/config/promotion/index.js.map +1 -1
- package/dist/config/shipping-method/shipping-calculator.d.ts +3 -3
- package/dist/config/shipping-method/shipping-calculator.js +2 -2
- package/dist/config/shipping-method/shipping-calculator.js.map +1 -1
- package/dist/config/shipping-method/shipping-eligibility-checker.d.ts +4 -4
- package/dist/config/shipping-method/shipping-eligibility-checker.js +5 -5
- package/dist/config/shipping-method/shipping-eligibility-checker.js.map +1 -1
- package/dist/config/vendure-config.d.ts +34 -0
- package/dist/connection/transaction-wrapper.d.ts +5 -1
- package/dist/connection/transaction-wrapper.js +9 -3
- package/dist/connection/transaction-wrapper.js.map +1 -1
- package/dist/connection/transactional-connection.d.ts +7 -3
- package/dist/connection/transactional-connection.js +8 -3
- package/dist/connection/transactional-connection.js.map +1 -1
- package/dist/data-import/providers/importer/importer.d.ts +3 -2
- package/dist/data-import/providers/importer/importer.js +13 -7
- package/dist/data-import/providers/importer/importer.js.map +1 -1
- package/dist/entity/address/address.entity.js +2 -0
- package/dist/entity/address/address.entity.js.map +1 -1
- package/dist/entity/asset/orderable-asset.entity.js +1 -0
- package/dist/entity/asset/orderable-asset.entity.js.map +1 -1
- package/dist/entity/authentication-method/authentication-method.entity.js +1 -0
- package/dist/entity/authentication-method/authentication-method.entity.js.map +1 -1
- package/dist/entity/channel/channel.entity.js +2 -0
- package/dist/entity/channel/channel.entity.js.map +1 -1
- package/dist/entity/collection/collection-translation.entity.js +1 -0
- package/dist/entity/collection/collection-translation.entity.js.map +1 -1
- package/dist/entity/collection/collection.entity.d.ts +4 -0
- package/dist/entity/collection/collection.entity.js +14 -20
- package/dist/entity/collection/collection.entity.js.map +1 -1
- package/dist/entity/country/country-translation.entity.js +1 -0
- package/dist/entity/country/country-translation.entity.js.map +1 -1
- package/dist/entity/facet/facet-translation.entity.js +1 -0
- package/dist/entity/facet/facet-translation.entity.js.map +1 -1
- package/dist/entity/facet-value/facet-value-translation.entity.js +1 -0
- package/dist/entity/facet-value/facet-value-translation.entity.js.map +1 -1
- package/dist/entity/facet-value/facet-value.entity.js +1 -0
- package/dist/entity/facet-value/facet-value.entity.js.map +1 -1
- package/dist/entity/history-entry/customer-history-entry.entity.js +1 -0
- package/dist/entity/history-entry/customer-history-entry.entity.js.map +1 -1
- package/dist/entity/history-entry/history-entry.entity.js +1 -0
- package/dist/entity/history-entry/history-entry.entity.js.map +1 -1
- package/dist/entity/history-entry/order-history-entry.entity.js +1 -0
- package/dist/entity/history-entry/order-history-entry.entity.js.map +1 -1
- package/dist/entity/order/order.entity.js +5 -2
- package/dist/entity/order/order.entity.js.map +1 -1
- package/dist/entity/order-item/order-item.entity.js +2 -0
- package/dist/entity/order-item/order-item.entity.js.map +1 -1
- package/dist/entity/order-line/order-line.entity.js +4 -0
- package/dist/entity/order-line/order-line.entity.js.map +1 -1
- package/dist/entity/order-modification/order-modification.entity.js +1 -0
- package/dist/entity/order-modification/order-modification.entity.js.map +1 -1
- package/dist/entity/payment/payment.entity.js +1 -0
- package/dist/entity/payment/payment.entity.js.map +1 -1
- package/dist/entity/product/product-translation.entity.js +1 -0
- package/dist/entity/product/product-translation.entity.js.map +1 -1
- package/dist/entity/product/product.entity.js +1 -0
- package/dist/entity/product/product.entity.js.map +1 -1
- package/dist/entity/product-option/product-option-translation.entity.js +1 -0
- package/dist/entity/product-option/product-option-translation.entity.js.map +1 -1
- package/dist/entity/product-option/product-option.entity.js +1 -0
- package/dist/entity/product-option/product-option.entity.js.map +1 -1
- package/dist/entity/product-option-group/product-option-group-translation.entity.js +1 -0
- package/dist/entity/product-option-group/product-option-group-translation.entity.js.map +1 -1
- package/dist/entity/product-option-group/product-option-group.entity.js +1 -0
- package/dist/entity/product-option-group/product-option-group.entity.js.map +1 -1
- package/dist/entity/product-variant/product-variant-price.entity.js +1 -0
- package/dist/entity/product-variant/product-variant-price.entity.js.map +1 -1
- package/dist/entity/product-variant/product-variant-translation.entity.js +1 -0
- package/dist/entity/product-variant/product-variant-translation.entity.js.map +1 -1
- package/dist/entity/product-variant/product-variant.entity.js +3 -0
- package/dist/entity/product-variant/product-variant.entity.js.map +1 -1
- package/dist/entity/refund/refund.entity.js +1 -0
- package/dist/entity/refund/refund.entity.js.map +1 -1
- package/dist/entity/run-entity-metadata-modifiers.d.ts +2 -0
- package/dist/entity/run-entity-metadata-modifiers.js +15 -0
- package/dist/entity/run-entity-metadata-modifiers.js.map +1 -0
- package/dist/entity/session/authenticated-session.entity.js +1 -0
- package/dist/entity/session/authenticated-session.entity.js.map +1 -1
- package/dist/entity/session/session.entity.js +2 -0
- package/dist/entity/session/session.entity.js.map +1 -1
- package/dist/entity/shipping-line/shipping-line.entity.js +2 -0
- package/dist/entity/shipping-line/shipping-line.entity.js.map +1 -1
- package/dist/entity/shipping-method/shipping-method-translation.entity.js +1 -0
- package/dist/entity/shipping-method/shipping-method-translation.entity.js.map +1 -1
- package/dist/entity/shipping-method/shipping-method.entity.js +2 -2
- package/dist/entity/shipping-method/shipping-method.entity.js.map +1 -1
- package/dist/entity/stock-movement/allocation.entity.js +1 -0
- package/dist/entity/stock-movement/allocation.entity.js.map +1 -1
- package/dist/entity/stock-movement/cancellation.entity.js.map +1 -1
- package/dist/entity/stock-movement/release.entity.js +1 -0
- package/dist/entity/stock-movement/release.entity.js.map +1 -1
- package/dist/entity/stock-movement/sale.entity.js.map +1 -1
- package/dist/entity/stock-movement/stock-movement.entity.js +1 -0
- package/dist/entity/stock-movement/stock-movement.entity.js.map +1 -1
- package/dist/entity/surcharge/surcharge.entity.js +2 -0
- package/dist/entity/surcharge/surcharge.entity.js.map +1 -1
- package/dist/entity/tax-rate/tax-rate.entity.js +3 -0
- package/dist/entity/tax-rate/tax-rate.entity.js.map +1 -1
- package/dist/event-bus/event-bus.js +12 -3
- package/dist/event-bus/event-bus.js.map +1 -1
- package/dist/plugin/default-search-plugin/default-search-plugin.d.ts +9 -3
- package/dist/plugin/default-search-plugin/default-search-plugin.js +25 -2
- package/dist/plugin/default-search-plugin/default-search-plugin.js.map +1 -1
- package/dist/plugin/default-search-plugin/fulltext-search.service.d.ts +3 -1
- package/dist/plugin/default-search-plugin/fulltext-search.service.js +27 -19
- package/dist/plugin/default-search-plugin/fulltext-search.service.js.map +1 -1
- package/dist/plugin/default-search-plugin/search-strategy/mysql-search-strategy.d.ts +4 -4
- package/dist/plugin/default-search-plugin/search-strategy/mysql-search-strategy.js +7 -3
- package/dist/plugin/default-search-plugin/search-strategy/mysql-search-strategy.js.map +1 -1
- package/dist/plugin/default-search-plugin/search-strategy/postgres-search-strategy.d.ts +4 -4
- package/dist/plugin/default-search-plugin/search-strategy/postgres-search-strategy.js +7 -3
- package/dist/plugin/default-search-plugin/search-strategy/postgres-search-strategy.js.map +1 -1
- package/dist/plugin/default-search-plugin/search-strategy/search-strategy.d.ts +2 -1
- package/dist/plugin/default-search-plugin/search-strategy/sqlite-search-strategy.d.ts +4 -4
- package/dist/plugin/default-search-plugin/search-strategy/sqlite-search-strategy.js +7 -3
- package/dist/plugin/default-search-plugin/search-strategy/sqlite-search-strategy.js.map +1 -1
- package/dist/plugin/default-search-plugin/types.d.ts +84 -0
- package/dist/service/helpers/list-query-builder/list-query-builder.d.ts +29 -1
- package/dist/service/helpers/list-query-builder/list-query-builder.js +116 -17
- package/dist/service/helpers/list-query-builder/list-query-builder.js.map +1 -1
- package/dist/service/helpers/list-query-builder/parse-channel-param.d.ts +1 -1
- package/dist/service/helpers/list-query-builder/parse-channel-param.js +2 -2
- package/dist/service/helpers/list-query-builder/parse-channel-param.js.map +1 -1
- package/dist/service/helpers/list-query-builder/parse-filter-params.d.ts +1 -1
- package/dist/service/helpers/list-query-builder/parse-filter-params.js +3 -2
- package/dist/service/helpers/list-query-builder/parse-filter-params.js.map +1 -1
- package/dist/service/helpers/list-query-builder/parse-sort-params.d.ts +1 -1
- package/dist/service/helpers/list-query-builder/parse-sort-params.js +4 -3
- package/dist/service/helpers/list-query-builder/parse-sort-params.js.map +1 -1
- package/dist/service/helpers/order-calculator/prorate.js +1 -1
- package/dist/service/helpers/order-calculator/prorate.js.map +1 -1
- package/dist/service/helpers/order-modifier/order-modifier.d.ts +8 -1
- package/dist/service/helpers/order-modifier/order-modifier.js +80 -3
- package/dist/service/helpers/order-modifier/order-modifier.js.map +1 -1
- package/dist/service/helpers/slug-validator/slug-validator.js +15 -6
- package/dist/service/helpers/slug-validator/slug-validator.js.map +1 -1
- package/dist/service/helpers/utils/order-utils.js +1 -1
- package/dist/service/helpers/utils/order-utils.js.map +1 -1
- package/dist/service/helpers/utils/translate-entity.js +1 -2
- package/dist/service/helpers/utils/translate-entity.js.map +1 -1
- package/dist/service/index.d.ts +1 -0
- package/dist/service/index.js +1 -0
- package/dist/service/index.js.map +1 -1
- package/dist/service/services/administrator.service.d.ts +4 -3
- package/dist/service/services/administrator.service.js +6 -5
- package/dist/service/services/administrator.service.js.map +1 -1
- package/dist/service/services/asset.service.d.ts +3 -2
- package/dist/service/services/asset.service.js +6 -4
- package/dist/service/services/asset.service.js.map +1 -1
- package/dist/service/services/collection.service.d.ts +13 -5
- package/dist/service/services/collection.service.js +55 -12
- package/dist/service/services/collection.service.js.map +1 -1
- package/dist/service/services/country.service.d.ts +3 -2
- package/dist/service/services/country.service.js +4 -4
- package/dist/service/services/country.service.js.map +1 -1
- package/dist/service/services/customer-group.service.d.ts +6 -3
- package/dist/service/services/customer-group.service.js +12 -7
- package/dist/service/services/customer-group.service.js.map +1 -1
- package/dist/service/services/customer.service.d.ts +3 -2
- package/dist/service/services/customer.service.js +3 -3
- package/dist/service/services/customer.service.js.map +1 -1
- package/dist/service/services/facet.service.d.ts +3 -2
- package/dist/service/services/facet.service.js +10 -6
- package/dist/service/services/facet.service.js.map +1 -1
- package/dist/service/services/order.service.d.ts +20 -4
- package/dist/service/services/order.service.js +107 -59
- package/dist/service/services/order.service.js.map +1 -1
- package/dist/service/services/payment-method.service.d.ts +3 -2
- package/dist/service/services/payment-method.service.js +6 -4
- package/dist/service/services/payment-method.service.js.map +1 -1
- package/dist/service/services/product-option-group.service.d.ts +3 -2
- package/dist/service/services/product-option-group.service.js +4 -4
- package/dist/service/services/product-option-group.service.js.map +1 -1
- package/dist/service/services/product-variant.service.d.ts +11 -3
- package/dist/service/services/product-variant.service.js +53 -40
- package/dist/service/services/product-variant.service.js.map +1 -1
- package/dist/service/services/product.service.d.ts +5 -4
- package/dist/service/services/product.service.js +18 -8
- package/dist/service/services/product.service.js.map +1 -1
- package/dist/service/services/promotion.service.d.ts +3 -2
- package/dist/service/services/promotion.service.js +6 -4
- package/dist/service/services/promotion.service.js.map +1 -1
- package/dist/service/services/role.service.d.ts +3 -2
- package/dist/service/services/role.service.js +4 -4
- package/dist/service/services/role.service.js.map +1 -1
- package/dist/service/services/shipping-method.service.d.ts +3 -2
- package/dist/service/services/shipping-method.service.js +4 -4
- package/dist/service/services/shipping-method.service.js.map +1 -1
- package/dist/service/services/tax-rate.service.d.ts +3 -2
- package/dist/service/services/tax-rate.service.js +4 -4
- package/dist/service/services/tax-rate.service.js.map +1 -1
- package/dist/service/services/zone.service.d.ts +2 -2
- package/dist/service/services/zone.service.js +2 -2
- package/dist/service/services/zone.service.js.map +1 -1
- package/package.json +4 -3
|
@@ -35,7 +35,7 @@ let ConfigurableOperationCodec = class ConfigurableOperationCodec {
|
|
|
35
35
|
}
|
|
36
36
|
for (const arg of operationInput.arguments) {
|
|
37
37
|
const argDef = def.args[arg.name];
|
|
38
|
-
if (argDef.type === 'ID' && arg.value) {
|
|
38
|
+
if (argDef && argDef.type === 'ID' && arg.value) {
|
|
39
39
|
if (argDef.list === true) {
|
|
40
40
|
const ids = JSON.parse(arg.value);
|
|
41
41
|
const decodedIds = ids.map(id => this.idCodecService.decode(id));
|
|
@@ -62,7 +62,7 @@ let ConfigurableOperationCodec = class ConfigurableOperationCodec {
|
|
|
62
62
|
}
|
|
63
63
|
for (const arg of operationInput.args) {
|
|
64
64
|
const argDef = def.args[arg.name];
|
|
65
|
-
if (argDef.type === 'ID' && arg.value) {
|
|
65
|
+
if (argDef && argDef.type === 'ID' && arg.value) {
|
|
66
66
|
if (argDef.list === true) {
|
|
67
67
|
const ids = JSON.parse(arg.value);
|
|
68
68
|
const encodedIds = ids.map(id => this.idCodecService.encode(id));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configurable-operation-codec.js","sourceRoot":"","sources":["../../../src/api/common/configurable-operation-codec.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAK5C,sDAAgE;AAChE,yCAMsB;AACtB,8EAA0E;AAC1E,gEAA4D;AAC5D,gHAA0G;AAC1G,wFAAmF;AAEnF,yDAAoD;AAGpD,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;IACnC,YAAoB,aAA4B,EAAU,cAA8B;QAApE,kBAAa,GAAb,aAAa,CAAe;QAAU,mBAAc,GAAd,cAAc,CAAgB;IAAG,CAAC;IAE5F;;OAEG;IACH,8BAA8B,CAC1B,OAA4C,EAC5C,KAAmC;QAEnC,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC3D,KAAK,MAAM,cAAc,IAAI,KAAK,EAAE;YAChC,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;YACpE,IAAI,CAAC,GAAG,EAAE;gBACN,SAAS;aACZ;YACD,KAAK,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE;gBACxC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAClC,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE;
|
|
1
|
+
{"version":3,"file":"configurable-operation-codec.js","sourceRoot":"","sources":["../../../src/api/common/configurable-operation-codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,7 @@ function configureGraphQLModule(getOptions) {
|
|
|
49
49
|
}
|
|
50
50
|
exports.configureGraphQLModule = configureGraphQLModule;
|
|
51
51
|
async function createGraphQLOptions(i18nService, configService, idCodecService, typesLoader, customFieldRelationResolverService, options) {
|
|
52
|
+
var _a;
|
|
52
53
|
const builtSchema = await buildSchemaForApi(options.apiType);
|
|
53
54
|
const resolvers = (0, generate_resolvers_1.generateResolvers)(configService, customFieldRelationResolverService, options.apiType, builtSchema);
|
|
54
55
|
return {
|
|
@@ -73,6 +74,7 @@ async function createGraphQLOptions(i18nService, configService, idCodecService,
|
|
|
73
74
|
...configService.apiOptions.apolloServerPlugins,
|
|
74
75
|
],
|
|
75
76
|
validationRules: options.validationRules,
|
|
77
|
+
introspection: (_a = configService.apiOptions.introspection) !== null && _a !== void 0 ? _a : true,
|
|
76
78
|
};
|
|
77
79
|
/**
|
|
78
80
|
* Generates the server's GraphQL schema by combining:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure-graphql-module.js","sourceRoot":"","sources":["../../../src/api/config/configure-graphql-module.ts"],"names":[],"mappings":";;;;;;AAAA,2CAA8C;AAE9C,6CAAsF;AACtF,mEAAsE;AACtE,2DAAoF;AACpF,qCAAmG;AACnG,gDAAwB;AAExB,8DAA0D;AAC1D,gEAA4D;AAC5D,wDAAoD;AACpD,0DAAsD;AAEtD,kEAAsE;AACtE,iEAA6D;AAC7D,kEAAyE;AACzE,6GAAsG;AACtG,iEAA4D;AAC5D,qFAAgF;AAChF,mEAA8D;AAC9D,mFAA8E;AAE9E,+DAAoE;AACpE,yEAAmE;AACnE,mEAA8D;AAC9D,iEAAgE;AAChE,6DAAyD;AACzD,mEASiC;AAajC;;GAEG;AACH,SAAgB,sBAAsB,CAClC,UAA+D;IAE/D,OAAO,uBAAa,CAAC,YAAY,CAAC;QAC9B,MAAM,EAAE,qBAAY;QACpB,UAAU,EAAE,CACR,aAA4B,EAC5B,WAAwB,EACxB,cAA8B,EAC9B,WAA+B,EAC/B,kCAAsE,EACxE,EAAE;YACA,OAAO,oBAAoB,CACvB,WAAW,EACX,aAAa,EACb,cAAc,EACd,WAAW,EACX,kCAAkC,EAClC,UAAU,CAAC,aAAa,CAAC,CAC5B,CAAC;QACN,CAAC;QACD,MAAM,EAAE;YACJ,8BAAa;YACb,0BAAW;YACX,iCAAc;YACd,4BAAkB;YAClB,2EAAkC;SACrC;QACD,OAAO,EAAE,CAAC,4BAAY,EAAE,wBAAU,EAAE,sCAAe,EAAE,8BAAa,CAAC;KACtE,CAAC,CAAC;AACP,CAAC;AA9BD,wDA8BC;AAED,KAAK,UAAU,oBAAoB,CAC/B,WAAwB,EACxB,aAA4B,EAC5B,cAA8B,EAC9B,WAA+B,EAC/B,kCAAsE,EACtE,OAA0B
|
|
1
|
+
{"version":3,"file":"configure-graphql-module.js","sourceRoot":"","sources":["../../../src/api/config/configure-graphql-module.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,35 @@ exports.generatePermissionEnum = void 0;
|
|
|
4
4
|
const stitch_1 = require("@graphql-tools/stitch");
|
|
5
5
|
const graphql_1 = require("graphql");
|
|
6
6
|
const constants_1 = require("../../common/constants");
|
|
7
|
-
const PERMISSION_DESCRIPTION = `@description
|
|
8
|
-
Permissions for administrators and customers. Used to control access to
|
|
9
|
-
GraphQL resolvers via the {@link Allow} decorator.
|
|
10
|
-
|
|
7
|
+
const PERMISSION_DESCRIPTION = `@description
|
|
8
|
+
Permissions for administrators and customers. Used to control access to
|
|
9
|
+
GraphQL resolvers via the {@link Allow} decorator.
|
|
10
|
+
|
|
11
|
+
## Understanding Permission.Owner
|
|
12
|
+
|
|
13
|
+
\`Permission.Owner\` is a special permission which is used in some of the Vendure resolvers to indicate that that resolver should only
|
|
14
|
+
be accessible to the "owner" of that resource.
|
|
15
|
+
|
|
16
|
+
For example, the Shop API \`activeCustomer\` query resolver should only return the Customer object for the "owner" of that Customer, i.e.
|
|
17
|
+
based on the activeUserId of the current session. As a result, the resolver code looks like this:
|
|
18
|
+
|
|
19
|
+
@example
|
|
20
|
+
\`\`\`TypeScript
|
|
21
|
+
\\@Query()
|
|
22
|
+
\\@Allow(Permission.Owner)
|
|
23
|
+
async activeCustomer(\\@Ctx() ctx: RequestContext): Promise<Customer | undefined> {
|
|
24
|
+
const userId = ctx.activeUserId;
|
|
25
|
+
if (userId) {
|
|
26
|
+
return this.customerService.findOneByUserId(ctx, userId);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
\`\`\`
|
|
30
|
+
|
|
31
|
+
Here we can see that the "ownership" must be enforced by custom logic inside the resolver. Since "ownership" cannot be defined generally
|
|
32
|
+
nor statically encoded at build-time, any resolvers using \`Permission.Owner\` **must** include logic to enforce that only the owner
|
|
33
|
+
of the resource has access. If not, then it is the equivalent of using \`Permission.Public\`.
|
|
34
|
+
|
|
35
|
+
|
|
11
36
|
@docsCategory common`;
|
|
12
37
|
/**
|
|
13
38
|
* Generates the `Permission` GraphQL enum based on the default & custom permission definitions.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-permissions.js","sourceRoot":"","sources":["../../../src/api/config/generate-permissions.ts"],"names":[],"mappings":";;;AAAA,kDAAuE;AACvE,qCAAyD;AAGzD,sDAAmE;AAGnE,MAAM,sBAAsB,GAAG
|
|
1
|
+
{"version":3,"file":"generate-permissions.js","sourceRoot":"","sources":["../../../src/api/config/generate-permissions.ts"],"names":[],"mappings":";;;AAAA,kDAAuE;AACvE,qCAAyD;AAGzD,sDAAmE;AAGnE,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA6BV,CAAC;AAEtB;;GAEG;AACH,SAAgB,sBAAsB,CAClC,MAAqB,EACrB,iBAAyC;IAEzC,MAAM,sBAAsB,GAAG,IAAA,qCAAyB,EAAC,iBAAiB,CAAC,CAAC;IAC5E,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,KAAK,IAAI,sBAAsB,EAAE;QACxC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG;YACjB,KAAK,EAAE,CAAC;YACR,WAAW,EAAE,KAAK,CAAC,WAAW;SACjC,CAAC;QACF,CAAC,EAAE,CAAC;KACP;IAED,MAAM,eAAe,GAAG,IAAI,yBAAe,CAAC;QACxC,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,sBAAsB;QACnC,MAAM;KACT,CAAC,CAAC;IAEH,OAAO,IAAA,sBAAa,EAAC;QACjB,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,KAAK,EAAE,CAAC,eAAe,CAAC;QACxB,kBAAkB,EAAE,EAAE,kBAAkB,EAAE,EAAE,eAAe,EAAE,wBAAe,CAAC,GAAG,EAAE,EAAE;KACvF,CAAC,CAAC;AACP,CAAC;AA1BD,wDA0BC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Type } from '@vendure/common/lib/shared-types';
|
|
2
|
+
import { EntityRelationPaths } from '../../common/index';
|
|
3
|
+
import { VendureEntity } from '../../entity/index';
|
|
4
|
+
export declare type RelationPaths<T extends VendureEntity> = Array<EntityRelationPaths<T>>;
|
|
5
|
+
export declare type FieldsDecoratorConfig = Type<VendureEntity> | {
|
|
6
|
+
entity: Type<VendureEntity>;
|
|
7
|
+
depth: number;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* @description
|
|
11
|
+
* Resolver param decorator which returns an array of relation paths which can be passed through
|
|
12
|
+
* to the TypeORM data layer in order to join only the required relations. This works by inspecting
|
|
13
|
+
* the GraphQL `info` object, examining the field selection, and then comparing this with information
|
|
14
|
+
* about the return type's relations.
|
|
15
|
+
*
|
|
16
|
+
* In addition to analyzing the field selection, this decorator also checks for any `@Calculated()`
|
|
17
|
+
* properties on the entity, and additionally includes relations from the `relations` array of the calculated
|
|
18
|
+
* metadata, if defined.
|
|
19
|
+
*
|
|
20
|
+
* So if, for example, the query only selects the `id` field of an Order, then no other relations need
|
|
21
|
+
* be joined in the resulting SQL query. This can massively speed up execution time for queries which do
|
|
22
|
+
* not include many deep nested relations.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```TypeScript
|
|
26
|
+
* \@Query()
|
|
27
|
+
* \@Allow(Permission.ReadOrder)
|
|
28
|
+
* orders(
|
|
29
|
+
* \@Ctx() ctx: RequestContext,
|
|
30
|
+
* \@Args() args: QueryOrdersArgs,
|
|
31
|
+
* \@Relations(Order) relations: RelationPaths<Order>,
|
|
32
|
+
* ): Promise<PaginatedList<Order>> {
|
|
33
|
+
* return this.orderService.findAll(ctx, args.options || undefined, relations);
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* In the above example, given the following query:
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```GraphQL
|
|
41
|
+
* {
|
|
42
|
+
* orders(options: { take: 10 }) {
|
|
43
|
+
* items {
|
|
44
|
+
* id
|
|
45
|
+
* customer {
|
|
46
|
+
* id
|
|
47
|
+
* firstName
|
|
48
|
+
* lastName
|
|
49
|
+
* }
|
|
50
|
+
* totalQuantity
|
|
51
|
+
* totalWithTax
|
|
52
|
+
* }
|
|
53
|
+
* }
|
|
54
|
+
* }
|
|
55
|
+
* ```
|
|
56
|
+
* then the value of `relations` will be
|
|
57
|
+
*
|
|
58
|
+
* ```
|
|
59
|
+
* ['customer', 'lines', 'lines.items']
|
|
60
|
+
* ```
|
|
61
|
+
* The `'customer'` comes from the fact that the query is nesting the "customer" object, and the `'lines'` & `'lines.items'` are taken
|
|
62
|
+
* from the `Order` entity's `totalQuantity` property, which uses {@link Calculated} decorator and defines those relations as dependencies
|
|
63
|
+
* for deriving the calculated value.
|
|
64
|
+
*
|
|
65
|
+
* ## Depth
|
|
66
|
+
*
|
|
67
|
+
* By default, when inspecting the GraphQL query, the Relations decorator will look 3 levels deep in any nested fields. So, e.g. if
|
|
68
|
+
* the above `orders` query were changed to:
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```GraphQL
|
|
72
|
+
* {
|
|
73
|
+
* orders(options: { take: 10 }) {
|
|
74
|
+
* items {
|
|
75
|
+
* id
|
|
76
|
+
* lines {
|
|
77
|
+
* productVariant {
|
|
78
|
+
* product {
|
|
79
|
+
* featuredAsset {
|
|
80
|
+
* preview
|
|
81
|
+
* }
|
|
82
|
+
* }
|
|
83
|
+
* }
|
|
84
|
+
* }
|
|
85
|
+
* }
|
|
86
|
+
* }
|
|
87
|
+
* }
|
|
88
|
+
* ```
|
|
89
|
+
* then the `relations` array would include `'lines'`, `'lines.productVariant'`, & `'lines.productVariant.product'` - 3 levels deep - but it would
|
|
90
|
+
* _not_ include `'lines.productVariant.product.featuredAsset'` since that exceeds the default depth. To specify a custom depth, you would
|
|
91
|
+
* use the decorator like this:
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```TypeScript
|
|
95
|
+
* \@Relations({ entity: Order, depth: 2 }) relations: RelationPaths<Order>,
|
|
96
|
+
* ```
|
|
97
|
+
*
|
|
98
|
+
* @docsCategory request
|
|
99
|
+
* @docsPage Api Decorator
|
|
100
|
+
* @since 1.6.0
|
|
101
|
+
*/
|
|
102
|
+
export declare const Relations: (...dataOrPipes: (FieldsDecoratorConfig | import("@nestjs/common").PipeTransform<any, any> | import("@nestjs/common").Type<import("@nestjs/common").PipeTransform<any, any>>)[]) => ParameterDecorator;
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Relations = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const unique_1 = require("@vendure/common/lib/unique");
|
|
6
|
+
const graphql_1 = require("graphql");
|
|
7
|
+
const typeorm_1 = require("typeorm");
|
|
8
|
+
const calculated_decorator_1 = require("../../common/calculated-decorator");
|
|
9
|
+
const index_1 = require("../../common/index");
|
|
10
|
+
// tslint:disable-next-line:no-var-requires
|
|
11
|
+
const graphqlFields = require('graphql-fields');
|
|
12
|
+
const DEFAULT_DEPTH = 3;
|
|
13
|
+
const cache = new index_1.TtlCache({ cacheSize: 500, ttl: 5 * 60 * 1000 });
|
|
14
|
+
/**
|
|
15
|
+
* @description
|
|
16
|
+
* Resolver param decorator which returns an array of relation paths which can be passed through
|
|
17
|
+
* to the TypeORM data layer in order to join only the required relations. This works by inspecting
|
|
18
|
+
* the GraphQL `info` object, examining the field selection, and then comparing this with information
|
|
19
|
+
* about the return type's relations.
|
|
20
|
+
*
|
|
21
|
+
* In addition to analyzing the field selection, this decorator also checks for any `@Calculated()`
|
|
22
|
+
* properties on the entity, and additionally includes relations from the `relations` array of the calculated
|
|
23
|
+
* metadata, if defined.
|
|
24
|
+
*
|
|
25
|
+
* So if, for example, the query only selects the `id` field of an Order, then no other relations need
|
|
26
|
+
* be joined in the resulting SQL query. This can massively speed up execution time for queries which do
|
|
27
|
+
* not include many deep nested relations.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```TypeScript
|
|
31
|
+
* \@Query()
|
|
32
|
+
* \@Allow(Permission.ReadOrder)
|
|
33
|
+
* orders(
|
|
34
|
+
* \@Ctx() ctx: RequestContext,
|
|
35
|
+
* \@Args() args: QueryOrdersArgs,
|
|
36
|
+
* \@Relations(Order) relations: RelationPaths<Order>,
|
|
37
|
+
* ): Promise<PaginatedList<Order>> {
|
|
38
|
+
* return this.orderService.findAll(ctx, args.options || undefined, relations);
|
|
39
|
+
* }
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* In the above example, given the following query:
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```GraphQL
|
|
46
|
+
* {
|
|
47
|
+
* orders(options: { take: 10 }) {
|
|
48
|
+
* items {
|
|
49
|
+
* id
|
|
50
|
+
* customer {
|
|
51
|
+
* id
|
|
52
|
+
* firstName
|
|
53
|
+
* lastName
|
|
54
|
+
* }
|
|
55
|
+
* totalQuantity
|
|
56
|
+
* totalWithTax
|
|
57
|
+
* }
|
|
58
|
+
* }
|
|
59
|
+
* }
|
|
60
|
+
* ```
|
|
61
|
+
* then the value of `relations` will be
|
|
62
|
+
*
|
|
63
|
+
* ```
|
|
64
|
+
* ['customer', 'lines', 'lines.items']
|
|
65
|
+
* ```
|
|
66
|
+
* The `'customer'` comes from the fact that the query is nesting the "customer" object, and the `'lines'` & `'lines.items'` are taken
|
|
67
|
+
* from the `Order` entity's `totalQuantity` property, which uses {@link Calculated} decorator and defines those relations as dependencies
|
|
68
|
+
* for deriving the calculated value.
|
|
69
|
+
*
|
|
70
|
+
* ## Depth
|
|
71
|
+
*
|
|
72
|
+
* By default, when inspecting the GraphQL query, the Relations decorator will look 3 levels deep in any nested fields. So, e.g. if
|
|
73
|
+
* the above `orders` query were changed to:
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```GraphQL
|
|
77
|
+
* {
|
|
78
|
+
* orders(options: { take: 10 }) {
|
|
79
|
+
* items {
|
|
80
|
+
* id
|
|
81
|
+
* lines {
|
|
82
|
+
* productVariant {
|
|
83
|
+
* product {
|
|
84
|
+
* featuredAsset {
|
|
85
|
+
* preview
|
|
86
|
+
* }
|
|
87
|
+
* }
|
|
88
|
+
* }
|
|
89
|
+
* }
|
|
90
|
+
* }
|
|
91
|
+
* }
|
|
92
|
+
* }
|
|
93
|
+
* ```
|
|
94
|
+
* then the `relations` array would include `'lines'`, `'lines.productVariant'`, & `'lines.productVariant.product'` - 3 levels deep - but it would
|
|
95
|
+
* _not_ include `'lines.productVariant.product.featuredAsset'` since that exceeds the default depth. To specify a custom depth, you would
|
|
96
|
+
* use the decorator like this:
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```TypeScript
|
|
100
|
+
* \@Relations({ entity: Order, depth: 2 }) relations: RelationPaths<Order>,
|
|
101
|
+
* ```
|
|
102
|
+
*
|
|
103
|
+
* @docsCategory request
|
|
104
|
+
* @docsPage Api Decorator
|
|
105
|
+
* @since 1.6.0
|
|
106
|
+
*/
|
|
107
|
+
exports.Relations = (0, common_1.createParamDecorator)((data, ctx) => {
|
|
108
|
+
var _a;
|
|
109
|
+
const info = ctx.getArgByIndex(3);
|
|
110
|
+
if (data == null) {
|
|
111
|
+
throw new index_1.InternalServerError(`The @Relations() decorator requires an entity type argument`);
|
|
112
|
+
}
|
|
113
|
+
if (!isGraphQLResolveInfo(info)) {
|
|
114
|
+
return [];
|
|
115
|
+
}
|
|
116
|
+
const cacheKey = info.fieldName + '__' + ctx.getArgByIndex(2).req.body.query;
|
|
117
|
+
const cachedResult = cache.get(cacheKey);
|
|
118
|
+
if (cachedResult) {
|
|
119
|
+
return cachedResult;
|
|
120
|
+
}
|
|
121
|
+
const fields = graphqlFields(info);
|
|
122
|
+
const targetFields = isPaginatedListQuery(info) ? (_a = fields.items) !== null && _a !== void 0 ? _a : {} : fields;
|
|
123
|
+
const entity = typeof data === 'function' ? data : data.entity;
|
|
124
|
+
const maxDepth = typeof data === 'function' ? DEFAULT_DEPTH : data.depth;
|
|
125
|
+
const relationFields = getRelationPaths(targetFields, entity, maxDepth);
|
|
126
|
+
const result = (0, unique_1.unique)(relationFields);
|
|
127
|
+
cache.set(cacheKey, result);
|
|
128
|
+
return result;
|
|
129
|
+
});
|
|
130
|
+
function getRelationPaths(fields, entity, maxDepth, depth = 1) {
|
|
131
|
+
var _a, _b;
|
|
132
|
+
const relations = (0, typeorm_1.getMetadataArgsStorage)().filterRelations(entity);
|
|
133
|
+
const metadata = (0, typeorm_1.getMetadataArgsStorage)();
|
|
134
|
+
const relationPaths = [];
|
|
135
|
+
for (const [property, value] of Object.entries(fields)) {
|
|
136
|
+
if (property === 'customFields') {
|
|
137
|
+
const customFieldEntity = (_a = metadata
|
|
138
|
+
.filterEmbeddeds(entity)
|
|
139
|
+
.find(e => e.propertyName === 'customFields')) === null || _a === void 0 ? void 0 : _a.type();
|
|
140
|
+
if (customFieldEntity) {
|
|
141
|
+
if (depth < maxDepth) {
|
|
142
|
+
depth++;
|
|
143
|
+
const subPaths = getRelationPaths(value, customFieldEntity, maxDepth, depth);
|
|
144
|
+
depth--;
|
|
145
|
+
for (const subPath of subPaths) {
|
|
146
|
+
relationPaths.push([property, subPath].join('.'));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
const relationMetadata = relations.find(r => r.propertyName === property);
|
|
153
|
+
if (relationMetadata) {
|
|
154
|
+
relationPaths.push(property);
|
|
155
|
+
const relatedEntity = typeof relationMetadata.type === 'function'
|
|
156
|
+
? relationMetadata.type()
|
|
157
|
+
: relationMetadata.type;
|
|
158
|
+
if (depth < maxDepth) {
|
|
159
|
+
depth++;
|
|
160
|
+
const subPaths = getRelationPaths(value, relatedEntity, maxDepth, depth);
|
|
161
|
+
depth--;
|
|
162
|
+
for (const subPath of subPaths) {
|
|
163
|
+
relationPaths.push([property, subPath].join('.'));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
const calculatedProperties = (_b = Object.getPrototypeOf(new entity())[calculated_decorator_1.CALCULATED_PROPERTIES]) !== null && _b !== void 0 ? _b : [];
|
|
168
|
+
const selectedFields = new Set(Object.keys(fields));
|
|
169
|
+
const dependencyRelations = calculatedProperties
|
|
170
|
+
.filter(p => { var _a, _b; return selectedFields.has(p.name) && ((_b = (_a = p.listQuery) === null || _a === void 0 ? void 0 : _a.relations) === null || _b === void 0 ? void 0 : _b.length); })
|
|
171
|
+
.map(p => { var _a, _b; return (_b = (_a = p.listQuery) === null || _a === void 0 ? void 0 : _a.relations) !== null && _b !== void 0 ? _b : []; })
|
|
172
|
+
.flat();
|
|
173
|
+
relationPaths.push(...dependencyRelations);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return relationPaths;
|
|
177
|
+
}
|
|
178
|
+
function isGraphQLResolveInfo(input) {
|
|
179
|
+
return !!(input && typeof input === 'object' && input.schema instanceof graphql_1.GraphQLSchema);
|
|
180
|
+
}
|
|
181
|
+
function isPaginatedListQuery(info) {
|
|
182
|
+
const returnType = (0, graphql_1.getNamedType)(info.returnType);
|
|
183
|
+
return (0, graphql_1.isObjectType)(returnType) && !!returnType.getInterfaces().find(i => i.name === 'PaginatedList');
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=relations.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relations.decorator.js","sourceRoot":"","sources":["../../../src/api/decorators/relations.decorator.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,13 +20,20 @@ const constants_1 = require("../../common/constants");
|
|
|
20
20
|
* @docsPage Ctx Decorator
|
|
21
21
|
*/
|
|
22
22
|
exports.Ctx = (0, common_1.createParamDecorator)((data, ctx) => {
|
|
23
|
+
const getContext = (req) => {
|
|
24
|
+
const map = req[constants_1.REQUEST_CONTEXT_MAP_KEY];
|
|
25
|
+
// If a map contains associated transactional context with this handler
|
|
26
|
+
// we have to use it. It means that this handler was wrapped with @Transaction decorator.
|
|
27
|
+
// Otherwise use default context.
|
|
28
|
+
return (map === null || map === void 0 ? void 0 : map.get(ctx.getHandler())) || req[constants_1.REQUEST_CONTEXT_KEY];
|
|
29
|
+
};
|
|
23
30
|
if (ctx.getType() === 'graphql') {
|
|
24
31
|
// GraphQL request
|
|
25
|
-
return ctx.getArgByIndex(2).req
|
|
32
|
+
return getContext(ctx.getArgByIndex(2).req);
|
|
26
33
|
}
|
|
27
34
|
else {
|
|
28
35
|
// REST request
|
|
29
|
-
return ctx.switchToHttp().getRequest()
|
|
36
|
+
return getContext(ctx.switchToHttp().getRequest());
|
|
30
37
|
}
|
|
31
38
|
});
|
|
32
39
|
//# sourceMappingURL=request-context.decorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.decorator.js","sourceRoot":"","sources":["../../../src/api/decorators/request-context.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAqF;AAErF,
|
|
1
|
+
{"version":3,"file":"request-context.decorator.js","sourceRoot":"","sources":["../../../src/api/decorators/request-context.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAqF;AAErF,sDAAsF;AAEtF;;;;;;;;;;;;;;;GAeG;AACU,QAAA,GAAG,GAAG,IAAA,6BAAoB,EAAC,CAAC,IAAI,EAAE,GAAqB,EAAE,EAAE;IACpE,MAAM,UAAU,GAAG,CAAC,GAAQ,EAAE,EAAE;QAC5B,MAAM,GAAG,GAAmC,GAAG,CAAC,mCAAuB,CAAC,CAAC;QAEzE,uEAAuE;QACvE,yFAAyF;QACzF,iCAAiC;QACjC,OAAO,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,KAAI,GAAG,CAAC,+BAAmB,CAAC,CAAC;IAClE,CAAC,CAAA;IAED,IAAI,GAAG,CAAC,OAAO,EAA2B,KAAK,SAAS,EAAE;QACtD,kBAAkB;QAClB,OAAO,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KAC/C;SAAM;QACH,eAAe;QACf,OAAO,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;KACtD;AACL,CAAC,CAAC,CAAC"}
|
package/dist/api/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export * from './common/extract-session-token';
|
|
|
4
4
|
export * from './decorators/allow.decorator';
|
|
5
5
|
export * from './decorators/transaction.decorator';
|
|
6
6
|
export * from './decorators/api.decorator';
|
|
7
|
+
export * from './decorators/relations.decorator';
|
|
7
8
|
export * from './decorators/request-context.decorator';
|
|
8
9
|
export * from './resolvers/admin/search.resolver';
|
|
9
10
|
export * from './middleware/auth-guard';
|
package/dist/api/index.js
CHANGED
|
@@ -15,6 +15,7 @@ __exportStar(require("./common/extract-session-token"), exports);
|
|
|
15
15
|
__exportStar(require("./decorators/allow.decorator"), exports);
|
|
16
16
|
__exportStar(require("./decorators/transaction.decorator"), exports);
|
|
17
17
|
__exportStar(require("./decorators/api.decorator"), exports);
|
|
18
|
+
__exportStar(require("./decorators/relations.decorator"), exports);
|
|
18
19
|
__exportStar(require("./decorators/request-context.decorator"), exports);
|
|
19
20
|
__exportStar(require("./resolvers/admin/search.resolver"), exports);
|
|
20
21
|
__exportStar(require("./middleware/auth-guard"), exports);
|
package/dist/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,2DAAyC;AACzC,iEAA+C;AAC/C,+DAA6C;AAC7C,qEAAmD;AACnD,6DAA2C;AAC3C,yEAAuD;AACvD,oEAAkD;AAClD,0DAAwC;AACxC,uEAAqD;AACrD,8DAA4C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,2DAAyC;AACzC,iEAA+C;AAC/C,+DAA6C;AAC7C,qEAAmD;AACnD,6DAA2C;AAC3C,mEAAiD;AACjD,yEAAuD;AACvD,oEAAkD;AAClD,0DAAwC;AACxC,uEAAqD;AACrD,8DAA4C"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
|
|
2
2
|
import { Reflector } from '@nestjs/core';
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
|
+
import { RequestContext } from '..';
|
|
4
5
|
import { TransactionWrapper } from '../../connection/transaction-wrapper';
|
|
5
6
|
import { TransactionalConnection } from '../../connection/transactional-connection';
|
|
6
7
|
/**
|
|
@@ -14,4 +15,12 @@ export declare class TransactionInterceptor implements NestInterceptor {
|
|
|
14
15
|
private reflector;
|
|
15
16
|
constructor(connection: TransactionalConnection, transactionWrapper: TransactionWrapper, reflector: Reflector);
|
|
16
17
|
intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
|
|
18
|
+
/**
|
|
19
|
+
* Registers transactional request context associated with execution handler function
|
|
20
|
+
*
|
|
21
|
+
* @param ctx transactional request context
|
|
22
|
+
* @param handler handler function from ExecutionContext
|
|
23
|
+
* @param req Request object
|
|
24
|
+
*/
|
|
25
|
+
registerTransactionalContext(ctx: RequestContext, handler: Function, req: any): void;
|
|
17
26
|
}
|
|
@@ -34,12 +34,27 @@ let TransactionInterceptor = class TransactionInterceptor {
|
|
|
34
34
|
const ctx = req[constants_1.REQUEST_CONTEXT_KEY];
|
|
35
35
|
if (ctx) {
|
|
36
36
|
const transactionMode = this.reflector.get(transaction_decorator_1.TRANSACTION_MODE_METADATA_KEY, context.getHandler());
|
|
37
|
-
return (0, rxjs_1.of)(this.transactionWrapper.executeInTransaction(ctx, () =>
|
|
37
|
+
return (0, rxjs_1.of)(this.transactionWrapper.executeInTransaction(ctx, (ctx) => {
|
|
38
|
+
this.registerTransactionalContext(ctx, context.getHandler(), req);
|
|
39
|
+
return next.handle();
|
|
40
|
+
}, transactionMode, this.connection.rawConnection));
|
|
38
41
|
}
|
|
39
42
|
else {
|
|
40
43
|
return next.handle();
|
|
41
44
|
}
|
|
42
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Registers transactional request context associated with execution handler function
|
|
48
|
+
*
|
|
49
|
+
* @param ctx transactional request context
|
|
50
|
+
* @param handler handler function from ExecutionContext
|
|
51
|
+
* @param req Request object
|
|
52
|
+
*/
|
|
53
|
+
registerTransactionalContext(ctx, handler, req) {
|
|
54
|
+
const map = req[constants_1.REQUEST_CONTEXT_MAP_KEY] || new Map();
|
|
55
|
+
map.set(handler, ctx);
|
|
56
|
+
req[constants_1.REQUEST_CONTEXT_MAP_KEY] = map;
|
|
57
|
+
}
|
|
43
58
|
};
|
|
44
59
|
TransactionInterceptor = __decorate([
|
|
45
60
|
(0, common_1.Injectable)(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-interceptor.js","sourceRoot":"","sources":["../../../src/api/middleware/transaction-interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4F;AAC5F,uCAAyC;AACzC,+BAAsC;
|
|
1
|
+
{"version":3,"file":"transaction-interceptor.js","sourceRoot":"","sources":["../../../src/api/middleware/transaction-interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4F;AAC5F,uCAAyC;AACzC,+BAAsC;AAGtC,sDAAsF;AACtF,8EAA0E;AAC1E,wFAAoF;AACpF,2DAAuD;AACvD,+EAAqG;AAErG;;;;GAIG;AAEH,IAAa,sBAAsB,GAAnC,MAAa,sBAAsB;IAC/B,YACY,UAAmC,EACnC,kBAAsC,EACtC,SAAoB;QAFpB,eAAU,GAAV,UAAU,CAAyB;QACnC,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,cAAS,GAAT,SAAS,CAAW;IAC7B,CAAC;IAEJ,SAAS,CAAC,OAAyB,EAAE,IAAiB;QAClD,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,IAAA,4BAAY,EAAC,OAAO,CAAC,CAAC;QACjD,MAAM,GAAG,GAAgC,GAAW,CAAC,+BAAmB,CAAC,CAAC;QAE1E,IAAI,GAAG,EAAE;YACL,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACtC,qDAA6B,EAC7B,OAAO,CAAC,UAAU,EAAE,CACvB,CAAC;YAEF,OAAO,IAAA,SAAE,EACL,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CACxC,GAAG,EACH,CAAC,GAAG,EAAE,EAAE;gBACJ,IAAI,CAAC,4BAA4B,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC;gBAElE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;YACxB,CAAC,EACD,eAAe,EACf,IAAI,CAAC,UAAU,CAAC,aAAa,CAChC,CACJ,CAAC;SACL;aAAM;YACH,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;SACxB;IACL,CAAC;IAED;;;;;;OAMG;IACH,4BAA4B,CAAC,GAAmB,EAAE,OAAiB,EAAE,GAAQ;QACzE,MAAM,GAAG,GAAkC,GAAG,CAAC,mCAAuB,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QACrF,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAEtB,GAAG,CAAC,mCAAuB,CAAC,GAAG,GAAG,CAAC;IACvC,CAAC;CACJ,CAAA;AA/CY,sBAAsB;IADlC,IAAA,mBAAU,GAAE;qCAGe,kDAAuB;QACf,wCAAkB;QAC3B,gBAAS;GAJvB,sBAAsB,CA+ClC;AA/CY,wDAAsB"}
|
|
@@ -3,11 +3,12 @@ import { PaginatedList } from '@vendure/common/lib/shared-types';
|
|
|
3
3
|
import { Administrator } from '../../../entity/administrator/administrator.entity';
|
|
4
4
|
import { AdministratorService } from '../../../service/services/administrator.service';
|
|
5
5
|
import { RequestContext } from '../../common/request-context';
|
|
6
|
+
import { RelationPaths } from '../../decorators/relations.decorator';
|
|
6
7
|
export declare class AdministratorResolver {
|
|
7
8
|
private administratorService;
|
|
8
9
|
constructor(administratorService: AdministratorService);
|
|
9
|
-
administrators(ctx: RequestContext, args: QueryAdministratorsArgs): Promise<PaginatedList<Administrator>>;
|
|
10
|
-
administrator(ctx: RequestContext, args: QueryAdministratorArgs): Promise<Administrator | undefined>;
|
|
10
|
+
administrators(ctx: RequestContext, args: QueryAdministratorsArgs, relations: RelationPaths<Administrator>): Promise<PaginatedList<Administrator>>;
|
|
11
|
+
administrator(ctx: RequestContext, args: QueryAdministratorArgs, relations: RelationPaths<Administrator>): Promise<Administrator | undefined>;
|
|
11
12
|
activeAdministrator(ctx: RequestContext): Promise<Administrator | undefined>;
|
|
12
13
|
createAdministrator(ctx: RequestContext, args: MutationCreateAdministratorArgs): Promise<Administrator>;
|
|
13
14
|
updateAdministrator(ctx: RequestContext, args: MutationUpdateAdministratorArgs): Promise<Administrator>;
|
|
@@ -15,20 +15,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.AdministratorResolver = void 0;
|
|
16
16
|
const graphql_1 = require("@nestjs/graphql");
|
|
17
17
|
const generated_types_1 = require("@vendure/common/lib/generated-types");
|
|
18
|
+
const administrator_entity_1 = require("../../../entity/administrator/administrator.entity");
|
|
18
19
|
const administrator_service_1 = require("../../../service/services/administrator.service");
|
|
19
20
|
const request_context_1 = require("../../common/request-context");
|
|
20
21
|
const allow_decorator_1 = require("../../decorators/allow.decorator");
|
|
22
|
+
const relations_decorator_1 = require("../../decorators/relations.decorator");
|
|
21
23
|
const request_context_decorator_1 = require("../../decorators/request-context.decorator");
|
|
22
24
|
const transaction_decorator_1 = require("../../decorators/transaction.decorator");
|
|
23
25
|
let AdministratorResolver = class AdministratorResolver {
|
|
24
26
|
constructor(administratorService) {
|
|
25
27
|
this.administratorService = administratorService;
|
|
26
28
|
}
|
|
27
|
-
administrators(ctx, args) {
|
|
28
|
-
return this.administratorService.findAll(ctx, args.options || undefined);
|
|
29
|
+
administrators(ctx, args, relations) {
|
|
30
|
+
return this.administratorService.findAll(ctx, args.options || undefined, relations);
|
|
29
31
|
}
|
|
30
|
-
administrator(ctx, args) {
|
|
31
|
-
return this.administratorService.findOne(ctx, args.id);
|
|
32
|
+
administrator(ctx, args, relations) {
|
|
33
|
+
return this.administratorService.findOne(ctx, args.id, relations);
|
|
32
34
|
}
|
|
33
35
|
async activeAdministrator(ctx) {
|
|
34
36
|
if (ctx.activeUserId) {
|
|
@@ -65,8 +67,9 @@ __decorate([
|
|
|
65
67
|
(0, allow_decorator_1.Allow)(generated_types_1.Permission.ReadAdministrator),
|
|
66
68
|
__param(0, (0, request_context_decorator_1.Ctx)()),
|
|
67
69
|
__param(1, (0, graphql_1.Args)()),
|
|
70
|
+
__param(2, (0, relations_decorator_1.Relations)(administrator_entity_1.Administrator)),
|
|
68
71
|
__metadata("design:type", Function),
|
|
69
|
-
__metadata("design:paramtypes", [request_context_1.RequestContext, Object]),
|
|
72
|
+
__metadata("design:paramtypes", [request_context_1.RequestContext, Object, Array]),
|
|
70
73
|
__metadata("design:returntype", Promise)
|
|
71
74
|
], AdministratorResolver.prototype, "administrators", null);
|
|
72
75
|
__decorate([
|
|
@@ -74,8 +77,9 @@ __decorate([
|
|
|
74
77
|
(0, allow_decorator_1.Allow)(generated_types_1.Permission.ReadAdministrator),
|
|
75
78
|
__param(0, (0, request_context_decorator_1.Ctx)()),
|
|
76
79
|
__param(1, (0, graphql_1.Args)()),
|
|
80
|
+
__param(2, (0, relations_decorator_1.Relations)(administrator_entity_1.Administrator)),
|
|
77
81
|
__metadata("design:type", Function),
|
|
78
|
-
__metadata("design:paramtypes", [request_context_1.RequestContext, Object]),
|
|
82
|
+
__metadata("design:paramtypes", [request_context_1.RequestContext, Object, Array]),
|
|
79
83
|
__metadata("design:returntype", Promise)
|
|
80
84
|
], AdministratorResolver.prototype, "administrator", null);
|
|
81
85
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"administrator.resolver.js","sourceRoot":"","sources":["../../../../src/api/resolvers/admin/administrator.resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6CAAkE;AAClE,yEAU6C;
|
|
1
|
+
{"version":3,"file":"administrator.resolver.js","sourceRoot":"","sources":["../../../../src/api/resolvers/admin/administrator.resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6CAAkE;AAClE,yEAU6C;AAG7C,6FAAmF;AACnF,2FAAuF;AACvF,kEAA8D;AAC9D,sEAAyD;AACzD,8EAAgF;AAChF,0FAAiE;AACjE,kFAAqE;AAGrE,IAAa,qBAAqB,GAAlC,MAAa,qBAAqB;IAC9B,YAAoB,oBAA0C;QAA1C,yBAAoB,GAApB,oBAAoB,CAAsB;IAAG,CAAC;IAIlE,cAAc,CACH,GAAmB,EAClB,IAA6B,EACX,SAAuC;QAEjE,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE,SAAS,CAAC,CAAC;IACxF,CAAC;IAID,aAAa,CACF,GAAmB,EAClB,IAA4B,EACV,SAAuC;QAEjE,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACtE,CAAC;IAID,KAAK,CAAC,mBAAmB,CAAQ,GAAmB;QAChD,IAAI,GAAG,CAAC,YAAY,EAAE;YAClB,OAAO,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;SAC3E;IACL,CAAC;IAKD,mBAAmB,CACR,GAAmB,EAClB,IAAqC;QAE7C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAKD,mBAAmB,CACR,GAAmB,EAClB,IAAqC;QAE7C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAKD,KAAK,CAAC,yBAAyB,CACpB,GAAmB,EAClB,IAA2C;QAEnD,IAAI,GAAG,CAAC,YAAY,EAAE;YAClB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACvB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;YAC7F,IAAI,aAAa,EAAE;gBACf,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,kCAAO,KAAK,KAAE,EAAE,EAAE,aAAa,CAAC,EAAE,IAAG,CAAC;aACpF;SACJ;IACL,CAAC;IAKD,yBAAyB,CACd,GAAmB,EAClB,IAA2C;QAEnD,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACxF,CAAC;IAKD,mBAAmB,CACR,GAAmB,EAClB,IAAqC;QAE7C,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;CACJ,CAAA;AApFG;IAFC,IAAA,eAAK,GAAE;IACP,IAAA,uBAAK,EAAC,4BAAU,CAAC,iBAAiB,CAAC;IAE/B,WAAA,IAAA,+BAAG,GAAE,CAAA;IACL,WAAA,IAAA,cAAI,GAAE,CAAA;IACN,WAAA,IAAA,+BAAS,EAAC,oCAAa,CAAC,CAAA;;qCAFb,gCAAc;;2DAK7B;AAID;IAFC,IAAA,eAAK,GAAE;IACP,IAAA,uBAAK,EAAC,4BAAU,CAAC,iBAAiB,CAAC;IAE/B,WAAA,IAAA,+BAAG,GAAE,CAAA;IACL,WAAA,IAAA,cAAI,GAAE,CAAA;IACN,WAAA,IAAA,+BAAS,EAAC,oCAAa,CAAC,CAAA;;qCAFb,gCAAc;;0DAK7B;AAID;IAFC,IAAA,eAAK,GAAE;IACP,IAAA,uBAAK,EAAC,4BAAU,CAAC,KAAK,CAAC;IACG,WAAA,IAAA,+BAAG,GAAE,CAAA;;qCAAM,gCAAc;;gEAInD;AAKD;IAHC,IAAA,mCAAW,GAAE;IACb,IAAA,kBAAQ,GAAE;IACV,IAAA,uBAAK,EAAC,4BAAU,CAAC,mBAAmB,CAAC;IAEjC,WAAA,IAAA,+BAAG,GAAE,CAAA;IACL,WAAA,IAAA,cAAI,GAAE,CAAA;;qCADK,gCAAc;;gEAK7B;AAKD;IAHC,IAAA,mCAAW,GAAE;IACb,IAAA,kBAAQ,GAAE;IACV,IAAA,uBAAK,EAAC,4BAAU,CAAC,mBAAmB,CAAC;IAEjC,WAAA,IAAA,+BAAG,GAAE,CAAA;IACL,WAAA,IAAA,cAAI,GAAE,CAAA;;qCADK,gCAAc;;gEAK7B;AAKD;IAHC,IAAA,mCAAW,GAAE;IACb,IAAA,kBAAQ,GAAE;IACV,IAAA,uBAAK,EAAC,4BAAU,CAAC,KAAK,CAAC;IAEnB,WAAA,IAAA,+BAAG,GAAE,CAAA;IACL,WAAA,IAAA,cAAI,GAAE,CAAA;;qCADK,gCAAc;;sEAU7B;AAKD;IAHC,IAAA,mCAAW,GAAE;IACb,IAAA,kBAAQ,GAAE;IACV,IAAA,uBAAK,EAAC,4BAAU,CAAC,mBAAmB,CAAC;IAEjC,WAAA,IAAA,+BAAG,GAAE,CAAA;IACL,WAAA,IAAA,cAAI,GAAE,CAAA;;qCADK,gCAAc;;sEAI7B;AAKD;IAHC,IAAA,mCAAW,GAAE;IACb,IAAA,kBAAQ,GAAE;IACV,IAAA,uBAAK,EAAC,4BAAU,CAAC,mBAAmB,CAAC;IAEjC,WAAA,IAAA,+BAAG,GAAE,CAAA;IACL,WAAA,IAAA,cAAI,GAAE,CAAA;;qCADK,gCAAc;;gEAK7B;AAxFQ,qBAAqB;IADjC,IAAA,kBAAQ,EAAC,eAAe,CAAC;qCAEoB,4CAAoB;GADrD,qBAAqB,CAyFjC;AAzFY,sDAAqB"}
|
|
@@ -3,11 +3,12 @@ import { PaginatedList } from '@vendure/common/lib/shared-types';
|
|
|
3
3
|
import { Asset } from '../../../entity/asset/asset.entity';
|
|
4
4
|
import { AssetService } from '../../../service/services/asset.service';
|
|
5
5
|
import { RequestContext } from '../../common/request-context';
|
|
6
|
+
import { RelationPaths } from '../../decorators/relations.decorator';
|
|
6
7
|
export declare class AssetResolver {
|
|
7
8
|
private assetService;
|
|
8
9
|
constructor(assetService: AssetService);
|
|
9
|
-
asset(ctx: RequestContext, args: QueryAssetArgs): Promise<Asset | undefined>;
|
|
10
|
-
assets(ctx: RequestContext, args: QueryAssetsArgs): Promise<PaginatedList<Asset>>;
|
|
10
|
+
asset(ctx: RequestContext, args: QueryAssetArgs, relations: RelationPaths<Asset>): Promise<Asset | undefined>;
|
|
11
|
+
assets(ctx: RequestContext, args: QueryAssetsArgs, relations: RelationPaths<Asset>): Promise<PaginatedList<Asset>>;
|
|
11
12
|
createAssets(ctx: RequestContext, args: MutationCreateAssetsArgs): Promise<CreateAssetResult[]>;
|
|
12
13
|
updateAsset(ctx: RequestContext, { input }: MutationUpdateAssetArgs): Promise<Asset>;
|
|
13
14
|
deleteAsset(ctx: RequestContext, { input: { assetId, force, deleteFromAllChannels } }: MutationDeleteAssetArgs): Promise<import("@vendure/common/lib/generated-types").DeletionResponse>;
|