@reactionary/provider-fake 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.
Files changed (69) hide show
  1. package/core/initialize.js +193 -37
  2. package/core/initialize.types.js +8 -0
  3. package/factories/cart/cart.factory.js +15 -0
  4. package/factories/category/category.factory.js +15 -0
  5. package/factories/checkout/checkout.factory.js +19 -0
  6. package/factories/identity/identity.factory.js +11 -0
  7. package/factories/index.js +14 -0
  8. package/factories/inventory/inventory.factory.js +11 -0
  9. package/factories/order/order.factory.js +11 -0
  10. package/factories/order-search/order-search.factory.js +11 -0
  11. package/factories/price/price.factory.js +11 -0
  12. package/factories/product/product.factory.js +11 -0
  13. package/factories/product-associations/product-associations.factory.js +11 -0
  14. package/factories/product-reviews/product-reviews.factory.js +19 -0
  15. package/factories/product-search/product-search.factory.js +11 -0
  16. package/factories/profile/profile.factory.js +11 -0
  17. package/factories/store/store.factory.js +11 -0
  18. package/index.js +2 -0
  19. package/package.json +2 -2
  20. package/providers/cart.provider.js +7 -6
  21. package/providers/category.provider.js +57 -74
  22. package/providers/checkout.provider.js +15 -10
  23. package/providers/identity.provider.js +15 -17
  24. package/providers/inventory.provider.js +11 -15
  25. package/providers/order-search.provider.js +4 -3
  26. package/providers/order.provider.js +9 -32
  27. package/providers/price.provider.js +9 -15
  28. package/providers/product-associations.provider.js +6 -5
  29. package/providers/product-reviews.provider.js +30 -29
  30. package/providers/product-search.provider.js +14 -29
  31. package/providers/product.provider.js +13 -14
  32. package/providers/profile.provider.js +37 -33
  33. package/providers/store.provider.js +21 -15
  34. package/schema/capabilities.schema.js +21 -0
  35. package/src/core/initialize.d.ts +3 -2
  36. package/src/core/initialize.types.d.ts +113 -0
  37. package/src/factories/cart/cart.factory.d.ts +9 -0
  38. package/src/factories/category/category.factory.d.ts +9 -0
  39. package/src/factories/checkout/checkout.factory.d.ts +11 -0
  40. package/src/factories/identity/identity.factory.d.ts +7 -0
  41. package/src/factories/index.d.ts +14 -0
  42. package/src/factories/inventory/inventory.factory.d.ts +7 -0
  43. package/src/factories/order/order.factory.d.ts +7 -0
  44. package/src/factories/order-search/order-search.factory.d.ts +7 -0
  45. package/src/factories/price/price.factory.d.ts +9 -0
  46. package/src/factories/product/product.factory.d.ts +7 -0
  47. package/src/factories/product-associations/product-associations.factory.d.ts +7 -0
  48. package/src/factories/product-reviews/product-reviews.factory.d.ts +11 -0
  49. package/src/factories/product-search/product-search.factory.d.ts +7 -0
  50. package/src/factories/profile/profile.factory.d.ts +7 -0
  51. package/src/factories/store/store.factory.d.ts +7 -0
  52. package/src/index.d.ts +2 -0
  53. package/src/providers/cart.provider.d.ts +12 -10
  54. package/src/providers/category.provider.d.ts +12 -11
  55. package/src/providers/checkout.provider.d.ts +14 -12
  56. package/src/providers/identity.provider.d.ts +9 -7
  57. package/src/providers/inventory.provider.d.ts +6 -4
  58. package/src/providers/order-search.provider.d.ts +6 -4
  59. package/src/providers/order.provider.d.ts +6 -4
  60. package/src/providers/price.provider.d.ts +7 -5
  61. package/src/providers/product-associations.provider.d.ts +9 -6
  62. package/src/providers/product-reviews.provider.d.ts +8 -7
  63. package/src/providers/product-search.provider.d.ts +6 -9
  64. package/src/providers/product.provider.d.ts +9 -7
  65. package/src/providers/profile.provider.d.ts +14 -20
  66. package/src/providers/store.provider.d.ts +6 -4
  67. package/src/schema/capabilities.schema.d.ts +115 -16
  68. package/src/test/client-builder-product-extension.example.d.ts +1 -0
  69. package/test/client-builder-product-extension.example.js +57 -0
