n8n-nodes-base
Version:
Base nodes of n8n
33 lines (30 loc) • 6.17 kB
JavaScript
/**
* Convert to File Node - Version 1 - Zod Validation Schemas
*
* These schemas validate node configuration at runtime.
* Use .parse() for strict validation or .safeParse() for error handling.
*
* Schema helpers (z, expressionSchema, etc.) are passed as parameters
* by the schema-validator, not imported from external files.
*
* @generated - CommonJS JavaScript for runtime loading
*/
module.exports = function getSchema({ parameters, z, expressionSchema, stringOrExpression, numberOrExpression, booleanOrExpression, resourceLocatorValueSchema, resourceMapperValueSchema, filterValueSchema, assignmentCollectionValueSchema, iDataObjectSchema, resolveSchema }) {
// Parameters schema
const parametersSchema = z.object({
operation: z.union([z.literal('csv'), z.literal('html'), z.literal('iCal'), z.literal('toJson'), z.literal('ods'), z.literal('rtf'), z.literal('toText'), z.literal('xls'), z.literal('xlsx'), z.literal('toBinary')]).optional(),
binaryPropertyName: resolveSchema({ parameters, schema: stringOrExpression, required: false, displayOptions: {"show":{"operation":["csv","html","rtf","ods","xls","xlsx","toBinary","toText","toJson","iCal"]}}, defaults: {"operation":"csv"} }),
options: resolveSchema({ parameters, schema: z.object({ compression: booleanOrExpression.optional(), delimiter: stringOrExpression.optional(), fileName: stringOrExpression.optional(), headerRow: booleanOrExpression.optional(), sheetName: stringOrExpression.optional(), addBOM: booleanOrExpression.optional(), dataIsBase64: booleanOrExpression.optional(), encoding: z.union([z.literal('armscii8'), z.literal('ascii'), z.literal('base64'), z.literal('big5hkscs'), z.literal('binary'), z.literal('cesu8'), z.literal('cp1046'), z.literal('cp1124'), z.literal('cp1125'), z.literal('cp1129'), z.literal('cp1133'), z.literal('cp1161'), z.literal('cp1162'), z.literal('cp1163'), z.literal('cp437'), z.literal('cp720'), z.literal('cp737'), z.literal('cp775'), z.literal('cp808'), z.literal('cp850'), z.literal('cp852'), z.literal('cp855'), z.literal('cp856'), z.literal('cp857'), z.literal('cp858'), z.literal('cp860'), z.literal('cp861'), z.literal('cp862'), z.literal('cp863'), z.literal('cp864'), z.literal('cp865'), z.literal('cp866'), z.literal('cp869'), z.literal('cp922'), z.literal('cp936'), z.literal('cp949'), z.literal('cp950'), z.literal('eucjp'), z.literal('gb18030'), z.literal('gbk'), z.literal('georgianacademy'), z.literal('georgianps'), z.literal('hex'), z.literal('hproman8'), z.literal('iso646cn'), z.literal('iso646jp'), z.literal('iso88591'), z.literal('iso885910'), z.literal('iso885911'), z.literal('iso885913'), z.literal('iso885914'), z.literal('iso885915'), z.literal('iso885916'), z.literal('iso88592'), z.literal('iso88593'), z.literal('iso88594'), z.literal('iso88595'), z.literal('iso88596'), z.literal('iso88597'), z.literal('iso88598'), z.literal('iso88599'), z.literal('koi8r'), z.literal('koi8ru'), z.literal('koi8t'), z.literal('koi8u'), z.literal('maccenteuro'), z.literal('maccroatian'), z.literal('maccyrillic'), z.literal('macgreek'), z.literal('maciceland'), z.literal('macintosh'), z.literal('macroman'), z.literal('macromania'), z.literal('macthai'), z.literal('macturkish'), z.literal('macukraine'), z.literal('mik'), z.literal('pt154'), z.literal('rk1048'), z.literal('shiftjis'), z.literal('tcvn'), z.literal('tis620'), z.literal('ucs2'), z.literal('utf16'), z.literal('utf16be'), z.literal('utf32'), z.literal('utf32be'), z.literal('utf32le'), z.literal('utf7'), z.literal('utf7imap'), z.literal('utf8'), z.literal('viscii'), z.literal('windows1250'), z.literal('windows1251'), z.literal('windows1252'), z.literal('windows1253'), z.literal('windows1254'), z.literal('windows1255'), z.literal('windows1256'), z.literal('windows1257'), z.literal('windows1258'), z.literal('windows874'), expressionSchema]).optional(), mimeType: stringOrExpression.optional(), format: booleanOrExpression.optional() }), required: false, displayOptions: {"show":{"operation":["csv","html","rtf","ods","xls","xlsx","toBinary","toText","toJson"]}}, defaults: {"operation":"csv"} }),
sourceProperty: resolveSchema({ parameters, schema: stringOrExpression, required: false, displayOptions: {"show":{"operation":["toBinary","toText"]}}, defaults: {"operation":"csv"} }),
mode: resolveSchema({ parameters, schema: z.union([z.literal('once'), z.literal('each')]), required: false, displayOptions: {"show":{"operation":["toJson"]}}, defaults: {"operation":"csv"} }),
title: resolveSchema({ parameters, schema: stringOrExpression, required: false, displayOptions: {"show":{"operation":["iCal"]}}, defaults: {"operation":"csv"} }),
start: resolveSchema({ parameters, schema: stringOrExpression, required: false, displayOptions: {"show":{"operation":["iCal"]}}, defaults: {"operation":"csv"} }),
end: resolveSchema({ parameters, schema: stringOrExpression, required: false, displayOptions: {"show":{"operation":["iCal"]}}, defaults: {"operation":"csv"} }),
allDay: resolveSchema({ parameters, schema: booleanOrExpression, required: false, displayOptions: {"show":{"operation":["iCal"]}}, defaults: {"operation":"csv"} }),
additionalFields: resolveSchema({ parameters, schema: z.object({ attendeesUi: z.unknown().optional(), busyStatus: z.union([z.literal('BUSY'), z.literal('TENTATIVE'), expressionSchema]).optional(), calName: stringOrExpression.optional(), description: stringOrExpression.optional(), fileName: stringOrExpression.optional(), geolocationUi: z.unknown().optional(), location: stringOrExpression.optional(), recurrenceRule: stringOrExpression.optional(), organizerUi: z.unknown().optional(), sequence: numberOrExpression.optional(), status: z.union([z.literal('CONFIRMED'), z.literal('CANCELLED'), z.literal('TENTATIVE'), expressionSchema]).optional(), uid: stringOrExpression.optional(), url: stringOrExpression.optional(), useWorkflowTimezone: booleanOrExpression.optional() }), required: false, displayOptions: {"show":{"operation":["iCal"]}}, defaults: {"operation":"csv"} }),
});
// Return combined config schema
return z.object({
parameters: parametersSchema.optional(),
});
};