UNPKG

@compas/code-gen

Version:

Generate various boring parts of your server

1,451 lines (1,415 loc) 488 kB
// Generated by @compas/code-gen /** * @template T, E * @typedef {{ value: T, error?: never}|{ value?: never, error: E }} Either */ /** * @typedef {Record<string, any|undefined>} ValidatorErrorMap */ const isRecord = (v) => !!v && typeof v === "object" && !Array.isArray(v); /** * @param {import("../common/types.js").StructureAnyDefinitionInput|any} value * @returns {Either<import("../common/types.js").StructureAnyDefinition, ValidatorErrorMap>} */ export function validateStructureAnyDefinition(value) { /** @type {ValidatorErrorMap} */ const errorMap = {}; /** @type {any} */ let result = undefined; if (value === null || value === undefined) { errorMap[`$`] = { key: "validator.undefined", }; } else { if (!isRecord(value)) { errorMap[`$`] = { key: "validator.object", value: value, foundType: typeof value, }; } else { result = { type: undefined, group: undefined, name: undefined, docString: undefined, isOptional: undefined, defaultValue: undefined, sql: undefined, validator: undefined, targets: undefined, }; if (value["type"] === null || value["type"] === undefined) { errorMap[`$.type`] = { key: "validator.undefined", }; } else { /** @type {string} */ const convertedString1 = value["type"]; if (typeof convertedString1 !== "string") { errorMap[`$.type`] = { key: "validator.string", }; } else { if (convertedString1.length < 1) { errorMap[`$.type`] = { key: "validator.length", minLength: 1, }; } else if (convertedString1 !== "any") { errorMap[`$.type`] = { key: "validator.oneOf", allowedValues: ["any"], foundValue: convertedString1, }; } else { result["type"] = convertedString1; } } } if (value["group"] === null || value["group"] === undefined) { result["group"] = undefined; } else { /** @type {string} */ const convertedString2 = value["group"]; if (typeof convertedString2 !== "string") { errorMap[`$.group`] = { key: "validator.string", }; } else { if (convertedString2.length === 0) { result["group"] = undefined; } else { if (convertedString2.length < 1) { errorMap[`$.group`] = { key: "validator.length", minLength: 1, }; } else { result["group"] = convertedString2; } } } } if (value["name"] === null || value["name"] === undefined) { result["name"] = undefined; } else { /** @type {string} */ const convertedString3 = value["name"]; if (typeof convertedString3 !== "string") { errorMap[`$.name`] = { key: "validator.string", }; } else { if (convertedString3.length === 0) { result["name"] = undefined; } else { if (convertedString3.length < 1) { errorMap[`$.name`] = { key: "validator.length", minLength: 1, }; } else { result["name"] = convertedString3; } } } } if (value["docString"] === null || value["docString"] === undefined) { result["docString"] = ""; } else { /** @type {string} */ const convertedString4 = value["docString"]; if (typeof convertedString4 !== "string") { errorMap[`$.docString`] = { key: "validator.string", }; } else { if (convertedString4.length === 0) { result["docString"] = ""; } else { { result["docString"] = convertedString4; } } } } if (value["isOptional"] === null || value["isOptional"] === undefined) { result["isOptional"] = false; } else { if ( value["isOptional"] === true || value["isOptional"] === "true" || value["isOptional"] === 1 || value["isOptional"] === "1" ) { result["isOptional"] = true; } else if ( value["isOptional"] === false || value["isOptional"] === "false" || value["isOptional"] === 0 || value["isOptional"] === "0" ) { result["isOptional"] = false; } else { errorMap[`$.isOptional`] = { key: "validator.type", expectedType: "boolean", }; } } if ( value["defaultValue"] === null || value["defaultValue"] === undefined ) { result["defaultValue"] = undefined; } else { let hasAnyOfMatch6 = false; errorMap[`$.defaultValue`] = { key: "validator.anyOf", errors: [], }; if (!hasAnyOfMatch6) { /** @type {ValidatorErrorMap} */ const intermediateErrorMap8 = {}; /** @type {any} */ let intermediateResult8 = undefined; /** @type {any} */ const intermediateValue8 = value["defaultValue"]; if (intermediateValue8 === null || intermediateValue8 === undefined) { intermediateErrorMap8[`$`] = { key: "validator.undefined", }; } else { /** @type {string} */ const convertedString8 = intermediateValue8; if (typeof convertedString8 !== "string") { intermediateErrorMap8[`$`] = { key: "validator.string", }; } else { if (convertedString8.length < 1) { intermediateErrorMap8[`$`] = { key: "validator.length", minLength: 1, }; } else { intermediateResult8 = convertedString8; } } } if (Object.keys(intermediateErrorMap8).length > 0) { errorMap[`$.defaultValue`].errors.push(intermediateErrorMap8); } else { hasAnyOfMatch6 = true; delete errorMap[`$.defaultValue`]; result["defaultValue"] = intermediateResult8; } } if (!hasAnyOfMatch6) { /** @type {ValidatorErrorMap} */ const intermediateErrorMap8 = {}; /** @type {any} */ let intermediateResult8 = undefined; /** @type {any} */ const intermediateValue8 = value["defaultValue"]; if (intermediateValue8 === null || intermediateValue8 === undefined) { intermediateErrorMap8[`$`] = { key: "validator.undefined", }; } else { if ( intermediateValue8 === true || intermediateValue8 === "true" || intermediateValue8 === 1 || intermediateValue8 === "1" ) { intermediateResult8 = true; } else if ( intermediateValue8 === false || intermediateValue8 === "false" || intermediateValue8 === 0 || intermediateValue8 === "0" ) { intermediateResult8 = false; } else { intermediateErrorMap8[`$`] = { key: "validator.type", expectedType: "boolean", }; } } if (Object.keys(intermediateErrorMap8).length > 0) { errorMap[`$.defaultValue`].errors.push(intermediateErrorMap8); } else { hasAnyOfMatch6 = true; delete errorMap[`$.defaultValue`]; result["defaultValue"] = intermediateResult8; } } if (!hasAnyOfMatch6) { /** @type {ValidatorErrorMap} */ const intermediateErrorMap8 = {}; /** @type {any} */ let intermediateResult8 = undefined; /** @type {any} */ const intermediateValue8 = value["defaultValue"]; if (intermediateValue8 === null || intermediateValue8 === undefined) { intermediateErrorMap8[`$`] = { key: "validator.undefined", }; } else { let convertedNumber8 = intermediateValue8; if ( typeof convertedNumber8 !== "number" && typeof convertedNumber8 === "string" ) { convertedNumber8 = Number(convertedNumber8); } if ( typeof convertedNumber8 !== "number" || isNaN(convertedNumber8) || !isFinite(convertedNumber8) || !Number.isInteger(convertedNumber8) ) { intermediateErrorMap8[`$`] = { key: "validator.number", subType: "int", }; } else if (convertedNumber8 < -9007199254740991) { intermediateErrorMap8[`$`] = { key: "validator.range", minValue: -9007199254740991, }; } else if (convertedNumber8 > 9007199254740991) { intermediateErrorMap8[`$`] = { key: "validator.range", maxValue: 9007199254740991, }; } else { intermediateResult8 = convertedNumber8; } } if (Object.keys(intermediateErrorMap8).length > 0) { errorMap[`$.defaultValue`].errors.push(intermediateErrorMap8); } else { hasAnyOfMatch6 = true; delete errorMap[`$.defaultValue`]; result["defaultValue"] = intermediateResult8; } } } if (value["sql"] === null || value["sql"] === undefined) { result["sql"] = {}; } else { if (!isRecord(value["sql"])) { errorMap[`$.sql`] = { key: "validator.object", value: value["sql"], foundType: typeof value["sql"], }; } else { result["sql"] = { primary: undefined, searchable: undefined, hasDefaultValue: undefined, }; if ( value["sql"]["primary"] === null || value["sql"]["primary"] === undefined ) { result["sql"]["primary"] = undefined; } else { if ( value["sql"]["primary"] === true || value["sql"]["primary"] === "true" || value["sql"]["primary"] === 1 || value["sql"]["primary"] === "1" ) { result["sql"]["primary"] = true; } else if ( value["sql"]["primary"] === false || value["sql"]["primary"] === "false" || value["sql"]["primary"] === 0 || value["sql"]["primary"] === "0" ) { result["sql"]["primary"] = false; } else { errorMap[`$.sql.primary`] = { key: "validator.type", expectedType: "boolean", }; } } if ( value["sql"]["searchable"] === null || value["sql"]["searchable"] === undefined ) { result["sql"]["searchable"] = undefined; } else { if ( value["sql"]["searchable"] === true || value["sql"]["searchable"] === "true" || value["sql"]["searchable"] === 1 || value["sql"]["searchable"] === "1" ) { result["sql"]["searchable"] = true; } else if ( value["sql"]["searchable"] === false || value["sql"]["searchable"] === "false" || value["sql"]["searchable"] === 0 || value["sql"]["searchable"] === "0" ) { result["sql"]["searchable"] = false; } else { errorMap[`$.sql.searchable`] = { key: "validator.type", expectedType: "boolean", }; } } if ( value["sql"]["hasDefaultValue"] === null || value["sql"]["hasDefaultValue"] === undefined ) { result["sql"]["hasDefaultValue"] = undefined; } else { if ( value["sql"]["hasDefaultValue"] === true || value["sql"]["hasDefaultValue"] === "true" || value["sql"]["hasDefaultValue"] === 1 || value["sql"]["hasDefaultValue"] === "1" ) { result["sql"]["hasDefaultValue"] = true; } else if ( value["sql"]["hasDefaultValue"] === false || value["sql"]["hasDefaultValue"] === "false" || value["sql"]["hasDefaultValue"] === 0 || value["sql"]["hasDefaultValue"] === "0" ) { result["sql"]["hasDefaultValue"] = false; } else { errorMap[`$.sql.hasDefaultValue`] = { key: "validator.type", expectedType: "boolean", }; } } } } if (value["validator"] === null || value["validator"] === undefined) { errorMap[`$.validator`] = { key: "validator.undefined", }; } else { if (!isRecord(value["validator"])) { errorMap[`$.validator`] = { key: "validator.object", value: value["validator"], foundType: typeof value["validator"], }; } else { result["validator"] = { allowNull: undefined }; if ( value["validator"]["allowNull"] === null || value["validator"]["allowNull"] === undefined ) { errorMap[`$.validator.allowNull`] = { key: "validator.undefined", }; } else { if ( value["validator"]["allowNull"] === true || value["validator"]["allowNull"] === "true" || value["validator"]["allowNull"] === 1 || value["validator"]["allowNull"] === "1" ) { result["validator"]["allowNull"] = true; } else if ( value["validator"]["allowNull"] === false || value["validator"]["allowNull"] === "false" || value["validator"]["allowNull"] === 0 || value["validator"]["allowNull"] === "0" ) { result["validator"]["allowNull"] = false; } else { errorMap[`$.validator.allowNull`] = { key: "validator.type", expectedType: "boolean", }; } } } } if (value["targets"] === null || value["targets"] === undefined) { result["targets"] = undefined; } else { if (!isRecord(value["targets"])) { errorMap[`$.targets`] = { key: "validator.generic", }; } else { result["targets"] = {}; for (const genericKeyInput9 of Object.keys(value["targets"])) { /** @type {any} */ let genericKeyResult10 = undefined; /** @type {ValidatorErrorMap} */ const genericKeyErrorMap11 = {}; if (genericKeyInput9 === null || genericKeyInput9 === undefined) { genericKeyErrorMap11[`$`] = { key: "validator.undefined", }; } else { const refResult12 = validateStructureAnyDefinitionTarget(genericKeyInput9); if (refResult12.error) { for (const errorKey of Object.keys(refResult12.error)) { genericKeyErrorMap11[`$${errorKey.substring(1)}`] = refResult12.error[errorKey]; } } genericKeyResult10 = refResult12.value; } if (Object.keys(genericKeyErrorMap11).length !== 0) { if (errorMap[`$.targets`]) { errorMap[`$.targets`].inputs.push({ key: genericKeyInput9, errors: genericKeyErrorMap11, }); } else { errorMap[`$.targets`] = { key: "validator.generic", inputs: [ { key: genericKeyInput9, errors: genericKeyErrorMap11 }, ], }; } } else { if ( value["targets"][genericKeyResult10] === null || value["targets"][genericKeyResult10] === undefined ) { errorMap[`$.targets.${genericKeyResult10}`] = { key: "validator.undefined", }; } else { if (!isRecord(value["targets"][genericKeyResult10])) { errorMap[`$.targets.${genericKeyResult10}`] = { key: "validator.object", value: value["targets"][genericKeyResult10], foundType: typeof value["targets"][genericKeyResult10], }; } else { /** @type {Set<string>} */ const knownKeys12 = new Set([ "validatorInputType", "validatorOutputType", "validatorExpression", "validatorImport", ]); for (const key of Object.keys( value["targets"][genericKeyResult10], )) { if ( !knownKeys12.has(key) && value["targets"][genericKeyResult10][key] !== null && value["targets"][genericKeyResult10][key] !== undefined ) { const expectedKeys = [...knownKeys12]; const foundKeys = Object.keys( value["targets"][genericKeyResult10], ); const unknownKeys = foundKeys.filter( (it) => !knownKeys12.has(it), ); errorMap[`$.targets.${genericKeyResult10}`] = { key: "validator.keys", unknownKeys, expectedKeys, foundKeys, }; break; } } result["targets"][genericKeyResult10] = { validatorInputType: undefined, validatorOutputType: undefined, validatorExpression: undefined, validatorImport: undefined, }; if ( value["targets"][genericKeyResult10][ "validatorInputType" ] === null || value["targets"][genericKeyResult10][ "validatorInputType" ] === undefined ) { errorMap[ `$.targets.${genericKeyResult10}.validatorInputType` ] = { key: "validator.undefined", }; } else { /** @type {string} */ const convertedString13 = value["targets"][genericKeyResult10][ "validatorInputType" ]; if (typeof convertedString13 !== "string") { errorMap[ `$.targets.${genericKeyResult10}.validatorInputType` ] = { key: "validator.string", }; } else { if (convertedString13.length < 1) { errorMap[ `$.targets.${genericKeyResult10}.validatorInputType` ] = { key: "validator.length", minLength: 1, }; } else { result["targets"][genericKeyResult10][ "validatorInputType" ] = convertedString13; } } } if ( value["targets"][genericKeyResult10][ "validatorOutputType" ] === null || value["targets"][genericKeyResult10][ "validatorOutputType" ] === undefined ) { errorMap[ `$.targets.${genericKeyResult10}.validatorOutputType` ] = { key: "validator.undefined", }; } else { /** @type {string} */ const convertedString14 = value["targets"][genericKeyResult10][ "validatorOutputType" ]; if (typeof convertedString14 !== "string") { errorMap[ `$.targets.${genericKeyResult10}.validatorOutputType` ] = { key: "validator.string", }; } else { if (convertedString14.length < 1) { errorMap[ `$.targets.${genericKeyResult10}.validatorOutputType` ] = { key: "validator.length", minLength: 1, }; } else { result["targets"][genericKeyResult10][ "validatorOutputType" ] = convertedString14; } } } if ( value["targets"][genericKeyResult10][ "validatorExpression" ] === null || value["targets"][genericKeyResult10][ "validatorExpression" ] === undefined ) { result["targets"][genericKeyResult10][ "validatorExpression" ] = undefined; } else { /** @type {string} */ const convertedString15 = value["targets"][genericKeyResult10][ "validatorExpression" ]; if (typeof convertedString15 !== "string") { errorMap[ `$.targets.${genericKeyResult10}.validatorExpression` ] = { key: "validator.string", }; } else { if (convertedString15.length === 0) { result["targets"][genericKeyResult10][ "validatorExpression" ] = undefined; } else { if (convertedString15.length < 1) { errorMap[ `$.targets.${genericKeyResult10}.validatorExpression` ] = { key: "validator.length", minLength: 1, }; } else { result["targets"][genericKeyResult10][ "validatorExpression" ] = convertedString15; } } } } if ( value["targets"][genericKeyResult10]["validatorImport"] === null || value["targets"][genericKeyResult10]["validatorImport"] === undefined ) { result["targets"][genericKeyResult10]["validatorImport"] = undefined; } else { /** @type {string} */ const convertedString16 = value["targets"][genericKeyResult10]["validatorImport"]; if (typeof convertedString16 !== "string") { errorMap[ `$.targets.${genericKeyResult10}.validatorImport` ] = { key: "validator.string", }; } else { if (convertedString16.length === 0) { result["targets"][genericKeyResult10][ "validatorImport" ] = undefined; } else { if (convertedString16.length < 1) { errorMap[ `$.targets.${genericKeyResult10}.validatorImport` ] = { key: "validator.length", minLength: 1, }; } else { result["targets"][genericKeyResult10][ "validatorImport" ] = convertedString16; } } } } } } } } } } } } if (Object.keys(errorMap).length > 0) { return { error: errorMap }; } return { value: result }; } /** * @param {import("../common/types.js").StructureAnyDefinitionTarget|any} value * @returns {Either<import("../common/types.js").StructureAnyDefinitionTarget, ValidatorErrorMap>} */ export function validateStructureAnyDefinitionTarget(value) { /** @type {ValidatorErrorMap} */ const errorMap = {}; /** @type {any} */ let result = undefined; if (value === null || value === undefined) { errorMap[`$`] = { key: "validator.undefined", }; } else { /** @type {string} */ const convertedString0 = value; if (typeof convertedString0 !== "string") { errorMap[`$`] = { key: "validator.string", }; } else { if (convertedString0.length < 1) { errorMap[`$`] = { key: "validator.length", minLength: 1, }; } else if ( convertedString0 !== "js" && convertedString0 !== "ts" && convertedString0 !== "jsKoaReceive" && convertedString0 !== "tsKoaReceive" && convertedString0 !== "jsKoaSend" && convertedString0 !== "tsKoaSend" && convertedString0 !== "jsPostgres" && convertedString0 !== "tsPostgres" && convertedString0 !== "jsAxios" && convertedString0 !== "tsAxios" && convertedString0 !== "jsAxiosNode" && convertedString0 !== "tsAxiosBrowser" && convertedString0 !== "tsAxiosReactNative" && convertedString0 !== "jsFetch" && convertedString0 !== "tsFetch" && convertedString0 !== "jsFetchNode" && convertedString0 !== "tsFetchBrowser" && convertedString0 !== "tsFetchReactNative" ) { errorMap[`$`] = { key: "validator.oneOf", allowedValues: [ "js", "ts", "jsKoaReceive", "tsKoaReceive", "jsKoaSend", "tsKoaSend", "jsPostgres", "tsPostgres", "jsAxios", "tsAxios", "jsAxiosNode", "tsAxiosBrowser", "tsAxiosReactNative", "jsFetch", "tsFetch", "jsFetchNode", "tsFetchBrowser", "tsFetchReactNative", ], foundValue: convertedString0, }; } else { result = convertedString0; } } } if (Object.keys(errorMap).length > 0) { return { error: errorMap }; } return { value: result }; } /** * @param {import("../common/types.js").StructureAnyOfDefinitionInput|any} value * @returns {Either<import("../common/types.js").StructureAnyOfDefinition, ValidatorErrorMap>} */ export function validateStructureAnyOfDefinition(value) { /** @type {ValidatorErrorMap} */ const errorMap = {}; /** @type {any} */ let result = undefined; if (value === null || value === undefined) { errorMap[`$`] = { key: "validator.undefined", }; } else { if (!isRecord(value)) { errorMap[`$`] = { key: "validator.object", value: value, foundType: typeof value, }; } else { result = { type: undefined, group: undefined, name: undefined, docString: undefined, isOptional: undefined, defaultValue: undefined, sql: undefined, validator: undefined, values: undefined, }; if (value["type"] === null || value["type"] === undefined) { errorMap[`$.type`] = { key: "validator.undefined", }; } else { /** @type {string} */ const convertedString1 = value["type"]; if (typeof convertedString1 !== "string") { errorMap[`$.type`] = { key: "validator.string", }; } else { if (convertedString1.length < 1) { errorMap[`$.type`] = { key: "validator.length", minLength: 1, }; } else if (convertedString1 !== "anyOf") { errorMap[`$.type`] = { key: "validator.oneOf", allowedValues: ["anyOf"], foundValue: convertedString1, }; } else { result["type"] = convertedString1; } } } if (value["group"] === null || value["group"] === undefined) { result["group"] = undefined; } else { /** @type {string} */ const convertedString2 = value["group"]; if (typeof convertedString2 !== "string") { errorMap[`$.group`] = { key: "validator.string", }; } else { if (convertedString2.length === 0) { result["group"] = undefined; } else { if (convertedString2.length < 1) { errorMap[`$.group`] = { key: "validator.length", minLength: 1, }; } else { result["group"] = convertedString2; } } } } if (value["name"] === null || value["name"] === undefined) { result["name"] = undefined; } else { /** @type {string} */ const convertedString3 = value["name"]; if (typeof convertedString3 !== "string") { errorMap[`$.name`] = { key: "validator.string", }; } else { if (convertedString3.length === 0) { result["name"] = undefined; } else { if (convertedString3.length < 1) { errorMap[`$.name`] = { key: "validator.length", minLength: 1, }; } else { result["name"] = convertedString3; } } } } if (value["docString"] === null || value["docString"] === undefined) { result["docString"] = ""; } else { /** @type {string} */ const convertedString4 = value["docString"]; if (typeof convertedString4 !== "string") { errorMap[`$.docString`] = { key: "validator.string", }; } else { if (convertedString4.length === 0) { result["docString"] = ""; } else { { result["docString"] = convertedString4; } } } } if (value["isOptional"] === null || value["isOptional"] === undefined) { result["isOptional"] = false; } else { if ( value["isOptional"] === true || value["isOptional"] === "true" || value["isOptional"] === 1 || value["isOptional"] === "1" ) { result["isOptional"] = true; } else if ( value["isOptional"] === false || value["isOptional"] === "false" || value["isOptional"] === 0 || value["isOptional"] === "0" ) { result["isOptional"] = false; } else { errorMap[`$.isOptional`] = { key: "validator.type", expectedType: "boolean", }; } } if ( value["defaultValue"] === null || value["defaultValue"] === undefined ) { result["defaultValue"] = undefined; } else { let hasAnyOfMatch6 = false; errorMap[`$.defaultValue`] = { key: "validator.anyOf", errors: [], }; if (!hasAnyOfMatch6) { /** @type {ValidatorErrorMap} */ const intermediateErrorMap8 = {}; /** @type {any} */ let intermediateResult8 = undefined; /** @type {any} */ const intermediateValue8 = value["defaultValue"]; if (intermediateValue8 === null || intermediateValue8 === undefined) { intermediateErrorMap8[`$`] = { key: "validator.undefined", }; } else { /** @type {string} */ const convertedString8 = intermediateValue8; if (typeof convertedString8 !== "string") { intermediateErrorMap8[`$`] = { key: "validator.string", }; } else { if (convertedString8.length < 1) { intermediateErrorMap8[`$`] = { key: "validator.length", minLength: 1, }; } else { intermediateResult8 = convertedString8; } } } if (Object.keys(intermediateErrorMap8).length > 0) { errorMap[`$.defaultValue`].errors.push(intermediateErrorMap8); } else { hasAnyOfMatch6 = true; delete errorMap[`$.defaultValue`]; result["defaultValue"] = intermediateResult8; } } if (!hasAnyOfMatch6) { /** @type {ValidatorErrorMap} */ const intermediateErrorMap8 = {}; /** @type {any} */ let intermediateResult8 = undefined; /** @type {any} */ const intermediateValue8 = value["defaultValue"]; if (intermediateValue8 === null || intermediateValue8 === undefined) { intermediateErrorMap8[`$`] = { key: "validator.undefined", }; } else { if ( intermediateValue8 === true || intermediateValue8 === "true" || intermediateValue8 === 1 || intermediateValue8 === "1" ) { intermediateResult8 = true; } else if ( intermediateValue8 === false || intermediateValue8 === "false" || intermediateValue8 === 0 || intermediateValue8 === "0" ) { intermediateResult8 = false; } else { intermediateErrorMap8[`$`] = { key: "validator.type", expectedType: "boolean", }; } } if (Object.keys(intermediateErrorMap8).length > 0) { errorMap[`$.defaultValue`].errors.push(intermediateErrorMap8); } else { hasAnyOfMatch6 = true; delete errorMap[`$.defaultValue`]; result["defaultValue"] = intermediateResult8; } } if (!hasAnyOfMatch6) { /** @type {ValidatorErrorMap} */ const intermediateErrorMap8 = {}; /** @type {any} */ let intermediateResult8 = undefined; /** @type {any} */ const intermediateValue8 = value["defaultValue"]; if (intermediateValue8 === null || intermediateValue8 === undefined) { intermediateErrorMap8[`$`] = { key: "validator.undefined", }; } else { let convertedNumber8 = intermediateValue8; if ( typeof convertedNumber8 !== "number" && typeof convertedNumber8 === "string" ) { convertedNumber8 = Number(convertedNumber8); } if ( typeof convertedNumber8 !== "number" || isNaN(convertedNumber8) || !isFinite(convertedNumber8) || !Number.isInteger(convertedNumber8) ) { intermediateErrorMap8[`$`] = { key: "validator.number", subType: "int", }; } else if (convertedNumber8 < -9007199254740991) { intermediateErrorMap8[`$`] = { key: "validator.range", minValue: -9007199254740991, }; } else if (convertedNumber8 > 9007199254740991) { intermediateErrorMap8[`$`] = { key: "validator.range", maxValue: 9007199254740991, }; } else { intermediateResult8 = convertedNumber8; } } if (Object.keys(intermediateErrorMap8).length > 0) { errorMap[`$.defaultValue`].errors.push(intermediateErrorMap8); } else { hasAnyOfMatch6 = true; delete errorMap[`$.defaultValue`]; result["defaultValue"] = intermediateResult8; } } } if (value["sql"] === null || value["sql"] === undefined) { result["sql"] = {}; } else { if (!isRecord(value["sql"])) { errorMap[`$.sql`] = { key: "validator.object", value: value["sql"], foundType: typeof value["sql"], }; } else { result["sql"] = { primary: undefined, searchable: undefined, hasDefaultValue: undefined, }; if ( value["sql"]["primary"] === null || value["sql"]["primary"] === undefined ) { result["sql"]["primary"] = undefined; } else { if ( value["sql"]["primary"] === true || value["sql"]["primary"] === "true" || value["sql"]["primary"] === 1 || value["sql"]["primary"] === "1" ) { result["sql"]["primary"] = true; } else if ( value["sql"]["primary"] === false || value["sql"]["primary"] === "false" || value["sql"]["primary"] === 0 || value["sql"]["primary"] === "0" ) { result["sql"]["primary"] = false; } else { errorMap[`$.sql.primary`] = { key: "validator.type", expectedType: "boolean", }; } } if ( value["sql"]["searchable"] === null || value["sql"]["searchable"] === undefined ) { result["sql"]["searchable"] = undefined; } else { if ( value["sql"]["searchable"] === true || value["sql"]["searchable"] === "true" || value["sql"]["searchable"] === 1 || value["sql"]["searchable"] === "1" ) { result["sql"]["searchable"] = true; } else if ( value["sql"]["searchable"] === false || value["sql"]["searchable"] === "false" || value["sql"]["searchable"] === 0 || value["sql"]["searchable"] === "0" ) { result["sql"]["searchable"] = false; } else { errorMap[`$.sql.searchable`] = { key: "validator.type", expectedType: "boolean", }; } } if ( value["sql"]["hasDefaultValue"] === null || value["sql"]["hasDefaultValue"] === undefined ) { result["sql"]["hasDefaultValue"] = undefined; } else { if ( value["sql"]["hasDefaultValue"] === true || value["sql"]["hasDefaultValue"] === "true" || value["sql"]["hasDefaultValue"] === 1 || value["sql"]["hasDefaultValue"] === "1" ) { result["sql"]["hasDefaultValue"] = true; } else if ( value["sql"]["hasDefaultValue"] === false || value["sql"]["hasDefaultValue"] === "false" || value["sql"]["hasDefaultValue"] === 0 || value["sql"]["hasDefaultValue"] === "0" ) { result["sql"]["hasDefaultValue"] = false; } else { errorMap[`$.sql.hasDefaultValue`] = { key: "validator.type", expectedType: "boolean", }; } } } } if (value["validator"] === null || value["validator"] === undefined) { result["validator"] = {}; } else { if (!isRecord(value["validator"])) { errorMap[`$.validator`] = { key: "validator.object", value: value["validator"], foundType: typeof value["validator"], }; } else { result["validator"] = { discriminant: undefined }; if ( value["validator"]["discriminant"] === null || value["validator"]["discriminant"] === undefined ) { result["validator"]["discriminant"] = undefined; } else { /** @type {string} */ const convertedString9 = value["validator"]["discriminant"]; if (typeof convertedString9 !== "string") { errorMap[`$.validator.discriminant`] = { key: "validator.string", }; } else { if (convertedString9.length === 0) { result["validator"]["discriminant"] = undefined; } else { if (convertedString9.length < 1) { errorMap[`$.validator.discriminant`] = { key: "validator.length", minLength: 1, }; } else { result["validator"]["discriminant"] = convertedString9; } } } } } } if (value["values"] === null || value["values"] === undefined) { errorMap[`$.values`] = { key: "validator.undefined", }; } else { /** @type {ValidatorErrorMap} */ const intermediateErrorMap10 = {}; /** @type {Array<any>} */ const intermediateResult10 = []; /** @type {any | Array<any>} */ const intermediateValue10 = value["values"]; if (!Array.isArray(intermediateValue10)) { errorMap[`$.values`] = { key: "validator.array", value: intermediateValue10, }; } else { if (intermediateValue10.length < 1) { errorMap[`$.values`] = { key: "validator.length", minLength: 1, foundLength: intermediateValue10.length, }; } result["values"] = []; for (let i10 = 0; i10 < intermediateValue10.length; ++i10) { if ( intermediateValue10[i10] === null || intermediateValue10[i10] === undefined ) { intermediateErrorMap10[`$.${i10}`] = { key: "validator.undefined", }; } else { const refResult10 = validateStructureTypeSystemDefinition( intermediateValue10[i10], ); if (refResult10.error) { for (const errorKey of Object.keys(refResult10.error)) { intermediateErrorMap10[`$.${i10}${errorKey.substring(1)}`] = refResult10.error[errorKey]; } } intermediateResult10[i10] = refResult10.value; } } } if (Object.keys(intermediateErrorMap10).length) { for (const errorKey of Object.keys(intermediateErrorMap10)) { errorMap[`$.values${errorKey.substring(1)}`] = intermediateErrorMap10[errorKey]; } } else { result["values"] = intermediateResult10; } } } } if (Object.keys(errorMap).length > 0) { return { error: errorMap }; } return { value: result }; } /** * All type definitions that can be used inside other types, like object keys. * * @param {import("../common/types.js").StructureTypeSystemDefinitionInput|any} value * @returns {Either<import("../common/types.js").StructureTypeSystemDefinition, ValidatorErrorMap>} */ export function validateStructureTypeSystemDefinition(value) { /** @type {ValidatorErrorMap} */ const errorMap = {}; /** @type {any} */ let result = undefined; if (value === null || value === undefined) { errorMap[`$`] = { key: "validator.undefined", }; } else { if (!isRecord(value)) { errorMap[`$`] = { key: "validator.object", value: value, foundType: typeof value, }; } else { if ( typeof value === "object" && "type" in value && value.type === "any" ) { const refResult0 = validateStructureAnyDefinition(value); if (refResult0.error) { for (const errorKey of Object.keys(refResult0.error)) { errorMap[`$${errorKey.substring(1)}`] = refResult0.error[errorKey]; } } result = refResult0.value; } else if ( typeof value === "object" && "type" in value && value.type === "anyOf" ) { const refResult0 = validateStructureAnyOfDefinition(value); if (refResult0.error) { for (const errorKey of Object.keys(refResult0.error)) { errorMap[`$${errorKey.substring(1)}`] = refResult0.error[errorKey]; } } result = refResult0.value; } else if ( typeof value === "object" && "type" in value && value.type === "array" ) { const refResult0 = validateStructureArrayDefinition(value); if (refResult0.error) { for (const errorKey of Object.keys(refResult0.error)) { errorMap[`$${errorKey.substring(1)}`] = refResult0.error[errorKey]; } } result = refResult0.value; } else if ( typeof value === "object" && "type" in value && value.type === "boolean" ) { const refResult0 = validateStructureBooleanDefinition(value); if (refResult0.error) { for (const errorKey of Object.keys(refResult0.error)) { errorMap[`$${errorKey.substring(1)}`] = refResult0.error[errorKey]; } } result = refResult0.value; } else if ( typeof value === "object" && "type" in value && value.type === "crud" ) { const refResult0 = validateStructureCrudDefinition(value); if (refResult0.error) { for (const errorKey of Object.keys(refResult0.error)) { errorMap[`$${errorKey.substring(1)}`] = refResult0.error[errorKey]; } } result = refResult0.value; } else if ( typeof value === "object" && "type" in value && value.type === "date" ) { const refResult0 = validateStructureDateDefinition(value); if (refResult0.error) { for (const errorKey of Object.keys(refResult0.error)) { errorMap[`$${errorKey.substring(1)}`] = refResult0.error[errorKey]; } } result = refResult0.value; } else if ( typeof value === "object" && "type" in value && value.type === "extend" ) { const refResult0 = validateStructureExtendDefinition(value); if (refResult0.error) { for (const errorKey of Object.keys(refResult0.error)) { errorMap[`$${errorKey.substring(1)}`] = refResult0.error[errorKey]; } } result = refResult0.value; } else if ( typeof value === "object" && "type" in value && value.type === "file" ) { const refResult0 = validateStructureFileDefinition(value); if (refResult0.error) { for (const errorKey of Object.keys(refResult0.error)) { errorMap[`$${errorKey.substring(1)}`] = refResult0.error[errorKey]; } } result = refResult0.value; } else if ( typeof value === "object" && "type" in value && value.type === "generic" ) { const refResult0 = validateStructureGenericDefinition(value); if (refResult0.error) { for (const errorKey of Object.keys(refResult0.