@tsed/formio
Version:
Formio package for Ts.ED framework
332 lines (302 loc) • 8.14 kB
text/typescript
import {Request, Response} from "express";
import {FormioErrors} from "./FormioErrors.js";
import {FormioJs} from "./FormioJs.js";
export interface FormioUtil {
Formio: FormioJs;
/**
* Iterate through each component within a form.
*
* @param {Object} components
* The components to iterate.
* @param {Function} fn
* The iteration function to invoke for each component.
* @param {Boolean} includeAll
* Whether or not to include layout components.
* @param {String} path
*/
eachComponent: Function;
/**
* Get a component by its key
*
* @param {Object} components
* The components to iterate.
* @param {String} key
* The key of the component to get.
*
* @returns {Object}
* The component that matches the given key, or undefined if not found.
*/
getComponent: Function;
/**
* Define if component should be considered input component
*
* @param {Object} componentJson
* JSON of component to check
*
* @returns {Boolean}
* If component is input or not
*/
isInputComponent: Function;
/**
* Flatten the form components for data manipulation.
*
* @param {Object} components
* The components to iterate.
* @param {Boolean} includeAll
* Whether or not to include layout components.
*
* @returns {Object}
* The flattened components map.
*/
flattenComponents: Function;
/**
* Get the value for a component key, in the given submission.
*
* @param {Object} submission
* A submission object to search.
* @param {String} key
* A for components API key to search for.
*/
getValue: Function;
/**
* Determine if a component is a layout component or not.
*
* @param {Object} component
* The component to check.
*
* @returns {Boolean}
* Whether or not the component is a layout component.
*/
isLayoutComponent: Function;
/**
* Apply JSON logic functionality.
*
* @param component
* @param row
* @param data
*/
jsonLogic: Function;
/**
* Check if the condition for a component is true or not.
*
* @param component
* @param row
* @param data
*/
checkCondition: Function;
flattenComponentsForRender: Function;
renderFormSubmission: Function;
renderComponentValue: Function;
/**
* A node-fetch shim adding support for http(s) proxy and allowing
* invalid tls certificates (to be used with self signed certificates).
*
* @param {any} url The request url string or url like object.
* @param {any} options The request options object.
* @returns {Promise<Response>} The promise with the node-fetch response object.
*/
fetch: any;
base64: {
/**
* Base64 encode the given data.
*
* @param {String} decoded
* The decoded data to encode.
*
* @return {String}
* The base64 representation of the given data.
*/
encode(decoded: string): string;
/**
* Base64 decode the given data.
*
* @param {String} encoded
* The encoded data to decode.
*
* @return {String}
* The ascii representation of the given encoded data.
*/
decode(encoded: string): string;
};
/**
* Application error codes.
*/
errorCodes: FormioErrors;
layoutComponents: ("panel" | "table" | "well" | "columns" | "fieldset" | "tabs" | string)[];
deleteProp(target: any, propertyKey: any): any;
/**
* A wrapper around console.log that gets ignored by eslint.
*
* @param {*} content
* The content to pass to console.log.
*/
log(content: string): void;
/**
* Determine if a value is a boolean representation.
* @param value
* @return {boolean}
*/
isBoolean(value: any): boolean;
/**
* Quick boolean coercer.
* @param value
* @return {boolean}
*/
boolean(value: any): boolean;
/**
* A wrapper around console.error that gets ignored by eslint.
*
* @param {*} content
* The content to pass to console.error.
*/
error(content: any): void;
/**
* Returns the URL alias for a form provided the url.
*/
getAlias(req: Request, reservedForms: string[]): {alias: string; additional: string};
/**
* Escape a string for use in regex.
*
* @param str
* @returns {*}
*/
escapeRegExp(str: string): string;
/**
* Create a sub response object that only handles errors.
*
* @param res
* @return {{send: function(), sendStatus: function(*=), status: function(*=)}}
*/
createSubResponse(res: Response): Response;
/**
* Create a sub-request object from the original request.
*
* @param req
*/
createSubRequest(req: Request): Request;
/**
* Return the objectId.
*
* @param id
* @returns {*}
* @constructor
*/
ObjectId(id: string): any;
/**
* Search the request headers for the given key.
*
* @param req
* The Express request object.
* @param key
* The key to search for in the headers.
*
* @return
* The header value if found or false.
*/
getHeader(req: Request, key: string): string | false;
/**
* Search the request query for the given key.
*
* @param req
* The Express request object.
* @param key
* The key to search for in the query.
*
* @return
* The query value if found or false.
*/
getQuery(req: Request, key: string): any | false;
/**
* Search the request parameters for the given key.
*
* @param req
* The Express request object.
* @param key
* The key to search for in the parameters.
*
* @return
* The parameter value if found or false.
*/
getParameter(req: Request, key: string): any | false;
/**
* Determine if the request has the given key set as a header or url parameter.
*
* @param req
* The Express request object.
* @param key
* The key to search for.
*
* @return
* Return the value of the key or false if not found.
*/
getRequestValue(req: Request, key: string): any | false;
/**
* Split the given URL into its key/value pairs.
*
* @param url
* The request url to split, typically req.url.
*
* @returns {{}}
* The key/value pairs of the request url.
*/
getUrlParams(url: string): Record<string, any>;
/**
* Converts a form component key into a submission key
* by putting .data. between each nested component
* (ex: `user.name` becomes `user.data.name` in a submission)
* @param key
* The key to convert
* @return
* The submission key
*/
getSubmissionKey(key: string): string;
/**
* Converts a submission key into a form component key
* by replacing .data. with .
* (ex: `user.data.name` becomes `user.name` in a submission)
* @param key
* The key to convert
* @return
* The form component key
*/
getFormComponentKey(key: string): string;
/**
* Utility function to ensure the given id is always a BSON object.
*
* @param _id {String|Object}
* A mongo id as a string or object.
*
* @returns {Object}
* The mongo BSON id.
*/
idToBson(_id: string | any): any;
/**
* Utility function to ensure the given id is always a string object.
*
* @param _id {String|Object}
* A mongo id as a string or object.
*
* @returns {String}
* The mongo string id.
*/
idToString(_id: string | any): string;
/**
* Ensures that a submission data has MongoDB ObjectID's for all "id" fields.
* @param data
* @return {boolean}
*/
ensureIds(data: any[]): any;
removeProtectedFields(form: string, action: string, submissions: any): void;
/**
* Retrieve a unique machine name
*
* @param document
* @param model
* @param next
* @return {*}
*/
uniqueMachineName(document: {machineName: string}, model: any, next: (err?: Error) => void): void;
castValue<T = any>(valueType: "string" | "number" | "boolean" | "[number]" | "[string]", value: any): T;
valuePath(prefix: string, key: string): string;
eachValue(components: any, data: any, fn: Function, context: any, path?: string): void;
}