UNPKG

@compas/code-gen

Version:

Generate various boring parts of your server

1,318 lines (1,264 loc) 454 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 */ // eslint-disable-next-line no-unused-vars 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} */ let 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} */ let 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} */ let 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} */ let 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} */ let intermediateValue8 = value["defaultValue"]; if (intermediateValue8 === null || intermediateValue8 === undefined) { intermediateErrorMap8[`$`] = { key: "validator.undefined", }; } else { /** @type {string} */ let 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} */ let 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} */ let 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 (let 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} */ let 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} */ let 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} */ let 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} */ let 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} */ let 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} */ let 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} */ let 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} */ let 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} */ let 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} */ let intermediateValue8 = value["defaultValue"]; if (intermediateValue8 === null || intermediateValue8 === undefined) { intermediateErrorMap8[`$`] = { key: "validator.undefined", }; } else { /** @type {string} */ let 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} */ let 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} */ let 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} */ let 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 {any[]} */ let intermediateResult10 = []; /** @type {any|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.error)) { errorMap[`$${errorKey.substring(1)}`] = refResult0.error[errorKey]; } } result = refResult0.value; } else if (typeof value === "object" && "type" in value && value.type === "number") { const refResult0 = validateStructureNumberDefinition(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 === "object") { const refResult0 = validateStructureObjectDefinition(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 === "omit") { const refResult0 = validateStructureOmitDefinition(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 === "pick") { const refResult0 = validateStructurePickDefinition(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 === "reference") { const refResult0 = validateStructureReferenceDefinition(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 === "string") { const refResult0 = validateStructureStringDefinition(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 === "uuid") { const refResult0 = validateStructureUuidDefinition(value); if (refResult0.error) { for (const errorKey of Object.keys(refResult0.error)) { errorMap[`$${errorKey.substring(1)}`] = refResult0.error[errorKey]; } } result = refResult0.value; } else { errorMap[`$`] = { key: "validator.anyOf", discriminant: "type", foundValue: value.type, allowedValues: ["any","anyOf","array","boolean","crud","date","extend","file","generic","number","object","omit","pick","reference","string","uuid"], }; } } } if (Object.keys(errorMap).length > 0) { return { error: errorMap }; } return { value: result } } /** * @param {import("../common/types.js").StructureArrayDefinitionInput|any} value * @returns {Either<import("../common/types.js").StructureArrayDefinition, ValidatorErrorMap>} */ export function validateStructureArrayDefinition(value) { /** @type {ValidatorErrorMap} */ const errorMap = {}; /** @type {any} */ let resul