All files / roosterjs-content-model-dom/lib/modelApi/metadata definitionCreators.ts

100% Statements 10/10
100% Branches 0/0
100% Functions 5/5
100% Lines 10/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125                                        1x             6x                                   1x         8x                               1x         5x                               1x             2x                                   1x         7x              
import type {
    ArrayDefinition,
    BooleanDefinition,
    Definition,
    NumberDefinition,
    ObjectDefinition,
    ObjectPropertyDefinition,
    StringDefinition,
} from 'roosterjs-content-model-types';
 
/**
 * @internal
 * Create a number definition
 * @param isOptional Whether this property is optional
 * @param value Optional value of the number
 * @param minValue Optional minimum value
 * @param maxValue Optional maximum value
 * @param allowNull Allow the property to be null
 * @returns The number definition object
 */
export function createNumberDefinition(
    isOptional?: boolean,
    value?: number,
    minValue?: number,
    maxValue?: number,
    allowNull?: boolean
): NumberDefinition {
    return {
        type: 'number',
        isOptional,
        value,
        maxValue,
        minValue,
        allowNull,
    };
}
 
/**
 * @internal
 * Create a boolean definition
 * @param isOptional  Whether this property is optional
 * @param value Optional expected boolean value
 * @param allowNull Allow the property to be null
 * @returns  The boolean definition object
 */
export function createBooleanDefinition(
    isOptional?: boolean,
    value?: boolean,
    allowNull?: boolean
): BooleanDefinition {
    return {
        type: 'boolean',
        isOptional,
        value,
        allowNull,
    };
}
 
/**
 * @internal
 * Create a string definition
 * @param isOptional  Whether this property is optional
 * @param value Optional expected string value
 * @param allowNull Allow the property to be null
 * @returns  The string definition object
 */
export function createStringDefinition(
    isOptional?: boolean,
    value?: string,
    allowNull?: boolean
): StringDefinition {
    return {
        type: 'string',
        isOptional,
        value,
        allowNull,
    };
}
 
/**
 * @internal
 * Create an array definition
 * @param itemDef Definition of each item of the related array
 * @param isOptional  Whether this property is optional
 * @param allowNull Allow the property to be null
 * @returns  The array definition object
 */
export function createArrayDefinition<T>(
    itemDef: Definition<T>,
    isOptional?: boolean,
    minLength?: number,
    maxLength?: number,
    allowNull?: boolean
): ArrayDefinition<T[]> {
    return {
        type: 'array',
        isOptional,
        itemDef,
        minLength,
        maxLength,
        allowNull,
    };
}
 
/**
 * @internal
 * Create an object definition
 * @param propertyDef Definition of each property of the related object
 * @param isOptional  Whether this property is optional
 * @param allowNull Allow the property to be null
 * @returns  The object definition object
 */
export function createObjectDefinition<T extends Object>(
    propertyDef: ObjectPropertyDefinition<T>,
    isOptional?: boolean,
    allowNull?: boolean
): ObjectDefinition<T> {
    return {
        type: 'object',
        isOptional,
        propertyDef,
        allowNull,
    };
}