@reactionary/magento 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +11 -0
  2. package/capabilities/cart.capability.js +293 -0
  3. package/capabilities/category.capability.js +254 -0
  4. package/capabilities/identity.capability.js +107 -0
  5. package/capabilities/inventory.capability.js +84 -0
  6. package/capabilities/price.capability.js +72 -0
  7. package/capabilities/product-search.capability.js +113 -0
  8. package/capabilities/product.capability.js +146 -0
  9. package/core/client.js +321 -0
  10. package/core/initialize.js +176 -0
  11. package/core/initialize.types.js +13 -0
  12. package/factories/cart/cart.factory.js +135 -0
  13. package/factories/category/category.factory.js +48 -0
  14. package/factories/identity/identity.factory.js +12 -0
  15. package/factories/index.js +7 -0
  16. package/factories/inventory/inventory.factory.js +24 -0
  17. package/factories/price/price.factory.js +43 -0
  18. package/factories/product/product.factory.js +115 -0
  19. package/factories/product-search/product-search.factory.js +88 -0
  20. package/index.js +14 -0
  21. package/package.json +15 -0
  22. package/schema/capabilities.schema.js +31 -0
  23. package/schema/configuration.schema.js +13 -0
  24. package/schema/magento.schema.js +5 -0
  25. package/schema/magento.types.js +0 -0
  26. package/src/capabilities/cart.capability.d.ts +24 -0
  27. package/src/capabilities/category.capability.d.ts +22 -0
  28. package/src/capabilities/identity.capability.d.ts +13 -0
  29. package/src/capabilities/inventory.capability.d.ts +11 -0
  30. package/src/capabilities/price.capability.d.ts +12 -0
  31. package/src/capabilities/product-search.capability.d.ts +15 -0
  32. package/src/capabilities/product.capability.d.ts +14 -0
  33. package/src/core/client.d.ts +93 -0
  34. package/src/core/initialize.d.ts +5 -0
  35. package/src/core/initialize.types.d.ts +80 -0
  36. package/src/factories/cart/cart.factory.d.ts +20 -0
  37. package/src/factories/category/category.factory.d.ts +14 -0
  38. package/src/factories/identity/identity.factory.d.ts +7 -0
  39. package/src/factories/index.d.ts +7 -0
  40. package/src/factories/inventory/inventory.factory.d.ts +13 -0
  41. package/src/factories/price/price.factory.d.ts +15 -0
  42. package/src/factories/product/product.factory.d.ts +13 -0
  43. package/src/factories/product-search/product-search.factory.d.ts +12 -0
  44. package/src/index.d.ts +14 -0
  45. package/src/schema/capabilities.schema.d.ts +74 -0
  46. package/src/schema/configuration.schema.d.ts +11 -0
  47. package/src/schema/magento.schema.d.ts +5 -0
  48. package/src/schema/magento.types.d.ts +200 -0
