async bind()

in libs/designer/src/lib/core/utils/monitoring/binders/outputs.ts [7:56]


  async bind(
    outputs: any,
    type: string,
    outputParametersByName: Record<string, OutputParameter>,
    manifest?: OperationManifest,
    nodeParameters?: Record<string, ParameterInfo>,
    operationMetadata?: Record<string, any>
  ): Promise<BoundParameters[]> {
    let outputArray: any[];

    if (!Array.isArray(outputs)) {
      outputArray = [outputs];
    } else if (outputs.length === 0) {
      outputArray = [];
    } else if (outputs[0] && Object.prototype.hasOwnProperty.call(outputs[0], 'outputs')) {
      outputArray = outputs.map((output) => output.outputs);
    } else {
      outputArray = [outputs];
    }

    const getBoundParameters = async (output: any): Promise<BoundParameters> => {
      if (
        manifest &&
        !equals(type, constants.NODE.TYPE.IF) &&
        !equals(type, constants.NODE.TYPE.FOREACH) &&
        !equals(type, constants.NODE.TYPE.SWITCH) &&
        !equals(type, constants.NODE.TYPE.OPEN_API_CONNECTION) &&
        !equals(type, constants.NODE.TYPE.OPEN_API_CONNECTION_WEBHOOK) &&
        !equals(type, constants.NODE.TYPE.OPEN_API_CONNECTION_NOTIFICATION) &&
        !equals(type, constants.NODE.TYPE.AGENT)
      ) {
        const binder = new ManifestOutputsBinder(manifest, nodeParameters ?? {}, operationMetadata);
        return binder.bind(output, outputParametersByName);
      }

      if (
        equals(type, constants.NODE.TYPE.API_CONNECTION) ||
        equals(type, constants.NODE.TYPE.API_CONNECTION_WEBHOOK) ||
        equals(type, constants.NODE.TYPE.API_CONNECTION_NOTIFICATION)
      ) {
        const binder = new ApiConnectionOutputsBinder(nodeParameters ?? {}, operationMetadata);
        return binder.bind(output, outputParametersByName);
      }

      const binder = new DefaultOutputsBinder(nodeParameters ?? {}, operationMetadata);
      return binder.bind(output);
    };

    return Promise.all(outputArray.map(getBoundParameters));
  }