UNPKG

@sprucelabs/spruce-event-utils

Version:

Some helpful utilities to speed up working with Mercury! 🚅

53 lines (52 loc) • 1.89 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const spruce_skill_utils_1 = require("@sprucelabs/spruce-skill-utils"); const eventSource_schema_1 = __importDefault(require("./../.spruce/schemas/spruceEventUtils/v2021_09_13/eventSource.schema")); function buildEmitTargetAndPayloadSchema(options) { const { eventName, payloadSchema: emitPayloadSchema, targetSchema, } = options; const targetField = { type: 'schema', isRequired: hasAnyRequiredFields(targetSchema), options: { schema: targetSchema, }, }; const schema = { id: `${spruce_skill_utils_1.namesUtil.toCamel(eventName)}EmitTargetAndPayload`, fields: { source: { type: 'schema', label: 'Source', options: { schema: eventSource_schema_1.default, }, }, }, }; const hasTargetFields = targetSchema && Object.keys(targetSchema.fields ?? {}).length > 0; if (hasTargetFields) { //@ts-ignore schema.fields.target = targetField; } const hasPayloadFields = emitPayloadSchema && Object.keys(emitPayloadSchema.fields ?? {}).length > 0; if (hasPayloadFields) { const isRequired = hasAnyRequiredFields(emitPayloadSchema); //@ts-ignore schema.fields.payload = { type: 'schema', isRequired, options: { schema: emitPayloadSchema, }, }; } return schema; } exports.default = buildEmitTargetAndPayloadSchema; function hasAnyRequiredFields(schema) { return !!Object.keys(schema?.fields ?? {}).find((f) => schema?.fields?.[f].isRequired); }