@@ -1,18 +1,117 @@
1
- import type * as z from 'zod';
1
+ import type { Cache, CartFactory, CartFactoryWithOutput, CartProvider, CategoryFactory, CategoryFactoryWithOutput, CategoryProvider, CheckoutFactory, CheckoutFactoryWithOutput, CheckoutProvider, IdentityFactory, IdentityFactoryWithOutput, IdentityProvider, InventoryFactory, InventoryFactoryWithOutput, InventoryProvider, OrderFactory, OrderFactoryWithOutput, OrderProvider, OrderSearchFactory, OrderSearchFactoryWithOutput, OrderSearchProvider, PriceFactory, PriceFactoryWithOutput, PriceProvider, ProductAssociationsFactory, ProductAssociationsFactoryWithOutput, ProductAssociationsProvider, ProductFactory, ProductFactoryWithOutput, ProductProvider, ProductReviewsFactory, ProductReviewsFactoryWithOutput, ProductReviewsProvider, ProductSearchFactory, ProductSearchFactoryWithOutput, ProductSearchProvider, ProfileFactory, ProfileFactoryWithOutput, ProfileProvider, RequestContext, StoreFactory, StoreFactoryWithOutput, StoreProvider } from '@reactionary/core';
2
+ import type { FakeConfiguration } from './configuration.schema.js';
3
+ import * as z from 'zod';
2
4
  export declare const FakeCapabilitiesSchema: z.ZodObject<{
3
- product: z.ZodOptional<z.ZodBoolean>;
4
- price: z.ZodOptional<z.ZodBoolean>;
5
- order: z.ZodOptional<z.ZodBoolean>;
6
- cart: z.ZodOptional<z.ZodBoolean>;
7
- checkout: z.ZodOptional<z.ZodBoolean>;
8
- identity: z.ZodOptional<z.ZodBoolean>;
9
- inventory: z.ZodOptional<z.ZodBoolean>;
10
- category: z.ZodOptional<z.ZodBoolean>;
11
- profile: z.ZodOptional<z.ZodBoolean>;
12
- store: z.ZodOptional<z.ZodBoolean>;
13
- productSearch: z.ZodOptional<z.ZodBoolean>;
14
- productAssociations: z.ZodOptional<z.ZodBoolean>;
15
- productReviews: z.ZodOptional<z.ZodBoolean>;
16
- orderSearch: z.ZodOptional<z.ZodBoolean>;
5
+ product: z.ZodOptional<z.ZodOptional<z.ZodObject<{
6
+ enabled: z.ZodBoolean;
7
+ factory: z.ZodOptional<z.ZodUnknown>;
8
+ provider: z.ZodOptional<z.ZodUnknown>;
9
+ }, z.core.$loose>>>;
10
+ productSearch: z.ZodOptional<z.ZodOptional<z.ZodObject<{
11
+ enabled: z.ZodBoolean;
12
+ factory: z.ZodOptional<z.ZodUnknown>;
13
+ provider: z.ZodOptional<z.ZodUnknown>;
14
+ }, z.core.$loose>>>;
15
+ identity: z.ZodOptional<z.ZodOptional<z.ZodObject<{
16
+ enabled: z.ZodBoolean;
17
+ factory: z.ZodOptional<z.ZodUnknown>;
18
+ provider: z.ZodOptional<z.ZodUnknown>;
19
+ }, z.core.$loose>>>;
20
+ category: z.ZodOptional<z.ZodOptional<z.ZodObject<{
21
+ enabled: z.ZodBoolean;
22
+ factory: z.ZodOptional<z.ZodUnknown>;
23
+ provider: z.ZodOptional<z.ZodUnknown>;
24
+ }, z.core.$loose>>>;
25
+ cart: z.ZodOptional<z.ZodOptional<z.ZodObject<{
26
+ enabled: z.ZodBoolean;
27
+ factory: z.ZodOptional<z.ZodUnknown>;
28
+ provider: z.ZodOptional<z.ZodUnknown>;
29
+ }, z.core.$loose>>>;
30
+ inventory: z.ZodOptional<z.ZodOptional<z.ZodObject<{
31
+ enabled: z.ZodBoolean;
32
+ factory: z.ZodOptional<z.ZodUnknown>;
33
+ provider: z.ZodOptional<z.ZodUnknown>;
34
+ }, z.core.$loose>>>;
35
+ store: z.ZodOptional<z.ZodOptional<z.ZodObject<{
36
+ enabled: z.ZodBoolean;
37
+ factory: z.ZodOptional<z.ZodUnknown>;
38
+ provider: z.ZodOptional<z.ZodUnknown>;
39
+ }, z.core.$loose>>>;
40
+ price: z.ZodOptional<z.ZodOptional<z.ZodObject<{
41
+ enabled: z.ZodBoolean;
42
+ factory: z.ZodOptional<z.ZodUnknown>;
43
+ provider: z.ZodOptional<z.ZodUnknown>;
44
+ }, z.core.$loose>>>;
45
+ checkout: z.ZodOptional<z.ZodOptional<z.ZodObject<{
46
+ enabled: z.ZodBoolean;
47
+ factory: z.ZodOptional<z.ZodUnknown>;
48
+ provider: z.ZodOptional<z.ZodUnknown>;
49
+ }, z.core.$loose>>>;
50
+ order: z.ZodOptional<z.ZodOptional<z.ZodObject<{
51
+ enabled: z.ZodBoolean;
52
+ factory: z.ZodOptional<z.ZodUnknown>;
53
+ provider: z.ZodOptional<z.ZodUnknown>;
54
+ }, z.core.$loose>>>;
55
+ orderSearch: z.ZodOptional<z.ZodOptional<z.ZodObject<{
56
+ enabled: z.ZodBoolean;
57
+ factory: z.ZodOptional<z.ZodUnknown>;
58
+ provider: z.ZodOptional<z.ZodUnknown>;
59
+ }, z.core.$loose>>>;
60
+ profile: z.ZodOptional<z.ZodOptional<z.ZodObject<{
61
+ enabled: z.ZodBoolean;
62
+ factory: z.ZodOptional<z.ZodUnknown>;
63
+ provider: z.ZodOptional<z.ZodUnknown>;
64
+ }, z.core.$loose>>>;
65
+ productReviews: z.ZodOptional<z.ZodOptional<z.ZodObject<{
66
+ enabled: z.ZodBoolean;
67
+ factory: z.ZodOptional<z.ZodUnknown>;
68
+ provider: z.ZodOptional<z.ZodUnknown>;
69
+ }, z.core.$loose>>>;
70
+ productAssociations: z.ZodOptional<z.ZodOptional<z.ZodObject<{
71
+ enabled: z.ZodBoolean;
72
+ factory: z.ZodOptional<z.ZodUnknown>;
73
+ provider: z.ZodOptional<z.ZodUnknown>;
74
+ }, z.core.$loose>>>;
17
75
  }, z.core.$loose>;
