@reactionary/source 0.3.18 → 0.6.2
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/README.md +28 -14
- package/core/src/client/client-builder.ts +54 -6
- package/core/src/factories/cart.factory.ts +40 -0
- package/core/src/factories/category.factory.ts +40 -0
- package/core/src/factories/checkout.factory.ts +59 -0
- package/core/src/factories/identity.factory.ts +26 -0
- package/core/src/factories/index.ts +15 -0
- package/core/src/factories/inventory.factory.ts +26 -0
- package/core/src/factories/order-search.factory.ts +33 -0
- package/core/src/factories/order.factory.ts +21 -0
- package/core/src/factories/price.factory.ts +29 -0
- package/core/src/factories/product-associations.factory.ts +30 -0
- package/core/src/factories/product-list.factory.ts +82 -0
- package/core/src/factories/product-reviews.factory.ts +58 -0
- package/core/src/factories/product-search.factory.ts +31 -0
- package/core/src/factories/product.factory.ts +21 -0
- package/core/src/factories/profile.factory.ts +23 -0
- package/core/src/factories/store.factory.ts +21 -0
- package/core/src/index.ts +3 -1
- package/core/src/providers/cart.provider.ts +12 -10
- package/core/src/providers/category.provider.ts +9 -7
- package/core/src/providers/checkout.provider.ts +14 -10
- package/core/src/providers/identity.provider.ts +7 -7
- package/core/src/providers/inventory.provider.ts +4 -4
- package/core/src/providers/order-search.provider.ts +4 -2
- package/core/src/providers/order.provider.ts +4 -4
- package/core/src/providers/price.provider.ts +5 -5
- package/core/src/providers/product-associations.provider.ts +6 -4
- package/core/src/providers/product-list.provider.ts +13 -8
- package/core/src/providers/product-reviews.provider.ts +8 -4
- package/core/src/providers/product-search.provider.ts +15 -28
- package/core/src/providers/product.provider.ts +6 -6
- package/core/src/providers/profile.provider.ts +8 -8
- package/core/src/providers/store.provider.ts +2 -2
- package/core/src/test/client-builder.spec.ts +81 -0
- package/examples/node/package.json +7 -7
- package/examples/node/src/basic/basic-node-provider-model-extension.spec.ts +10 -4
- package/examples/node/src/basic/basic-node-provider-query-extension.spec.ts +8 -2
- package/examples/node/src/basic/basic-node-setup.spec.ts +5 -1
- package/examples/node/src/basic/client-creation.spec.ts +3 -3
- package/examples/node/src/utils.ts +41 -41
- package/examples/node/tsconfig.lib.json +2 -1
- package/package.json +1 -1
- package/providers/algolia/src/core/initialize.ts +76 -21
- package/providers/algolia/src/core/initialize.types.ts +107 -0
- package/providers/algolia/src/factories/index.ts +1 -0
- package/providers/algolia/src/factories/product-search/product-search.factory.ts +182 -0
- package/providers/algolia/src/index.ts +2 -2
- package/providers/algolia/src/providers/analytics.provider.ts +4 -4
- package/providers/algolia/src/providers/product-search.provider.ts +67 -184
- package/providers/algolia/src/schema/capabilities.schema.ts +81 -7
- package/providers/algolia/src/test/analytics.spec.ts +9 -1
- package/providers/algolia/src/test/client-builder-product-search-extension.example.ts +85 -0
- package/providers/commercetools/src/core/capability-descriptors.ts +324 -0
- package/providers/commercetools/src/core/initialize.ts +35 -151
- package/providers/commercetools/src/core/initialize.types.ts +174 -0
- package/providers/commercetools/src/factories/cart/cart.factory.ts +142 -0
- package/providers/commercetools/src/factories/category/category.factory.ts +77 -0
- package/providers/commercetools/src/factories/checkout/checkout-initializer-overrides.example.ts +94 -0
- package/providers/commercetools/src/factories/checkout/checkout.factory.ts +338 -0
- package/providers/commercetools/src/factories/identity/identity.factory.ts +26 -0
- package/providers/commercetools/src/factories/inventory/inventory.factory.ts +49 -0
- package/providers/commercetools/src/factories/order/order.factory.ts +149 -0
- package/providers/commercetools/src/factories/order-search/order-search.factory.ts +108 -0
- package/providers/commercetools/src/factories/price/price.factory.ts +76 -0
- package/providers/commercetools/src/factories/product/product-factory-baseline.example.ts +14 -0
- package/providers/commercetools/src/factories/product/product-factory-schema-and-parse-extension.example.ts +35 -0
- package/providers/commercetools/src/factories/product/product-factory-schema-extension.example.ts +23 -0
- package/providers/commercetools/src/factories/product/product-initializer-factory-extension.example.ts +41 -0
- package/providers/commercetools/src/factories/product/product-provider-custom-method-only.example.ts +47 -0
- package/providers/commercetools/src/factories/product/product-provider-schema-signature-extension.example.ts +61 -0
- package/providers/commercetools/src/factories/product/product.factory.ts +220 -0
- package/providers/commercetools/src/factories/product/utils.example.ts +9 -0
- package/providers/commercetools/src/factories/product-associations/product-associations.factory.ts +103 -0
- package/providers/commercetools/src/factories/product-list/product-list.factory.ts +122 -0
- package/providers/commercetools/src/factories/product-reviews/product-reviews.factory.ts +81 -0
- package/providers/commercetools/src/factories/product-search/product-search.factory.ts +182 -0
- package/providers/commercetools/src/factories/profile/profile.factory.ts +94 -0
- package/providers/commercetools/src/factories/store/store.factory.ts +49 -0
- package/providers/commercetools/src/index.ts +15 -0
- package/providers/commercetools/src/providers/cart.provider.ts +67 -193
- package/providers/commercetools/src/providers/category.provider.ts +24 -64
- package/providers/commercetools/src/providers/checkout.provider.ts +50 -322
- package/providers/commercetools/src/providers/identity.provider.ts +35 -15
- package/providers/commercetools/src/providers/inventory.provider.ts +13 -31
- package/providers/commercetools/src/providers/order-search.provider.ts +16 -110
- package/providers/commercetools/src/providers/order.provider.ts +13 -144
- package/providers/commercetools/src/providers/price.provider.ts +37 -51
- package/providers/commercetools/src/providers/product-associations.provider.ts +39 -104
- package/providers/commercetools/src/providers/product-list.provider.ts +38 -23
- package/providers/commercetools/src/providers/product-reviews.provider.ts +34 -14
- package/providers/commercetools/src/providers/product-search.provider.ts +17 -170
- package/providers/commercetools/src/providers/product.provider.ts +20 -199
- package/providers/commercetools/src/providers/profile.provider.ts +27 -73
- package/providers/commercetools/src/providers/store.provider.ts +13 -31
- package/providers/commercetools/src/schema/capabilities.schema.ts +258 -20
- package/providers/commercetools/src/test/caching.spec.ts +18 -2
- package/providers/commercetools/src/test/client-builder-merge-extensions.example.ts +125 -0
- package/providers/fake/src/core/initialize.ts +213 -44
- package/providers/fake/src/core/initialize.types.ts +164 -0
- package/providers/fake/src/factories/cart/cart.factory.ts +34 -0
- package/providers/fake/src/factories/category/category.factory.ts +40 -0
- package/providers/fake/src/factories/checkout/checkout.factory.ts +53 -0
- package/providers/fake/src/factories/identity/identity.factory.ts +25 -0
- package/providers/fake/src/factories/index.ts +14 -0
- package/providers/fake/src/factories/inventory/inventory.factory.ts +25 -0
- package/providers/fake/src/factories/order/order.factory.ts +22 -0
- package/providers/fake/src/factories/order-search/order-search.factory.ts +27 -0
- package/providers/fake/src/factories/price/price.factory.ts +26 -0
- package/providers/fake/src/factories/product/product.factory.ts +22 -0
- package/providers/fake/src/factories/product-associations/product-associations.factory.ts +25 -0
- package/providers/fake/src/factories/product-reviews/product-reviews.factory.ts +53 -0
- package/providers/fake/src/factories/product-search/product-search.factory.ts +27 -0
- package/providers/fake/src/factories/profile/profile.factory.ts +22 -0
- package/providers/fake/src/factories/store/store.factory.ts +22 -0
- package/providers/fake/src/index.ts +2 -0
- package/providers/fake/src/providers/cart.provider.ts +23 -14
- package/providers/fake/src/providers/category.provider.ts +120 -105
- package/providers/fake/src/providers/checkout.provider.ts +39 -20
- package/providers/fake/src/providers/identity.provider.ts +40 -34
- package/providers/fake/src/providers/inventory.provider.ts +26 -24
- package/providers/fake/src/providers/order-search.provider.ts +38 -30
- package/providers/fake/src/providers/order.provider.ts +21 -37
- package/providers/fake/src/providers/price.provider.ts +42 -34
- package/providers/fake/src/providers/product-associations.provider.ts +23 -10
- package/providers/fake/src/providers/product-reviews.provider.ts +71 -69
- package/providers/fake/src/providers/product-search.provider.ts +43 -70
- package/providers/fake/src/providers/product.provider.ts +34 -32
- package/providers/fake/src/providers/profile.provider.ts +62 -55
- package/providers/fake/src/providers/store.provider.ts +38 -22
- package/providers/fake/src/schema/capabilities.schema.ts +175 -18
- package/providers/fake/src/test/cart.provider.spec.ts +20 -3
- package/providers/fake/src/test/category.provider.spec.ts +4 -1
- package/providers/fake/src/test/checkout.provider.spec.ts +12 -2
- package/providers/fake/src/test/client-builder-product-extension.example.ts +75 -0
- package/providers/fake/src/test/order-search.provider.spec.ts +4 -7
- package/providers/fake/src/test/order.provider.spec.ts +4 -6
- package/providers/fake/src/test/price.provider.spec.ts +3 -1
- package/providers/fake/src/test/product.provider.spec.ts +8 -2
- package/providers/fake/src/test/profile.provider.spec.ts +4 -2
- package/providers/google-analytics/src/core/initialize.ts +37 -12
- package/providers/google-analytics/src/core/initialize.types.ts +47 -0
- package/providers/google-analytics/src/index.ts +1 -0
- package/providers/google-analytics/src/schema/capabilities.schema.ts +31 -5
- package/providers/medusa/src/core/initialize.ts +324 -81
- package/providers/medusa/src/core/initialize.types.ts +184 -0
- package/providers/medusa/src/factories/cart/cart.factory.ts +34 -0
- package/providers/medusa/src/factories/category/category.factory.ts +37 -0
- package/providers/medusa/src/factories/checkout/checkout.factory.ts +50 -0
- package/providers/medusa/src/factories/identity/identity.factory.ts +22 -0
- package/providers/medusa/src/factories/index.ts +12 -0
- package/providers/medusa/src/factories/inventory/inventory.factory.ts +25 -0
- package/providers/medusa/src/factories/order/order.factory.ts +22 -0
- package/providers/medusa/src/factories/order-search/order-search.factory.ts +27 -0
- package/providers/medusa/src/factories/price/price.factory.ts +26 -0
- package/providers/medusa/src/factories/product/product.factory.ts +22 -0
- package/providers/medusa/src/factories/product-associations/product-associations.factory.ts +25 -0
- package/providers/medusa/src/factories/product-search/product-search.factory.ts +27 -0
- package/providers/medusa/src/factories/profile/profile.factory.ts +22 -0
- package/providers/medusa/src/index.ts +2 -0
- package/providers/medusa/src/providers/cart.provider.ts +33 -20
- package/providers/medusa/src/providers/category.provider.ts +30 -12
- package/providers/medusa/src/providers/checkout.provider.ts +42 -17
- package/providers/medusa/src/providers/identity.provider.ts +1 -1
- package/providers/medusa/src/providers/inventory.provider.ts +21 -7
- package/providers/medusa/src/providers/order-search.provider.ts +16 -5
- package/providers/medusa/src/providers/order.provider.ts +17 -5
- package/providers/medusa/src/providers/price.provider.ts +26 -7
- package/providers/medusa/src/providers/product-associations.provider.ts +19 -8
- package/providers/medusa/src/providers/product-search.provider.ts +19 -31
- package/providers/medusa/src/providers/product.provider.ts +47 -11
- package/providers/medusa/src/providers/profile.provider.ts +35 -11
- package/providers/medusa/src/schema/capabilities.schema.ts +229 -18
- package/providers/medusa/src/test/cart.provider.spec.ts +18 -2
- package/providers/medusa/src/test/category.provider.spec.ts +4 -1
- package/providers/medusa/src/test/checkout.spec.ts +9 -9
- package/providers/medusa/src/test/inventory.provider.spec.ts +3 -1
- package/providers/medusa/src/test/large-cart.provider.spec.ts +8 -2
- package/providers/medusa/src/test/price.provider.spec.ts +8 -1
- package/providers/medusa/src/test/product.provider.spec.ts +3 -1
- package/providers/medusa/src/test/search.provider.spec.ts +16 -3
- package/providers/meilisearch/src/core/initialize.ts +88 -21
- package/providers/meilisearch/src/core/initialize.types.ts +119 -0
- package/providers/meilisearch/src/factories/index.ts +2 -0
- package/providers/meilisearch/src/factories/order-search/order-search.factory.ts +27 -0
- package/providers/meilisearch/src/factories/product-search/product-search.factory.ts +27 -0
- package/providers/meilisearch/src/index.ts +2 -0
- package/providers/meilisearch/src/providers/index.ts +1 -0
- package/providers/meilisearch/src/providers/order-search.provider.ts +21 -6
- package/providers/meilisearch/src/providers/product-search.provider.ts +24 -8
- package/providers/meilisearch/src/schema/capabilities.schema.ts +95 -8
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AnyCheckoutSchema,
|
|
3
|
+
AnyPaymentMethodSchema,
|
|
4
|
+
AnyShippingMethodSchema,
|
|
5
|
+
CheckoutFactory,
|
|
6
|
+
CheckoutSchema,
|
|
7
|
+
PaymentMethodSchema,
|
|
8
|
+
RequestContext,
|
|
9
|
+
ShippingMethodSchema,
|
|
10
|
+
} from '@reactionary/core';
|
|
11
|
+
import type * as z from 'zod';
|
|
12
|
+
|
|
13
|
+
export class FakeCheckoutFactory<
|
|
14
|
+
TCheckoutSchema extends AnyCheckoutSchema = typeof CheckoutSchema,
|
|
15
|
+
TShippingMethodSchema extends AnyShippingMethodSchema = typeof ShippingMethodSchema,
|
|
16
|
+
TPaymentMethodSchema extends AnyPaymentMethodSchema = typeof PaymentMethodSchema,
|
|
17
|
+
> implements CheckoutFactory<TCheckoutSchema, TShippingMethodSchema, TPaymentMethodSchema>
|
|
18
|
+
{
|
|
19
|
+
public readonly checkoutSchema: TCheckoutSchema;
|
|
20
|
+
public readonly shippingMethodSchema: TShippingMethodSchema;
|
|
21
|
+
public readonly paymentMethodSchema: TPaymentMethodSchema;
|
|
22
|
+
|
|
23
|
+
constructor(
|
|
24
|
+
checkoutSchema: TCheckoutSchema,
|
|
25
|
+
shippingMethodSchema: TShippingMethodSchema,
|
|
26
|
+
paymentMethodSchema: TPaymentMethodSchema,
|
|
27
|
+
) {
|
|
28
|
+
this.checkoutSchema = checkoutSchema;
|
|
29
|
+
this.shippingMethodSchema = shippingMethodSchema;
|
|
30
|
+
this.paymentMethodSchema = paymentMethodSchema;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public parseCheckout(
|
|
34
|
+
_context: RequestContext,
|
|
35
|
+
data: unknown,
|
|
36
|
+
): z.output<TCheckoutSchema> {
|
|
37
|
+
return this.checkoutSchema.parse(data);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
public parseShippingMethod(
|
|
41
|
+
_context: RequestContext,
|
|
42
|
+
data: unknown,
|
|
43
|
+
): z.output<TShippingMethodSchema> {
|
|
44
|
+
return this.shippingMethodSchema.parse(data);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public parsePaymentMethod(
|
|
48
|
+
_context: RequestContext,
|
|
49
|
+
data: unknown,
|
|
50
|
+
): z.output<TPaymentMethodSchema> {
|
|
51
|
+
return this.paymentMethodSchema.parse(data);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AnyIdentitySchema,
|
|
3
|
+
IdentityFactory,
|
|
4
|
+
IdentitySchema,
|
|
5
|
+
RequestContext,
|
|
6
|
+
} from '@reactionary/core';
|
|
7
|
+
import type * as z from 'zod';
|
|
8
|
+
|
|
9
|
+
export class FakeIdentityFactory<
|
|
10
|
+
TIdentitySchema extends AnyIdentitySchema = typeof IdentitySchema,
|
|
11
|
+
> implements IdentityFactory<TIdentitySchema>
|
|
12
|
+
{
|
|
13
|
+
public readonly identitySchema: TIdentitySchema;
|
|
14
|
+
|
|
15
|
+
constructor(identitySchema: TIdentitySchema) {
|
|
16
|
+
this.identitySchema = identitySchema;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public parseIdentity(
|
|
20
|
+
_context: RequestContext,
|
|
21
|
+
data: unknown,
|
|
22
|
+
): z.output<TIdentitySchema> {
|
|
23
|
+
return this.identitySchema.parse(data);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from './cart/cart.factory.js';
|
|
2
|
+
export * from './category/category.factory.js';
|
|
3
|
+
export * from './checkout/checkout.factory.js';
|
|
4
|
+
export * from './identity/identity.factory.js';
|
|
5
|
+
export * from './inventory/inventory.factory.js';
|
|
6
|
+
export * from './order-search/order-search.factory.js';
|
|
7
|
+
export * from './order/order.factory.js';
|
|
8
|
+
export * from './price/price.factory.js';
|
|
9
|
+
export * from './product-associations/product-associations.factory.js';
|
|
10
|
+
export * from './product-reviews/product-reviews.factory.js';
|
|
11
|
+
export * from './product-search/product-search.factory.js';
|
|
12
|
+
export * from './product/product.factory.js';
|
|
13
|
+
export * from './profile/profile.factory.js';
|
|
14
|
+
export * from './store/store.factory.js';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AnyInventorySchema,
|
|
3
|
+
InventoryFactory,
|
|
4
|
+
InventorySchema,
|
|
5
|
+
RequestContext,
|
|
6
|
+
} from '@reactionary/core';
|
|
7
|
+
import type * as z from 'zod';
|
|
8
|
+
|
|
9
|
+
export class FakeInventoryFactory<
|
|
10
|
+
TInventorySchema extends AnyInventorySchema = typeof InventorySchema,
|
|
11
|
+
> implements InventoryFactory<TInventorySchema>
|
|
12
|
+
{
|
|
13
|
+
public readonly inventorySchema: TInventorySchema;
|
|
14
|
+
|
|
15
|
+
constructor(inventorySchema: TInventorySchema) {
|
|
16
|
+
this.inventorySchema = inventorySchema;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public parseInventory(
|
|
20
|
+
_context: RequestContext,
|
|
21
|
+
data: unknown,
|
|
22
|
+
): z.output<TInventorySchema> {
|
|
23
|
+
return this.inventorySchema.parse(data);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AnyOrderSchema,
|
|
3
|
+
OrderFactory,
|
|
4
|
+
OrderSchema,
|
|
5
|
+
RequestContext,
|
|
6
|
+
} from '@reactionary/core';
|
|
7
|
+
import type * as z from 'zod';
|
|
8
|
+
|
|
9
|
+
export class FakeOrderFactory<
|
|
10
|
+
TOrderSchema extends AnyOrderSchema = typeof OrderSchema,
|
|
11
|
+
> implements OrderFactory<TOrderSchema>
|
|
12
|
+
{
|
|
13
|
+
public readonly orderSchema: TOrderSchema;
|
|
14
|
+
|
|
15
|
+
constructor(orderSchema: TOrderSchema) {
|
|
16
|
+
this.orderSchema = orderSchema;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public parseOrder(_context: RequestContext, data: unknown): z.output<TOrderSchema> {
|
|
20
|
+
return this.orderSchema.parse(data);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AnyOrderSearchResultSchema,
|
|
3
|
+
OrderSearchFactory,
|
|
4
|
+
OrderSearchQueryByTerm,
|
|
5
|
+
OrderSearchResultSchema,
|
|
6
|
+
RequestContext,
|
|
7
|
+
} from '@reactionary/core';
|
|
8
|
+
import type * as z from 'zod';
|
|
9
|
+
|
|
10
|
+
export class FakeOrderSearchFactory<
|
|
11
|
+
TOrderSearchResultSchema extends AnyOrderSearchResultSchema = typeof OrderSearchResultSchema,
|
|
12
|
+
> implements OrderSearchFactory<TOrderSearchResultSchema>
|
|
13
|
+
{
|
|
14
|
+
public readonly orderSearchResultSchema: TOrderSearchResultSchema;
|
|
15
|
+
|
|
16
|
+
constructor(orderSearchResultSchema: TOrderSearchResultSchema) {
|
|
17
|
+
this.orderSearchResultSchema = orderSearchResultSchema;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public parseOrderSearchResult(
|
|
21
|
+
_context: RequestContext,
|
|
22
|
+
data: unknown,
|
|
23
|
+
_query: OrderSearchQueryByTerm,
|
|
24
|
+
): z.output<TOrderSearchResultSchema> {
|
|
25
|
+
return this.orderSearchResultSchema.parse(data);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AnyPriceSchema,
|
|
3
|
+
PriceFactory,
|
|
4
|
+
PriceSchema,
|
|
5
|
+
RequestContext,
|
|
6
|
+
} from '@reactionary/core';
|
|
7
|
+
import type * as z from 'zod';
|
|
8
|
+
|
|
9
|
+
export class FakePriceFactory<
|
|
10
|
+
TPriceSchema extends AnyPriceSchema = typeof PriceSchema,
|
|
11
|
+
> implements PriceFactory<TPriceSchema>
|
|
12
|
+
{
|
|
13
|
+
public readonly priceSchema: TPriceSchema;
|
|
14
|
+
|
|
15
|
+
constructor(priceSchema: TPriceSchema) {
|
|
16
|
+
this.priceSchema = priceSchema;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public parsePrice(
|
|
20
|
+
_context: RequestContext,
|
|
21
|
+
data: unknown,
|
|
22
|
+
_options?: { includeDiscounts: boolean },
|
|
23
|
+
): z.output<TPriceSchema> {
|
|
24
|
+
return this.priceSchema.parse(data);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AnyProductSchema,
|
|
3
|
+
ProductFactory,
|
|
4
|
+
ProductSchema,
|
|
5
|
+
RequestContext,
|
|
6
|
+
} from '@reactionary/core';
|
|
7
|
+
import type * as z from 'zod';
|
|
8
|
+
|
|
9
|
+
export class FakeProductFactory<
|
|
10
|
+
TProductSchema extends AnyProductSchema = typeof ProductSchema,
|
|
11
|
+
> implements ProductFactory<TProductSchema>
|
|
12
|
+
{
|
|
13
|
+
public readonly productSchema: TProductSchema;
|
|
14
|
+
|
|
15
|
+
constructor(productSchema: TProductSchema) {
|
|
16
|
+
this.productSchema = productSchema;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public parseProduct(_context: RequestContext, data: unknown): z.output<TProductSchema> {
|
|
20
|
+
return this.productSchema.parse(data);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AnyProductAssociationSchema,
|
|
3
|
+
ProductAssociationSchema,
|
|
4
|
+
ProductAssociationsFactory,
|
|
5
|
+
RequestContext,
|
|
6
|
+
} from '@reactionary/core';
|
|
7
|
+
import type * as z from 'zod';
|
|
8
|
+
|
|
9
|
+
export class FakeProductAssociationsFactory<
|
|
10
|
+
TProductAssociationSchema extends AnyProductAssociationSchema = typeof ProductAssociationSchema,
|
|
11
|
+
> implements ProductAssociationsFactory<TProductAssociationSchema>
|
|
12
|
+
{
|
|
13
|
+
public readonly productAssociationSchema: TProductAssociationSchema;
|
|
14
|
+
|
|
15
|
+
constructor(productAssociationSchema: TProductAssociationSchema) {
|
|
16
|
+
this.productAssociationSchema = productAssociationSchema;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public parseAssociation(
|
|
20
|
+
_context: RequestContext,
|
|
21
|
+
data: unknown,
|
|
22
|
+
): z.output<TProductAssociationSchema> {
|
|
23
|
+
return this.productAssociationSchema.parse(data);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AnyProductRatingSummarySchema,
|
|
3
|
+
AnyProductReviewPaginatedSchema,
|
|
4
|
+
AnyProductReviewSchema,
|
|
5
|
+
ProductRatingSummarySchema,
|
|
6
|
+
ProductReviewPaginatedResultSchema,
|
|
7
|
+
ProductReviewSchema,
|
|
8
|
+
ProductReviewsFactory,
|
|
9
|
+
RequestContext,
|
|
10
|
+
} from '@reactionary/core';
|
|
11
|
+
import type * as z from 'zod';
|
|
12
|
+
|
|
13
|
+
export class FakeProductReviewsFactory<
|
|
14
|
+
TRatingSummarySchema extends AnyProductRatingSummarySchema = typeof ProductRatingSummarySchema,
|
|
15
|
+
TReviewSchema extends AnyProductReviewSchema = typeof ProductReviewSchema,
|
|
16
|
+
TReviewPaginatedSchema extends AnyProductReviewPaginatedSchema = typeof ProductReviewPaginatedResultSchema,
|
|
17
|
+
> implements ProductReviewsFactory<TRatingSummarySchema, TReviewSchema, TReviewPaginatedSchema>
|
|
18
|
+
{
|
|
19
|
+
public readonly ratingSummarySchema: TRatingSummarySchema;
|
|
20
|
+
public readonly reviewSchema: TReviewSchema;
|
|
21
|
+
public readonly reviewPaginatedSchema: TReviewPaginatedSchema;
|
|
22
|
+
|
|
23
|
+
constructor(
|
|
24
|
+
ratingSummarySchema: TRatingSummarySchema,
|
|
25
|
+
reviewSchema: TReviewSchema,
|
|
26
|
+
reviewPaginatedSchema: TReviewPaginatedSchema,
|
|
27
|
+
) {
|
|
28
|
+
this.ratingSummarySchema = ratingSummarySchema;
|
|
29
|
+
this.reviewSchema = reviewSchema;
|
|
30
|
+
this.reviewPaginatedSchema = reviewPaginatedSchema;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public parseRatingSummary(
|
|
34
|
+
_context: RequestContext,
|
|
35
|
+
data: unknown,
|
|
36
|
+
): z.output<TRatingSummarySchema> {
|
|
37
|
+
return this.ratingSummarySchema.parse(data);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
public parseReview(
|
|
41
|
+
_context: RequestContext,
|
|
42
|
+
data: unknown,
|
|
43
|
+
): z.output<TReviewSchema> {
|
|
44
|
+
return this.reviewSchema.parse(data);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public parseReviewPaginatedResult(
|
|
48
|
+
_context: RequestContext,
|
|
49
|
+
data: unknown,
|
|
50
|
+
): z.output<TReviewPaginatedSchema> {
|
|
51
|
+
return this.reviewPaginatedSchema.parse(data);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AnyProductSearchResultSchema,
|
|
3
|
+
ProductSearchFactory,
|
|
4
|
+
ProductSearchQueryByTerm,
|
|
5
|
+
ProductSearchResultSchema,
|
|
6
|
+
RequestContext,
|
|
7
|
+
} from '@reactionary/core';
|
|
8
|
+
import type * as z from 'zod';
|
|
9
|
+
|
|
10
|
+
export class FakeProductSearchFactory<
|
|
11
|
+
TProductSearchResultSchema extends AnyProductSearchResultSchema = typeof ProductSearchResultSchema,
|
|
12
|
+
> implements ProductSearchFactory<TProductSearchResultSchema>
|
|
13
|
+
{
|
|
14
|
+
public readonly productSearchResultSchema: TProductSearchResultSchema;
|
|
15
|
+
|
|
16
|
+
constructor(productSearchResultSchema: TProductSearchResultSchema) {
|
|
17
|
+
this.productSearchResultSchema = productSearchResultSchema;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public parseSearchResult(
|
|
21
|
+
_context: RequestContext,
|
|
22
|
+
data: unknown,
|
|
23
|
+
_query: ProductSearchQueryByTerm,
|
|
24
|
+
): z.output<TProductSearchResultSchema> {
|
|
25
|
+
return this.productSearchResultSchema.parse(data);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AnyProfileSchema,
|
|
3
|
+
ProfileFactory,
|
|
4
|
+
ProfileSchema,
|
|
5
|
+
RequestContext,
|
|
6
|
+
} from '@reactionary/core';
|
|
7
|
+
import type * as z from 'zod';
|
|
8
|
+
|
|
9
|
+
export class FakeProfileFactory<
|
|
10
|
+
TProfileSchema extends AnyProfileSchema = typeof ProfileSchema,
|
|
11
|
+
> implements ProfileFactory<TProfileSchema>
|
|
12
|
+
{
|
|
13
|
+
public readonly profileSchema: TProfileSchema;
|
|
14
|
+
|
|
15
|
+
constructor(profileSchema: TProfileSchema) {
|
|
16
|
+
this.profileSchema = profileSchema;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public parseProfile(_context: RequestContext, data: unknown): z.output<TProfileSchema> {
|
|
20
|
+
return this.profileSchema.parse(data);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AnyStoreSchema,
|
|
3
|
+
RequestContext,
|
|
4
|
+
StoreFactory,
|
|
5
|
+
StoreSchema,
|
|
6
|
+
} from '@reactionary/core';
|
|
7
|
+
import type * as z from 'zod';
|
|
8
|
+
|
|
9
|
+
export class FakeStoreFactory<
|
|
10
|
+
TStoreSchema extends AnyStoreSchema = typeof StoreSchema,
|
|
11
|
+
> implements StoreFactory<TStoreSchema>
|
|
12
|
+
{
|
|
13
|
+
public readonly storeSchema: TStoreSchema;
|
|
14
|
+
|
|
15
|
+
constructor(storeSchema: TStoreSchema) {
|
|
16
|
+
this.storeSchema = storeSchema;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public parseStore(_context: RequestContext, data: unknown): z.output<TStoreSchema> {
|
|
20
|
+
return this.storeSchema.parse(data);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
Cart,
|
|
3
|
+
CartFactory,
|
|
4
|
+
CartFactoryCartOutput,
|
|
5
|
+
CartFactoryWithOutput,
|
|
3
6
|
CartQueryById,
|
|
4
7
|
CartMutationItemAdd,
|
|
5
8
|
CartMutationItemRemove,
|
|
@@ -33,16 +36,21 @@ import {
|
|
|
33
36
|
} from '@reactionary/core';
|
|
34
37
|
import type { FakeConfiguration } from '../schema/configuration.schema.js';
|
|
35
38
|
import { Faker, en, base } from '@faker-js/faker';
|
|
39
|
+
import type { FakeCartFactory } from '../factories/cart/cart.factory.js';
|
|
36
40
|
|
|
37
|
-
export class FakeCartProvider
|
|
41
|
+
export class FakeCartProvider<
|
|
42
|
+
TFactory extends CartFactory = FakeCartFactory,
|
|
43
|
+
> extends CartProvider<CartFactoryCartOutput<TFactory>, CartIdentifier> {
|
|
38
44
|
protected config: FakeConfiguration;
|
|
45
|
+
protected factory: CartFactoryWithOutput<TFactory>;
|
|
39
46
|
private carts: Map<string, Cart> = new Map();
|
|
40
47
|
private generator: Faker;
|
|
41
48
|
|
|
42
49
|
constructor(
|
|
43
50
|
config: FakeConfiguration,
|
|
44
51
|
cache: Cache,
|
|
45
|
-
context: RequestContext
|
|
52
|
+
context: RequestContext,
|
|
53
|
+
factory: CartFactoryWithOutput<TFactory>,
|
|
46
54
|
) {
|
|
47
55
|
super(cache, context);
|
|
48
56
|
this.generator = new Faker({
|
|
@@ -50,6 +58,7 @@ export class FakeCartProvider extends CartProvider {
|
|
|
50
58
|
seed: config.seeds.product,
|
|
51
59
|
});
|
|
52
60
|
this.config = config;
|
|
61
|
+
this.factory = factory;
|
|
53
62
|
}
|
|
54
63
|
|
|
55
64
|
@Reactionary({
|
|
@@ -58,7 +67,7 @@ export class FakeCartProvider extends CartProvider {
|
|
|
58
67
|
})
|
|
59
68
|
public override async getById(
|
|
60
69
|
payload: CartQueryById
|
|
61
|
-
): Promise<Result<
|
|
70
|
+
): Promise<Result<CartFactoryCartOutput<TFactory>, NotFoundError>> {
|
|
62
71
|
const cartId = payload.cart.key;
|
|
63
72
|
|
|
64
73
|
if (payload.cart.key === '') {
|
|
@@ -79,14 +88,14 @@ export class FakeCartProvider extends CartProvider {
|
|
|
79
88
|
if (!cart) {
|
|
80
89
|
throw new Error(`Cart with id ${cartId} not found`);
|
|
81
90
|
}
|
|
82
|
-
return success(cart);
|
|
91
|
+
return success(this.factory.parseCart(this.context, cart));
|
|
83
92
|
}
|
|
84
93
|
|
|
85
94
|
@Reactionary({
|
|
86
95
|
inputSchema: CartMutationItemAddSchema,
|
|
87
96
|
outputSchema: CartSchema,
|
|
88
97
|
})
|
|
89
|
-
public override async add(payload: CartMutationItemAdd): Promise<Result<
|
|
98
|
+
public override async add(payload: CartMutationItemAdd): Promise<Result<CartFactoryCartOutput<TFactory>>> {
|
|
90
99
|
const cartId = payload?.cart?.key || `cart-${this.generator.string.uuid()}`;
|
|
91
100
|
const cart = unwrapValue(await this.getById({ cart: { key: cartId } }));
|
|
92
101
|
|
|
@@ -133,14 +142,14 @@ export class FakeCartProvider extends CartProvider {
|
|
|
133
142
|
|
|
134
143
|
this.recalculateCart(cart);
|
|
135
144
|
|
|
136
|
-
return success(cart);
|
|
145
|
+
return success(this.factory.parseCart(this.context, cart));
|
|
137
146
|
}
|
|
138
147
|
|
|
139
148
|
@Reactionary({
|
|
140
149
|
inputSchema: CartMutationItemRemoveSchema,
|
|
141
150
|
outputSchema: CartSchema,
|
|
142
151
|
})
|
|
143
|
-
public override async remove(payload: CartMutationItemRemove): Promise<Result<
|
|
152
|
+
public override async remove(payload: CartMutationItemRemove): Promise<Result<CartFactoryCartOutput<TFactory>>> {
|
|
144
153
|
const cartId = payload.cart.key || `cart-${this.generator.string.uuid()}`;
|
|
145
154
|
const cart = unwrapValue(await this.getById({ cart: { key: cartId } }));
|
|
146
155
|
|
|
@@ -149,7 +158,7 @@ export class FakeCartProvider extends CartProvider {
|
|
|
149
158
|
);
|
|
150
159
|
this.recalculateCart(cart);
|
|
151
160
|
|
|
152
|
-
return success(cart);
|
|
161
|
+
return success(this.factory.parseCart(this.context, cart));
|
|
153
162
|
}
|
|
154
163
|
|
|
155
164
|
@Reactionary({
|
|
@@ -158,7 +167,7 @@ export class FakeCartProvider extends CartProvider {
|
|
|
158
167
|
})
|
|
159
168
|
public override async changeQuantity(
|
|
160
169
|
payload: CartMutationItemQuantityChange
|
|
161
|
-
): Promise<Result<
|
|
170
|
+
): Promise<Result<CartFactoryCartOutput<TFactory>>> {
|
|
162
171
|
const cartId = payload.cart.key || `cart-${this.generator.string.uuid()}`;
|
|
163
172
|
const cart = unwrapValue(await this.getById({ cart: { key: cartId } }));
|
|
164
173
|
|
|
@@ -166,13 +175,13 @@ export class FakeCartProvider extends CartProvider {
|
|
|
166
175
|
(item) => item.identifier.key === payload.item.key
|
|
167
176
|
);
|
|
168
177
|
if (payload.quantity < 1) {
|
|
169
|
-
return success(cart);
|
|
178
|
+
return success(this.factory.parseCart(this.context, cart));
|
|
170
179
|
}
|
|
171
180
|
if (item) {
|
|
172
181
|
item.quantity = payload.quantity;
|
|
173
182
|
}
|
|
174
183
|
this.recalculateCart(cart);
|
|
175
|
-
return success(cart);
|
|
184
|
+
return success(this.factory.parseCart(this.context, cart));
|
|
176
185
|
}
|
|
177
186
|
|
|
178
187
|
@Reactionary({
|
|
@@ -196,7 +205,7 @@ export class FakeCartProvider extends CartProvider {
|
|
|
196
205
|
})
|
|
197
206
|
public override applyCouponCode(
|
|
198
207
|
payload: CartMutationApplyCoupon
|
|
199
|
-
): Promise<Result<
|
|
208
|
+
): Promise<Result<CartFactoryCartOutput<TFactory>>> {
|
|
200
209
|
throw new Error('Method not implemented.');
|
|
201
210
|
}
|
|
202
211
|
|
|
@@ -206,7 +215,7 @@ export class FakeCartProvider extends CartProvider {
|
|
|
206
215
|
})
|
|
207
216
|
public override removeCouponCode(
|
|
208
217
|
payload: CartMutationRemoveCoupon
|
|
209
|
-
): Promise<Result<
|
|
218
|
+
): Promise<Result<CartFactoryCartOutput<TFactory>>> {
|
|
210
219
|
throw new Error('Method not implemented.');
|
|
211
220
|
}
|
|
212
221
|
|
|
@@ -216,7 +225,7 @@ export class FakeCartProvider extends CartProvider {
|
|
|
216
225
|
})
|
|
217
226
|
public override changeCurrency(
|
|
218
227
|
payload: CartMutationChangeCurrency
|
|
219
|
-
): Promise<Result<
|
|
228
|
+
): Promise<Result<CartFactoryCartOutput<TFactory>>> {
|
|
220
229
|
throw new Error('Method not implemented.');
|
|
221
230
|
}
|
|
222
231
|
|