armpit
Version:
Another resource manager programming interface toolkit.
102 lines • 5.71 kB
TypeScript
export declare function shallowCloneDefinedValues<T extends object>(obj: T): T;
export declare function shallowMergeDefinedValues<TPrev extends object, TNext extends object>(prev: TPrev, next: TNext): TPrev & TNext;
export declare function applyOptionsDifferencesShallow<TTarget extends TSource, TSource extends object>(target: TTarget, source: TSource): boolean;
export declare function applyOptionsDifferencesDeep<TTarget extends TSource, TSource extends object>(target: TTarget, source: TSource): boolean;
export declare function applyArrayKeyedDescriptor<TTarget extends {
[K in keyof TSource]?: TTarget[K];
}, TSource extends object>(targets: TTarget[], sources: TSource[], match: keyof TSource | ((t: TTarget, s: TSource) => boolean), apply: (t: TTarget, s: TSource) => boolean, create: (s: TSource) => TTarget, options?: {
deleteUnmatchedTargets?: boolean;
}): boolean;
export declare function applyArrayIdDescriptors<T extends {
id?: string;
}>(targets: T[], sources: {
id?: string;
}[], options?: {
deleteUnmatchedTargets?: boolean;
}): boolean;
export declare function applyObjectKeyProperties<TTarget extends object, TSource extends object>(target: TTarget, source: TSource, onAdd?: (key: keyof TSource, target: TTarget, source: TSource) => boolean | void, onRemove?: boolean | ((key: keyof TTarget, target: TTarget) => boolean | void), onMatch?: (key: keyof TSource & keyof TTarget, target: TTarget, source: TSource) => boolean | void): boolean;
type ApplyOptionsResult = boolean;
type ApplyObjectPropFn<TTarget extends {
[P in TProp]?: TTarget[P];
}, TSource extends {
[P in TProp]?: TSource[P];
}, TProp extends keyof TSource & keyof TTarget> = (target: {
[P in TProp]?: TTarget[P];
}, source: {
[P in TProp]: TSource[P];
}, propName: TProp, context?: ApplyContext) => ApplyOptionsResult;
type ApplyObjectFn<TTarget extends {
[P in keyof TSource & keyof TTarget]?: TTarget[P];
}, TSource extends {
[P in keyof TSource]?: TSource[P];
}> = (target: TTarget, source: TSource, context?: ApplyContext) => ApplyOptionsResult;
type ApplyObjectTemplate<TTarget extends {
[P in keyof TTarget & keyof TSource]?: TTarget[P];
}, TSource extends {
[P in keyof TSource]?: TSource[P];
}> = {
[P in keyof TTarget & keyof TSource]?: (TSource[P] extends object | undefined ? ApplyObjectTemplate<TTarget[P], TSource[P]> : never) | ApplyObjectPropFn<TTarget, TSource, P> | "ignore";
};
export interface ApplyContext {
visitedSourceObjects?: unknown[];
}
export declare function wrapPropObjectApply<TTarget extends {
[P in keyof TTarget & keyof TSource]?: TTarget[P];
}, TSource extends {
[P in keyof TSource]?: TSource[P];
}, TTargetItem extends TTarget[TProp], TSourceItem extends TSource[TProp] | undefined, TProp extends keyof TTarget & keyof TSource>(applyFn: ApplyObjectFn<NonNullable<TTargetItem>, NonNullable<TSourceItem>>): ApplyObjectPropFn<TTarget, TSource, TProp>;
export declare function createKeyedArrayPropApplyFn<TTargetItem extends {
[P in keyof TSourceItem]?: TTargetItem[P];
} & object, TSourceItem extends {
[P in keyof TSourceItem]?: TSourceItem[P];
} & object, TTarget extends {
[P in TProp]?: TTargetItem[];
}, TSource extends {
[P in TProp]?: TSourceItem[];
}, TProp extends keyof TSource>(match: keyof TSourceItem | ((t: TTargetItem, s: TSourceItem) => boolean), apply: ApplyObjectFn<TTargetItem, TSourceItem>, create?: boolean | ((s: TSourceItem, c?: ApplyContext) => TTargetItem), remove?: boolean | ((t: TTargetItem[], d: TTargetItem[]) => boolean)): ApplyObjectPropFn<TTarget, TSource, TProp>;
export declare function applySourceToTargetObject<TTarget extends {
[P in keyof TSource]?: TTarget[P];
}, TSource extends {
[P in keyof TSource]?: TSource[P];
}>(target: TTarget, source: TSource, context?: ApplyContext): ApplyOptionsResult;
export declare function applySourceToTargetObjectWithTemplate<TTarget extends {
[P in keyof TSource]?: TTarget[P];
}, TSource extends {
[P in keyof TSource]?: TSource[P];
}, TTemplate extends ApplyObjectTemplate<TTarget, TSource>>(target: TTarget, source: TSource, template?: TTemplate, context?: ApplyContext): ApplyOptionsResult;
export declare function applyUnorderedArray<TValue>(targetArray: TValue[], sourceArray: TValue[], test?: (a: TValue, b: TValue) => boolean): boolean;
export declare function applyUnorderedValueArrayProp<TValue extends string | number, TTarget extends {
[P in TProp]?: TValue[];
}, TSource extends {
[P in TProp]?: TValue[];
}, TProp extends keyof TSource>(target: TTarget, source: TSource, propName: TProp): boolean;
export declare function applyOrderedArray<TValue>(targetArray: TValue[], sourceArray: TValue[], test?: (a: TValue, b: TValue) => boolean): boolean;
export declare function applyOrderedValueArrayProp<TValue extends string | number, TTarget extends {
[P in TProp]?: TValue[];
}, TSource extends {
[P in TProp]?: TValue[];
}, TProp extends keyof TSource>(target: TTarget, source: TSource, propName: TProp): boolean;
export declare function applyResourceRefProperty<TTarget extends {
[P in TProp]?: {
id?: string;
};
}, TSource extends {
[P in TProp]?: {
id?: string;
} | string;
}, TProp extends keyof TSource>(target: TTarget, source: TSource, propName: TProp): boolean;
export declare function applyResourceRefListProperty<TTargetItem extends {
id?: string;
}, TSource extends {
[P in TProp]?: {
id?: string;
}[];
}, TProp extends keyof TSource>(target: {
[P in TProp]?: TTargetItem[];
}, source: {
[P in TProp]?: {
id?: string;
}[];
}, propName: TProp): boolean;
export {};
//# sourceMappingURL=optionsUtils.d.ts.map