18
- export type FakeCapabilities = z.infer<typeof FakeCapabilitiesSchema>;
76
+ export interface FakeCapabilityProviderFactoryArgs<TFactory> {
77
+ cache: Cache;
78
+ context: RequestContext;
79
+ config: FakeConfiguration;
80
+ factory: TFactory;
81
+ }
82
+ export interface FakeCapabilityConfig<TFactory, TProvider> {
83
+ enabled: boolean;
84
+ factory?: TFactory;
85
+ provider?: (args: FakeCapabilityProviderFactoryArgs<TFactory>) => TProvider;
86
+ }
87
+ export type FakeProductCapabilityConfig = FakeCapabilityConfig<ProductFactoryWithOutput<ProductFactory>, ProductProvider>;
88
+ export type FakeProductSearchCapabilityConfig = FakeCapabilityConfig<ProductSearchFactoryWithOutput<ProductSearchFactory>, ProductSearchProvider>;
89
+ export type FakeIdentityCapabilityConfig = FakeCapabilityConfig<IdentityFactoryWithOutput<IdentityFactory>, IdentityProvider>;
90
+ export type FakeCategoryCapabilityConfig = FakeCapabilityConfig<CategoryFactoryWithOutput<CategoryFactory>, CategoryProvider>;
91
+ export type FakeCartCapabilityConfig = FakeCapabilityConfig<CartFactoryWithOutput<CartFactory>, CartProvider>;
92
+ export type FakeInventoryCapabilityConfig = FakeCapabilityConfig<InventoryFactoryWithOutput<InventoryFactory>, InventoryProvider>;
93
+ export type FakeStoreCapabilityConfig = FakeCapabilityConfig<StoreFactoryWithOutput<StoreFactory>, StoreProvider>;
94
+ export type FakePriceCapabilityConfig = FakeCapabilityConfig<PriceFactoryWithOutput<PriceFactory>, PriceProvider>;
95
+ export type FakeCheckoutCapabilityConfig = FakeCapabilityConfig<CheckoutFactoryWithOutput<CheckoutFactory>, CheckoutProvider>;
96
+ export type FakeOrderCapabilityConfig = FakeCapabilityConfig<OrderFactoryWithOutput<OrderFactory>, OrderProvider>;
97
+ export type FakeOrderSearchCapabilityConfig = FakeCapabilityConfig<OrderSearchFactoryWithOutput<OrderSearchFactory>, OrderSearchProvider>;
98
+ export type FakeProfileCapabilityConfig = FakeCapabilityConfig<ProfileFactoryWithOutput<ProfileFactory>, ProfileProvider>;
99
+ export type FakeProductReviewsCapabilityConfig = FakeCapabilityConfig<ProductReviewsFactoryWithOutput<ProductReviewsFactory>, ProductReviewsProvider>;
100
+ export type FakeProductAssociationsCapabilityConfig = FakeCapabilityConfig<ProductAssociationsFactoryWithOutput<ProductAssociationsFactory>, ProductAssociationsProvider>;
101
+ export type FakeCapabilities = {
102
+ product?: FakeProductCapabilityConfig;
103
+ productSearch?: FakeProductSearchCapabilityConfig;
104
+ identity?: FakeIdentityCapabilityConfig;
105
+ category?: FakeCategoryCapabilityConfig;
106
+ cart?: FakeCartCapabilityConfig;
107
+ inventory?: FakeInventoryCapabilityConfig;
108
+ store?: FakeStoreCapabilityConfig;
109
+ price?: FakePriceCapabilityConfig;
110
+ checkout?: FakeCheckoutCapabilityConfig;
111
+ order?: FakeOrderCapabilityConfig;
112
+ orderSearch?: FakeOrderSearchCapabilityConfig;
113
+ profile?: FakeProfileCapabilityConfig;
114
+ productReviews?: FakeProductReviewsCapabilityConfig;
115
+ productAssociations?: FakeProductAssociationsCapabilityConfig;
116
+ };
117
+ export type ParsedFakeCapabilities = z.infer<typeof FakeCapabilitiesSchema>;
@@ -0,0 +1,57 @@
1
+ import {
2
+ ClientBuilder,
3
+ NoOpCache,
4
+ ProductSchema,
5
+ createInitialRequestContext
6
+ } from "@reactionary/core";
7
+ import * as z from "zod";
8
+ import { withFakeCapabilities } from "../core/initialize.js";
9
+ import { FakeProductFactory } from "../factories/product/product.factory.js";
10
+ const assertType = (_value) => {
11
+ };
12
+ const assertNotAny = (_value) => {
13
+ };
14
+ const ExtendedProductSchema = ProductSchema.safeExtend({
15
+ extendedValue: z.string()
16
+ });
17
+ class ExtendedFakeProductFactory extends FakeProductFactory {
18
+ constructor() {
19
+ super(ExtendedProductSchema);
20
+ }
21
+ parseProduct(context, data) {
22
+ const base = super.parseProduct(context, data);
23
+ return this.productSchema.parse({
24
+ ...base,
25
+ extendedValue: "from-fake-factory"
26
+ });
27
+ }
28
+ }
29
+ const config = {
30
+ jitter: {
31
+ mean: 0,
32
+ deviation: 0
33
+ },
34
+ seeds: {
35
+ product: 1,
36
+ search: 1,
37
+ category: 1
38
+ }
39
+ };
40
+ const client = new ClientBuilder(createInitialRequestContext()).withCache(new NoOpCache()).withCapability(
41
+ withFakeCapabilities(config, {
42
+ product: {
43
+ enabled: true,
44
+ factory: new ExtendedFakeProductFactory()
45
+ }
46
+ })
47
+ ).build();
48
+ client.product.getById({
49
+ identifier: { key: "example-product-id" }
50
+ }).then((result) => {
51
+ assertNotAny(result);
52
+ if (result.success) {
53
+ assertNotAny(result.value);
54
+ assertNotAny(result.value.extendedValue);
55
+ assertType(result.value.extendedValue);
56
+ }
57
+ });