Bladeren bron

refactor(server): Rename AdjustmentArg -> ConfigArg etc

Since they are no longer limited to just AdjustmentSources (they will be used as part of configuring PaymentMethods), so they should have a more fitting name.
Michael Bromley 7 jaren geleden
bovenliggende
commit
3168d90fce

File diff suppressed because it is too large
+ 0 - 0
schema.json


+ 4 - 4
server/src/common/types/common-types.graphql

@@ -20,7 +20,7 @@ type Adjustment {
     amount: Int!
 }
 
-type AdjustmentArg {
+type ConfigArg {
     name: String!
     type: String!
     value: String
@@ -28,18 +28,18 @@ type AdjustmentArg {
 
 type AdjustmentOperation {
     code: String!
-    args: [AdjustmentArg!]!
+    args: [ConfigArg!]!
     description: String!
 }
 
-input AdjustmentOperationInputArg {
+input ConfigArgInput {
     name: String!
     value: String!
 }
 
 input AdjustmentOperationInput {
     code: String!
-    arguments: [AdjustmentOperationInputArg!]!
+    arguments: [ConfigArgInput!]!
 }
 
 interface PaginatedList {

+ 0 - 37
server/src/config/common/adjustments.ts

@@ -1,37 +0,0 @@
-import { AdjustmentArg } from 'shared/generated-types';
-
-export type ValidArgTypes = 'percentage' | 'money' | 'int' | 'string' | 'datetime' | 'boolean';
-
-export type AdjustmentArgs<T extends ValidArgTypes> = {
-    [name: string]: T;
-};
-
-export type ArgumentValues<T extends AdjustmentArgs<any>> = {
-    [K in keyof T]: T[K] extends 'int' | 'money' | 'percentage'
-        ? number
-        : T[K] extends 'datetime' ? Date : T[K] extends 'boolean' ? boolean : string
-};
-
-export function argsArrayToHash<T>(args: AdjustmentArg[]): ArgumentValues<T> {
-    const output: ArgumentValues<T> = {} as any;
-    for (const arg of args) {
-        if (arg.value != null) {
-            output[arg.name] = coerceValueToType<T>(arg);
-        }
-    }
-    return output;
-}
-
-function coerceValueToType<T>(arg: AdjustmentArg): ArgumentValues<T>[keyof T] {
-    switch (arg.type as ValidArgTypes) {
-        case 'int':
-        case 'money':
-            return Number.parseInt(arg.value || '', 10) as any;
-        case 'datetime':
-            return Date.parse(arg.value || '') as any;
-        case 'boolean':
-            return !!arg.value as any;
-        default:
-            return (arg.value as string) as any;
-    }
-}

+ 48 - 0
server/src/config/common/config-args.ts

@@ -0,0 +1,48 @@
+import { ConfigArg } from 'shared/generated-types';
+
+/**
+ * Certain entities allow arbitrary configuration arguments to be specified which can then
+ * be set in the admin-ui and used in the business logic of the app. These are the valid
+ * data types of such arguments. The data type influences:
+ * 1. How the argument form field is rendered in the admin-ui
+ * 2. The JavaScript type into which the value is coerced before being passed to the business logic.
+ */
+export type ConfigArgType = 'percentage' | 'money' | 'int' | 'string' | 'datetime' | 'boolean';
+
+export type ConfigArgs<T extends ConfigArgType> = {
+    [name: string]: T;
+};
+
+/**
+ * Represents the ConfigArgs once they have been coerced into JavaScript values for use
+ * in business logic.
+ */
+export type ConfigArgValues<T extends ConfigArgs<any>> = {
+    [K in keyof T]: T[K] extends 'int' | 'money' | 'percentage'
+        ? number
+        : T[K] extends 'datetime' ? Date : T[K] extends 'boolean' ? boolean : string
+};
+
+export function argsArrayToHash<T>(args: ConfigArg[]): ConfigArgValues<T> {
+    const output: ConfigArgValues<T> = {} as any;
+    for (const arg of args) {
+        if (arg.value != null) {
+            output[arg.name] = coerceValueToType<T>(arg);
+        }
+    }
+    return output;
+}
+
+function coerceValueToType<T>(arg: ConfigArg): ConfigArgValues<T>[keyof T] {
+    switch (arg.type as ConfigArgType) {
+        case 'int':
+        case 'money':
+            return Number.parseInt(arg.value || '', 10) as any;
+        case 'datetime':
+            return Date.parse(arg.value || '') as any;
+        case 'boolean':
+            return !!arg.value as any;
+        default:
+            return (arg.value as string) as any;
+    }
+}

+ 7 - 7
server/src/config/promotion/promotion-action.ts

@@ -1,21 +1,21 @@
-import { AdjustmentArg } from 'shared/generated-types';
+import { ConfigArg } from 'shared/generated-types';
 
 import { OrderItem } from '../../entity/order-item/order-item.entity';
 import { OrderLine } from '../../entity/order-line/order-line.entity';
 import { Order } from '../../entity/order/order.entity';
-import { AdjustmentArgs, argsArrayToHash, ArgumentValues } from '../common/adjustments';
+import { argsArrayToHash, ConfigArgs, ConfigArgValues } from '../common/config-args';
 
 export type PromotionActionArgType = 'percentage' | 'money';
-export type PromotionActionArgs = AdjustmentArgs<PromotionActionArgType>;
+export type PromotionActionArgs = ConfigArgs<PromotionActionArgType>;
 
 export type ExecutePromotionItemActionFn<T extends PromotionActionArgs> = (
     orderItem: OrderItem,
     orderLine: OrderLine,
-    args: ArgumentValues<T>,
+    args: ConfigArgValues<T>,
 ) => number;
 export type ExecutePromotionOrderActionFn<T extends PromotionActionArgs> = (
     order: Order,
-    args: ArgumentValues<T>,
+    args: ConfigArgValues<T>,
 ) => number;
 
 export interface PromotionActionConfig<T extends PromotionActionArgs> {
@@ -55,7 +55,7 @@ export class PromotionItemAction<T extends PromotionActionArgs = {}> extends Pro
         this.executeFn = config.execute;
     }
 
-    execute(orderItem: OrderItem, orderLine: OrderLine, args: AdjustmentArg[]) {
+    execute(orderItem: OrderItem, orderLine: OrderLine, args: ConfigArg[]) {
         return this.executeFn(orderItem, orderLine, argsArrayToHash(args));
     }
 }
@@ -70,7 +70,7 @@ export class PromotionOrderAction<T extends PromotionActionArgs = {}> extends Pr
         this.executeFn = config.execute;
     }
 
-    execute(order: Order, args: AdjustmentArg[]) {
+    execute(order: Order, args: ConfigArg[]) {
         return this.executeFn(order, argsArrayToHash(args));
     }
 }

+ 5 - 5
server/src/config/promotion/promotion-condition.ts

@@ -1,13 +1,13 @@
-import { AdjustmentArg } from 'shared/generated-types';
+import { ConfigArg } from 'shared/generated-types';
 
 import { Order } from '../../entity/order/order.entity';
-import { AdjustmentArgs, argsArrayToHash, ArgumentValues } from '../common/adjustments';
+import { argsArrayToHash, ConfigArgs, ConfigArgValues } from '../common/config-args';
 
 export type PromotionConditionArgType = 'int' | 'money' | 'string' | 'datetime' | 'boolean';
-export type PromotionConditionArgs = AdjustmentArgs<PromotionConditionArgType>;
+export type PromotionConditionArgs = ConfigArgs<PromotionConditionArgType>;
 export type CheckPromotionConditionFn<T extends PromotionConditionArgs> = (
     order: Order,
-    args: ArgumentValues<T>,
+    args: ConfigArgValues<T>,
 ) => boolean;
 
 export class PromotionCondition<T extends PromotionConditionArgs = {}> {
@@ -31,7 +31,7 @@ export class PromotionCondition<T extends PromotionConditionArgs = {}> {
         this.priorityValue = config.priorityValue || 0;
     }
 
-    check(order: Order, args: AdjustmentArg[]) {
+    check(order: Order, args: ConfigArg[]) {
         return this.checkFn(order, argsArrayToHash<T>(args));
     }
 }

+ 5 - 5
server/src/config/shipping-method/shipping-calculator.ts

@@ -1,13 +1,13 @@
-import { AdjustmentArg } from 'shared/generated-types';
+import { ConfigArg } from 'shared/generated-types';
 
 import { Order } from '../../entity/order/order.entity';
-import { AdjustmentArgs, argsArrayToHash, ArgumentValues } from '../common/adjustments';
+import { argsArrayToHash, ConfigArgs, ConfigArgValues } from '../common/config-args';
 
 export type ShippingCalculatorArgType = 'int' | 'money' | 'string' | 'boolean';
-export type ShippingCalculatorArgs = AdjustmentArgs<ShippingCalculatorArgType>;
+export type ShippingCalculatorArgs = ConfigArgs<ShippingCalculatorArgType>;
 export type CalculateShippingFn<T extends ShippingCalculatorArgs> = (
     order: Order,
-    args: ArgumentValues<T>,
+    args: ConfigArgValues<T>,
 ) => number | Promise<number>;
 
 export class ShippingCalculator<T extends ShippingCalculatorArgs = {}> {
@@ -23,7 +23,7 @@ export class ShippingCalculator<T extends ShippingCalculatorArgs = {}> {
         this.calculateFn = config.calculate;
     }
 
-    calculate(order: Order, args: AdjustmentArg[]): number | Promise<number> {
+    calculate(order: Order, args: ConfigArg[]): number | Promise<number> {
         return this.calculateFn(order, argsArrayToHash(args));
     }
 }

+ 5 - 5
server/src/config/shipping-method/shipping-eligibility-checker.ts

@@ -1,13 +1,13 @@
-import { AdjustmentArg } from 'shared/generated-types';
+import { ConfigArg } from 'shared/generated-types';
 
 import { Order } from '../../entity/order/order.entity';
-import { AdjustmentArgs, argsArrayToHash, ArgumentValues } from '../common/adjustments';
+import { argsArrayToHash, ConfigArgs, ConfigArgValues } from '../common/config-args';
 
 export type ShippingEligibilityCheckerArgType = 'int' | 'money' | 'string' | 'boolean';
-export type ShippingEligibilityCheckerArgs = AdjustmentArgs<ShippingEligibilityCheckerArgType>;
+export type ShippingEligibilityCheckerArgs = ConfigArgs<ShippingEligibilityCheckerArgType>;
 export type CheckShippingEligibilityCheckerFn<T extends ShippingEligibilityCheckerArgs> = (
     order: Order,
-    args: ArgumentValues<T>,
+    args: ConfigArgValues<T>,
 ) => boolean | Promise<boolean>;
 
 export class ShippingEligibilityChecker<T extends ShippingEligibilityCheckerArgs = {}> {
@@ -28,7 +28,7 @@ export class ShippingEligibilityChecker<T extends ShippingEligibilityCheckerArgs
         this.checkFn = config.check;
     }
 
-    check(order: Order, args: AdjustmentArg[]) {
+    check(order: Order, args: ConfigArg[]) {
         return this.checkFn(order, argsArrayToHash(args));
     }
 }

+ 9 - 8
shared/generated-types.ts

@@ -499,11 +499,11 @@ export interface Promotion extends Node {
 
 export interface AdjustmentOperation {
     code: string;
-    args: AdjustmentArg[];
+    args: ConfigArg[];
     description: string;
 }
 
-export interface AdjustmentArg {
+export interface ConfigArg {
     name: string;
     type: string;
     value?: string | null;
@@ -1176,10 +1176,10 @@ export interface CreatePromotionInput {
 
 export interface AdjustmentOperationInput {
     code: string;
-    arguments: AdjustmentOperationInputArg[];
+    arguments: ConfigArgInput[];
 }
 
-export interface AdjustmentOperationInputArg {
+export interface ConfigArgInput {
     name: string;
     value: string;
 }
@@ -3397,16 +3397,16 @@ export namespace PromotionResolvers {
 export namespace AdjustmentOperationResolvers {
     export interface Resolvers<Context = any> {
         code?: CodeResolver<string, any, Context>;
-        args?: ArgsResolver<AdjustmentArg[], any, Context>;
+        args?: ArgsResolver<ConfigArg[], any, Context>;
         description?: DescriptionResolver<string, any, Context>;
     }
 
     export type CodeResolver<R = string, Parent = any, Context = any> = Resolver<R, Parent, Context>;
-    export type ArgsResolver<R = AdjustmentArg[], Parent = any, Context = any> = Resolver<R, Parent, Context>;
+    export type ArgsResolver<R = ConfigArg[], Parent = any, Context = any> = Resolver<R, Parent, Context>;
     export type DescriptionResolver<R = string, Parent = any, Context = any> = Resolver<R, Parent, Context>;
 }
 
-export namespace AdjustmentArgResolvers {
+export namespace ConfigArgResolvers {
     export interface Resolvers<Context = any> {
         name?: NameResolver<string, any, Context>;
         type?: TypeResolver<string, any, Context>;
@@ -5534,6 +5534,7 @@ export namespace Order {
 
     export type Customer = {
         __typename?: 'Customer';
+        id: string;
         firstName: string;
         lastName: string;
     };
@@ -5748,7 +5749,7 @@ export namespace AdjustmentOperation {
     };
 
     export type Args = {
-        __typename?: 'AdjustmentArg';
+        __typename?: 'ConfigArg';
         name: string;
         type: string;
         value?: string | null;

Some files were not shown because too many files changed in this diff