@@ -0,0 +1,80 @@
1
+ import type { CartFactory, CategoryFactory, ClientFromCapabilities, InventoryFactory, PriceFactory, ProductFactory, ProductSearchFactory } from '@reactionary/core';
2
+ import type { MagentoCapabilities } from '../schema/capabilities.schema.js';
3
+ import type { MagentoCartFactory } from '../factories/cart/cart.factory.js';
4
+ import type { MagentoCategoryFactory } from '../factories/category/category.factory.js';
5
+ import type { MagentoInventoryFactory } from '../factories/inventory/inventory.factory.js';
6
+ import type { MagentoPriceFactory } from '../factories/price/price.factory.js';
7
+ import type { MagentoProductFactory } from '../factories/product/product.factory.js';
8
+ import type { MagentoProductSearchFactory } from '../factories/product-search/product-search.factory.js';
9
+ import type { MagentoCartCapability } from '../capabilities/cart.capability.js';
10
+ import type { MagentoCategoryCapability } from '../capabilities/category.capability.js';
11
+ import type { MagentoIdentityCapability } from '../capabilities/identity.capability.js';
12
+ import type { MagentoInventoryCapability } from '../capabilities/inventory.capability.js';
13
+ import type { MagentoPriceCapability } from '../capabilities/price.capability.js';
14
+ import type { MagentoProductCapability } from '../capabilities/product.capability.js';
15
+ import type { MagentoProductSearchCapability } from '../capabilities/product-search.capability.js';
16
+ type OverridableCapabilityKey = 'product' | 'productSearch' | 'cart' | 'category' | 'price' | 'inventory';
17
+ type EnabledCapability<TCapability> = TCapability extends {
18
+ enabled: true;
19
+ } ? true : false;
20
+ type NormalizeConfiguredCapabilities<T extends MagentoCapabilities> = Omit<T, OverridableCapabilityKey | 'identity'> & {
21
+ [K in OverridableCapabilityKey]?: EnabledCapability<T[K]>;
22
+ } & {
23
+ identity?: EnabledCapability<T['identity']>;
24
+ };
25
+ type ExtractCapabilityFactory<TCapability, TContract, TDefaultFactory> = TCapability extends {
26
+ enabled: true;
27
+ factory?: infer TFactory;
28
+ } ? TFactory extends TContract ? TFactory : TDefaultFactory : TDefaultFactory;
29
+ type ExtractCapabilityImplementation<TCapability, TDefaultCapability> = TCapability extends {
30
+ enabled: true;
31
+ capability?: infer TCapabilityFactory;
32
+ } ? TCapabilityFactory extends (...args: unknown[]) => infer TResolvedCapability ? TResolvedCapability : TDefaultCapability : TDefaultCapability;
33
+ type FactoryContractMap = {
34
+ product: ProductFactory;
35
+ productSearch: ProductSearchFactory;
36
+ cart: CartFactory;
37
+ category: CategoryFactory;
38
+ price: PriceFactory;
39
+ inventory: InventoryFactory;
40
+ };
41
+ type DefaultFactoryMap = {
42
+ product: MagentoProductFactory;
43
+ productSearch: MagentoProductSearchFactory;
44
+ cart: MagentoCartFactory;
45
+ category: MagentoCategoryFactory;
46
+ price: MagentoPriceFactory;
47
+ inventory: MagentoInventoryFactory;
48
+ };
49
+ type ResolvedFactoryMap<T extends MagentoCapabilities> = {
50
+ [K in OverridableCapabilityKey]: ExtractCapabilityFactory<T[K], FactoryContractMap[K], DefaultFactoryMap[K]>;
51
+ };
52
+ type DefaultCapabilityMap<T extends MagentoCapabilities> = {
53
+ product: MagentoProductCapability<ResolvedFactoryMap<T>['product']>;
54
+ productSearch: MagentoProductSearchCapability<ResolvedFactoryMap<T>['productSearch']>;
55
+ cart: MagentoCartCapability<ResolvedFactoryMap<T>['cart']>;
56
+ category: MagentoCategoryCapability<ResolvedFactoryMap<T>['category']>;
57
+ price: MagentoPriceCapability<ResolvedFactoryMap<T>['price']>;
58
+ inventory: MagentoInventoryCapability<ResolvedFactoryMap<T>['inventory']>;
59
+ identity: MagentoIdentityCapability;
60
+ };
61
+ type CapabilityImplementationMap<T extends MagentoCapabilities> = {
62
+ [K in OverridableCapabilityKey | 'identity']: ExtractCapabilityImplementation<T[K], DefaultCapabilityMap<T>[K]>;
63
+ };
64
+ type EnabledCapabilityOverrideMap<T extends MagentoCapabilities> = {
65
+ [K in OverridableCapabilityKey | 'identity' as T[K] extends {
66
+ enabled: true;
67
+ } ? K : never]: CapabilityImplementationMap<T>[K];
68
+ };
69
+ export type MagentoClientFromCapabilities<T extends MagentoCapabilities> = Omit<ClientFromCapabilities<NormalizeConfiguredCapabilities<T>>, OverridableCapabilityKey | 'identity'> & EnabledCapabilityOverrideMap<T>;
70
+ export declare function resolveCapabilityWithFactory<TFactory, TResolvedCapability, TCapabilityArgs>(capability: {
71
+ factory?: TFactory;
72
+ capability?: (args: TCapabilityArgs) => TResolvedCapability;
73
+ } | undefined, defaults: {
74
+ factory: TFactory;
75
+ capability: (args: TCapabilityArgs) => TResolvedCapability;
76
+ }, buildCapabilityArgs: (factory: TFactory) => TCapabilityArgs): TResolvedCapability;
77
+ export declare function resolveDirectCapability<TResolvedCapability, TCapabilityArgs>(capability: {
78
+ capability?: (args: TCapabilityArgs) => TResolvedCapability;
79
+ } | undefined, defaultCapability: (args: TCapabilityArgs) => TResolvedCapability, args: TCapabilityArgs): TResolvedCapability;
80
+ export {};
@@ -0,0 +1,20 @@
1
+ import { type AnyCartIdentifierSchema, type AnyCartPaginatedSearchResult, type AnyCartSchema, type CartFactory, type CartIdentifierSchema, type CartItem, type CartPaginatedSearchResultSchema, type CartQueryList, type CartSchema, type CartSearchResultItem, type CostBreakDown, type Currency, type ItemCostBreakdown, type RequestContext } from '@reactionary/core';
2
+ import type * as z from 'zod';
3
+ import type { MagentoCart, MagentoCartItem } from '../../schema/magento.types.js';
4
+ export interface MagentoCartFactoryPaginatedSearchResultInput {
5
+ items: MagentoCart[];
6
+ totalCount: number;
7
+ }
8
+ export declare class MagentoCartFactory<TCartSchema extends AnyCartSchema = typeof CartSchema, TCartIdentifierSchema extends AnyCartIdentifierSchema = typeof CartIdentifierSchema, TCartPaginatedSearchResult extends AnyCartPaginatedSearchResult = typeof CartPaginatedSearchResultSchema> implements CartFactory<TCartSchema, TCartIdentifierSchema, TCartPaginatedSearchResult> {
9
+ readonly cartSchema: TCartSchema;
10
+ readonly cartIdentifierSchema: TCartIdentifierSchema;
11
+ readonly cartPaginatedSearchResultSchema: TCartPaginatedSearchResult;
12
+ constructor(cartSchema: TCartSchema, cartIdentifierSchema: TCartIdentifierSchema, cartPaginatedSearchResultSchema: TCartPaginatedSearchResult);
13
+ parseCart(_context: RequestContext, data: MagentoCart): z.output<TCartSchema>;
14
+ parseCartIdentifier(_context: RequestContext, data: MagentoCart): z.output<TCartIdentifierSchema>;
15
+ parseCartPaginatedSearchResult(_context: RequestContext, data: MagentoCartFactoryPaginatedSearchResultInput, query: CartQueryList): z.output<TCartPaginatedSearchResult>;
16
+ protected parseCartSearchResultItem(context: RequestContext, data: MagentoCart): CartSearchResultItem;
17
+ protected parseCostBreakdown(cart: MagentoCart, currency: Currency): CostBreakDown;
18
+ protected parseItemPrice(item: MagentoCartItem, currency: Currency): ItemCostBreakdown;
19
+ protected parseCartItem(item: MagentoCartItem, currency: Currency): CartItem;
20
+ }
@@ -0,0 +1,14 @@
1
+ import { type AnyCategoryPaginatedResultSchema, type AnyCategorySchema, type CategoryFactory, type CategoryPaginatedResultSchema, type CategorySchema, type RequestContext } from '@reactionary/core';
2
+ import type * as z from 'zod';
3
+ import type { MagentoCategory, MagentoCategorySearchResult } from '../../schema/magento.types.js';
4
+ export interface MagentoCategoryPaginatedInput extends MagentoCategorySearchResult {
5
+ pageSize: number;
6
+ currentPage: number;
7
+ }
8
+ export declare class MagentoCategoryFactory<TCategorySchema extends AnyCategorySchema = typeof CategorySchema, TCategoryPaginatedSchema extends AnyCategoryPaginatedResultSchema = typeof CategoryPaginatedResultSchema> implements CategoryFactory<TCategorySchema, TCategoryPaginatedSchema> {
9
+ readonly categorySchema: TCategorySchema;
10
+ readonly categoryPaginatedResultSchema: TCategoryPaginatedSchema;
11
+ constructor(categorySchema: TCategorySchema, categoryPaginatedResultSchema: TCategoryPaginatedSchema);
12
+ parseCategory(_context: RequestContext, data: MagentoCategory): z.output<TCategorySchema>;
13
+ parseCategoryPaginatedResult(context: RequestContext, data: MagentoCategoryPaginatedInput): z.output<TCategoryPaginatedSchema>;
14
+ }
@@ -0,0 +1,7 @@
1
+ import type { AnyIdentitySchema, IdentityFactory, IdentitySchema, RequestContext } from '@reactionary/core';
2
+ import type * as z from 'zod';
3
+ export declare class MagentoIdentityFactory<TIdentitySchema extends AnyIdentitySchema = typeof IdentitySchema> implements IdentityFactory<TIdentitySchema> {
4
+ readonly identitySchema: TIdentitySchema;
5
+ constructor(identitySchema: TIdentitySchema);
6
+ parseIdentity(_context: RequestContext, data: unknown): z.output<TIdentitySchema>;
7
+ }
@@ -0,0 +1,7 @@
1
+ export * from './cart/cart.factory.js';
2
+ export * from './category/category.factory.js';
3
+ export * from './identity/identity.factory.js';
4
+ export * from './inventory/inventory.factory.js';
5
+ export * from './price/price.factory.js';
6
+ export * from './product/product.factory.js';
7
+ export * from './product-search/product-search.factory.js';
@@ -0,0 +1,13 @@
1
+ import type { AnyInventorySchema, InventoryFactory, InventorySchema, RequestContext } from '@reactionary/core';
2
+ import type * as z from 'zod';
3
+ export interface MagentoInventoryParseInput {
4
+ sku: string;
5
+ fulfillmentCenterKey: string;
6
+ quantity: number;
7
+ status: 'inStock' | 'outOfStock';
8
+ }
9
+ export declare class MagentoInventoryFactory<TInventorySchema extends AnyInventorySchema = typeof InventorySchema> implements InventoryFactory<TInventorySchema> {
10
+ readonly inventorySchema: TInventorySchema;
11
+ constructor(inventorySchema: TInventorySchema);
12
+ parseInventory(_context: RequestContext, data: unknown): z.output<TInventorySchema>;
13
+ }
@@ -0,0 +1,15 @@
1
+ import type { AnyPriceSchema, PriceFactory, PriceSchema, RequestContext } from '@reactionary/core';
2
+ import type * as z from 'zod';
3
+ import type { MagentoProduct } from '../../schema/magento.types.js';
4
+ export interface MagentoPriceParseInput {
5
+ product: MagentoProduct;
6
+ sku: string;
7
+ mode: 'list' | 'customer';
8
+ }
9
+ export declare class MagentoPriceFactory<TPriceSchema extends AnyPriceSchema = typeof PriceSchema> implements PriceFactory<TPriceSchema> {
10
+ readonly priceSchema: TPriceSchema;
11
+ constructor(priceSchema: TPriceSchema);
12
+ parsePrice(context: RequestContext, data: unknown, _options?: {
13
+ includeDiscounts: boolean;
14
+ }): z.output<TPriceSchema>;
15
+ }
@@ -0,0 +1,13 @@
1
+ import { type AnyProductSchema, type ProductAttribute, type ProductFactory, type ProductSchema, type ProductVariant, type RequestContext } from '@reactionary/core';
2
+ import type * as z from 'zod';
3
+ import type { MagentoConfiguration } from '../../schema/configuration.schema.js';
4
+ import type { MagentoProduct } from '../../schema/magento.types.js';
5
+ export declare class MagentoProductFactory<TProductSchema extends AnyProductSchema = typeof ProductSchema> implements ProductFactory<TProductSchema> {
6
+ protected config: MagentoConfiguration;
7
+ readonly productSchema: TProductSchema;
8
+ constructor(productSchema: TProductSchema, config: MagentoConfiguration);
9
+ parseProduct(_context: RequestContext, data: MagentoProduct): z.output<TProductSchema>;
10
+ protected parseVariant(product: MagentoProduct): ProductVariant;
11
+ protected createSynthAttribute(key: string, name: string, value: string): ProductAttribute;
12
+ protected parseAttributes(product: MagentoProduct): Array<ProductAttribute>;
13
+ }
@@ -0,0 +1,12 @@
1
+ import { type AnyProductSearchResultSchema, type ProductSearchFactory, type ProductSearchQueryByTerm, type ProductSearchResultItem, type ProductSearchResultItemVariant, type ProductSearchResultSchema, type RequestContext } from '@reactionary/core';
2
+ import type * as z from 'zod';
3
+ import type { MagentoConfiguration } from '../../schema/configuration.schema.js';
4
+ import type { MagentoProduct, MagentoProductSearchResult } from '../../schema/magento.types.js';
5
+ export declare class MagentoProductSearchFactory<TProductSearchResultSchema extends AnyProductSearchResultSchema = typeof ProductSearchResultSchema> implements ProductSearchFactory<TProductSearchResultSchema> {
6
+ protected config: MagentoConfiguration;
7
+ readonly productSearchResultSchema: TProductSearchResultSchema;
8
+ constructor(productSearchResultSchema: TProductSearchResultSchema, config: MagentoConfiguration);
9
+ parseSearchResult(context: RequestContext, data: MagentoProductSearchResult, query: ProductSearchQueryByTerm): z.output<TProductSearchResultSchema>;
10
+ protected parseProductSearchResultItem(_context: RequestContext, product: MagentoProduct): ProductSearchResultItem;
11
+ protected parseVariant(variant: MagentoProduct, product: MagentoProduct): ProductSearchResultItemVariant;
12
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ export * from './schema/configuration.schema.js';
2
+ export * from './schema/capabilities.schema.js';
3
+ export * from './schema/magento.schema.js';
4
+ export * from './core/initialize.js';
5
+ export * from './core/initialize.types.js';
6
+ export * from './core/client.js';
7
+ export * from './factories/index.js';
8
+ export * from './capabilities/product.capability.js';
9
+ export * from './capabilities/product-search.capability.js';
10
+ export * from './capabilities/category.capability.js';
11
+ export * from './capabilities/inventory.capability.js';
12
+ export * from './capabilities/price.capability.js';
13
+ export * from './capabilities/identity.capability.js';
14
+ export * from './capabilities/cart.capability.js';
@@ -0,0 +1,74 @@
1
+ import type { CartFactory, CartFactoryWithOutput, CartCapability, CategoryFactory, CategoryFactoryWithOutput, CategoryCapability, IdentityCapability, InventoryFactory, InventoryFactoryWithOutput, InventoryCapability, PriceFactory, PriceFactoryWithOutput, PriceCapability, ProductFactory, ProductFactoryWithOutput, ProductCapability, ProductSearchFactory, ProductSearchFactoryWithOutput, ProductSearchCapability, RequestContext, Cache } from '@reactionary/core';
2
+ import type { MagentoConfiguration } from './configuration.schema.js';
3
+ import type { MagentoClient } from '../core/client.js';
4
+ import * as z from 'zod';
5
+ export declare const MagentoCapabilitiesSchema: z.ZodObject<{
6
+ product: z.ZodOptional<z.ZodOptional<z.ZodObject<{
7
+ enabled: z.ZodBoolean;
8
+ factory: z.ZodOptional<z.ZodUnknown>;
9
+ capability: z.ZodOptional<z.ZodUnknown>;
10
+ }, z.core.$loose>>>;
11
+ productSearch: z.ZodOptional<z.ZodOptional<z.ZodObject<{
12
+ enabled: z.ZodBoolean;
13
+ factory: z.ZodOptional<z.ZodUnknown>;
14
+ capability: z.ZodOptional<z.ZodUnknown>;
15
+ }, z.core.$loose>>>;
16
+ cart: z.ZodOptional<z.ZodOptional<z.ZodObject<{
17
+ enabled: z.ZodBoolean;
18
+ factory: z.ZodOptional<z.ZodUnknown>;
19
+ capability: z.ZodOptional<z.ZodUnknown>;
20
+ }, z.core.$loose>>>;
21
+ category: z.ZodOptional<z.ZodOptional<z.ZodObject<{
22
+ enabled: z.ZodBoolean;
23
+ factory: z.ZodOptional<z.ZodUnknown>;
24
+ capability: z.ZodOptional<z.ZodUnknown>;
25
+ }, z.core.$loose>>>;
26
+ price: z.ZodOptional<z.ZodOptional<z.ZodObject<{
27
+ enabled: z.ZodBoolean;
28
+ factory: z.ZodOptional<z.ZodUnknown>;
29
+ capability: z.ZodOptional<z.ZodUnknown>;
30
+ }, z.core.$loose>>>;
31
+ inventory: z.ZodOptional<z.ZodOptional<z.ZodObject<{
32
+ enabled: z.ZodBoolean;
33
+ factory: z.ZodOptional<z.ZodUnknown>;
34
+ capability: z.ZodOptional<z.ZodUnknown>;
35
+ }, z.core.$loose>>>;
36
+ identity: z.ZodOptional<z.ZodOptional<z.ZodObject<{
37
+ enabled: z.ZodBoolean;
38
+ capability: z.ZodOptional<z.ZodUnknown>;
39
+ }, z.core.$loose>>>;
40
+ }, z.core.$loose>;
41
+ export interface MagentoCapabilityFactoryArgs {
42
+ cache: Cache;
43
+ context: RequestContext;
44
+ config: MagentoConfiguration;
45
+ magentoApi: MagentoClient;
46
+ }
47
+ export interface MagentoFactoryCapabilityArgs<TFactory> extends MagentoCapabilityFactoryArgs {
48
+ factory: TFactory;
49
+ }
50
+ export interface MagentoCapabilityConfig<TFactory, TCapability> {
51
+ enabled: boolean;
52
+ factory?: TFactory;
53
+ capability?: (args: MagentoFactoryCapabilityArgs<TFactory>) => TCapability;
54
+ }
55
+ export interface MagentoDirectCapabilityConfig<TCapability> {
56
+ enabled: boolean;
57
+ capability?: (args: MagentoCapabilityFactoryArgs) => TCapability;
58
+ }
59
+ export type MagentoProductCapabilityConfig = MagentoCapabilityConfig<ProductFactoryWithOutput<ProductFactory>, ProductCapability>;
60
+ export type MagentoProductSearchCapabilityConfig = MagentoCapabilityConfig<ProductSearchFactoryWithOutput<ProductSearchFactory>, ProductSearchCapability>;
61
+ export type MagentoCartCapabilityConfig = MagentoCapabilityConfig<CartFactoryWithOutput<CartFactory>, CartCapability>;
62
+ export type MagentoCategoryCapabilityConfig = MagentoCapabilityConfig<CategoryFactoryWithOutput<CategoryFactory>, CategoryCapability>;
63
+ export type MagentoPriceCapabilityConfig = MagentoCapabilityConfig<PriceFactoryWithOutput<PriceFactory>, PriceCapability>;
64
+ export type MagentoInventoryCapabilityConfig = MagentoCapabilityConfig<InventoryFactoryWithOutput<InventoryFactory>, InventoryCapability>;
65
+ export type MagentoIdentityCapabilityConfig = MagentoDirectCapabilityConfig<IdentityCapability>;
66
+ export type MagentoCapabilities<TProductFactory extends ProductFactory = ProductFactory, TProductCapability extends ProductCapability = ProductCapability, TProductSearchFactory extends ProductSearchFactory = ProductSearchFactory, TProductSearchCapability extends ProductSearchCapability = ProductSearchCapability, TCartFactory extends CartFactory = CartFactory, TCartCapability extends CartCapability = CartCapability, TCategoryFactory extends CategoryFactory = CategoryFactory, TCategoryCapability extends CategoryCapability = CategoryCapability, TPriceFactory extends PriceFactory = PriceFactory, TPriceCapability extends PriceCapability = PriceCapability, TInventoryFactory extends InventoryFactory = InventoryFactory, TInventoryCapability extends InventoryCapability = InventoryCapability, TIdentityCapability extends IdentityCapability = IdentityCapability> = {
67
+ product?: MagentoCapabilityConfig<ProductFactoryWithOutput<TProductFactory>, TProductCapability>;
68
+ productSearch?: MagentoCapabilityConfig<ProductSearchFactoryWithOutput<TProductSearchFactory>, TProductSearchCapability>;
69
+ cart?: MagentoCapabilityConfig<CartFactoryWithOutput<TCartFactory>, TCartCapability>;
70
+ category?: MagentoCapabilityConfig<CategoryFactoryWithOutput<TCategoryFactory>, TCategoryCapability>;
71
+ price?: MagentoCapabilityConfig<PriceFactoryWithOutput<TPriceFactory>, TPriceCapability>;
72
+ inventory?: MagentoCapabilityConfig<InventoryFactoryWithOutput<TInventoryFactory>, TInventoryCapability>;
73
+ identity?: MagentoDirectCapabilityConfig<TIdentityCapability>;
74
+ };
@@ -0,0 +1,11 @@
1
+ import * as z from 'zod';
2
+ export declare const MagentoConfigurationSchema: z.ZodObject<{
3
+ adminApiKey: z.ZodString;
4
+ baseUrl: z.ZodString;
5
+ mediaUrl: z.ZodOptional<z.ZodString>;
6
+ defaultCurrency: z.ZodDefault<z.ZodString>;
7
+ rootCategoryId: z.ZodDefault<z.ZodString>;
8
+ allCurrencies: z.ZodArray<z.ZodString>;
9
+ storeCode: z.ZodDefault<z.ZodString>;
10
+ }, z.core.$loose>;
11
+ export type MagentoConfiguration = z.infer<typeof MagentoConfigurationSchema>;
@@ -0,0 +1,5 @@
1
+ import type * as z from "zod";
2
+ export declare const MagentoCartIdentifierSchema: z.ZodObject<{
3
+ key: z.ZodString;
4
+ }, z.core.$loose>;
5
+ export type MagentoCartIdentifier = z.infer<typeof MagentoCartIdentifierSchema>;
@@ -0,0 +1,200 @@
1
+ export interface MagentoCustomAttribute {
2
+ attribute_code: string;
3
+ value: unknown;
4
+ }
5
+ export interface MagentoCategoryLink {
6
+ position: number;
7
+ category_id: string;
8
+ }
9
+ export interface MagentoMediaGalleryEntry {
10
+ id: number;
11
+ media_type: string;
12
+ label: string | null;
13
+ position: number;
14
+ disabled: boolean;
15
+ types: string[];
16
+ file: string;
17
+ }
18
+ export interface MagentoTierPrice {
19
+ customer_group_id: number;
20
+ qty: number;
21
+ value: number;
22
+ extension_attributes?: Record<string, unknown>;
23
+ }
24
+ export interface MagentoExtensionAttributes {
25
+ category_links?: MagentoCategoryLink[];
26
+ website_ids?: number[];
27
+ stock_item?: MagentoStockItem;
28
+ [key: string]: unknown;
29
+ }
30
+ export interface MagentoStockItem {
31
+ item_id: number;
32
+ product_id: number;
33
+ stock_id: number;
34
+ qty: number;
35
+ is_in_stock: boolean;
36
+ is_qty_decimal: boolean;
37
+ min_qty: number;
38
+ min_sale_qty: number;
39
+ max_sale_qty: number;
40
+ }
41
+ export interface MagentoCartItem {
42
+ item_id: number;
43
+ sku: string;
44
+ qty: number;
45
+ name?: string;
46
+ price: number;
47
+ product_type?: string;
48
+ quote_id?: string;
49
+ discount_amount?: number;
50
+ row_total?: number;
51
+ row_total_incl_tax?: number;
52
+ tax_amount?: number;
53
+ tax_percent?: number;
54
+ extension_attributes?: Record<string, unknown>;
55
+ }
56
+ export interface MagentoCartCustomer {
57
+ id?: number;
58
+ group_id?: number;
59
+ email?: string;
60
+ firstname?: string;
61
+ lastname?: string;
62
+ }
63
+ export interface MagentoCart {
64
+ id: number;
65
+ masked_id?: string;
66
+ created_at?: string;
67
+ updated_at?: string;
68
+ is_active?: boolean;
69
+ is_virtual?: boolean;
70
+ items: MagentoCartItem[];
71
+ items_count?: number;
72
+ items_qty?: number;
73
+ customer: MagentoCartCustomer;
74
+ billing_address?: Record<string, unknown>;
75
+ currency?: {
76
+ global_currency_code?: string;
77
+ base_currency_code?: string;
78
+ quote_currency_code?: string;
79
+ store_currency_code?: string;
80
+ };
81
+ quote_currency_code?: string;
82
+ name?: string;
83
+ description?: string;
84
+ subtotal?: number;
85
+ base_subtotal?: number;
86
+ grand_total?: number;
87
+ base_grand_total?: number;
88
+ tax_amount?: number;
89
+ base_tax_amount?: number;
90
+ shipping_amount?: number;
91
+ base_shipping_amount?: number;
92
+ discount_amount?: number;
93
+ base_discount_amount?: number;
94
+ coupon_code?: string;
95
+ extension_attributes?: Record<string, unknown>;
96
+ /** Synthetic property injected by the capability with the requested cart identifier */
97
+ _requestedId?: string;
98
+ }
99
+ export interface MagentoCategory {
100
+ id: number;
101
+ parent_id: number;
102
+ name: string;
103
+ is_active?: boolean;
104
+ position?: number;
105
+ level?: number;
106
+ product_count?: number;
107
+ children_data?: MagentoCategory[];
108
+ custom_attributes?: MagentoCustomAttribute[];
109
+ created_at?: string;
110
+ updated_at?: string;
111
+ path?: string;
112
+ include_in_menu?: boolean;
113
+ }
114
+ export interface MagentoCategorySearchResult {
115
+ items: MagentoCategory[];
116
+ total_count: number;
117
+ search_criteria?: Record<string, unknown>;
118
+ }
119
+ export interface MagentoIdentity {
120
+ id: number;
121
+ group_id?: number;
122
+ default_billing?: string;
123
+ default_shipping?: string;
124
+ email: string;
125
+ firstname: string;
126
+ lastname: string;
127
+ store_id?: number;
128
+ website_id?: number;
129
+ created_at?: string;
130
+ updated_at?: string;
131
+ addresses?: MagentoAddress[];
132
+ extension_attributes?: Record<string, unknown>;
133
+ custom_attributes?: MagentoCustomAttribute[];
134
+ }
135
+ export interface MagentoAddress {
136
+ id?: number;
137
+ customer_id?: number;
138
+ firstname: string;
139
+ lastname: string;
140
+ street: string[];
141
+ city: string;
142
+ region?: {
143
+ region_code: string;
144
+ region: string;
145
+ region_id: number;
146
+ };
147
+ postcode: string;
148
+ country_id: string;
149
+ telephone?: string;
150
+ default_billing?: boolean;
151
+ default_shipping?: boolean;
152
+ }
153
+ export interface MagentoStockStatus {
154
+ product_id: number;
155
+ stock_id: number;
156
+ qty: number;
157
+ stock_status: number;
158
+ }
159
+ export interface MagentoSourceItem {
160
+ sku: string;
161
+ source_code: string;
162
+ quantity: number;
163
+ status: number;
164
+ }
165
+ export interface MagentoInventory {
166
+ stock_item?: MagentoStockStatus;
167
+ source_items?: MagentoSourceItem[];
168
+ }
169
+ export interface MagentoPrice {
170
+ price: number;
171
+ special_price?: number | null;
172
+ special_from_date?: string | null;
173
+ special_to_date?: string | null;
174
+ tier_prices?: MagentoTierPrice[];
175
+ custom_attributes?: MagentoCustomAttribute[];
176
+ }
177
+ export interface MagentoProduct {
178
+ id: number;
179
+ sku: string;
180
+ name: string;
181
+ attribute_set_id?: number;
182
+ price?: number;
183
+ status?: number;
184
+ visibility?: number;
185
+ type_id?: string;
186
+ created_at?: string;
187
+ updated_at?: string;
188
+ weight?: number;
189
+ extension_attributes?: MagentoExtensionAttributes;
190
+ product_links?: Array<Record<string, unknown>>;
191
+ options?: Array<Record<string, unknown>>;
192
+ media_gallery_entries?: MagentoMediaGalleryEntry[];
193
+ tier_prices?: MagentoTierPrice[];
194
+ custom_attributes?: MagentoCustomAttribute[];
195
+ }
196
+ export interface MagentoProductSearchResult {
197
+ items: MagentoProduct[];
198
+ search_criteria?: Record<string, unknown>;
199
+ total_count: number;
200
+ }