diff --git a/app/client/cypress/integration/Smoke_TestSuite/ClientSideTests/DynamicInput/autocomplete_spec.js b/app/client/cypress/integration/Smoke_TestSuite/ClientSideTests/DynamicInput/autocomplete_spec.js index ecc7c5d252..6fa66f73d7 100644 --- a/app/client/cypress/integration/Smoke_TestSuite/ClientSideTests/DynamicInput/autocomplete_spec.js +++ b/app/client/cypress/integration/Smoke_TestSuite/ClientSideTests/DynamicInput/autocomplete_spec.js @@ -31,7 +31,7 @@ describe("Dynamic input autocomplete", () => { // Tests if data tree entities are sorted cy.get(`${dynamicInputLocators.hints} li`) .eq(1) - .should("have.text", "Aditya.backgroundColor"); + .should("have.text", "input.text"); // Tests if "No suggestions" message will pop if you type any garbage cy.get(dynamicInputLocators.input) diff --git a/app/client/src/actions/evaluationActions.ts b/app/client/src/actions/evaluationActions.ts new file mode 100644 index 0000000000..c6111d88cc --- /dev/null +++ b/app/client/src/actions/evaluationActions.ts @@ -0,0 +1,82 @@ +import { + ReduxAction, + ReduxActionErrorTypes, + ReduxActionTypes, +} from "../constants/ReduxActionConstants"; +import _ from "lodash"; +import { DataTree } from "../entities/DataTree/dataTreeFactory"; +import { DependencyMap } from "../utils/DynamicBindingUtils"; +import { Diff } from "deep-diff"; + +export const FIRST_EVAL_REDUX_ACTIONS = [ + // Pages + ReduxActionTypes.FETCH_PAGE_SUCCESS, + ReduxActionTypes.FETCH_PUBLISHED_PAGE_SUCCESS, +]; +export const EVALUATE_REDUX_ACTIONS = [ + ...FIRST_EVAL_REDUX_ACTIONS, + // Actions + ReduxActionTypes.FETCH_ACTIONS_SUCCESS, + ReduxActionTypes.FETCH_PLUGIN_FORM_CONFIGS_SUCCESS, + ReduxActionTypes.FETCH_ACTIONS_VIEW_MODE_SUCCESS, + ReduxActionErrorTypes.FETCH_ACTIONS_ERROR, + ReduxActionErrorTypes.FETCH_ACTIONS_VIEW_MODE_ERROR, + ReduxActionTypes.FETCH_ACTIONS_FOR_PAGE_SUCCESS, + ReduxActionTypes.SUBMIT_CURL_FORM_SUCCESS, + ReduxActionTypes.CREATE_ACTION_SUCCESS, + ReduxActionTypes.UPDATE_ACTION_PROPERTY, + ReduxActionTypes.DELETE_ACTION_SUCCESS, + ReduxActionTypes.COPY_ACTION_SUCCESS, + ReduxActionTypes.MOVE_ACTION_SUCCESS, + ReduxActionTypes.RUN_ACTION_SUCCESS, + ReduxActionErrorTypes.RUN_ACTION_ERROR, + ReduxActionTypes.EXECUTE_API_ACTION_SUCCESS, + ReduxActionErrorTypes.EXECUTE_ACTION_ERROR, + // App Data + ReduxActionTypes.SET_APP_MODE, + ReduxActionTypes.FETCH_USER_DETAILS_SUCCESS, + ReduxActionTypes.UPDATE_APP_PERSISTENT_STORE, + ReduxActionTypes.UPDATE_APP_TRANSIENT_STORE, + // Widgets + ReduxActionTypes.UPDATE_LAYOUT, + ReduxActionTypes.UPDATE_WIDGET_PROPERTY, + ReduxActionTypes.UPDATE_WIDGET_NAME_SUCCESS, + // Widget Meta + ReduxActionTypes.SET_META_PROP, + ReduxActionTypes.RESET_WIDGET_META, + // Batches + ReduxActionTypes.BATCH_UPDATES_SUCCESS, +]; +export const shouldProcessBatchedAction = (action: ReduxAction) => { + if ( + action.type === ReduxActionTypes.BATCH_UPDATES_SUCCESS && + Array.isArray(action.payload) + ) { + const batchedActionTypes = action.payload.map( + (batchedAction) => batchedAction.type, + ); + return ( + _.intersection(EVALUATE_REDUX_ACTIONS, batchedActionTypes).length > 0 + ); + } + return true; +}; + +export const setEvaluatedTree = ( + dataTree: DataTree, + updates: Diff[], +): ReduxAction<{ dataTree: DataTree; updates: Diff[] }> => { + return { + type: ReduxActionTypes.SET_EVALUATED_TREE, + payload: { dataTree, updates }, + }; +}; + +export const setDependencyMap = ( + inverseDependencyMap: DependencyMap, +): ReduxAction<{ inverseDependencyMap: DependencyMap }> => { + return { + type: ReduxActionTypes.SET_EVALUATION_INVERSE_DEPENDENCY_MAP, + payload: { inverseDependencyMap }, + }; +}; diff --git a/app/client/src/components/editorComponents/CodeEditor/EditorConfig.ts b/app/client/src/components/editorComponents/CodeEditor/EditorConfig.ts index df7a3f5594..bf6153c664 100644 --- a/app/client/src/components/editorComponents/CodeEditor/EditorConfig.ts +++ b/app/client/src/components/editorComponents/CodeEditor/EditorConfig.ts @@ -1,5 +1,5 @@ import CodeMirror from "codemirror"; -import { DataTree } from "entities/DataTree/dataTreeFactory"; +import { DataTree, ENTITY_TYPE } from "entities/DataTree/dataTreeFactory"; export enum EditorModes { TEXT = "text/plain", @@ -40,18 +40,23 @@ export const EditorThemes: Record = { [EditorTheme.DARK]: "duotone-dark", }; +export type HintEntityInformation = { + entityName?: string; + expectedType?: string; + entityType?: ENTITY_TYPE.ACTION | ENTITY_TYPE.WIDGET; +}; + export type HintHelper = ( editor: CodeMirror.Editor, data: DataTree, - additionalData?: Record>, + customDataTree?: Record>, ) => Hinter; export type Hinter = { showHint: ( editor: CodeMirror.Editor, - expected: string, - entityName: string, + entityInformation: HintEntityInformation, additionalData?: any, - ) => any; + ) => boolean; update?: (data: DataTree) => void; trigger?: (editor: CodeMirror.Editor) => void; }; diff --git a/app/client/src/components/editorComponents/CodeEditor/codeEditorUtils.ts b/app/client/src/components/editorComponents/CodeEditor/codeEditorUtils.ts index affd69cb2c..47bf65ff07 100644 --- a/app/client/src/components/editorComponents/CodeEditor/codeEditorUtils.ts +++ b/app/client/src/components/editorComponents/CodeEditor/codeEditorUtils.ts @@ -1,3 +1,6 @@ +import CodeMirror from "codemirror"; +import { getDynamicStringSegments } from "utils/DynamicBindingUtils"; + export const removeNewLineChars = (inputValue: any) => { return inputValue && inputValue.replace(/(\r\n|\n|\r)/gm, ""); }; @@ -10,3 +13,43 @@ export const getInputValue = (inputValue: any) => { } return inputValue; }; +const computeCursorIndex = (editor: CodeMirror.Editor) => { + const cursor = editor.getCursor(); + let cursorIndex = cursor.ch; + if (cursor.line > 0) { + for (let lineIndex = 0; lineIndex < cursor.line; lineIndex++) { + const line = editor.getLine(lineIndex); + cursorIndex = cursorIndex + line.length + 1; + } + } + return cursorIndex; +}; +export const checkIfCursorInsideBinding = ( + editor: CodeMirror.Editor, +): boolean => { + let cursorBetweenBinding = false; + const value = editor.getValue(); + const cursorIndex = computeCursorIndex(editor); + const stringSegments = getDynamicStringSegments(value); + // count of chars processed + let cumulativeCharCount = 0; + stringSegments.forEach((segment: string) => { + const start = cumulativeCharCount; + const dynamicStart = segment.indexOf("{{"); + const dynamicDoesStart = dynamicStart > -1; + const dynamicEnd = segment.indexOf("}}"); + const dynamicDoesEnd = dynamicEnd > -1; + const dynamicStartIndex = dynamicStart + start + 2; + const dynamicEndIndex = dynamicEnd + start; + if ( + dynamicDoesStart && + cursorIndex >= dynamicStartIndex && + ((dynamicDoesEnd && cursorIndex <= dynamicEndIndex) || + (!dynamicDoesEnd && cursorIndex >= dynamicStartIndex)) + ) { + cursorBetweenBinding = true; + } + cumulativeCharCount = start + segment.length; + }); + return cursorBetweenBinding; +}; diff --git a/app/client/src/components/editorComponents/CodeEditor/commandsHelper.ts b/app/client/src/components/editorComponents/CodeEditor/commandsHelper.ts index 180e5e579a..b85a022db5 100644 --- a/app/client/src/components/editorComponents/CodeEditor/commandsHelper.ts +++ b/app/client/src/components/editorComponents/CodeEditor/commandsHelper.ts @@ -1,22 +1,22 @@ import CodeMirror from "codemirror"; import { HintHelper } from "components/editorComponents/CodeEditor/EditorConfig"; import { CommandsCompletion } from "utils/autocomplete/TernServer"; -import { checkIfCursorInsideBinding } from "./hintHelpers"; import { generateQuickCommands } from "./generateQuickCommands"; import { Datasource } from "entities/Datasource"; import AnalyticsUtil from "utils/AnalyticsUtil"; import log from "loglevel"; -import { ENTITY_TYPE } from "entities/AppsmithConsole"; +import { DataTree, ENTITY_TYPE } from "entities/DataTree/dataTreeFactory"; +import { checkIfCursorInsideBinding } from "components/editorComponents/CodeEditor/codeEditorUtils"; -export const commandsHelper: HintHelper = (editor, data: any) => { +export const commandsHelper: HintHelper = (editor, data: DataTree) => { let entitiesForSuggestions = Object.values(data).filter( - (entity: any) => entity.ENTITY_TYPE && entity.ENTITY_TYPE !== "APPSMITH", + (entity: any) => + entity.ENTITY_TYPE && entity.ENTITY_TYPE !== ENTITY_TYPE.APPSMITH, ); return { showHint: ( editor: CodeMirror.Editor, - _: string, - entityName: string, + { entityType }, { datasources, executeCommand, @@ -31,11 +31,11 @@ export const commandsHelper: HintHelper = (editor, data: any) => { update: (value: string) => void; }, ): boolean => { - const currentEntityType = data[entityName]?.ENTITY_TYPE || "ACTION"; + const currentEntityType = entityType || ENTITY_TYPE.ACTION; entitiesForSuggestions = entitiesForSuggestions.filter((entity: any) => { - return currentEntityType === "WIDGET" - ? entity.ENTITY_TYPE !== "WIDGET" - : entity.ENTITY_TYPE !== "ACTION"; + return currentEntityType === ENTITY_TYPE.WIDGET + ? entity.ENTITY_TYPE !== ENTITY_TYPE.WIDGET + : entity.ENTITY_TYPE !== ENTITY_TYPE.ACTION; }); const cursorBetweenBinding = checkIfCursorInsideBinding(editor); const value = editor.getValue(); diff --git a/app/client/src/components/editorComponents/CodeEditor/hintHelpers.ts b/app/client/src/components/editorComponents/CodeEditor/hintHelpers.ts index ef71d1c293..7ad7473f30 100644 --- a/app/client/src/components/editorComponents/CodeEditor/hintHelpers.ts +++ b/app/client/src/components/editorComponents/CodeEditor/hintHelpers.ts @@ -1,14 +1,14 @@ import CodeMirror from "codemirror"; import TernServer from "utils/autocomplete/TernServer"; import KeyboardShortcuts from "constants/KeyboardShortcuts"; -import { getDynamicStringSegments } from "utils/DynamicBindingUtils"; import { HintHelper } from "components/editorComponents/CodeEditor/EditorConfig"; import AnalyticsUtil from "utils/AnalyticsUtil"; -import { customTreeTypeDefCreator } from "../../../utils/autocomplete/customTreeTypeDefCreator"; +import { customTreeTypeDefCreator } from "utils/autocomplete/customTreeTypeDefCreator"; +import { checkIfCursorInsideBinding } from "components/editorComponents/CodeEditor/codeEditorUtils"; -export const bindingHint: HintHelper = (editor, dataTree, additionalData) => { - if (additionalData) { - const customTreeDef = customTreeTypeDefCreator(additionalData); +export const bindingHint: HintHelper = (editor, dataTree, customDataTree) => { + if (customDataTree) { + const customTreeDef = customTreeTypeDefCreator(customDataTree); TernServer.updateDef("customDataTree", customTreeDef); } @@ -16,11 +16,8 @@ export const bindingHint: HintHelper = (editor, dataTree, additionalData) => { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: No types available ...editor.options.extraKeys, - [KeyboardShortcuts.CodeEditor.OpenAutocomplete]: ( - cm: CodeMirror.Editor, - expected: string, - entity: string, - ) => TernServer.complete(cm, expected, entity), + [KeyboardShortcuts.CodeEditor.OpenAutocomplete]: (cm: CodeMirror.Editor) => + TernServer.complete(cm), [KeyboardShortcuts.CodeEditor.ShowTypeAndInfo]: (cm: CodeMirror.Editor) => { TernServer.showType(cm); }, @@ -29,15 +26,12 @@ export const bindingHint: HintHelper = (editor, dataTree, additionalData) => { }, }); return { - showHint: ( - editor: CodeMirror.Editor, - expected: string, - entityName: string, - ): boolean => { + showHint: (editor: CodeMirror.Editor, entityInformation): boolean => { + TernServer.setEntityInformation(entityInformation); const shouldShow = checkIfCursorInsideBinding(editor); if (shouldShow) { AnalyticsUtil.logEvent("AUTO_COMPLETE_SHOW", {}); - TernServer.complete(editor, expected, entityName); + TernServer.complete(editor); return true; } // eslint-disable-next-line @typescript-eslint/ban-ts-comment @@ -47,45 +41,3 @@ export const bindingHint: HintHelper = (editor, dataTree, additionalData) => { }, }; }; - -const computeCursorIndex = (editor: CodeMirror.Editor) => { - const cursor = editor.getCursor(); - let cursorIndex = cursor.ch; - if (cursor.line > 0) { - for (let lineIndex = 0; lineIndex < cursor.line; lineIndex++) { - const line = editor.getLine(lineIndex); - cursorIndex = cursorIndex + line.length + 1; - } - } - return cursorIndex; -}; - -export const checkIfCursorInsideBinding = ( - editor: CodeMirror.Editor, -): boolean => { - let cursorBetweenBinding = false; - const value = editor.getValue(); - const cursorIndex = computeCursorIndex(editor); - const stringSegments = getDynamicStringSegments(value); - // count of chars processed - let cumulativeCharCount = 0; - stringSegments.forEach((segment: string) => { - const start = cumulativeCharCount; - const dynamicStart = segment.indexOf("{{"); - const dynamicDoesStart = dynamicStart > -1; - const dynamicEnd = segment.indexOf("}}"); - const dynamicDoesEnd = dynamicEnd > -1; - const dynamicStartIndex = dynamicStart + start + 2; - const dynamicEndIndex = dynamicEnd + start; - if ( - dynamicDoesStart && - cursorIndex >= dynamicStartIndex && - ((dynamicDoesEnd && cursorIndex <= dynamicEndIndex) || - (!dynamicDoesEnd && cursorIndex >= dynamicStartIndex)) - ) { - cursorBetweenBinding = true; - } - cumulativeCharCount = start + segment.length; - }); - return cursorBetweenBinding; -}; diff --git a/app/client/src/components/editorComponents/CodeEditor/index.tsx b/app/client/src/components/editorComponents/CodeEditor/index.tsx index dc5eee8cf5..9b44b638f4 100644 --- a/app/client/src/components/editorComponents/CodeEditor/index.tsx +++ b/app/client/src/components/editorComponents/CodeEditor/index.tsx @@ -18,6 +18,7 @@ import { WrappedFieldInputProps } from "redux-form"; import _ from "lodash"; import { DataTree, + ENTITY_TYPE, EvaluationSubstitutionType, } from "entities/DataTree/dataTreeFactory"; import { Skin } from "constants/DefaultTheme"; @@ -30,6 +31,7 @@ import { EditorSize, EditorTheme, EditorThemes, + HintEntityInformation, Hinter, HintHelper, MarkHelper, @@ -55,7 +57,7 @@ import { getEvalValuePath, PropertyEvaluationErrorType, } from "utils/DynamicBindingUtils"; -import { removeNewLineChars, getInputValue } from "./codeEditorUtils"; +import { getInputValue, removeNewLineChars } from "./codeEditorUtils"; import { commandsHelper } from "./commandsHelper"; import { getEntityNameAndPropertyPath } from "workers/evaluationUtils"; import Button from "components/ads/Button"; @@ -373,13 +375,27 @@ class CodeEditor extends Component { handleAutocompleteVisibility = (cm: CodeMirror.Editor) => { if (!this.state.isFocused) return; - const expected = this.props.expected ? this.props.expected : ""; - const { entityName } = getEntityNameAndPropertyPath( - this.props.dataTreePath || "", - ); + const { dataTreePath, dynamicData, expected } = this.props; + const entityInformation: HintEntityInformation = { + expectedType: expected, + }; + if (dataTreePath) { + const { entityName } = getEntityNameAndPropertyPath(dataTreePath); + entityInformation.entityName = entityName; + const entity = dynamicData[entityName]; + if (entity && "ENTITY_TYPE" in entity) { + const entityType = entity.ENTITY_TYPE; + if ( + entityType === ENTITY_TYPE.WIDGET || + entityType === ENTITY_TYPE.ACTION + ) { + entityInformation.entityType = entityType; + } + } + } let hinterOpen = false; for (let i = 0; i < this.hinters.length; i++) { - hinterOpen = this.hinters[i].showHint(cm, expected, entityName, { + hinterOpen = this.hinters[i].showHint(cm, entityInformation, { datasources: this.props.datasources.list, pluginIdToImageLocation: this.props.pluginIdToImageLocation, recentEntities: this.props.recentEntities, diff --git a/app/client/src/components/editorComponents/form/fields/EmbeddedDatasourcePathField.tsx b/app/client/src/components/editorComponents/form/fields/EmbeddedDatasourcePathField.tsx index e44ee2dee8..5188e4a1c2 100644 --- a/app/client/src/components/editorComponents/form/fields/EmbeddedDatasourcePathField.tsx +++ b/app/client/src/components/editorComponents/form/fields/EmbeddedDatasourcePathField.tsx @@ -26,6 +26,7 @@ import { EditorTheme, TabBehaviour, EditorSize, + HintHelper, } from "components/editorComponents/CodeEditor/EditorConfig"; import { bindingMarker } from "components/editorComponents/CodeEditor/markHelpers"; import { bindingHint } from "components/editorComponents/CodeEditor/hintHelpers"; @@ -218,7 +219,7 @@ class EmbeddedDatasourcePathComponent extends React.Component { }; }; - handleDatasourceHint = () => { + handleDatasourceHint = (): HintHelper => { const { datasourceList } = this.props; return () => { return { @@ -270,7 +271,7 @@ class EmbeddedDatasourcePathComponent extends React.Component { } }, showHint: () => { - return; + return false; }, }; }; diff --git a/app/client/src/components/editorComponents/form/fields/KeyValueFieldArray.tsx b/app/client/src/components/editorComponents/form/fields/KeyValueFieldArray.tsx index 387dc51dad..bdaf888076 100644 --- a/app/client/src/components/editorComponents/form/fields/KeyValueFieldArray.tsx +++ b/app/client/src/components/editorComponents/form/fields/KeyValueFieldArray.tsx @@ -133,6 +133,7 @@ function KeyValueRow(props: Props & WrappedFieldArrayProps) { border={CodeEditorBorder.BOTTOM_SIDE} className={`t--${field}.key.${index}`} dataTreePath={`${props.dataTreePath}[${index}].key`} + expected={FIELD_VALUES.API_ACTION.params} hoverInteraction name={`${field}.key`} placeholder={`Key ${index + 1}`} diff --git a/app/client/src/constants/FieldExpectedValue.ts b/app/client/src/constants/FieldExpectedValue.ts index 8cbc5be310..cedf356792 100644 --- a/app/client/src/constants/FieldExpectedValue.ts +++ b/app/client/src/constants/FieldExpectedValue.ts @@ -23,14 +23,14 @@ const FIELD_VALUES: Record< isRequired: "boolean", isVisible: "boolean", isDisabled: "boolean", - // onDateSelected: "Function Call", + onDateSelected: "Function Call", }, DATE_PICKER_WIDGET2: { - defaultDate: "string | null", //TODO:Vicky validate this property + defaultDate: "string", //TODO:Vicky validate this property isRequired: "boolean", isVisible: "boolean", isDisabled: "boolean", - // onDateSelected: "Function Call", + onDateSelected: "Function Call", }, TABLE_WIDGET: { tableData: "Array", @@ -40,8 +40,8 @@ const FIELD_VALUES: Record< exportExcel: "boolean", exportCsv: "boolean", defaultSelectedRow: "string", - // onRowSelected: "Function Call", - // onPageChange: "Function Call", + onRowSelected: "Function Call", + onPageChange: "Function Call", }, VIDEO_WIDGET: { url: "string", @@ -59,7 +59,7 @@ const FIELD_VALUES: Record< defaultOptionValue: "string", isRequired: "boolean", isVisible: "boolean", - // onSelectionChange: "Function Call", + onSelectionChange: "Function Call", }, TABS_WIDGET: { selectedTab: "string", @@ -86,7 +86,7 @@ const FIELD_VALUES: Record< isRequired: "boolean", isVisible: "boolean", isDisabled: "boolean", - // onTextChanged: "Function Call", + onTextChanged: "Function Call", }, DROP_DOWN_WIDGET: { label: "string", @@ -95,7 +95,7 @@ const FIELD_VALUES: Record< defaultOptionValue: "string", isRequired: "boolean", isVisible: "boolean", - // onOptionChange: "Function Call", + onOptionChange: "Function Call", }, FORM_BUTTON_WIDGET: { text: "string", @@ -103,7 +103,7 @@ const FIELD_VALUES: Record< disabledWhenInvalid: "boolean", resetFormOnClick: "boolean", isVisible: "boolean", - // onClick: "Function Call", + onClick: "Function Call", }, MAP_WIDGET: { mapCenter: "{ lat: number, long: number }", @@ -112,30 +112,29 @@ const FIELD_VALUES: Record< enablePickLocation: "boolean", enableCreateMarker: "boolean", isVisible: "boolean", - // onMarkerClick: "Function Call", - // onCreateMarker: "Function Call", + onMarkerClick: "Function Call", + onCreateMarker: "Function Call", }, BUTTON_WIDGET: { text: "string", buttonStyle: "PRIMARY_BUTTON | SECONDARY_BUTTON | DANGER_BUTTON", isVisible: "boolean", - // onClick: "Function Call", + onClick: "Function Call", }, RICH_TEXT_EDITOR_WIDGET: { defaultText: "string", isVisible: "boolean", isDisabled: "boolean", - // onTextChange: "Function Call", + onTextChange: "Function Call", }, FILE_PICKER_WIDGET: { label: "string", maxNumFiles: "number", maxFileSize: "number", - allowedFileTypes: "Array", isRequired: "boolean", isVisible: "boolean", - // onFilesSelected: "Function Call", + onFilesSelected: "Function Call", }, CHECKBOX_WIDGET: { label: "string", @@ -143,7 +142,7 @@ const FIELD_VALUES: Record< isRequired: "boolean", isDisabled: "boolean", isVisible: "boolean", - // onCheckChange: "Function Call", + onCheckChange: "Function Call", }, SWITCH_WIDGET: { label: "string", @@ -151,7 +150,7 @@ const FIELD_VALUES: Record< isDisabled: "boolean", isVisible: "boolean", alignWidget: "LEFT | RIGHT", - // onChange: "Function Call", + onChange: "Function Call", }, FORM_WIDGET: { backgroundColor: "string", diff --git a/app/client/src/constants/defs/ecmascript.json b/app/client/src/constants/defs/ecmascript.json new file mode 100644 index 0000000000..4885178a32 --- /dev/null +++ b/app/client/src/constants/defs/ecmascript.json @@ -0,0 +1,1360 @@ +{ + "!name": "ecmascript", + "!define": { + "Error.prototype": "Error.prototype", + "propertyDescriptor": { + "enumerable": "bool", + "configurable": "bool", + "value": "?", + "writable": "bool", + "get": "fn() -> ?", + "set": "fn(value: ?)" + } + }, + "Infinity": { + "!type": "number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Infinity", + "!doc": "A numeric value representing infinity." + }, + "undefined": { + "!type": "?", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/undefined", + "!doc": "The value undefined." + }, + "NaN": { + "!type": "number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/NaN", + "!doc": "A value representing Not-A-Number." + }, + "Object": { + "!type": "fn()", + "create": { + "!type": "fn(proto: ?) -> !custom:Object_create", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/create", + "!doc": "Creates a new object with the specified prototype object and properties." + }, + "keys": { + "!type": "fn(obj: ?) -> [string]", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/keys", + "!doc": "Returns an array of a given object's own enumerable properties, in the same order as that provided by a for-in loop (the difference being that a for-in loop enumerates properties in the prototype chain as well)." + }, + "seal": { + "!type": "fn(obj: ?)", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/seal", + "!doc": "Seals an object, preventing new properties from being added to it and marking all existing properties as non-configurable. Values of present properties can still be changed as long as they are writable." + }, + "isSealed": { + "!type": "fn(obj: ?) -> bool", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/isSealed", + "!doc": "Determine if an object is sealed." + }, + "freeze": { + "!type": "fn(obj: ?) -> !0", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/freeze", + "!doc": "Freezes an object: that is, prevents new properties from being added to it; prevents existing properties from being removed; and prevents existing properties, or their enumerability, configurability, or writability, from being changed. In essence the object is made effectively immutable. The method returns the object being frozen." + }, + "isFrozen": { + "!type": "fn(obj: ?) -> bool", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/isFrozen", + "!doc": "Determine if an object is frozen." + }, + "preventExtensions": { + "!type": "fn(obj: ?)", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/preventExtensions", + "!doc": "Prevents new properties from ever being added to an object." + }, + "isExtensible": { + "!type": "fn(obj: ?) -> bool", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible", + "!doc": "The Object.isExtensible() method determines if an object is extensible (whether it can have new properties added to it)." + }, + "assign": { + "!type": "fn(target: ?, source: ?, source?: ?) -> !0", + "!effects": ["copy !1 !0", "copy !2 !0", "copy !3 !0"], + "!doc": "The Object.assign() method is used to copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign" + }, + "is": { + "!type": "fn(value1: ?, value2: ?) -> bool", + "!doc": "The Object.is() method determines whether two values are the same value.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is" + }, + "prototype": { + "!stdProto": "Object", + "toString": { + "!type": "fn() -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/toString", + "!doc": "Returns a string representing the object." + }, + "toLocaleString": { + "!type": "fn() -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/toLocaleString", + "!doc": "Returns a string representing the object. This method is meant to be overriden by derived objects for locale-specific purposes." + }, + "valueOf": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/valueOf", + "!doc": "Returns the primitive value of the specified object" + }, + "hasOwnProperty": { + "!type": "fn(prop: string) -> bool", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/hasOwnProperty", + "!doc": "Returns a boolean indicating whether the object has the specified property." + }, + "propertyIsEnumerable": { + "!type": "fn(prop: string) -> bool", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable", + "!doc": "Returns a Boolean indicating whether the specified property is enumerable." + }, + "isPrototypeOf": { + "!type": "fn(obj: ?) -> bool", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf", + "!doc": "Tests for an object in another object's prototype chain." + } + }, + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object", + "!doc": "Creates an object wrapper." + }, + "Function": { + "!type": "fn(body: string) -> fn()", + "prototype": { + "!stdProto": "Function", + "apply": { + "!type": "fn(this: ?, args: [?])", + "!effects": [ + "call and return !this this=!0 !1. !1. !1." + ], + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/apply", + "!doc": "Calls a function with a given this value and arguments provided as an array (or an array like object)." + }, + "call": { + "!type": "fn(this: ?, args?: ?) -> !this.!ret", + "!effects": [ + "call and return !this this=!0 !1 !2 !3 !4" + ], + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/call", + "!doc": "Calls a function with a given this value and arguments provided individually." + }, + "bind": { + "!type": "fn(this: ?, args?: ?) -> !custom:Function_bind", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind", + "!doc": "Creates a new function that, when called, has its this keyword set to the provided value, with a given sequence of arguments preceding any provided when the new function was called." + }, + "prototype": "?" + }, + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function", + "!doc": "Every function in JavaScript is actually a Function object." + }, + "Array": { + "!type": "fn(size: number) -> !custom:Array_ctor", + "isArray": { + "!type": "fn(value: ?) -> bool", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/isArray", + "!doc": "Returns true if an object is an array, false if it is not." + }, + "from": { + "!type": "fn(arrayLike: ?, mapFn?: fn(elt: ?, i: number) -> ?, thisArg?: ?) -> [!0.]", + "!effects": [ + "call !1 this=!2 !0. number" + ], + "!doc": "The Array.from() method creates a new Array instance from an array-like or iterable object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from" + }, + "of": { + "!type": "fn(elementN: ?) -> [!0]", + "!doc": "The Array.of() method creates a new Array instance with a variable number of arguments, regardless of number or type of the arguments.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of" + }, + "prototype": { + "!stdProto": "Array", + "length": { + "!type": "number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/length", + "!doc": "An unsigned, 32-bit integer that specifies the number of elements in an array." + }, + "concat": { + "!type": "fn(other: [?]) -> !this", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/concat", + "!doc": "Returns a new array comprised of this array joined with other array(s) and/or value(s)." + }, + "join": { + "!type": "fn(separator?: string) -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/join", + "!doc": "Joins all elements of an array into a string." + }, + "splice": { + "!type": "fn(pos: number, amount: number, newelt?: ?) -> [?]", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/splice", + "!doc": "Changes the content of an array, adding new elements while removing old elements." + }, + "pop": { + "!type": "fn() -> !this.", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/pop", + "!doc": "Removes the last element from an array and returns that element." + }, + "push": { + "!type": "fn(newelt: ?) -> number", + "!effects": [ + "propagate !0 !this." + ], + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/push", + "!doc": "Mutates an array by appending the given elements and returning the new length of the array." + }, + "shift": { + "!type": "fn() -> !this.", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/shift", + "!doc": "Removes the first element from an array and returns that element. This method changes the length of the array." + }, + "unshift": { + "!type": "fn(newelt: ?) -> number", + "!effects": [ + "propagate !0 !this." + ], + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/unshift", + "!doc": "Adds one or more elements to the beginning of an array and returns the new length of the array." + }, + "slice": { + "!type": "fn(from?: number, to?: number) -> !this", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/slice", + "!doc": "Returns a shallow copy of a portion of an array." + }, + "reverse": { + "!type": "fn()", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/reverse", + "!doc": "Reverses an array in place. The first array element becomes the last and the last becomes the first." + }, + "sort": { + "!type": "fn(compare?: fn(a: ?, b: ?) -> number)", + "!effects": [ + "call !0 !this. !this." + ], + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/sort", + "!doc": "Sorts the elements of an array in place and returns the array." + }, + "indexOf": { + "!type": "fn(elt: ?, from?: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf", + "!doc": "Returns the first index at which a given element can be found in the array, or -1 if it is not present." + }, + "lastIndexOf": { + "!type": "fn(elt: ?, from?: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/lastIndexOf", + "!doc": "Returns the last index at which a given element can be found in the array, or -1 if it is not present. The array is searched backwards, starting at fromIndex." + }, + "every": { + "!type": "fn(test: fn(elt: ?, i: number, array: +Array) -> bool, context?: ?) -> bool", + "!effects": [ + "call !0 this=!1 !this. number !this" + ], + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/every", + "!doc": "Tests whether all elements in the array pass the test implemented by the provided function." + }, + "some": { + "!type": "fn(test: fn(elt: ?, i: number, array: +Array) -> bool, context?: ?) -> bool", + "!effects": [ + "call !0 this=!1 !this. number !this" + ], + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/some", + "!doc": "Tests whether some element in the array passes the test implemented by the provided function." + }, + "filter": { + "!type": "fn(test: fn(elt: ?, i: number, array: +Array) -> bool, context?: ?) -> !this", + "!effects": [ + "call !0 this=!1 !this. number !this" + ], + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/filter", + "!doc": "Creates a new array with all elements that pass the test implemented by the provided function." + }, + "forEach": { + "!type": "fn(f: fn(elt: ?, i: number, array: +Array), context?: ?)", + "!effects": [ + "call !0 this=!1 !this. number !this" + ], + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/forEach", + "!doc": "Executes a provided function once per array element." + }, + "map": { + "!type": "fn(f: fn(elt: ?, i: number, array: +Array) -> ?, context?: ?) -> [!0.!ret]", + "!effects": [ + "call !0 this=!1 !this. number !this" + ], + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/map", + "!doc": "Creates a new array with the results of calling a provided function on every element in this array." + }, + "reduce": { + "!type": "fn(combine: fn(sum: ?, elt: ?, i: number, array: +Array) -> ?, init?: ?) -> !0.!ret", + "!effects": [ + "call !0 !1 !this. number !this" + ], + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/Reduce", + "!doc": "Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value." + }, + "reduceRight": { + "!type": "fn(combine: fn(sum: ?, elt: ?, i: number, array: +Array) -> ?, init?: ?) -> !0.!ret", + "!effects": [ + "call !0 !1 !this. number !this" + ], + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/ReduceRight", + "!doc": "Apply a function simultaneously against two values of the array (from right-to-left) as to reduce it to a single value." + }, + "copyWithin": { + "!type": "fn(target: number, start: number, end?: number) -> !this", + "!doc": "The copyWithin() method copies the sequence of array elements within the array to the position starting at target. The copy is taken from the index positions of the second and third arguments start and end.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/copyWithin" + }, + "entries": { + "!type": "fn() -> +iter[:t=[number, !this.]]", + "!doc": "The entries() method returns a new Array Iterator object that contains the key/value pairs for each index in the array.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/entries" + }, + "fill": { + "!type": "fn(value: ?, start?: number, end?: number) -> !this", + "!doc": "The fill() method fills all the elements of an array from a start index to an end index with a static value.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill" + }, + "find": { + "!type": "fn(callback: fn(element: ?, index: number, array: [?]) -> bool, thisArg?: ?) -> !this.", + "!effects": ["call !0 this=!2 !this. number"], + "!doc": "The find() method returns a value in the array, if an element in the array satisfies the provided testing function. Otherwise undefined is returned.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find" + }, + "findIndex": { + "!type": "fn(callback: fn(element: ?, index: number, array: [?]), thisArg?: ?) -> number", + "!effects": ["call !0 this=!2 !this. number"], + "!doc": "The findIndex() method returns an index in the array, if an element in the array satisfies the provided testing function. Otherwise -1 is returned.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex" + }, + "keys": { + "!type": "fn() -> +iter[:t=number]", + "!doc": "The keys() method returns a new Array Iterator that contains the keys for each index in the array.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/keys" + }, + "values": { + "!type": "fn() -> +iter[:t=!this.]", + "!doc": "The values() method returns a new Array Iterator object that contains the values for each index in the array.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/values" + }, + ":Symbol.iterator": { + "!type": "fn() -> +iter[:t=!this.]", + "!doc": "Returns a new Array Iterator object that contains the values for each index in the array.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/@@iterator" + }, + "includes": { + "!type": "fn(value: ?) -> bool", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes", + "!doc": "Determines whether an array includes a certain element, returning true or false as appropriate." + } + }, + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array", + "!doc": "The JavaScript Array global object is a constructor for arrays, which are high-level, list-like objects." + }, + "String": { + "!type": "fn(value: ?) -> string", + "fromCharCode": { + "!type": "fn(code: number) -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/fromCharCode", + "!doc": "Returns a string created by using the specified sequence of Unicode values." + }, + "fromCodePoint": { + "!type": "fn(point: number, point?: number) -> string", + "!doc": "The static String.fromCodePoint() method returns a string created by using the specified sequence of code points.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint" + }, + "raw": { + "!type": "fn(template: [string], substitutions: ?, templateString: ?) -> string", + "!doc": "The static String.raw() method is a tag function of template strings, used to get the raw string form of template strings.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/raw" + }, + "prototype": { + "!stdProto": "String", + "length": { + "!type": "number", + "!url": "https://developer.mozilla.org/en/docs/JavaScript/Reference/Global_Objects/String/length", + "!doc": "Represents the length of a string." + }, + "": "string", + "charAt": { + "!type": "fn(i: number) -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/charAt", + "!doc": "Returns the specified character from a string." + }, + "charCodeAt": { + "!type": "fn(i: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/charCodeAt", + "!doc": "Returns the numeric Unicode value of the character at the given index (except for unicode codepoints > 0x10000)." + }, + "indexOf": { + "!type": "fn(char: string, from?: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/indexOf", + "!doc": "Returns the index within the calling String object of the first occurrence of the specified value, starting the search at fromIndex,\nreturns -1 if the value is not found." + }, + "lastIndexOf": { + "!type": "fn(char: string, from?: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/lastIndexOf", + "!doc": "Returns the index within the calling String object of the last occurrence of the specified value, or -1 if not found. The calling string is searched backward, starting at fromIndex." + }, + "substring": { + "!type": "fn(from: number, to?: number) -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/substring", + "!doc": "Returns a subset of a string between one index and another, or through the end of the string." + }, + "substr": { + "!type": "fn(from: number, length?: number) -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/substr", + "!doc": "Returns the characters in a string beginning at the specified location through the specified number of characters." + }, + "slice": { + "!type": "fn(from: number, to?: number) -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/slice", + "!doc": "Extracts a section of a string and returns a new string." + }, + "trim": { + "!type": "fn() -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/Trim", + "!doc": "Removes whitespace from both ends of the string." + }, + "toUpperCase": { + "!type": "fn() -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/toUpperCase", + "!doc": "Returns the calling string value converted to uppercase." + }, + "toLowerCase": { + "!type": "fn() -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/toLowerCase", + "!doc": "Returns the calling string value converted to lowercase." + }, + "toLocaleUpperCase": { + "!type": "fn() -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase", + "!doc": "Returns the calling string value converted to upper case, according to any locale-specific case mappings." + }, + "toLocaleLowerCase": { + "!type": "fn() -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase", + "!doc": "Returns the calling string value converted to lower case, according to any locale-specific case mappings." + }, + "split": { + "!type": "fn(pattern?: string|+RegExp, limit?: number) -> [string]", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/split", + "!doc": "Splits a String object into an array of strings by separating the string into substrings." + }, + "concat": { + "!type": "fn(other: string) -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/concat", + "!doc": "Combines the text of two or more strings and returns a new string." + }, + "localeCompare": { + "!type": "fn(other: string) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/localeCompare", + "!doc": "Returns a number indicating whether a reference string comes before or after or is the same as the given string in sort order." + }, + "match": { + "!type": "fn(pattern: +RegExp) -> [string]", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/match", + "!doc": "Used to retrieve the matches when matching a string against a regular expression." + }, + "replace": { + "!type": "fn(pattern: string|+RegExp, replacement: string) -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/replace", + "!doc": "Returns a new string with some or all matches of a pattern replaced by a replacement. The pattern can be a string or a RegExp, and the replacement can be a string or a function to be called for each match." + }, + "search": { + "!type": "fn(pattern: +RegExp) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/search", + "!doc": "Executes the search for a match between a regular expression and this String object." + }, + "codePointAt": { + "!type": "fn(pos: number) -> number", + "!doc": "The codePointAt() method returns a non-negative integer that is the UTF-16 encoded code point value.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt" + }, + "endsWith": { + "!type": "fn(searchString: string, position?: number) -> bool", + "!doc": "The endsWith() method determines whether a string ends with the characters of another string, returning true or false as appropriate.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith" + }, + "includes": { + "!type": "fn(searchString: string, position?: number) -> bool", + "!doc": "The includes() method determines whether one string may be found within another string, returning true or false as appropriate.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/contains" + }, + "normalize": { + "!type": "fn(form: string) -> string", + "!doc": "The normalize() method returns the Unicode Normalization Form of a given string (if the value isn't a string, it will be converted to one first).", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize" + }, + "repeat": { + "!type": "fn(count: number) -> string", + "!doc": "The repeat() method constructs and returns a new string which contains the specified number of copies of the string on which it was called, concatenated together.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat" + }, + "startsWith": { + "!type": "fn(searchString: string, position?: number) -> bool", + "!doc": "The startsWith() method determines whether a string begins with the characters of another string, returning true or false as appropriate.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith" + }, + ":Symbol.iterator": { + "!type": "fn() -> +iter[:t=string]", + "!doc": "Returns a new Iterator object that iterates over the code points of a String value, returning each code point as a String value.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/@@iterator" + } + }, + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String", + "!doc": "The String global object is a constructor for strings, or a sequence of characters." + }, + "Number": { + "!type": "fn(value: ?) -> number", + "MAX_VALUE": { + "!type": "number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/MAX_VALUE", + "!doc": "The maximum numeric value representable in JavaScript." + }, + "MIN_VALUE": { + "!type": "number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/MIN_VALUE", + "!doc": "The smallest positive numeric value representable in JavaScript." + }, + "POSITIVE_INFINITY": { + "!type": "number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY", + "!doc": "A value representing the positive Infinity value." + }, + "NEGATIVE_INFINITY": { + "!type": "number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY", + "!doc": "A value representing the negative Infinity value." + }, + "prototype": { + "!stdProto": "Number", + "toString": { + "!type": "fn(radix?: number) -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toString", + "!doc": "Returns a string representing the specified Number object" + }, + "toFixed": { + "!type": "fn(digits: number) -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toFixed", + "!doc": "Formats a number using fixed-point notation" + }, + "toExponential": { + "!type": "fn(digits: number) -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toExponential", + "!doc": "Returns a string representing the Number object in exponential notation" + }, + "toPrecision": { + "!type": "fn(digits: number) -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toPrecision", + "!doc": "The toPrecision() method returns a string representing the number to the specified precision." + } + }, + "EPSILON": { + "!type": "number", + "!doc": "The Number.EPSILON property represents the difference between one and the smallest value greater than one that can be represented as a Number.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILON" + }, + "MAX_SAFE_INTEGER": { + "!type": "number", + "!doc": "The Number.MAX_SAFE_INTEGER constant represents the maximum safe integer in JavaScript (253 - 1).", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER" + }, + "MIN_SAFE_INTEGER": { + "!type": "number", + "!doc": "The Number.MIN_SAFE_INTEGER constant represents the minimum safe integer in JavaScript (-(253 - 1)).", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER" + }, + "isFinite": { + "!type": "fn(testValue: ?) -> bool", + "!doc": "The Number.isFinite() method determines whether the passed value is finite.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite" + }, + "isInteger": { + "!type": "fn(testValue: ?) -> bool", + "!doc": "The Number.isInteger() method determines whether the passed value is an integer.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger" + }, + "isNaN": { + "!type": "fn(testValue: ?) -> bool", + "!doc": "The Number.isNaN() method determines whether the passed value is NaN. More robust version of the original global isNaN().", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN" + }, + "isSafeInteger": { + "!type": "fn(testValue: ?) -> bool", + "!doc": "The Number.isSafeInteger() method determines whether the provided value is a number that is a safe integer. A safe integer is an integer that", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger" + }, + "parseFloat": { + "!type": "fn(string: string) -> number", + "!doc": "The Number.parseFloat() method parses a string argument and returns a floating point number.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseFloat" + }, + "parseInt": { + "!type": "fn(string: string, radix?: number) -> number", + "!doc": "The Number.parseInt() method parses a string argument and returns an integer of the specified radix or base.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseInt" + }, + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number", + "!doc": "The Number JavaScript object is a wrapper object allowing you to work with numerical values. A Number object is created using the Number() constructor." + }, + "Boolean": { + "!type": "fn(value: ?) -> bool", + "prototype": { + "!stdProto": "Boolean" + }, + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Boolean", + "!doc": "The Boolean object is an object wrapper for a boolean value." + }, + "RegExp": { + "!type": "fn(source: string, flags?: string)", + "prototype": { + "!stdProto": "RegExp", + "exec": { + "!type": "fn(input: string) -> [string]", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp/exec", + "!doc": "Executes a search for a match in a specified string. Returns a result array, or null." + }, + "test": { + "!type": "fn(input: string) -> bool", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp/test", + "!doc": "Executes the search for a match between a regular expression and a specified string. Returns true or false." + }, + "global": { + "!type": "bool", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp", + "!doc": "Creates a regular expression object for matching text with a pattern." + }, + "ignoreCase": { + "!type": "bool", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp", + "!doc": "Creates a regular expression object for matching text with a pattern." + }, + "multiline": { + "!type": "bool", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp/multiline", + "!doc": "Reflects whether or not to search in strings across multiple lines.\n" + }, + "source": { + "!type": "string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp/source", + "!doc": "A read-only property that contains the text of the pattern, excluding the forward slashes.\n" + }, + "lastIndex": { + "!type": "number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp/lastIndex", + "!doc": "A read/write integer property that specifies the index at which to start the next match." + }, + "flags": { + "!type": "string", + "!doc": "The flags property returns a string consisting of the flags of the current regular expression object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/flags" + }, + "sticky": { + "!type": "bool", + "!doc": "The sticky property reflects whether or not the search is sticky (searches in strings only from the index indicated by the lastIndex property of this regular expression). sticky is a read-only property of an individual regular expression object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky" + }, + "unicode": { + "!type": "bool", + "!doc": "The 'u' flag enables various Unicode-related features.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/unicode" + } + }, + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp", + "!doc": "Creates a regular expression object for matching text with a pattern." + }, + "Date": { + "!type": "fn(ms: number)", + "parse": { + "!type": "fn(source: string) -> +Date", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/parse", + "!doc": "Parses a string representation of a date, and returns the number of milliseconds since January 1, 1970, 00:00:00 UTC." + }, + "UTC": { + "!type": "fn(year: number, month: number, date: number, hour?: number, min?: number, sec?: number, ms?: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/UTC", + "!doc": "Accepts the same parameters as the longest form of the constructor, and returns the number of milliseconds in a Date object since January 1, 1970, 00:00:00, universal time." + }, + "now": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/now", + "!doc": "Returns the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC." + }, + "prototype": { + "toUTCString": { + "!type": "fn() -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toUTCString", + "!doc": "Converts a date to a string, using the universal time convention." + }, + "toISOString": { + "!type": "fn() -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toISOString", + "!doc": "JavaScript provides a direct way to convert a date object into a string in ISO format, the ISO 8601 Extended Format." + }, + "toDateString": { + "!type": "fn() -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toDateString", + "!doc": "Returns the date portion of a Date object in human readable form in American English." + }, + "toTimeString": { + "!type": "fn() -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toTimeString", + "!doc": "Returns the time portion of a Date object in human readable form in American English." + }, + "toLocaleDateString": { + "!type": "fn() -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toLocaleDateString", + "!doc": "Converts a date to a string, returning the \"date\" portion using the operating system's locale's conventions.\n" + }, + "toLocaleTimeString": { + "!type": "fn() -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString", + "!doc": "Converts a date to a string, returning the \"time\" portion using the current locale's conventions." + }, + "getTime": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getTime", + "!doc": "Returns the numeric value corresponding to the time for the specified date according to universal time." + }, + "getFullYear": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getFullYear", + "!doc": "Returns the year of the specified date according to local time." + }, + "getYear": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getYear", + "!doc": "Returns the year in the specified date according to local time." + }, + "getMonth": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getMonth", + "!doc": "Returns the month in the specified date according to local time." + }, + "getUTCMonth": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getUTCMonth", + "!doc": "Returns the month of the specified date according to universal time.\n" + }, + "getDate": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getDate", + "!doc": "Returns the day of the month for the specified date according to local time." + }, + "getUTCDate": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getUTCDate", + "!doc": "Returns the day (date) of the month in the specified date according to universal time.\n" + }, + "getDay": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getDay", + "!doc": "Returns the day of the week for the specified date according to local time." + }, + "getUTCDay": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getUTCDay", + "!doc": "Returns the day of the week in the specified date according to universal time.\n" + }, + "getHours": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getHours", + "!doc": "Returns the hour for the specified date according to local time." + }, + "getUTCHours": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getUTCHours", + "!doc": "Returns the hours in the specified date according to universal time.\n" + }, + "getMinutes": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getMinutes", + "!doc": "Returns the minutes in the specified date according to local time." + }, + "getUTCMinutes": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date", + "!doc": "Creates JavaScript Date instances which let you work with dates and times." + }, + "getSeconds": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getSeconds", + "!doc": "Returns the seconds in the specified date according to local time." + }, + "getUTCSeconds": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getUTCSeconds", + "!doc": "Returns the seconds in the specified date according to universal time.\n" + }, + "getMilliseconds": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getMilliseconds", + "!doc": "Returns the milliseconds in the specified date according to local time." + }, + "getUTCMilliseconds": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds", + "!doc": "Returns the milliseconds in the specified date according to universal time.\n" + }, + "getTimezoneOffset": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset", + "!doc": "Returns the time-zone offset from UTC, in minutes, for the current locale." + }, + "setTime": { + "!type": "fn(date: +Date) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/setTime", + "!doc": "Sets the Date object to the time represented by a number of milliseconds since January 1, 1970, 00:00:00 UTC.\n" + }, + "setFullYear": { + "!type": "fn(year: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/setFullYear", + "!doc": "Sets the full year for a specified date according to local time.\n" + }, + "setUTCFullYear": { + "!type": "fn(year: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/setUTCFullYear", + "!doc": "Sets the full year for a specified date according to universal time.\n" + }, + "setMonth": { + "!type": "fn(month: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/setMonth", + "!doc": "Set the month for a specified date according to local time." + }, + "setUTCMonth": { + "!type": "fn(month: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/setUTCMonth", + "!doc": "Sets the month for a specified date according to universal time.\n" + }, + "setDate": { + "!type": "fn(day: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/setDate", + "!doc": "Sets the day of the month for a specified date according to local time." + }, + "setUTCDate": { + "!type": "fn(day: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/setUTCDate", + "!doc": "Sets the day of the month for a specified date according to universal time.\n" + }, + "setHours": { + "!type": "fn(hour: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/setHours", + "!doc": "Sets the hours for a specified date according to local time, and returns the number of milliseconds since 1 January 1970 00:00:00 UTC until the time represented by the updated Date instance." + }, + "setUTCHours": { + "!type": "fn(hour: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/setUTCHours", + "!doc": "Sets the hour for a specified date according to universal time.\n" + }, + "setMinutes": { + "!type": "fn(min: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/setMinutes", + "!doc": "Sets the minutes for a specified date according to local time." + }, + "setUTCMinutes": { + "!type": "fn(min: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/setUTCMinutes", + "!doc": "Sets the minutes for a specified date according to universal time.\n" + }, + "setSeconds": { + "!type": "fn(sec: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/setSeconds", + "!doc": "Sets the seconds for a specified date according to local time." + }, + "setUTCSeconds": { + "!type": "fn(sec: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/setUTCSeconds", + "!doc": "Sets the seconds for a specified date according to universal time.\n" + }, + "setMilliseconds": { + "!type": "fn(ms: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/setMilliseconds", + "!doc": "Sets the milliseconds for a specified date according to local time.\n" + }, + "setUTCMilliseconds": { + "!type": "fn(ms: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds", + "!doc": "Sets the milliseconds for a specified date according to universal time.\n" + }, + "toJSON": { + "!type": "fn() -> string", + "!doc": "Returns a string (using toISOString()) representing the Date object's value.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON" + } + }, + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date", + "!doc": "Creates JavaScript Date instances which let you work with dates and times." + }, + "parseInt": { + "!type": "fn(string: string, radix?: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/parseInt", + "!doc": "Parses a string argument and returns an integer of the specified radix or base." + }, + "parseFloat": { + "!type": "fn(string: string) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/parseFloat", + "!doc": "Parses a string argument and returns a floating point number." + }, + "isNaN": { + "!type": "fn(value: number) -> bool", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/isNaN", + "!doc": "Determines whether a value is NaN or not. Be careful, this function is broken. You may be interested in ECMAScript 6 Number.isNaN." + }, + "isFinite": { + "!type": "fn(value: number) -> bool", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/isFinite", + "!doc": "Determines whether the passed value is a finite number." + }, + "encodeURI": { + "!type": "fn(uri: string) -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURI", + "!doc": "Encodes a Uniform Resource Identifier (URI) by replacing each instance of certain characters by one, two, three, or four escape sequences representing the UTF-8 encoding of the character (will only be four escape sequences for characters composed of two \"surrogate\" characters)." + }, + "encodeURIComponent": { + "!type": "fn(uri: string) -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURIComponent", + "!doc": "Encodes a Uniform Resource Identifier (URI) component by replacing each instance of certain characters by one, two, three, or four escape sequences representing the UTF-8 encoding of the character (will only be four escape sequences for characters composed of two \"surrogate\" characters)." + }, + "decodeURI": { + "!type": "fn(uri: string) -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/decodeURI", + "!doc": "Decodes a Uniform Resource Identifier (URI) previously created by encodeURI or by a similar routine." + }, + "decodeURIComponent": { + "!type": "fn(uri: string) -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/decodeURIComponent", + "!doc": "Decodes a Uniform Resource Identifier (URI) component previously created by encodeURIComponent or by a similar routine." + }, + "Math": { + "E": { + "!type": "number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/E", + "!doc": "The base of natural logarithms, e, approximately 2.718." + }, + "LN2": { + "!type": "number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/LN2", + "!doc": "The natural logarithm of 2, approximately 0.693." + }, + "LN10": { + "!type": "number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/LN10", + "!doc": "The natural logarithm of 10, approximately 2.302." + }, + "LOG2E": { + "!type": "number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/LOG2E", + "!doc": "The base 2 logarithm of E (approximately 1.442)." + }, + "LOG10E": { + "!type": "number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/LOG10E", + "!doc": "The base 10 logarithm of E (approximately 0.434)." + }, + "SQRT1_2": { + "!type": "number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/SQRT1_2", + "!doc": "The square root of 1/2; equivalently, 1 over the square root of 2, approximately 0.707." + }, + "SQRT2": { + "!type": "number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/SQRT2", + "!doc": "The square root of 2, approximately 1.414." + }, + "PI": { + "!type": "number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/PI", + "!doc": "The ratio of the circumference of a circle to its diameter, approximately 3.14159." + }, + "abs": { + "!type": "fn(number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/abs", + "!doc": "Returns the absolute value of a number." + }, + "cos": { + "!type": "fn(number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/cos", + "!doc": "Returns the cosine of a number." + }, + "sin": { + "!type": "fn(number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/sin", + "!doc": "Returns the sine of a number." + }, + "tan": { + "!type": "fn(number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/tan", + "!doc": "Returns the tangent of a number." + }, + "acos": { + "!type": "fn(number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/acos", + "!doc": "Returns the arccosine (in radians) of a number." + }, + "asin": { + "!type": "fn(number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/asin", + "!doc": "Returns the arcsine (in radians) of a number." + }, + "atan": { + "!type": "fn(number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/atan", + "!doc": "Returns the arctangent (in radians) of a number." + }, + "atan2": { + "!type": "fn(y: number, x: number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/atan2", + "!doc": "Returns the arctangent of the quotient of its arguments." + }, + "ceil": { + "!type": "fn(number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/ceil", + "!doc": "Returns the smallest integer greater than or equal to a number." + }, + "floor": { + "!type": "fn(number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/floor", + "!doc": "Returns the largest integer less than or equal to a number." + }, + "round": { + "!type": "fn(number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/round", + "!doc": "Returns the value of a number rounded to the nearest integer." + }, + "exp": { + "!type": "fn(number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/exp", + "!doc": "Returns Ex, where x is the argument, and E is Euler's constant, the base of the natural logarithms." + }, + "log": { + "!type": "fn(number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/log", + "!doc": "Returns the natural logarithm (base E) of a number." + }, + "sqrt": { + "!type": "fn(number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/sqrt", + "!doc": "Returns the square root of a number." + }, + "pow": { + "!type": "fn(number, number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/pow", + "!doc": "Returns base to the exponent power, that is, baseexponent." + }, + "max": { + "!type": "fn(number, number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/max", + "!doc": "Returns the largest of zero or more numbers." + }, + "min": { + "!type": "fn(number, number) -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/min", + "!doc": "Returns the smallest of zero or more numbers." + }, + "random": { + "!type": "fn() -> number", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/random", + "!doc": "Returns a floating-point, pseudo-random number in the range [0, 1) that is, from 0 (inclusive) up to but not including 1 (exclusive), which you can then scale to your desired range." + }, + "acosh": { + "!type": "fn(x: number) -> number", + "!doc": "The Math.acosh() function returns the hyperbolic arc-cosine of a number.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/acosh" + }, + "asinh": { + "!type": "fn(x: number) -> number", + "!doc": "The Math.asinh() function returns the hyperbolic arcsine of a number.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/asinh" + }, + "atanh": { + "!type": "fn(x: number) -> number", + "!doc": "The Math.atanh() function returns the hyperbolic arctangent of a number.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atanh" + }, + "cbrt": { + "!type": "fn(x: number) -> number", + "!doc": "The Math.cbrt() function returns the cube root of a number.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cbrt" + }, + "clz32": { + "!type": "fn(x: number) -> number", + "!doc": "The Math.clz32() function returns the number of leading zero bits in the 32-bit binary representation of a number.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32" + }, + "cosh": { + "!type": "fn(x: number) -> number", + "!doc": "The Math.cosh() function returns the hyperbolic cosine of a number, that can be expressed using the constant e:", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cosh" + }, + "expm1": { + "!type": "fn(x: number) -> number", + "!doc": "The Math.expm1() function returns ex - 1, where x is the argument, and e the base of the natural logarithms.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/expm1" + }, + "fround": { + "!type": "fn(x: number) -> number", + "!doc": "The Math.fround() function returns the nearest single precision float representation of a number.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/fround" + }, + "hypot": { + "!type": "fn(value: number) -> number", + "!doc": "The Math.hypot() function returns the square root of the sum of squares of its arguments.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/hypot" + }, + "imul": { + "!type": "fn(a: number, b: number) -> number", + "!doc": "The Math.imul() function returns the result of the C-like 32-bit multiplication of the two parameters.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul" + }, + "log10": { + "!type": "fn(x: number) -> number", + "!doc": "The Math.log10() function returns the base 10 logarithm of a number.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log10" + }, + "log1p": { + "!type": "fn(x: number) -> number", + "!doc": "The Math.log1p() function returns the natural logarithm (base e) of 1 + a number.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log1p" + }, + "log2": { + "!type": "fn(x: number) -> number", + "!doc": "The Math.log2() function returns the base 2 logarithm of a number.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2" + }, + "sign": { + "!type": "fn(x: number) -> number", + "!doc": "The Math.sign() function returns the sign of a number, indicating whether the number is positive, negative or zero.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign" + }, + "sinh": { + "!type": "fn(x: number) -> number", + "!doc": "The Math.sinh() function returns the hyperbolic sine of a number, that can be expressed using the constant e:", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sinh" + }, + "tanh": { + "!type": "fn(x: number) -> number", + "!doc": "The Math.tanh() function returns the hyperbolic tangent of a number.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/tanh" + }, + "trunc": { + "!type": "fn(x: number) -> number", + "!doc": "The Math.trunc() function returns the integral part of a number by removing any fractional digits. It does not round any numbers. The function can be expressed with the floor() and ceil() function:", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc" + }, + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math", + "!doc": "A built-in object that has properties and methods for mathematical constants and functions." + }, + "JSON": { + "parse": { + "!type": "fn(json: string, reviver?: fn(key: string, value: ?) -> ?) -> ?", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/parse", + "!doc": "Parse a string as JSON, optionally transforming the value produced by parsing." + }, + "stringify": { + "!type": "fn(value: ?, replacer?: fn(key: string, value: ?) -> ?, space?: string|number) -> string", + "!url": "https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/stringify", + "!doc": "Convert a value to JSON, optionally replacing values if a replacer function is specified, or optionally including only the specified properties if a replacer array is specified." + }, + "!url": "https://developer.mozilla.org/en-US/docs/JSON", + "!doc": "JSON (JavaScript Object Notation) is a data-interchange format. It closely resembles a subset of JavaScript syntax, although it is not a strict subset. (See JSON in the JavaScript Reference for full details.) It is useful when writing any kind of JavaScript-based application, including websites and browser extensions. For example, you might store user information in JSON format in a cookie, or you might store extension preferences in JSON in a string-valued browser preference." + }, + "Map": { + "!type": "fn(iterable?: [?])", + "!doc": "The Map object is a simple key/value map. Any value (both objects and primitive values) may be used as either a key or a value.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map", + "prototype": { + "clear": { + "!type": "fn()", + "!doc": "The clear() method removes all elements from a Map object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/clear" + }, + "delete": { + "!type": "fn(key: ?)", + "!doc": "The delete() method removes the specified element from a Map object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/delete" + }, + "entries": { + "!type": "fn() -> +iter[:t=[!this.:key, !this.:value]]", + "!doc": "The entries() method returns a new Iterator object that contains the [key, value] pairs for each element in the Map object in insertion order.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/entries" + }, + "forEach": { + "!type": "fn(callback: fn(value: ?, key: ?, map: +Map), thisArg?: ?)", + "!effects": ["call !0 this=!1 !this.:value !this.:key !this"], + "!doc": "The forEach() method executes a provided function once per each key/value pair in the Map object, in insertion order.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach" + }, + "get": { + "!type": "fn(key: ?) -> !this.:value", + "!doc": "The get() method returns a specified element from a Map object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/get" + }, + "has": { + "!type": "fn(key: ?) -> bool", + "!doc": "The has() method returns a boolean indicating whether an element with the specified key exists or not.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/has" + }, + "keys": { + "!type": "fn() -> +iter[:t=!this.:key]", + "!doc": "The keys() method returns a new Iterator object that contains the keys for each element in the Map object in insertion order.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/keys" + }, + "set": { + "!type": "fn(key: ?, value: ?) -> !this", + "!effects": ["propagate !0 !this.:key", "propagate !1 !this.:value"], + "!doc": "The set() method adds a new element with a specified key and value to a Map object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/set" + }, + "size": { + "!type": "number", + "!doc": "The size accessor property returns the number of elements in a Map object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/size" + }, + "values": { + "!type": "fn() -> +iter[:t=!this.:value]", + "!doc": "The values() method returns a new Iterator object that contains the values for each element in the Map object in insertion order.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/values" + }, + ":Symbol.iterator": { + "!type": "fn() -> +iter[:t=[!this.:key, !this.:value]]", + "!doc": "Returns a new Iterator object that contains the [key, value] pairs for each element in the Map object in insertion order.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/@@iterator" + } + } + }, + "Set": { + "!type": "fn(iterable?: [?])", + "!doc": "The Set object lets you store unique values of any type, whether primitive values or object references.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set", + "prototype": { + "add": { + "!type": "fn(value: ?) -> !this", + "!effects": ["propagate !0 !this.:t"], + "!doc": "The add() method appends a new element with a specified value to the end of a Set object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/add" + }, + "clear": { + "!type": "fn()", + "!doc": "The clear() method removes all elements from a Set object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/clear" + }, + "delete": { + "!type": "fn(value: ?) -> bool", + "!doc": "The delete() method removes the specified element from a Set object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/delete" + }, + "entries": { + "!type": "fn() -> +iter[:t=[!this.:t]]", + "!doc": "The entries() method returns a new Iterator object that contains an array of [value, value] for each element in the Set object, in insertion order. For Set objects there is no key like in Map objects. However, to keep the API similar to the Map object, each entry has the same value for its key and value here, so that an array [value, value] is returned.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/entries" + }, + "forEach": { + "!type": "fn(callback: fn(value: ?, value2: ?, set: +Set), thisArg?: ?)", + "!effects": ["call !0 this=!1 !this.:t number !this"], + "!doc": "The forEach() method executes a provided function once per each value in the Set object, in insertion order.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/forEach" + }, + "has": { + "!type": "fn(value: ?) -> bool", + "!doc": "The has() method returns a boolean indicating whether an element with the specified value exists in a Set object or not.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/has" + }, + "keys": { + "!type": "fn() -> +iter[:t=!this.:t]", + "!doc": "The values() method returns a new Iterator object that contains the values for each element in the Set object in insertion order.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/keys" + }, + "size": { + "!type": "number", + "!doc": "The size accessor property returns the number of elements in a Set object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/size" + }, + "values": { + "!type": "fn() -> +iter[:t=!this.:t]", + "!doc": "The values() method returns a new Iterator object that contains the values for each element in the Set object in insertion order.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/values" + }, + ":Symbol.iterator": { + "!type": "fn() -> +iter[:t=!this.:t]", + "!doc": "Returns a new Iterator object that contains the values for each element in the Set object in insertion order.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/@@iterator" + } + } + }, + "Symbol": { + "!type": "fn(description?: string) -> !custom:getSymbol", + "!doc": "A symbol is a unique and immutable data type and may be used as an identifier for object properties. The symbol object is an implicit object wrapper for the symbol primitive data type.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol", + "for": { + "!type": "fn(key: string) -> !custom:getSymbol", + "!doc": "The Symbol.for(key) method searches for existing symbols in a runtime-wide symbol registry with the given key and returns it if found. Otherwise a new symbol gets created in the global symbol registry with this key.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/for" + }, + "keyFor": { + "!type": "fn(sym: +Symbol) -> string", + "!doc": "The Symbol.keyFor(sym) method retrieves a shared symbol key from the global symbol registry for the given symbol.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/keyFor" + }, + "hasInstance": ":Symbol.hasInstance", + "isConcatSpreadable": ":Symbol.isConcatSpreadable", + "iterator": ":Symbol.iterator", + "match": ":Symbol.match", + "replace": ":Symbol.replace", + "search": ":Symbol.search", + "species": ":Symbol.species", + "split": ":Symbol.split", + "toStringTag": ":Symbol.toStringTag", + "unscopables": ":Symbol.unscopables", + "prototype": { + "!stdProto": "Symbol" + } + }, + "WeakMap": { + "!type": "fn(iterable?: [?])", + "!doc": "The WeakMap object is a collection of key/value pairs in which the keys are objects and the values can be arbitrary values.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap", + "prototype": { + "delete": { + "!type": "fn(key: ?) -> bool", + "!doc": "The delete() method removes the specified element from a WeakMap object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/delete" + }, + "get": { + "!type": "fn(key: ?) -> !this.:value", + "!doc": "The get() method returns a specified element from a WeakMap object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/get" + }, + "has": { + "!type": "fn(key: ?) -> bool", + "!doc": "The has() method returns a boolean indicating whether an element with the specified key exists in the WeakMap object or not.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/has" + }, + "set": { + "!type": "fn(key: ?, value: ?)", + "!effects": ["propagate !0 !this.:key", "propagate !1 !this.:value"], + "!doc": "The set() method adds a new element with a specified key and value to a WeakMap object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/set" + } + } + }, + "WeakSet": { + "!type": "fn(iterable?: [?])", + "!doc": "The WeakSet object lets you store weakly held objects in a collection.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet", + "prototype": { + "add": { + "!type": "fn(value: ?)", + "!doc": "The add() method appends a new object to the end of a WeakSet object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/add" + }, + "delete": { + "!type": "fn(value: ?) -> bool", + "!doc": "The delete() method removes the specified element from a WeakSet object.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/delete" + }, + "has": { + "!type": "fn(value: ?) -> bool", + "!doc": "The has() method returns a boolean indicating whether an object exists in a WeakSet or not.", + "!url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/has" + } + } + } +} diff --git a/app/client/src/constants/defs/forge.json b/app/client/src/constants/defs/forge.json index 876bb7a773..6cd3204c7d 100644 --- a/app/client/src/constants/defs/forge.json +++ b/app/client/src/constants/defs/forge.json @@ -1,5 +1,5 @@ { - "!name": "../../node-forge/lib/aes.js", + "!name": "LIB/node-forge", "!define": { "forge.aes.Algorithm.prototype.initialize.!0": { "key": { diff --git a/app/client/src/constants/defs/lodash.json b/app/client/src/constants/defs/lodash.json index d103d15814..d472f31b6d 100644 --- a/app/client/src/constants/defs/lodash.json +++ b/app/client/src/constants/defs/lodash.json @@ -1,5 +1,5 @@ { - "!name": "lodash", + "!name": "LIB/lodash", "_": { "chunk": { "!url": "https://lodash.com/docs/4.17.15#chunk", diff --git a/app/client/src/constants/defs/moment.json b/app/client/src/constants/defs/moment.json index bf2e3d84da..de5060af9c 100644 --- a/app/client/src/constants/defs/moment.json +++ b/app/client/src/constants/defs/moment.json @@ -1,5 +1,5 @@ { - "!name": "moment", + "!name": "LIB/moment", "moment": { "!type": "fn(inp?: MomentInput, format?: MomentFormatSpecification, strict?: boolean) -> Moment", "!url": "https://momentjs.com/docs/#/parsing/", @@ -469,7 +469,7 @@ "!doc": "A global locale configuration can be problematic when passing around moments that may need to be formatted into different locale" }, "localeData": { - "!type": "fn() -> Locale" + "!type": "fn() -> Locale" }, "toObject": { "!type": "fn() -> MomentObjectOutput", @@ -727,4 +727,4 @@ "!doc": "Returns am/pm string for particular time-of-day in upper/lower case" } } -} \ No newline at end of file +} diff --git a/app/client/src/constants/defs/xmlParser.json b/app/client/src/constants/defs/xmlParser.json index bd35584734..ffbb2ec298 100644 --- a/app/client/src/constants/defs/xmlParser.json +++ b/app/client/src/constants/defs/xmlParser.json @@ -1,5 +1,5 @@ { - "!name": "xmlParser", + "!name": "LIB/xmlParser", "xmlParser": { "parse": { "!doc": "converts xml string to json object", diff --git a/app/client/src/globalStyles/CodmirrorHintStyles.ts b/app/client/src/globalStyles/CodmirrorHintStyles.ts index 7db244f95f..7d3c5774b4 100644 --- a/app/client/src/globalStyles/CodmirrorHintStyles.ts +++ b/app/client/src/globalStyles/CodmirrorHintStyles.ts @@ -37,11 +37,11 @@ export const CodemirrorHintStyles = createGlobalStyle<{ letter-spacing: -0.24px; &:hover { background: ${(props) => - props.editorTheme === EditorTheme.LIGHT ? "#6A86CE" : "#157A96"}; + props.editorTheme === EditorTheme.LIGHT ? "#E8E8E8" : "#157A96"}; border-radius: 0px; - color: #fff; + color: #090707; &:after { - color: #fff; + color: #090707; } } } @@ -139,7 +139,11 @@ export const CodemirrorHintStyles = createGlobalStyle<{ padding-left: ${(props) => props.theme.spaces[11]}px !important; &:hover{ background: ${(props) => - props.editorTheme === EditorTheme.LIGHT ? "#6A86CE" : "#157A96"}; + props.editorTheme === EditorTheme.LIGHT ? "#E8E8E8" : "#157A96"}; + color: #090707; + &:after { + color: #090707; + } } } .CodeMirror-Tern-completion:before { @@ -214,6 +218,13 @@ export const CodemirrorHintStyles = createGlobalStyle<{ &:after { color: #fff; } + &:hover { + background: #6A86CE; + color: #fff; + &:after { + color: #fff; + } + } } .CodeMirror-Tern-hint-doc { display: none; diff --git a/app/client/src/pages/Editor/PropertyPane/PropertyControl.tsx b/app/client/src/pages/Editor/PropertyPane/PropertyControl.tsx index 2262cfa716..4e222835ab 100644 --- a/app/client/src/pages/Editor/PropertyPane/PropertyControl.tsx +++ b/app/client/src/pages/Editor/PropertyPane/PropertyControl.tsx @@ -282,7 +282,6 @@ const PropertyControl = memo((props: Props) => { config.validationMessage = ""; delete config.dataTreePath; delete config.evaluatedValue; - delete config.expected; } const isDynamic: boolean = isPathADynamicProperty( diff --git a/app/client/src/sagas/EvaluationsSaga.ts b/app/client/src/sagas/EvaluationsSaga.ts index 0698c066ca..dd516a4f08 100644 --- a/app/client/src/sagas/EvaluationsSaga.ts +++ b/app/client/src/sagas/EvaluationsSaga.ts @@ -10,7 +10,6 @@ import { import { EvaluationReduxAction, ReduxAction, - ReduxActionErrorTypes, ReduxActionTypes, ReduxActionWithoutPayload, } from "constants/ReduxActionConstants"; @@ -21,16 +20,7 @@ import { import WidgetFactory, { WidgetTypeConfigMap } from "../utils/WidgetFactory"; import { GracefulWorkerService } from "utils/WorkerUtil"; import Worker from "worker-loader!../workers/evaluation.worker"; -import { - EVAL_WORKER_ACTIONS, - EvalError, - EvalErrorTypes, - EvaluationError, - getEvalErrorPath, - getEvalValuePath, - PropertyEvalErrorTypeDebugMessage, - PropertyEvaluationErrorType, -} from "utils/DynamicBindingUtils"; +import { EVAL_WORKER_ACTIONS } from "utils/DynamicBindingUtils"; import log from "loglevel"; import { WidgetProps } from "widgets/BaseWidget"; import PerformanceTracker, { @@ -38,319 +28,24 @@ import PerformanceTracker, { } from "../utils/PerformanceTracker"; import * as Sentry from "@sentry/react"; import { Action } from "redux"; -import _ from "lodash"; -import { ENTITY_TYPE, Message } from "entities/AppsmithConsole"; -import LOG_TYPE from "entities/AppsmithConsole/logtype"; -import { DataTree } from "entities/DataTree/dataTreeFactory"; -import { AppState } from "reducers"; import { - getEntityNameAndPropertyPath, - isAction, - isWidget, -} from "workers/evaluationUtils"; -import moment from "moment/moment"; -import { Toaster } from "components/ads/Toast"; -import { Variant } from "components/ads/common"; -import AppsmithConsole from "utils/AppsmithConsole"; -import AnalyticsUtil from "utils/AnalyticsUtil"; + EVALUATE_REDUX_ACTIONS, + FIRST_EVAL_REDUX_ACTIONS, + setDependencyMap, + setEvaluatedTree, + shouldProcessBatchedAction, +} from "actions/evaluationActions"; import { - createMessage, - ERROR_EVAL_ERROR_GENERIC, - ERROR_EVAL_TRIGGER, -} from "constants/messages"; -import { getAppMode } from "selectors/applicationSelectors"; -import { APP_MODE } from "reducers/entityReducers/appReducer"; -import { dataTreeTypeDefCreator } from "utils/autocomplete/dataTreeTypeDefCreator"; -import TernServer from "utils/autocomplete/TernServer"; -import store from "store"; -import { logDebuggerErrorAnalytics } from "actions/debuggerActions"; + evalErrorHandler, + logSuccessfulBindings, + postEvalActionDispatcher, + updateTernDefinitions, +} from "./PostEvaluationSagas"; let widgetTypeConfigMap: WidgetTypeConfigMap; const worker = new GracefulWorkerService(Worker); -const getDebuggerErrors = (state: AppState) => state.ui.debugger.errors; - -function getLatestEvalPropertyErrors( - currentDebuggerErrors: Record, - dataTree: DataTree, - evaluationOrder: Array, -) { - const updatedDebuggerErrors: Record = { - ...currentDebuggerErrors, - }; - - for (const evaluatedPath of evaluationOrder) { - const { entityName, propertyPath } = getEntityNameAndPropertyPath( - evaluatedPath, - ); - const entity = dataTree[entityName]; - if (isWidget(entity) || isAction(entity)) { - if (propertyPath in entity.logBlackList) { - continue; - } - const allEvalErrors: EvaluationError[] = _.get( - entity, - getEvalErrorPath(evaluatedPath, false), - [], - ); - const evaluatedValue = _.get( - entity, - getEvalValuePath(evaluatedPath, false), - ); - const evalErrors = allEvalErrors.filter( - (error) => error.errorType !== PropertyEvaluationErrorType.LINT, - ); - const idField = isWidget(entity) ? entity.widgetId : entity.actionId; - const nameField = isWidget(entity) ? entity.widgetName : entity.name; - const entityType = isWidget(entity) - ? ENTITY_TYPE.WIDGET - : ENTITY_TYPE.ACTION; - const debuggerKey = idField + "-" + propertyPath; - // if dataTree has error but debugger does not -> add - // if debugger has error and data tree has error -> update error - // if debugger has error but data tree does not -> remove - // if debugger or data tree does not have an error -> no change - - if (evalErrors.length) { - // TODO Rank and set the most critical error - const error = evalErrors[0]; - const errorMessages = evalErrors.map((e) => ({ - message: e.errorMessage, - })); - - if (!(debuggerKey in updatedDebuggerErrors)) { - store.dispatch( - logDebuggerErrorAnalytics({ - eventName: "DEBUGGER_NEW_ERROR", - entityId: idField, - entityName: nameField, - entityType, - propertyPath, - errorMessages, - }), - ); - } - - const analyticsData = isWidget(entity) - ? { - widgetType: entity.type, - } - : {}; - - // Add or update - updatedDebuggerErrors[debuggerKey] = { - logType: LOG_TYPE.EVAL_ERROR, - text: PropertyEvalErrorTypeDebugMessage[error.errorType]( - propertyPath, - ), - messages: errorMessages, - severity: error.severity, - timestamp: moment().format("hh:mm:ss"), - source: { - id: idField, - name: nameField, - type: entityType, - propertyPath: propertyPath, - }, - state: { - [propertyPath]: evaluatedValue, - }, - analytics: analyticsData, - }; - } else if (debuggerKey in updatedDebuggerErrors) { - store.dispatch( - logDebuggerErrorAnalytics({ - eventName: "DEBUGGER_RESOLVED_ERROR", - entityId: idField, - entityName: nameField, - entityType, - propertyPath: - updatedDebuggerErrors[debuggerKey].source?.propertyPath ?? "", - errorMessages: updatedDebuggerErrors[debuggerKey].messages ?? [], - }), - ); - // Remove - delete updatedDebuggerErrors[debuggerKey]; - } - } - } - return updatedDebuggerErrors; -} - -function* evalErrorHandler( - errors: EvalError[], - dataTree?: DataTree, - evaluationOrder?: Array, -): any { - if (dataTree && evaluationOrder) { - const currentDebuggerErrors: Record = yield select( - getDebuggerErrors, - ); - const evalPropertyErrors = getLatestEvalPropertyErrors( - currentDebuggerErrors, - dataTree, - evaluationOrder, - ); - - yield put({ - type: ReduxActionTypes.DEBUGGER_UPDATE_ERROR_LOGS, - payload: evalPropertyErrors, - }); - } - - errors.forEach((error) => { - switch (error.type) { - case EvalErrorTypes.CYCLICAL_DEPENDENCY_ERROR: { - if (error.context) { - // Add more info about node for the toast - const { entityType, node } = error.context; - Toaster.show({ - text: `${error.message} Node was: ${node}`, - variant: Variant.danger, - }); - AppsmithConsole.error({ - text: `${error.message} Node was: ${node}`, - }); - // Send the generic error message to sentry for better grouping - Sentry.captureException(new Error(error.message), { - tags: { - node, - entityType, - }, - // Level is warning because it could be a user error - level: Sentry.Severity.Warning, - }); - // Log an analytics event for cyclical dep errors - AnalyticsUtil.logEvent("CYCLICAL_DEPENDENCY_ERROR", { - node, - entityType, - // Level is warning because it could be a user error - level: Sentry.Severity.Warning, - }); - } - - break; - } - case EvalErrorTypes.EVAL_TREE_ERROR: { - Toaster.show({ - text: createMessage(ERROR_EVAL_ERROR_GENERIC), - variant: Variant.danger, - }); - break; - } - case EvalErrorTypes.BAD_UNEVAL_TREE_ERROR: { - Sentry.captureException(error); - break; - } - case EvalErrorTypes.EVAL_TRIGGER_ERROR: { - log.debug(error); - Toaster.show({ - text: createMessage(ERROR_EVAL_TRIGGER, error.message), - variant: Variant.danger, - showDebugButton: true, - }); - AppsmithConsole.error({ - text: createMessage(ERROR_EVAL_TRIGGER, error.message), - }); - break; - } - case EvalErrorTypes.EVAL_PROPERTY_ERROR: { - log.debug(error); - break; - } - default: { - Sentry.captureException(error); - log.debug(error); - } - } - }); -} - -function* logSuccessfulBindings( - unEvalTree: DataTree, - dataTree: DataTree, - evaluationOrder: string[], -) { - const appMode = yield select(getAppMode); - if (appMode === APP_MODE.PUBLISHED) return; - if (!evaluationOrder) return; - evaluationOrder.forEach((evaluatedPath) => { - const { entityName, propertyPath } = getEntityNameAndPropertyPath( - evaluatedPath, - ); - const entity = dataTree[entityName]; - if (isAction(entity) || isWidget(entity)) { - const unevalValue = _.get(unEvalTree, evaluatedPath); - const entityType = isAction(entity) ? entity.pluginType : entity.type; - const isABinding = _.find(entity.dynamicBindingPathList, { - key: propertyPath, - }); - const logBlackList = entity.logBlackList; - const errors: EvaluationError[] = _.get( - dataTree, - getEvalErrorPath(evaluatedPath), - [], - ) as EvaluationError[]; - const criticalErrors = errors.filter( - (error) => error.errorType !== PropertyEvaluationErrorType.LINT, - ); - const hasErrors = criticalErrors.length > 0; - - if (isABinding && !hasErrors && !(propertyPath in logBlackList)) { - AnalyticsUtil.logEvent("BINDING_SUCCESS", { - unevalValue, - entityType, - propertyPath, - }); - } - } - }); -} - -// Update only the changed entities on tern. We will pick up the updated -// entities from the evaluation order and create a new def from them. -// When there is a top level entity removed in removedPaths, -// we will remove its def -function* updateTernDefinitions( - dataTree: DataTree, - evaluationOrder: string[], - isFirstEvaluation: boolean, -) { - const updatedEntities: Set = new Set(); - // If it is the first evaluation, we want to add everything in the data tree - if (isFirstEvaluation) { - Object.keys(dataTree).forEach((key) => updatedEntities.add(key)); - } else { - evaluationOrder.forEach((path) => { - const { entityName } = getEntityNameAndPropertyPath(path); - updatedEntities.add(entityName); - }); - } - - updatedEntities.forEach((entityName) => { - const entity = dataTree[entityName]; - if (entity) { - const { def, name } = dataTreeTypeDefCreator(entity, entityName); - TernServer.updateDef(name, def); - } - }); - // removedPaths.forEach((path) => { - // // No '.' means that the path is an entity name - // if (path.split(".").length === 1) { - // TernServer.removeDef(path); - // } - // }); -} - -function* postEvalActionDispatcher( - actions: Array | ReduxActionWithoutPayload>, -) { - for (const action of actions) { - yield put(action); - } -} - function* evaluateTreeSaga( postEvalActions?: Array | ReduxActionWithoutPayload>, isFirstEvaluation = false, @@ -382,10 +77,7 @@ function* evaluateTreeSaga( PerformanceTracker.startAsyncTracking( PerformanceTransactionName.SET_EVALUATED_TREE, ); - yield put({ - type: ReduxActionTypes.SET_EVALUATED_TREE, - payload: { dataTree, updates }, - }); + yield put(setEvaluatedTree(dataTree, updates)); PerformanceTracker.stopAsyncTracking( PerformanceTransactionName.SET_EVALUATED_TREE, ); @@ -408,10 +100,7 @@ function* evaluateTreeSaga( isFirstEvaluation, ); - yield put({ - type: ReduxActionTypes.SET_EVALUATION_INVERSE_DEPENDENCY_MAP, - payload: { inverseDependencyMap: dependencies }, - }); + yield put(setDependencyMap(dependencies)); if (postEvalActions && postEvalActions.length) { yield call(postEvalActionDispatcher, postEvalActions); } @@ -495,62 +184,6 @@ export function* validateProperty( }); } -const FIRST_EVAL_REDUX_ACTIONS = [ - // Pages - ReduxActionTypes.FETCH_PAGE_SUCCESS, - ReduxActionTypes.FETCH_PUBLISHED_PAGE_SUCCESS, -]; - -const EVALUATE_REDUX_ACTIONS = [ - ...FIRST_EVAL_REDUX_ACTIONS, - // Actions - ReduxActionTypes.FETCH_ACTIONS_SUCCESS, - ReduxActionTypes.FETCH_PLUGIN_FORM_CONFIGS_SUCCESS, - ReduxActionTypes.FETCH_ACTIONS_VIEW_MODE_SUCCESS, - ReduxActionErrorTypes.FETCH_ACTIONS_ERROR, - ReduxActionErrorTypes.FETCH_ACTIONS_VIEW_MODE_ERROR, - ReduxActionTypes.FETCH_ACTIONS_FOR_PAGE_SUCCESS, - ReduxActionTypes.SUBMIT_CURL_FORM_SUCCESS, - ReduxActionTypes.CREATE_ACTION_SUCCESS, - ReduxActionTypes.UPDATE_ACTION_PROPERTY, - ReduxActionTypes.DELETE_ACTION_SUCCESS, - ReduxActionTypes.COPY_ACTION_SUCCESS, - ReduxActionTypes.MOVE_ACTION_SUCCESS, - ReduxActionTypes.RUN_ACTION_SUCCESS, - ReduxActionErrorTypes.RUN_ACTION_ERROR, - ReduxActionTypes.EXECUTE_API_ACTION_SUCCESS, - ReduxActionErrorTypes.EXECUTE_ACTION_ERROR, - // App Data - ReduxActionTypes.SET_APP_MODE, - ReduxActionTypes.FETCH_USER_DETAILS_SUCCESS, - ReduxActionTypes.UPDATE_APP_PERSISTENT_STORE, - ReduxActionTypes.UPDATE_APP_TRANSIENT_STORE, - // Widgets - ReduxActionTypes.UPDATE_LAYOUT, - ReduxActionTypes.UPDATE_WIDGET_PROPERTY, - ReduxActionTypes.UPDATE_WIDGET_NAME_SUCCESS, - // Widget Meta - ReduxActionTypes.SET_META_PROP, - ReduxActionTypes.RESET_WIDGET_META, - // Batches - ReduxActionTypes.BATCH_UPDATES_SUCCESS, -]; - -const shouldProcessAction = (action: ReduxAction) => { - if ( - action.type === ReduxActionTypes.BATCH_UPDATES_SUCCESS && - Array.isArray(action.payload) - ) { - const batchedActionTypes = action.payload.map( - (batchedAction) => batchedAction.type, - ); - return ( - _.intersection(EVALUATE_REDUX_ACTIONS, batchedActionTypes).length > 0 - ); - } - return true; -}; - function evalQueueBuffer() { let canTake = false; let postEvalActions: any = []; @@ -571,7 +204,7 @@ function evalQueueBuffer() { }; const put = (action: EvaluationReduxAction) => { - if (!shouldProcessAction(action)) { + if (!shouldProcessBatchedAction(action)) { return; } canTake = true; @@ -607,11 +240,14 @@ function* evaluationChangeListenerSaga() { const action: EvaluationReduxAction = yield take( evtActionChannel, ); - if (shouldProcessAction(action)) { - yield call(evaluateTreeSaga, action.postEvalActions); + if (FIRST_EVAL_REDUX_ACTIONS.includes(action.type)) { + yield call(evaluateTreeSaga, initAction.postEvalActions, true); + } else { + if (shouldProcessBatchedAction(action)) { + yield call(evaluateTreeSaga, action.postEvalActions); + } } } - // TODO(hetu) need an action to stop listening and evaluate (exit app) } export default function* evaluationSagaListeners() { diff --git a/app/client/src/sagas/PostEvaluationSagas.ts b/app/client/src/sagas/PostEvaluationSagas.ts new file mode 100644 index 0000000000..8704e02131 --- /dev/null +++ b/app/client/src/sagas/PostEvaluationSagas.ts @@ -0,0 +1,326 @@ +import { ENTITY_TYPE, Message } from "entities/AppsmithConsole"; +import { DataTree } from "entities/DataTree/dataTreeFactory"; +import { + getEntityNameAndPropertyPath, + isAction, + isWidget, +} from "workers/evaluationUtils"; +import { + EvalError, + EvalErrorTypes, + EvaluationError, + getEvalErrorPath, + getEvalValuePath, + PropertyEvalErrorTypeDebugMessage, + PropertyEvaluationErrorType, +} from "utils/DynamicBindingUtils"; +import _ from "lodash"; +import LOG_TYPE from "../entities/AppsmithConsole/logtype"; +import moment from "moment/moment"; +import { put, select } from "redux-saga/effects"; +import { + ReduxAction, + ReduxActionTypes, + ReduxActionWithoutPayload, +} from "constants/ReduxActionConstants"; +import { Toaster } from "components/ads/Toast"; +import { Variant } from "components/ads/common"; +import AppsmithConsole from "../utils/AppsmithConsole"; +import * as Sentry from "@sentry/react"; +import AnalyticsUtil from "../utils/AnalyticsUtil"; +import { + createMessage, + ERROR_EVAL_ERROR_GENERIC, + ERROR_EVAL_TRIGGER, +} from "constants/messages"; +import log from "loglevel"; +import { AppState } from "reducers"; +import { getAppMode } from "selectors/applicationSelectors"; +import { APP_MODE } from "reducers/entityReducers/appReducer"; +import { dataTreeTypeDefCreator } from "utils/autocomplete/dataTreeTypeDefCreator"; +import TernServer from "utils/autocomplete/TernServer"; +import { logDebuggerErrorAnalytics } from "actions/debuggerActions"; +import store from "../store"; + +const getDebuggerErrors = (state: AppState) => state.ui.debugger.errors; + +function getLatestEvalPropertyErrors( + currentDebuggerErrors: Record, + dataTree: DataTree, + evaluationOrder: Array, +) { + const updatedDebuggerErrors: Record = { + ...currentDebuggerErrors, + }; + + for (const evaluatedPath of evaluationOrder) { + const { entityName, propertyPath } = getEntityNameAndPropertyPath( + evaluatedPath, + ); + const entity = dataTree[entityName]; + if (isWidget(entity) || isAction(entity)) { + if (propertyPath in entity.logBlackList) { + continue; + } + const allEvalErrors: EvaluationError[] = _.get( + entity, + getEvalErrorPath(evaluatedPath, false), + [], + ); + const evaluatedValue = _.get( + entity, + getEvalValuePath(evaluatedPath, false), + ); + const evalErrors = allEvalErrors.filter( + (error) => error.errorType !== PropertyEvaluationErrorType.LINT, + ); + const idField = isWidget(entity) ? entity.widgetId : entity.actionId; + const nameField = isWidget(entity) ? entity.widgetName : entity.name; + const entityType = isWidget(entity) + ? ENTITY_TYPE.WIDGET + : ENTITY_TYPE.ACTION; + const debuggerKey = idField + "-" + propertyPath; + // if dataTree has error but debugger does not -> add + // if debugger has error and data tree has error -> update error + // if debugger has error but data tree does not -> remove + // if debugger or data tree does not have an error -> no change + + if (evalErrors.length) { + // TODO Rank and set the most critical error + const error = evalErrors[0]; + const errorMessages = evalErrors.map((e) => ({ + message: e.errorMessage, + })); + + if (!(debuggerKey in updatedDebuggerErrors)) { + store.dispatch( + logDebuggerErrorAnalytics({ + eventName: "DEBUGGER_NEW_ERROR", + entityId: idField, + entityName: nameField, + entityType, + propertyPath, + errorMessages, + }), + ); + } + + const analyticsData = isWidget(entity) + ? { + widgetType: entity.type, + } + : {}; + + // Add or update + updatedDebuggerErrors[debuggerKey] = { + logType: LOG_TYPE.EVAL_ERROR, + text: PropertyEvalErrorTypeDebugMessage[error.errorType]( + propertyPath, + ), + messages: errorMessages, + severity: error.severity, + timestamp: moment().format("hh:mm:ss"), + source: { + id: idField, + name: nameField, + type: entityType, + propertyPath: propertyPath, + }, + state: { + [propertyPath]: evaluatedValue, + }, + analytics: analyticsData, + }; + } else if (debuggerKey in updatedDebuggerErrors) { + store.dispatch( + logDebuggerErrorAnalytics({ + eventName: "DEBUGGER_RESOLVED_ERROR", + entityId: idField, + entityName: nameField, + entityType, + propertyPath: + updatedDebuggerErrors[debuggerKey].source?.propertyPath ?? "", + errorMessages: updatedDebuggerErrors[debuggerKey].messages ?? [], + }), + ); + // Remove + delete updatedDebuggerErrors[debuggerKey]; + } + } + } + return updatedDebuggerErrors; +} + +export function* evalErrorHandler( + errors: EvalError[], + dataTree?: DataTree, + evaluationOrder?: Array, +): any { + if (dataTree && evaluationOrder) { + const currentDebuggerErrors: Record = yield select( + getDebuggerErrors, + ); + const evalPropertyErrors = getLatestEvalPropertyErrors( + currentDebuggerErrors, + dataTree, + evaluationOrder, + ); + + yield put({ + type: ReduxActionTypes.DEBUGGER_UPDATE_ERROR_LOGS, + payload: evalPropertyErrors, + }); + } + + errors.forEach((error) => { + switch (error.type) { + case EvalErrorTypes.CYCLICAL_DEPENDENCY_ERROR: { + if (error.context) { + // Add more info about node for the toast + const { entityType, node } = error.context; + Toaster.show({ + text: `${error.message} Node was: ${node}`, + variant: Variant.danger, + }); + AppsmithConsole.error({ + text: `${error.message} Node was: ${node}`, + }); + // Send the generic error message to sentry for better grouping + Sentry.captureException(new Error(error.message), { + tags: { + node, + entityType, + }, + // Level is warning because it could be a user error + level: Sentry.Severity.Warning, + }); + // Log an analytics event for cyclical dep errors + AnalyticsUtil.logEvent("CYCLICAL_DEPENDENCY_ERROR", { + node, + entityType, + // Level is warning because it could be a user error + level: Sentry.Severity.Warning, + }); + } + + break; + } + case EvalErrorTypes.EVAL_TREE_ERROR: { + Toaster.show({ + text: createMessage(ERROR_EVAL_ERROR_GENERIC), + variant: Variant.danger, + }); + break; + } + case EvalErrorTypes.BAD_UNEVAL_TREE_ERROR: { + Sentry.captureException(error); + break; + } + case EvalErrorTypes.EVAL_TRIGGER_ERROR: { + log.debug(error); + Toaster.show({ + text: createMessage(ERROR_EVAL_TRIGGER, error.message), + variant: Variant.danger, + showDebugButton: true, + }); + AppsmithConsole.error({ + text: createMessage(ERROR_EVAL_TRIGGER, error.message), + }); + break; + } + case EvalErrorTypes.EVAL_PROPERTY_ERROR: { + log.debug(error); + break; + } + default: { + Sentry.captureException(error); + log.debug(error); + } + } + }); +} + +export function* logSuccessfulBindings( + unEvalTree: DataTree, + dataTree: DataTree, + evaluationOrder: string[], +) { + const appMode = yield select(getAppMode); + if (appMode === APP_MODE.PUBLISHED) return; + if (!evaluationOrder) return; + evaluationOrder.forEach((evaluatedPath) => { + const { entityName, propertyPath } = getEntityNameAndPropertyPath( + evaluatedPath, + ); + const entity = dataTree[entityName]; + if (isAction(entity) || isWidget(entity)) { + const unevalValue = _.get(unEvalTree, evaluatedPath); + const entityType = isAction(entity) ? entity.pluginType : entity.type; + const isABinding = _.find(entity.dynamicBindingPathList, { + key: propertyPath, + }); + const logBlackList = entity.logBlackList; + const errors: EvaluationError[] = _.get( + dataTree, + getEvalErrorPath(evaluatedPath), + [], + ) as EvaluationError[]; + const criticalErrors = errors.filter( + (error) => error.errorType !== PropertyEvaluationErrorType.LINT, + ); + const hasErrors = criticalErrors.length > 0; + + if (isABinding && !hasErrors && !(propertyPath in logBlackList)) { + AnalyticsUtil.logEvent("BINDING_SUCCESS", { + unevalValue, + entityType, + propertyPath, + }); + } + } + }); +} + +export function* postEvalActionDispatcher( + actions: Array | ReduxActionWithoutPayload>, +) { + for (const action of actions) { + yield put(action); + } +} + +// Update only the changed entities on tern. We will pick up the updated +// entities from the evaluation order and create a new def from them. +// When there is a top level entity removed in removedPaths, +// we will remove its def +export function* updateTernDefinitions( + dataTree: DataTree, + evaluationOrder: string[], + isFirstEvaluation: boolean, +) { + const updatedEntities: Set = new Set(); + // If it is the first evaluation, we want to add everything in the data tree + if (isFirstEvaluation) { + TernServer.resetServer(); + Object.keys(dataTree).forEach((key) => updatedEntities.add(key)); + } else { + evaluationOrder.forEach((path) => { + const { entityName } = getEntityNameAndPropertyPath(path); + updatedEntities.add(entityName); + }); + } + + updatedEntities.forEach((entityName) => { + const entity = dataTree[entityName]; + if (entity) { + const { def, name } = dataTreeTypeDefCreator(entity, entityName); + TernServer.updateDef(name, def); + } + }); + // removedPaths.forEach((path) => { + // // No '.' means that the path is an entity name + // if (path.split(".").length === 1) { + // TernServer.removeDef(path); + // } + // }); +} diff --git a/app/client/src/utils/autocomplete/EntityDefinitions.ts b/app/client/src/utils/autocomplete/EntityDefinitions.ts index ccd6d75795..a4badfcdb1 100644 --- a/app/client/src/utils/autocomplete/EntityDefinitions.ts +++ b/app/client/src/utils/autocomplete/EntityDefinitions.ts @@ -2,10 +2,6 @@ import { generateTypeDef } from "utils/autocomplete/dataTreeTypeDefCreator"; import { DataTreeAction } from "entities/DataTree/dataTreeFactory"; import _ from "lodash"; -// const isLoading = { -// "!type": "bool", -// "!doc": "Boolean value indicating if the entity is in loading state", -// }; const isVisible = { "!type": "bool", "!doc": "Boolean value indicating if the widget is in visible state", @@ -14,7 +10,6 @@ const isVisible = { export const entityDefinitions = { ACTION: (entity: DataTreeAction) => { const dataDef = generateTypeDef(entity.data); - const responseMetaDef = generateTypeDef(entity.responseMeta); let data: Record = { "!doc": "The response of the action", }; @@ -23,21 +18,16 @@ export const entityDefinitions = { } else { data = { ...data, ...dataDef }; } - let responseMeta: Record = { - "!doc": "The response meta of the action", - }; - if (_.isString(responseMetaDef)) { - responseMeta["!type"] = responseMetaDef; - } else { - responseMeta = { ...responseMeta, ...responseMetaDef }; - } return { "!doc": "Actions allow you to connect your widgets to your backend data in a secure manner.", "!url": "https://docs.appsmith.com/v/v1.2.1/framework-reference/run", isLoading: "bool", data, - responseMeta, + responseMeta: { + "!doc": "The response meta of the action", + "!type": "?", + }, run: "fn(onSuccess: fn() -> void, onError: fn() -> void) -> void", }; }, @@ -137,8 +127,6 @@ export const entityDefinitions = { isVisible: isVisible, text: "string", isDisabled: "bool", - recaptchaToken: "string", - googleRecaptchaKey: "string", }, DATE_PICKER_WIDGET: { "!doc": @@ -219,8 +207,6 @@ export const entityDefinitions = { isVisible: isVisible, text: "string", isDisabled: "bool", - recaptchaToken: "string", - googleRecaptchaKey: "string", }, MAP_WIDGET: { isVisible: isVisible, @@ -319,6 +305,7 @@ export const GLOBAL_DEFS = { }; export const GLOBAL_FUNCTIONS = { + "!name": "DATA_TREE.APPSMITH.FUNCTIONS", navigateTo: { "!doc": "Action to navigate the user to another page or url", "!type": "fn(pageNameOrUrl: string, params: {}, target?: string) -> void", diff --git a/app/client/src/utils/autocomplete/TernServer.test.ts b/app/client/src/utils/autocomplete/TernServer.test.ts index 9aef7f91a9..21093bb747 100644 --- a/app/client/src/utils/autocomplete/TernServer.test.ts +++ b/app/client/src/utils/autocomplete/TernServer.test.ts @@ -1,5 +1,7 @@ -import TernServer from "./TernServer"; +import TernServer, { Completion, createCompletionHeader } from "./TernServer"; import { MockCodemirrorEditor } from "../../../test/__mocks__/CodeMirrorEditorMock"; +import { ENTITY_TYPE } from "entities/DataTree/dataTreeFactory"; +import _ from "lodash"; describe("Tern server", () => { it("Check whether the correct value is being sent to tern", () => { @@ -157,3 +159,133 @@ describe("Tern server", () => { }); }); }); + +describe("Tern server sorting", () => { + const contextCompletion: Completion = { + text: "context", + type: "STRING", + origin: "[doc]", + data: { + doc: "", + }, + }; + + const sameEntityCompletion: Completion = { + text: "sameEntity.tableData", + type: "ARRAY", + origin: "DATA_TREE.WIDGET.TABLE_WIDGET.sameEntity", + data: { + doc: "", + }, + }; + + const sameTypeCompletion: Completion = { + text: "sameType.selectedRow", + type: "OBJECT", + origin: "DATA_TREE.WIDGET.TABLE_WIDGET.sameType", + data: { + doc: "", + }, + }; + + const diffTypeCompletion: Completion = { + text: "diffType.tableData", + type: "ARRAY", + origin: "DATA_TREE.WIDGET.TABLE_WIDGET.diffType", + data: { + doc: "", + }, + }; + + const sameTypeDiffEntityTypeCompletion: Completion = { + text: "diffEntity.data", + type: "OBJECT", + origin: "DATA_TREE.ACTION.ACTION.diffEntity", + data: { + doc: "", + }, + }; + + const dataTreeCompletion: Completion = { + text: "otherDataTree", + type: "STRING", + origin: "DATA_TREE.WIDGET.TEXT_WIDGET.otherDataTree", + data: { + doc: "", + }, + }; + + const functionCompletion: Completion = { + text: "otherDataFunction", + type: "FUNCTION", + origin: "DATA_TREE.APPSMITH.FUNCTIONS", + data: { + doc: "", + }, + }; + + const ecmascriptCompletion: Completion = { + text: "otherJS", + type: "OBJECT", + origin: "ecmascript", + data: { + doc: "", + }, + }; + + const libCompletion: Completion = { + text: "libValue", + type: "OBJECT", + origin: "LIB/lodash", + data: { + doc: "", + }, + }; + + const unknownCompletion: Completion = { + text: "unknownSuggestion", + type: "UNKNOWN", + origin: "unknown", + data: { + doc: "", + }, + }; + + const completions = [ + sameEntityCompletion, + sameTypeCompletion, + contextCompletion, + libCompletion, + unknownCompletion, + diffTypeCompletion, + sameTypeDiffEntityTypeCompletion, + ecmascriptCompletion, + functionCompletion, + dataTreeCompletion, + ]; + + it("shows best match results", () => { + TernServer.setEntityInformation({ + entityName: "sameEntity", + entityType: ENTITY_TYPE.WIDGET, + expectedType: "object", + }); + const sortedCompletions = TernServer.sortCompletions( + _.shuffle(completions), + true, + "", + ); + expect(sortedCompletions[0]).toStrictEqual(contextCompletion); + expect(sortedCompletions).toEqual( + expect.arrayContaining([ + createCompletionHeader("Best Match"), + sameTypeDiffEntityTypeCompletion, + createCompletionHeader("Search Results"), + dataTreeCompletion, + ]), + ); + expect(sortedCompletions).toEqual( + expect.not.arrayContaining([diffTypeCompletion]), + ); + }); +}); diff --git a/app/client/src/utils/autocomplete/TernServer.ts b/app/client/src/utils/autocomplete/TernServer.ts index fe84a58029..4019f06f5a 100644 --- a/app/client/src/utils/autocomplete/TernServer.ts +++ b/app/client/src/utils/autocomplete/TernServer.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/ban-ts-comment */ // Heavily inspired from https://github.com/codemirror/CodeMirror/blob/master/addon/tern/tern.js import tern, { Server, Def } from "tern"; -import ecma from "tern/defs/ecmascript.json"; +import ecma from "constants/defs/ecmascript.json"; import lodash from "constants/defs/lodash.json"; import base64 from "constants/defs/base64-js.json"; import moment from "constants/defs/moment.json"; @@ -9,6 +9,7 @@ import xmlJs from "constants/defs/xmlParser.json"; import forge from "constants/defs/forge.json"; import CodeMirror, { Hint, Pos, cmpPos } from "codemirror"; import { + getDynamicBindings, getDynamicStringSegments, isDynamicValue, } from "utils/DynamicBindingUtils"; @@ -16,6 +17,10 @@ import { GLOBAL_DEFS, GLOBAL_FUNCTIONS, } from "utils/autocomplete/EntityDefinitions"; +import { HintEntityInformation } from "components/editorComponents/CodeEditor/EditorConfig"; +import { ENTITY_TYPE } from "entities/DataTree/dataTreeFactory"; +import SortRules from "./dataTypeSortRules"; +import _ from "lodash"; const DEFS: Def[] = [ GLOBAL_FUNCTIONS, @@ -77,8 +82,7 @@ class TernServer { docs: TernDocs = Object.create(null); cachedArgHints: ArgHints | null = null; active: any; - expected?: string; - entityName?: string; + entityInformation: HintEntityInformation = {}; constructor() { this.server = new tern.Server({ @@ -87,9 +91,15 @@ class TernServer { }); } - complete(cm: CodeMirror.Editor, expected: string, entityName: string) { - this.expected = expected; - this.entityName = entityName; + resetServer() { + this.server = new tern.Server({ + async: true, + defs: DEFS, + }); + this.docs = Object.create(null); + } + + complete(cm: CodeMirror.Editor) { cm.showHint({ hint: this.getHint.bind(this), completeSingle: false, @@ -161,25 +171,36 @@ class TernServer { ) { after = '"]'; } + const bindings = getDynamicBindings(cm.getValue()); + const onlySingleBinding = bindings.stringSegments.length === 1; + const searchText = bindings.jsSnippets[0].trim(); for (let i = 0; i < data.completions.length; ++i) { const completion = data.completions[i]; let className = this.typeToIcon(completion.type); const dataType = this.getDataType(completion.type); - const entityName = this.entityName; if (data.guess) className += " " + cls + "guess"; - if (!entityName || !completion.name.includes(entityName)) { - completions.push({ - text: completion.name + after, - displayText: completion.displayName || completion.name, - className: className, - data: completion, - origin: completion.origin, - type: dataType, - }); + let completionText = completion.name + after; + if (dataType === "FUNCTION") { + completionText = completionText + "()"; } + completions.push({ + text: completionText, + displayText: completionText, + className: className, + data: completion, + origin: completion.origin, + type: dataType, + isHeader: false, + }); } - completions = this.sortCompletions(completions); - const indexToBeSelected = completions.length > 1 ? 1 : 0; + + completions = this.sortCompletions( + completions, + onlySingleBinding, + searchText, + ); + const indexToBeSelected = + completions.length && completions[0].isHeader ? 1 : 0; const obj = { from: from, to: to, @@ -242,56 +263,135 @@ class TernServer { }); } - sortCompletions(completions: Completion[]) { - // Add data tree completions before others + sortCompletions( + completions: Completion[], + findBestMatch: boolean, + bestMatchSearch: string, + ) { const expectedDataType = this.getExpectedDataType(); - const dataTreeCompletions = completions - .filter((c) => c.origin && c.origin.startsWith("DATA_TREE_")) - .sort((a: Completion, b: Completion) => { + const { entityName, entityType } = this.entityInformation; + type CompletionType = + | "DATA_TREE" + | "MATCHING_TYPE" + | "OTHER" + | "CONTEXT" + | "JS" + | "LIBRARY"; + const completionType: Record = { + MATCHING_TYPE: [], + DATA_TREE: [], + CONTEXT: [], + JS: [], + LIBRARY: [], + OTHER: [], + }; + completions.forEach((completion) => { + if (entityName && completion.text.includes(entityName)) { + return; + } + if (completion.origin) { + if (completion.origin && completion.origin.startsWith("DATA_TREE")) { + if (completion.text.includes(".")) { + // nested paths (with ".") should only be used for best match + if (completion.type === expectedDataType) { + completionType.MATCHING_TYPE.push(completion); + } + } else if ( + completion.origin === "DATA_TREE.APPSMITH.FUNCTIONS" && + completion.type === expectedDataType + ) { + // Global functions should be in best match as well as DataTree + completionType.MATCHING_TYPE.push(completion); + completionType.DATA_TREE.push(completion); + } else { + // All top level entities are set in data tree + completionType.DATA_TREE.push(completion); + } + return; + } + if ( + completion.origin === "[doc]" || + completion.origin === "customDataTree" + ) { + // [doc] are variables defined in the current context + // customDataTree are implicit context defined by platform + completionType.CONTEXT.push(completion); + return; + } + if ( + completion.origin === "ecmascript" || + completion.origin === "base64-js" + ) { + completionType.JS.push(completion); + return; + } + if (completion.origin.startsWith("LIB/")) { + completionType.LIBRARY.push(completion); + return; + } + } + + // Generally keywords or other unCategorised completions + completionType.OTHER.push(completion); + }); + completionType.DATA_TREE = completionType.DATA_TREE.sort( + (a: Completion, b: Completion) => { if (a.type === "FUNCTION" && b.type !== "FUNCTION") { return 1; } else if (a.type !== "FUNCTION" && b.type === "FUNCTION") { return -1; } return a.text.toLowerCase().localeCompare(b.text.toLowerCase()); + }, + ); + completionType.MATCHING_TYPE = completionType.MATCHING_TYPE.filter((c) => + c.text.toLowerCase().startsWith(bestMatchSearch.toLowerCase()), + ); + if (findBestMatch && completionType.MATCHING_TYPE.length) { + const sortedMatches: Completion[] = []; + const groupedMatches = _.groupBy(completionType.MATCHING_TYPE, (c) => { + const [, , subType, name] = c.origin.split("."); + return c.text.replace(name, subType); }); - const sameDataType = dataTreeCompletions.filter( - (c) => c.type === expectedDataType, - ); - const otherDataType = dataTreeCompletions.filter( - (c) => c.type !== expectedDataType, - ); - if (otherDataType.length && sameDataType.length) { - const otherDataTitle: Completion = { - text: "Search results", - displayText: "Search results", - className: "CodeMirror-hint-header", - data: { doc: "" }, - origin: "", - type: "UNKNOWN", - isHeader: true, - }; - const sameDataTitle: Completion = { - text: "Best Match", - displayText: "Best Match", - className: "CodeMirror-hint-header", - data: { doc: "" }, - origin: "", - type: "UNKNOWN", - isHeader: true, - }; - sameDataType.unshift(sameDataTitle); - otherDataType.unshift(otherDataTitle); + SortRules[expectedDataType].forEach((rule) => { + if (Array.isArray(groupedMatches[rule])) { + sortedMatches.push(...groupedMatches[rule]); + } + }); + + sortedMatches.sort((a, b) => { + let aRank = 0; + let bRank = 0; + const entityTypeA: ENTITY_TYPE = a.origin.split(".")[1] as ENTITY_TYPE; + const entityTypeB: ENTITY_TYPE = b.origin.split(".")[1] as ENTITY_TYPE; + if (entityTypeA === entityType) { + aRank = aRank + 1; + } + if (entityTypeB === entityType) { + bRank = bRank + 1; + } + return aRank - bRank; + }); + completionType.MATCHING_TYPE = _.take(sortedMatches, 3); + if (completionType.MATCHING_TYPE.length) { + completionType.MATCHING_TYPE.unshift( + createCompletionHeader("Best Match"), + ); + completionType.DATA_TREE.unshift( + createCompletionHeader("Search Results"), + ); + } + } else { + // Clear any matching type because we dont want to find best match + completionType.MATCHING_TYPE = []; } - const docCompletetions = completions.filter((c) => c.origin === "[doc]"); - const otherCompletions = completions.filter( - (c) => c.origin !== "dataTree" && c.origin !== "[doc]", - ); return [ - ...docCompletetions, - ...sameDataType, - ...otherDataType, - ...otherCompletions, + ...completionType.CONTEXT, + ...completionType.MATCHING_TYPE, + ...completionType.DATA_TREE, + ...completionType.LIBRARY, + ...completionType.JS, + ...completionType.OTHER, ]; } @@ -306,21 +406,23 @@ class TernServer { else return "OBJECT"; } - getExpectedDataType() { - const type = this.expected; + getExpectedDataType(): DataType { + const type = this.entityInformation.expectedType; + if (type === undefined) return "UNKNOWN"; if ( type === "Array" || type === "Array" || type === "Array<{ label: string, value: string }>" || type === "Array" - ) + ) { return "ARRAY"; + } if (type === "boolean") return "BOOLEAN"; if (type === "string") return "STRING"; if (type === "number") return "NUMBER"; if (type === "object" || type === "JSON") return "OBJECT"; - if (type === undefined) return "UNKNOWN"; - return undefined; + if (type === "Function Call") return "FUNCTION"; + return "UNKNOWN"; } typeToIcon(type: string) { @@ -417,6 +519,7 @@ class TernServer { end?: any; start?: any; file?: any; + includeKeywords?: boolean; }, pos?: CodeMirror.Position, ) { @@ -425,6 +528,7 @@ class TernServer { const allowFragments = !query.fullDocs; if (!allowFragments) delete query.fullDocs; query.lineCharPositions = true; + query.includeKeywords = true; if (!query.end) { const lineValue = this.lineValue(doc); const focusedValue = this.getFocusedDynamicValue(doc); @@ -712,6 +816,20 @@ class TernServer { fadeOut(tooltip: HTMLElement) { this.remove(tooltip); } + + setEntityInformation(entityInformation: HintEntityInformation) { + this.entityInformation = entityInformation; + } } +export const createCompletionHeader = (name: string): Completion => ({ + text: name, + displayText: name, + className: "CodeMirror-hint-header", + data: { doc: "" }, + origin: "", + type: "UNKNOWN", + isHeader: true, +}); + export default new TernServer(); diff --git a/app/client/src/utils/autocomplete/customTreeTypeDefCreator.ts b/app/client/src/utils/autocomplete/customTreeTypeDefCreator.ts index 53a968ef75..6837c5cf99 100644 --- a/app/client/src/utils/autocomplete/customTreeTypeDefCreator.ts +++ b/app/client/src/utils/autocomplete/customTreeTypeDefCreator.ts @@ -1,5 +1,4 @@ -import { generateReactKey } from "utils/generators"; -import { getType, Types } from "utils/TypeHelpers"; +import { generateTypeDef } from "./dataTreeTypeDefCreator"; let extraDefs: any = {}; @@ -17,35 +16,3 @@ export const customTreeTypeDefCreator = ( extraDefs = {}; return { ...def }; }; - -export function generateTypeDef( - obj: any, -): string | Record> { - const type = getType(obj); - switch (type) { - case Types.ARRAY: { - const arrayType = generateTypeDef(obj[0]); - const name = generateReactKey(); - extraDefs[name] = arrayType; - return `[${name}]`; - } - case Types.OBJECT: { - const objType: Record> = {}; - Object.keys(obj).forEach((k) => { - objType[k] = generateTypeDef(obj[k]); - }); - return objType; - } - case Types.STRING: - return "string"; - case Types.NUMBER: - return "number"; - case Types.BOOLEAN: - return "bool"; - case Types.NULL: - case Types.UNDEFINED: - return "?"; - default: - return "?"; - } -} diff --git a/app/client/src/utils/autocomplete/dataTreeTypeDefCreator.test.ts b/app/client/src/utils/autocomplete/dataTreeTypeDefCreator.test.ts index ffcb930046..a5b1ba9b25 100644 --- a/app/client/src/utils/autocomplete/dataTreeTypeDefCreator.test.ts +++ b/app/client/src/utils/autocomplete/dataTreeTypeDefCreator.test.ts @@ -1,7 +1,7 @@ import { generateTypeDef, dataTreeTypeDefCreator, - flattenObjKeys, + flattenDef, } from "utils/autocomplete/dataTreeTypeDefCreator"; import { DataTreeWidget, @@ -72,26 +72,37 @@ describe("dataTreeTypeDefCreator", () => { expect(objType).toStrictEqual(expected); }); - it("flatten object", () => { - const options = { - someNumber: "number", - someString: "string", - someBool: "bool", - nested: { - someExtraNested: "string", + it("flatten def", () => { + const def = { + entity1: { + someNumber: "number", + someString: "string", + someBool: "bool", + nested: { + someExtraNested: "string", + }, }, }; const expected = { + entity1: { + someNumber: "number", + someString: "string", + someBool: "bool", + nested: { + someExtraNested: "string", + }, + }, "entity1.someNumber": "number", "entity1.someString": "string", "entity1.someBool": "bool", "entity1.nested": { someExtraNested: "string", }, + "entity1.nested.someExtraNested": "string", }; - const value = flattenObjKeys(options, "entity1"); + const value = flattenDef(def, "entity1"); expect(value).toStrictEqual(expected); }); }); diff --git a/app/client/src/utils/autocomplete/dataTreeTypeDefCreator.ts b/app/client/src/utils/autocomplete/dataTreeTypeDefCreator.ts index ddb586b78e..e1ca23c021 100644 --- a/app/client/src/utils/autocomplete/dataTreeTypeDefCreator.ts +++ b/app/client/src/utils/autocomplete/dataTreeTypeDefCreator.ts @@ -1,58 +1,55 @@ -import { DataTreeEntity, ENTITY_TYPE } from "entities/DataTree/dataTreeFactory"; +import { DataTreeEntity } from "entities/DataTree/dataTreeFactory"; import _ from "lodash"; -import { generateReactKey } from "utils/generators"; import { entityDefinitions } from "utils/autocomplete/EntityDefinitions"; import { getType, Types } from "utils/TypeHelpers"; import { Def } from "tern"; +import { + isAction, + isAppsmithEntity, + isTrueObject, + isWidget, +} from "workers/evaluationUtils"; +// When there is a complex data type, we store it in extra def and refer to it +// in the def let extraDefs: any = {}; -const skipProperties = ["!doc", "!url", "!type"]; +// Def names are encoded with information about the entity +// This so that we have more info about them +// when sorting results in autocomplete +// DATA_TREE.{entityType}.{entitySubType}.{entityName} +// eg DATA_TREE.WIDGET.TABLE_WIDGET.Table1 +// or DATA_TREE.ACTION.ACTION.Api1 export const dataTreeTypeDefCreator = ( entity: DataTreeEntity, entityName: string, ): { def: Def; name: string } => { - const defName = `DATA_TREE_${entityName}`; - const def: any = { - "!name": defName, - }; - if (entity && "ENTITY_TYPE" in entity) { - if (entity.ENTITY_TYPE === ENTITY_TYPE.WIDGET) { - const widgetType = entity.type; - if (widgetType in entityDefinitions) { - const definition = _.get(entityDefinitions, widgetType); - if (_.isFunction(definition)) { - const data = definition(entity); - const allData = flattenObjKeys(data, entityName); - for (const [key, value] of Object.entries(allData)) { - def[key] = value; - } - def[entityName] = definition(entity); - } else { - def[entityName] = definition; - const allFlattenData = flattenObjKeys(definition, entityName); - for (const [key, value] of Object.entries(allFlattenData)) { - def[key] = value; - } - } + const def: any = {}; + if (isWidget(entity)) { + const widgetType = entity.type; + if (widgetType in entityDefinitions) { + const definition = _.get(entityDefinitions, widgetType); + if (_.isFunction(definition)) { + def[entityName] = definition(entity); + } else { + def[entityName] = definition; } + flattenDef(def, entityName); + def["!name"] = `DATA_TREE.WIDGET.${widgetType}.${entityName}`; } - if (entity.ENTITY_TYPE === ENTITY_TYPE.ACTION) { - const actionDefs = entityDefinitions.ACTION(entity); - def[entityName] = actionDefs; - const finalData = flattenObjKeys(actionDefs, entityName); - for (const [key, value] of Object.entries(finalData)) { - def[key] = value; - } - } - if (entity.ENTITY_TYPE === ENTITY_TYPE.APPSMITH) { - const options: any = generateTypeDef(_.omit(entity, "ENTITY_TYPE")); - def.appsmith = options; - } + } else if (isAction(entity)) { + def[entityName] = entityDefinitions.ACTION(entity); + flattenDef(def, entityName); + def["!name"] = `DATA_TREE.ACTION.ACTION.${entityName}`; + } else if (isAppsmithEntity(entity)) { + def["!name"] = "DATA_TREE.APPSMITH.APPSMITH"; + def.appsmith = generateTypeDef(_.omit(entity, "ENTITY_TYPE")); } - def["!define"] = { ...extraDefs }; - extraDefs = {}; - return { def, name: defName }; + if (Object.keys(extraDefs)) { + def["!define"] = { ...extraDefs }; + extraDefs = {}; + } + return { def, name: def["!name"] }; }; export function generateTypeDef( @@ -61,10 +58,8 @@ export function generateTypeDef( const type = getType(obj); switch (type) { case Types.ARRAY: { - const arrayType = generateTypeDef(obj[0]); - const name = generateReactKey(); - extraDefs[name] = arrayType; - return `[${name}]`; + const arrayType = getType(obj[0]); + return `[${arrayType}]`; } case Types.OBJECT: { const objType: Record> = {}; @@ -87,16 +82,21 @@ export function generateTypeDef( } } -export const flattenObjKeys = ( - options: any, - parentKey: string, - results: any = {}, -): any => { - const r: any = results; - for (const [key, value] of Object.entries(options)) { - if (!skipProperties.includes(key)) { - r[parentKey + "." + key] = value; - } +export const flattenDef = (def: Def, entityName: string): Def => { + const flattenedDef = def; + if (isTrueObject(def[entityName])) { + Object.entries(def[entityName]).forEach(([key, value]) => { + if (!key.startsWith("!")) { + flattenedDef[`${entityName}.${key}`] = value; + if (isTrueObject(value)) { + Object.entries(value).forEach(([subKey, subValue]) => { + if (!subKey.startsWith("!")) { + flattenedDef[`${entityName}.${key}.${subKey}`] = subValue; + } + }); + } + } + }); } - return r; + return flattenedDef; }; diff --git a/app/client/src/utils/autocomplete/dataTypeSortRules.ts b/app/client/src/utils/autocomplete/dataTypeSortRules.ts new file mode 100644 index 0000000000..9a838e82ad --- /dev/null +++ b/app/client/src/utils/autocomplete/dataTypeSortRules.ts @@ -0,0 +1,100 @@ +import { DataType } from "utils/autocomplete/TernServer"; + +const RULES: Record> = { + STRING: [ + "INPUT_WIDGET.text", + "RICH_TEXT_EDITOR_WIDGET.text", + "DROP_DOWN_WIDGET.selectedOptionValue", + "DATE_PICKER_WIDGET_2.selectedDate", + "DATE_PICKER_WIDGET_2.formattedDate", + "TABLE_WIDGET.pageNo", + "TABLE_WIDGET.searchText", + "TABLE_WIDGET.pageSize", + "TABS_WIDGET.selectedTab", + "TABLE_WIDGET.selectedRowIndex", + "IFRAME_WIDGET.source", + "IFRAME_WIDGET.title", + "DROP_DOWN_WIDGET.selectedOptionLabel", + "BUTTON_WIDGET.recaptchaToken", + "IMAGE_WIDGET.image", + "TEXT_WIDGET.text", + "BUTTON_WIDGET.text", + "FORM_BUTTON_WIDGET.text", + "CHART_WIDGET.xAxisName", + "CHART_WIDGET.yAxisName", + "CONTAINER_WIDGET.backgroundColor", + "BUTTON_WIDGET.googleRecaptchaKey", + ], + NUMBER: [ + "TABLE_WIDGET.pageNo", + "TABLE_WIDGET.pageSize", + "INPUT_WIDGET.text", + "TABLE_WIDGET.selectedRowIndex", + "RICH_TEXT_EDITOR_WIDGET.text", + "DROP_DOWN_WIDGET.selectedOptionValue", + "DATE_PICKER_WIDGET_2.selectedDate", + "DATE_PICKER_WIDGET_2.formattedDate", + "TABLE_WIDGET.searchText", + "TABS_WIDGET.selectedTab", + "IFRAME_WIDGET.source", + "IFRAME_WIDGET.title", + "DROP_DOWN_WIDGET.selectedOptionLabel", + "IMAGE_WIDGET.image", + "TEXT_WIDGET.text", + "BUTTON_WIDGET.text", + "FORM_BUTTON_WIDGET.text", + "CHART_WIDGET.xAxisName", + "CHART_WIDGET.yAxisName", + "CONTAINER_WIDGET.backgroundColor", + ], + OBJECT: ["ACTION.data"], + ARRAY: ["ACTION.data"], + BOOLEAN: [ + "CHECKBOX_WIDGET.isChecked", + "SWITCH_WIDGET.isSwitchedOn", + "CONTAINER_WIDGET.isVisible", + "INPUT_WIDGET.isVisible", + "TABLE_WIDGET.isVisible", + "DROP_DOWN_WIDGET.isVisible", + "IMAGE_WIDGET.isVisible", + "TEXT_WIDGET.isVisible", + "BUTTON_WIDGET.isVisible", + "DATE_PICKER_WIDGET2.isVisible", + "CHECKBOX_WIDGET.isVisible", + "SWITCH_WIDGET.isVisible", + "RADIO_GROUP_WIDGET.isVisible", + "TABS_WIDGET.isVisible", + "MODAL_WIDGET.isVisible", + "RICH_TEXT_EDITOR_WIDGET.isVisible", + "FORM_WIDGET.isVisible", + "FORM_BUTTON_WIDGET.isVisible", + "FILE_PICKER_WIDGET.isVisible", + "LIST_WIDGET.isVisible", + "RATE_WIDGET.isVisible", + "IFRAME_WIDGET.isVisible", + "DIVIDER_WIDGET.isVisible", + "INPUT_WIDGET.isValid", + "INPUT_WIDGET.isDisabled", + "DROP_DOWN_WIDGET.isDisabled", + "BUTTON_WIDGET.isDisabled", + "DATE_PICKER_WIDGET2.isDisabled", + "CHECKBOX_WIDGET.isDisabled", + "SWITCH_WIDGET.isDisabled", + "RICH_TEXT_EDITOR_WIDGET.isDisabled", + "FORM_BUTTON_WIDGET.isDisabled", + "FILE_PICKER_WIDGET.isRequired", + "MODAL_WIDGET.isOpen", + ], + FUNCTION: [ + "ACTION.run()", + "storeValue()", + "showAlert()", + "navigateTo()", + "resetWidget()", + "download()", + "showModal()", + ], + UNKNOWN: [], +}; + +export default RULES; diff --git a/app/client/src/workers/evaluationSubstitution.test.ts b/app/client/src/workers/evaluationSubstitution.test.ts index 7c94f46eab..64e266eac7 100644 --- a/app/client/src/workers/evaluationSubstitution.test.ts +++ b/app/client/src/workers/evaluationSubstitution.test.ts @@ -306,7 +306,6 @@ describe("substituteDynamicBindingWithValues", () => { "wrongBinding": undefined, "emptyBinding": null, }`; - debugger; const result = substituteDynamicBindingWithValues( binding, subBindings, diff --git a/app/client/src/workers/evaluationUtils.test.ts b/app/client/src/workers/evaluationUtils.test.ts index 6223a739a8..6267db5c31 100644 --- a/app/client/src/workers/evaluationUtils.test.ts +++ b/app/client/src/workers/evaluationUtils.test.ts @@ -58,6 +58,7 @@ describe("Add functions", () => { responseMeta: { isExecutionSuccess: false }, ENTITY_TYPE: ENTITY_TYPE.ACTION, dependencyMap: {}, + logBlackList: {}, }, }; const dataTreeWithFunctions = addFunctions(dataTree); diff --git a/app/client/src/workers/evaluationUtils.ts b/app/client/src/workers/evaluationUtils.ts index 94ccdc0dc3..2efb3cc933 100644 --- a/app/client/src/workers/evaluationUtils.ts +++ b/app/client/src/workers/evaluationUtils.ts @@ -14,6 +14,7 @@ import { Diff } from "deep-diff"; import { DataTree, DataTreeAction, + DataTreeAppsmith, DataTreeEntity, DataTreeWidget, ENTITY_TYPE, @@ -230,6 +231,16 @@ export function isAction(entity: DataTreeEntity): entity is DataTreeAction { ); } +export function isAppsmithEntity( + entity: DataTreeEntity, +): entity is DataTreeAppsmith { + return ( + typeof entity === "object" && + "ENTITY_TYPE" in entity && + entity.ENTITY_TYPE === ENTITY_TYPE.APPSMITH + ); +} + // We need to remove functions from data tree to avoid any unexpected identifier while JSON parsing // Check issue https://github.com/appsmithorg/appsmith/issues/719 export const removeFunctions = (value: any) => { @@ -577,7 +588,9 @@ export const addErrorToEntityProperty = ( // For the times when you need to know if something truly an object like { a: 1, b: 2} // typeof, lodash.isObject and others will return false positives for things like array, null, etc -export const isTrueObject = (item: unknown): boolean => { +export const isTrueObject = ( + item: unknown, +): item is Record => { return Object.prototype.toString.call(item) === "[object Object]"; }; diff --git a/coverage-summary.json b/coverage-summary.json index 4b59c52bda..c745711b35 100644 --- a/coverage-summary.json +++ b/coverage-summary.json @@ -1,350 +1,717 @@ -{"total": {"lines":{"total":14844,"covered":6641,"skipped":0,"pct":44.74},"statements":{"total":16197,"covered":6850,"skipped":0,"pct":42.29},"functions":{"total":3740,"covered":748,"skipped":0,"pct":20},"branches":{"total":7631,"covered":1999,"skipped":0,"pct":26.2}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/store.ts": {"lines":{"total":17,"covered":14,"skipped":0,"pct":82.35},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":17,"covered":14,"skipped":0,"pct":82.35},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/actionActions.ts": {"lines":{"total":54,"covered":30,"skipped":0,"pct":55.56},"functions":{"total":27,"covered":0,"skipped":0,"pct":0},"statements":{"total":57,"covered":30,"skipped":0,"pct":52.63},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/applicationActions.ts": {"lines":{"total":17,"covered":9,"skipped":0,"pct":52.94},"functions":{"total":8,"covered":0,"skipped":0,"pct":0},"statements":{"total":17,"covered":9,"skipped":0,"pct":52.94},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/batchActions.ts": {"lines":{"total":3,"covered":3,"skipped":0,"pct":100},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":5,"covered":3,"skipped":0,"pct":60},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/controlActions.tsx": {"lines":{"total":9,"covered":5,"skipped":0,"pct":55.56},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":9,"covered":5,"skipped":0,"pct":55.56},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/datasourceActions.ts": {"lines":{"total":33,"covered":18,"skipped":0,"pct":54.55},"functions":{"total":16,"covered":0,"skipped":0,"pct":0},"statements":{"total":34,"covered":18,"skipped":0,"pct":52.94},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/errorActions.ts": {"lines":{"total":5,"covered":3,"skipped":0,"pct":60},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":5,"covered":3,"skipped":0,"pct":60},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/explorerActions.ts": {"lines":{"total":3,"covered":2,"skipped":0,"pct":66.67},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":3,"covered":2,"skipped":0,"pct":66.67},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/globalSearchActions.ts": {"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":15,"covered":8,"skipped":0,"pct":53.33},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/helpActions.ts": {"lines":{"total":5,"covered":3,"skipped":0,"pct":60},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":5,"covered":3,"skipped":0,"pct":60},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/initActions.ts": {"lines":{"total":5,"covered":4,"skipped":0,"pct":80},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":4,"skipped":0,"pct":57.14},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/metaActions.ts": {"lines":{"total":8,"covered":5,"skipped":0,"pct":62.5},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":5,"skipped":0,"pct":62.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/onboardingActions.ts": {"lines":{"total":21,"covered":12,"skipped":0,"pct":57.14},"functions":{"total":10,"covered":1,"skipped":0,"pct":10},"statements":{"total":21,"covered":12,"skipped":0,"pct":57.14},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/orgActions.ts": {"lines":{"total":19,"covered":10,"skipped":0,"pct":52.63},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":19,"covered":10,"skipped":0,"pct":52.63},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/pageActions.tsx": {"lines":{"total":43,"covered":23,"skipped":0,"pct":53.49},"functions":{"total":21,"covered":0,"skipped":0,"pct":0},"statements":{"total":46,"covered":23,"skipped":0,"pct":50},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/pluginActions.ts": {"lines":{"total":7,"covered":5,"skipped":0,"pct":71.43},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":9,"covered":5,"skipped":0,"pct":55.56},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/propertyPaneActions.ts": {"lines":{"total":3,"covered":2,"skipped":0,"pct":66.67},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":3,"covered":2,"skipped":0,"pct":66.67},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/releasesActions.ts": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":3,"covered":2,"skipped":0,"pct":66.67},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/userActions.ts": {"lines":{"total":14,"covered":13,"skipped":0,"pct":92.86},"functions":{"total":11,"covered":0,"skipped":0,"pct":0},"statements":{"total":24,"covered":13,"skipped":0,"pct":54.17},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/widgetActions.tsx": {"lines":{"total":37,"covered":19,"skipped":0,"pct":51.35},"functions":{"total":16,"covered":0,"skipped":0,"pct":0},"statements":{"total":37,"covered":19,"skipped":0,"pct":51.35},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/actions/widgetSidebarActions.tsx": {"lines":{"total":8,"covered":5,"skipped":0,"pct":62.5},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":5,"skipped":0,"pct":62.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/api/ActionAPI.tsx": {"lines":{"total":43,"covered":21,"skipped":0,"pct":48.84},"functions":{"total":15,"covered":1,"skipped":0,"pct":6.67},"statements":{"total":44,"covered":22,"skipped":0,"pct":50},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/api/Api.ts": {"lines":{"total":24,"covered":18,"skipped":0,"pct":75},"functions":{"total":5,"covered":2,"skipped":0,"pct":40},"statements":{"total":24,"covered":18,"skipped":0,"pct":75},"branches":{"total":8,"covered":1,"skipped":0,"pct":12.5}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/api/ApiUtils.ts": {"lines":{"total":48,"covered":25,"skipped":0,"pct":52.08},"functions":{"total":5,"covered":4,"skipped":0,"pct":80},"statements":{"total":49,"covered":26,"skipped":0,"pct":53.06},"branches":{"total":35,"covered":12,"skipped":0,"pct":34.29}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/api/ApplicationApi.tsx": {"lines":{"total":36,"covered":22,"skipped":0,"pct":61.11},"functions":{"total":17,"covered":2,"skipped":0,"pct":11.76},"statements":{"total":40,"covered":23,"skipped":0,"pct":57.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/api/CollectionApi.ts": {"lines":{"total":7,"covered":6,"skipped":0,"pct":85.71},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":8,"covered":7,"skipped":0,"pct":87.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/api/DatasourcesApi.ts": {"lines":{"total":19,"covered":12,"skipped":0,"pct":63.16},"functions":{"total":7,"covered":1,"skipped":0,"pct":14.29},"statements":{"total":20,"covered":13,"skipped":0,"pct":65},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/api/ImportApi.ts": {"lines":{"total":8,"covered":6,"skipped":0,"pct":75},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":9,"covered":7,"skipped":0,"pct":77.78},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/api/OrgApi.ts": {"lines":{"total":31,"covered":17,"skipped":0,"pct":54.84},"functions":{"total":12,"covered":1,"skipped":0,"pct":8.33},"statements":{"total":32,"covered":18,"skipped":0,"pct":56.25},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/api/PageApi.tsx": {"lines":{"total":38,"covered":21,"skipped":0,"pct":55.26},"functions":{"total":14,"covered":1,"skipped":0,"pct":7.14},"statements":{"total":40,"covered":22,"skipped":0,"pct":55},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/api/PluginApi.ts": {"lines":{"total":9,"covered":7,"skipped":0,"pct":77.78},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":10,"covered":8,"skipped":0,"pct":80},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/api/ProvidersApi.ts": {"lines":{"total":33,"covered":18,"skipped":0,"pct":54.55},"functions":{"total":12,"covered":1,"skipped":0,"pct":8.33},"statements":{"total":35,"covered":20,"skipped":0,"pct":57.14},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/api/ReleasesAPI.tsx": {"lines":{"total":7,"covered":6,"skipped":0,"pct":85.71},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":8,"covered":7,"skipped":0,"pct":87.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/api/UserApi.tsx": {"lines":{"total":36,"covered":25,"skipped":0,"pct":69.44},"functions":{"total":12,"covered":1,"skipped":0,"pct":8.33},"statements":{"total":37,"covered":26,"skipped":0,"pct":70.27},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/api/WidgetSidebarApi.tsx": {"lines":{"total":7,"covered":6,"skipped":0,"pct":85.71},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":8,"covered":7,"skipped":0,"pct":87.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/AppIcon.tsx": {"lines":{"total":277,"covered":113,"skipped":0,"pct":40.79},"functions":{"total":8,"covered":8,"skipped":0,"pct":100},"statements":{"total":278,"covered":114,"skipped":0,"pct":41.01},"branches":{"total":91,"covered":10,"skipped":0,"pct":10.99}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/Button.tsx": {"lines":{"total":125,"covered":115,"skipped":0,"pct":92},"functions":{"total":43,"covered":38,"skipped":0,"pct":88.37},"statements":{"total":133,"covered":117,"skipped":0,"pct":87.97},"branches":{"total":93,"covered":58,"skipped":0,"pct":62.37}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/Callout.tsx": {"lines":{"total":23,"covered":10,"skipped":0,"pct":43.48},"functions":{"total":13,"covered":0,"skipped":0,"pct":0},"statements":{"total":23,"covered":10,"skipped":0,"pct":43.48},"branches":{"total":20,"covered":4,"skipped":0,"pct":20}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/Checkbox.tsx": {"lines":{"total":34,"covered":11,"skipped":0,"pct":32.35},"functions":{"total":16,"covered":0,"skipped":0,"pct":0},"statements":{"total":38,"covered":11,"skipped":0,"pct":28.95},"branches":{"total":28,"covered":6,"skipped":0,"pct":21.43}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/ColorSelector.tsx": {"lines":{"total":27,"covered":7,"skipped":0,"pct":25.93},"functions":{"total":15,"covered":0,"skipped":0,"pct":0},"statements":{"total":29,"covered":7,"skipped":0,"pct":24.14},"branches":{"total":18,"covered":4,"skipped":0,"pct":22.22}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/DialogComponent.tsx": {"lines":{"total":32,"covered":31,"skipped":0,"pct":96.88},"functions":{"total":21,"covered":20,"skipped":0,"pct":95.24},"statements":{"total":34,"covered":33,"skipped":0,"pct":97.06},"branches":{"total":14,"covered":13,"skipped":0,"pct":92.86}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/Dropdown.tsx": {"lines":{"total":67,"covered":16,"skipped":0,"pct":23.88},"functions":{"total":38,"covered":0,"skipped":0,"pct":0},"statements":{"total":73,"covered":16,"skipped":0,"pct":21.92},"branches":{"total":76,"covered":16,"skipped":0,"pct":21.05}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/EditableText.tsx": {"lines":{"total":99,"covered":21,"skipped":0,"pct":21.21},"functions":{"total":33,"covered":2,"skipped":0,"pct":6.06},"statements":{"total":112,"covered":21,"skipped":0,"pct":18.75},"branches":{"total":98,"covered":10,"skipped":0,"pct":10.2}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/Icon.tsx": {"lines":{"total":181,"covered":94,"skipped":0,"pct":51.93},"functions":{"total":9,"covered":9,"skipped":0,"pct":100},"statements":{"total":181,"covered":94,"skipped":0,"pct":51.93},"branches":{"total":73,"covered":22,"skipped":0,"pct":30.14}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/IconSelector.tsx": {"lines":{"total":39,"covered":11,"skipped":0,"pct":28.21},"functions":{"total":17,"covered":0,"skipped":0,"pct":0},"statements":{"total":42,"covered":11,"skipped":0,"pct":26.19},"branches":{"total":36,"covered":4,"skipped":0,"pct":11.11}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/Menu.tsx": {"lines":{"total":13,"covered":10,"skipped":0,"pct":76.92},"functions":{"total":5,"covered":2,"skipped":0,"pct":40},"statements":{"total":13,"covered":10,"skipped":0,"pct":76.92},"branches":{"total":8,"covered":7,"skipped":0,"pct":87.5}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/MenuDivider.tsx": {"lines":{"total":6,"covered":3,"skipped":0,"pct":50},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":3,"skipped":0,"pct":50},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/MenuItem.tsx": {"lines":{"total":23,"covered":23,"skipped":0,"pct":100},"functions":{"total":9,"covered":9,"skipped":0,"pct":100},"statements":{"total":23,"covered":23,"skipped":0,"pct":100},"branches":{"total":32,"covered":20,"skipped":0,"pct":62.5}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/MultiselectDropdown.tsx": {"lines":{"total":79,"covered":16,"skipped":0,"pct":20.25},"functions":{"total":40,"covered":0,"skipped":0,"pct":0},"statements":{"total":84,"covered":16,"skipped":0,"pct":19.05},"branches":{"total":84,"covered":14,"skipped":0,"pct":16.67}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/ScrollIndicator.tsx": {"lines":{"total":37,"covered":8,"skipped":0,"pct":21.62},"functions":{"total":15,"covered":0,"skipped":0,"pct":0},"statements":{"total":45,"covered":8,"skipped":0,"pct":17.78},"branches":{"total":32,"covered":4,"skipped":0,"pct":12.5}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/SearchInput.tsx": {"lines":{"total":43,"covered":36,"skipped":0,"pct":83.72},"functions":{"total":25,"covered":19,"skipped":0,"pct":76},"statements":{"total":48,"covered":41,"skipped":0,"pct":85.42},"branches":{"total":37,"covered":21,"skipped":0,"pct":56.76}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/Spinner.tsx": {"lines":{"total":15,"covered":10,"skipped":0,"pct":66.67},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":15,"covered":10,"skipped":0,"pct":66.67},"branches":{"total":8,"covered":8,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/Tabs.tsx": {"lines":{"total":42,"covered":11,"skipped":0,"pct":26.19},"functions":{"total":31,"covered":0,"skipped":0,"pct":0},"statements":{"total":42,"covered":11,"skipped":0,"pct":26.19},"branches":{"total":18,"covered":8,"skipped":0,"pct":44.44}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/TagInputComponent.tsx": {"lines":{"total":58,"covered":8,"skipped":0,"pct":13.79},"functions":{"total":17,"covered":0,"skipped":0,"pct":0},"statements":{"total":62,"covered":8,"skipped":0,"pct":12.9},"branches":{"total":38,"covered":2,"skipped":0,"pct":5.26}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/Text.tsx": {"lines":{"total":41,"covered":35,"skipped":0,"pct":85.37},"functions":{"total":13,"covered":13,"skipped":0,"pct":100},"statements":{"total":42,"covered":36,"skipped":0,"pct":85.71},"branches":{"total":26,"covered":19,"skipped":0,"pct":73.08}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/TextInput.tsx": {"lines":{"total":67,"covered":16,"skipped":0,"pct":23.88},"functions":{"total":18,"covered":0,"skipped":0,"pct":0},"statements":{"total":70,"covered":16,"skipped":0,"pct":22.86},"branches":{"total":45,"covered":6,"skipped":0,"pct":13.33}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/Toast.tsx": {"lines":{"total":44,"covered":14,"skipped":0,"pct":31.82},"functions":{"total":17,"covered":0,"skipped":0,"pct":0},"statements":{"total":44,"covered":14,"skipped":0,"pct":31.82},"branches":{"total":48,"covered":6,"skipped":0,"pct":12.5}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/Tooltip.tsx": {"lines":{"total":7,"covered":6,"skipped":0,"pct":85.71},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":6,"skipped":0,"pct":85.71},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/ads/common.tsx": {"lines":{"total":41,"covered":27,"skipped":0,"pct":65.85},"functions":{"total":7,"covered":4,"skipped":0,"pct":57.14},"statements":{"total":41,"covered":27,"skipped":0,"pct":65.85},"branches":{"total":13,"covered":7,"skipped":0,"pct":53.85}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/designSystems/appsmith/CenteredWrapper.tsx": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/designSystems/appsmith/Dropdown.tsx": {"lines":{"total":17,"covered":7,"skipped":0,"pct":41.18},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":17,"covered":7,"skipped":0,"pct":41.18},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/designSystems/appsmith/PositionedContainer.tsx": {"lines":{"total":14,"covered":9,"skipped":0,"pct":64.29},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":14,"covered":9,"skipped":0,"pct":64.29},"branches":{"total":10,"covered":2,"skipped":0,"pct":20}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/designSystems/appsmith/TextInputComponent.tsx": {"lines":{"total":36,"covered":32,"skipped":0,"pct":88.89},"functions":{"total":11,"covered":9,"skipped":0,"pct":81.82},"statements":{"total":41,"covered":37,"skipped":0,"pct":90.24},"branches":{"total":27,"covered":14,"skipped":0,"pct":51.85}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/designSystems/appsmith/TableComponent/CommonUtilities.ts": {"lines":{"total":12,"covered":9,"skipped":0,"pct":75},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":12,"covered":9,"skipped":0,"pct":75},"branches":{"total":31,"covered":9,"skipped":0,"pct":29.03}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/designSystems/appsmith/TableComponent/Constants.ts": {"lines":{"total":59,"covered":50,"skipped":0,"pct":84.75},"functions":{"total":22,"covered":20,"skipped":0,"pct":90.91},"statements":{"total":59,"covered":50,"skipped":0,"pct":84.75},"branches":{"total":32,"covered":23,"skipped":0,"pct":71.88}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/designSystems/appsmith/TableComponent/TableHelpers.ts": {"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":14,"covered":14,"skipped":0,"pct":100},"branches":{"total":4,"covered":3,"skipped":0,"pct":75}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/designSystems/appsmith/help/DocumentationSearch.tsx": {"lines":{"total":74,"covered":47,"skipped":0,"pct":63.51},"functions":{"total":14,"covered":1,"skipped":0,"pct":7.14},"statements":{"total":79,"covered":48,"skipped":0,"pct":60.76},"branches":{"total":72,"covered":23,"skipped":0,"pct":31.94}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/designSystems/appsmith/help/HelpModal.tsx": {"lines":{"total":45,"covered":34,"skipped":0,"pct":75.56},"functions":{"total":7,"covered":5,"skipped":0,"pct":71.43},"statements":{"total":54,"covered":37,"skipped":0,"pct":68.52},"branches":{"total":15,"covered":10,"skipped":0,"pct":66.67}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/designSystems/blueprint/ButtonComponent.tsx": {"lines":{"total":65,"covered":24,"skipped":0,"pct":36.92},"functions":{"total":20,"covered":1,"skipped":0,"pct":5},"statements":{"total":71,"covered":24,"skipped":0,"pct":33.8},"branches":{"total":51,"covered":6,"skipped":0,"pct":11.76}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/designSystems/blueprint/ModalComponent.tsx": {"lines":{"total":22,"covered":8,"skipped":0,"pct":36.36},"functions":{"total":11,"covered":0,"skipped":0,"pct":0},"statements":{"total":22,"covered":8,"skipped":0,"pct":36.36},"branches":{"total":18,"covered":4,"skipped":0,"pct":22.22}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/designSystems/blueprint/TextComponent.tsx": {"lines":{"total":31,"covered":13,"skipped":0,"pct":41.94},"functions":{"total":11,"covered":1,"skipped":0,"pct":9.09},"statements":{"total":32,"covered":14,"skipped":0,"pct":43.75},"branches":{"total":60,"covered":6,"skipped":0,"pct":10}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/ApiResponseView.tsx": {"lines":{"total":61,"covered":34,"skipped":0,"pct":55.74},"functions":{"total":16,"covered":0,"skipped":0,"pct":0},"statements":{"total":65,"covered":34,"skipped":0,"pct":52.31},"branches":{"total":88,"covered":22,"skipped":0,"pct":25}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/Button.tsx": {"lines":{"total":27,"covered":25,"skipped":0,"pct":92.59},"functions":{"total":11,"covered":10,"skipped":0,"pct":90.91},"statements":{"total":28,"covered":26,"skipped":0,"pct":92.86},"branches":{"total":43,"covered":24,"skipped":0,"pct":55.81}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/Divider.tsx": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/DragLayerComponent.tsx": {"lines":{"total":48,"covered":12,"skipped":0,"pct":25},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":52,"covered":12,"skipped":0,"pct":23.08},"branches":{"total":42,"covered":2,"skipped":0,"pct":4.76}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/DraggableComponent.tsx": {"lines":{"total":51,"covered":12,"skipped":0,"pct":23.53},"functions":{"total":14,"covered":0,"skipped":0,"pct":0},"statements":{"total":56,"covered":12,"skipped":0,"pct":21.43},"branches":{"total":38,"covered":4,"skipped":0,"pct":10.53}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/DropTargetComponent.tsx": {"lines":{"total":88,"covered":16,"skipped":0,"pct":18.18},"functions":{"total":16,"covered":0,"skipped":0,"pct":0},"statements":{"total":98,"covered":16,"skipped":0,"pct":16.33},"branches":{"total":75,"covered":2,"skipped":0,"pct":2.67}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/DropTargetUtils.ts": {"lines":{"total":9,"covered":2,"skipped":0,"pct":22.22},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":9,"covered":2,"skipped":0,"pct":22.22},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/Dropzone.tsx": {"lines":{"total":32,"covered":13,"skipped":0,"pct":40.63},"functions":{"total":13,"covered":0,"skipped":0,"pct":0},"statements":{"total":42,"covered":13,"skipped":0,"pct":30.95},"branches":{"total":10,"covered":4,"skipped":0,"pct":40}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/EditableText.tsx": {"lines":{"total":58,"covered":17,"skipped":0,"pct":29.31},"functions":{"total":16,"covered":1,"skipped":0,"pct":6.25},"statements":{"total":63,"covered":17,"skipped":0,"pct":26.98},"branches":{"total":47,"covered":8,"skipped":0,"pct":17.02}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/EditorContextProvider.tsx": {"lines":{"total":22,"covered":11,"skipped":0,"pct":50},"functions":{"total":10,"covered":0,"skipped":0,"pct":0},"statements":{"total":22,"covered":11,"skipped":0,"pct":50},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/ErrorBoundry.tsx": {"lines":{"total":19,"covered":11,"skipped":0,"pct":57.89},"functions":{"total":7,"covered":1,"skipped":0,"pct":14.29},"statements":{"total":21,"covered":12,"skipped":0,"pct":57.14},"branches":{"total":8,"covered":4,"skipped":0,"pct":50}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/ErrorTooltip.tsx": {"lines":{"total":9,"covered":9,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":9,"covered":9,"skipped":0,"pct":100},"branches":{"total":6,"covered":5,"skipped":0,"pct":83.33}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/FormLabel.tsx": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/HelperTooltip.tsx": {"lines":{"total":9,"covered":8,"skipped":0,"pct":88.89},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":9,"covered":8,"skipped":0,"pct":88.89},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/LoadingOverlayScreen.tsx": {"lines":{"total":5,"covered":3,"skipped":0,"pct":60},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":5,"covered":3,"skipped":0,"pct":60},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/ReadOnlyEditor.tsx": {"lines":{"total":7,"covered":5,"skipped":0,"pct":71.43},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":5,"skipped":0,"pct":71.43},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/RequestView.tsx": {"lines":{"total":31,"covered":9,"skipped":0,"pct":29.03},"functions":{"total":16,"covered":0,"skipped":0,"pct":0},"statements":{"total":37,"covered":9,"skipped":0,"pct":24.32},"branches":{"total":12,"covered":6,"skipped":0,"pct":50}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/ResizableComponent.tsx": {"lines":{"total":79,"covered":17,"skipped":0,"pct":21.52},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":81,"covered":17,"skipped":0,"pct":20.99},"branches":{"total":58,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/ResizableUtils.tsx": {"lines":{"total":11,"covered":6,"skipped":0,"pct":54.55},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":6,"skipped":0,"pct":54.55},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/ResizeStyledComponents.tsx": {"lines":{"total":19,"covered":18,"skipped":0,"pct":94.74},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":19,"covered":18,"skipped":0,"pct":94.74},"branches":{"total":28,"covered":26,"skipped":0,"pct":92.86}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/Spinner.tsx": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/CodeEditor/BindingPrompt.tsx": {"lines":{"total":20,"covered":6,"skipped":0,"pct":30},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":20,"covered":6,"skipped":0,"pct":30},"branches":{"total":14,"covered":4,"skipped":0,"pct":28.57}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/CodeEditor/BindingPromptHelper.ts": {"lines":{"total":3,"covered":3,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":3,"covered":3,"skipped":0,"pct":100},"branches":{"total":8,"covered":7,"skipped":0,"pct":87.5}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/CodeEditor/EditorConfig.ts": {"lines":{"total":22,"covered":22,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":22,"covered":22,"skipped":0,"pct":100},"branches":{"total":10,"covered":10,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/CodeEditor/EvaluatedValuePopup.tsx": {"lines":{"total":57,"covered":20,"skipped":0,"pct":35.09},"functions":{"total":21,"covered":0,"skipped":0,"pct":0},"statements":{"total":59,"covered":20,"skipped":0,"pct":33.9},"branches":{"total":44,"covered":14,"skipped":0,"pct":31.82}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/CodeEditor/codeEditorUtils.ts": {"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":8,"covered":8,"skipped":0,"pct":100},"branches":{"total":8,"covered":7,"skipped":0,"pct":87.5}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/CodeEditor/hintHelpers.ts": {"lines":{"total":40,"covered":35,"skipped":0,"pct":87.5},"functions":{"total":7,"covered":3,"skipped":0,"pct":42.86},"statements":{"total":41,"covered":36,"skipped":0,"pct":87.8},"branches":{"total":12,"covered":11,"skipped":0,"pct":91.67}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/CodeEditor/index.tsx": {"lines":{"total":176,"covered":44,"skipped":0,"pct":25},"functions":{"total":30,"covered":1,"skipped":0,"pct":3.33},"statements":{"total":187,"covered":45,"skipped":0,"pct":24.06},"branches":{"total":111,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/CodeEditor/markHelpers.ts": {"lines":{"total":10,"covered":2,"skipped":0,"pct":20},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":2,"skipped":0,"pct":20},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/CodeEditor/modes.ts": {"lines":{"total":12,"covered":9,"skipped":0,"pct":75},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":12,"covered":9,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/CodeEditor/styledComponents.ts": {"lines":{"total":64,"covered":10,"skipped":0,"pct":15.63},"functions":{"total":44,"covered":0,"skipped":0,"pct":0},"statements":{"total":66,"covered":10,"skipped":0,"pct":15.15},"branches":{"total":97,"covered":8,"skipped":0,"pct":8.25}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/GlobalSearch/parseDocumentationContent.ts": {"lines":{"total":62,"covered":58,"skipped":0,"pct":93.55},"functions":{"total":10,"covered":9,"skipped":0,"pct":90},"statements":{"total":64,"covered":59,"skipped":0,"pct":92.19},"branches":{"total":34,"covered":20,"skipped":0,"pct":58.82}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/GlobalSearch/utils.tsx": {"lines":{"total":45,"covered":16,"skipped":0,"pct":35.56},"functions":{"total":10,"covered":1,"skipped":0,"pct":10},"statements":{"total":55,"covered":16,"skipped":0,"pct":29.09},"branches":{"total":55,"covered":2,"skipped":0,"pct":3.64}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/HighlightedCode/index.tsx": {"lines":{"total":19,"covered":12,"skipped":0,"pct":63.16},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":19,"covered":12,"skipped":0,"pct":63.16},"branches":{"total":12,"covered":4,"skipped":0,"pct":33.33}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/HighlightedCode/themes.ts": {"lines":{"total":6,"covered":4,"skipped":0,"pct":66.67},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":4,"skipped":0,"pct":66.67},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/Onboarding/Helper.tsx": {"lines":{"total":62,"covered":29,"skipped":0,"pct":46.77},"functions":{"total":17,"covered":0,"skipped":0,"pct":0},"statements":{"total":66,"covered":29,"skipped":0,"pct":43.94},"branches":{"total":103,"covered":34,"skipped":0,"pct":33.01}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/Onboarding/WelcomeHelper.tsx": {"lines":{"total":27,"covered":24,"skipped":0,"pct":88.89},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":31,"covered":28,"skipped":0,"pct":90.32},"branches":{"total":7,"covered":4,"skipped":0,"pct":57.14}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/Onboarding/utils.tsx": {"lines":{"total":12,"covered":7,"skipped":0,"pct":58.33},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":13,"covered":7,"skipped":0,"pct":53.85},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/WidgetNameComponent/SettingsControl.tsx": {"lines":{"total":26,"covered":17,"skipped":0,"pct":65.38},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.67},"statements":{"total":26,"covered":17,"skipped":0,"pct":65.38},"branches":{"total":13,"covered":8,"skipped":0,"pct":61.54}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/WidgetNameComponent/index.tsx": {"lines":{"total":42,"covered":11,"skipped":0,"pct":26.19},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":44,"covered":11,"skipped":0,"pct":25},"branches":{"total":30,"covered":4,"skipped":0,"pct":13.33}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/form/FormDialogComponent.tsx": {"lines":{"total":14,"covered":12,"skipped":0,"pct":85.71},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.67},"statements":{"total":16,"covered":14,"skipped":0,"pct":87.5},"branches":{"total":5,"covered":2,"skipped":0,"pct":40}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/form/FormFooter.tsx": {"lines":{"total":10,"covered":10,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":10,"covered":10,"skipped":0,"pct":100},"branches":{"total":14,"covered":12,"skipped":0,"pct":85.71}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/form/FormGroup.tsx": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":4,"covered":3,"skipped":0,"pct":75}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/form/FormMessage.tsx": {"lines":{"total":28,"covered":11,"skipped":0,"pct":39.29},"functions":{"total":10,"covered":0,"skipped":0,"pct":0},"statements":{"total":28,"covered":11,"skipped":0,"pct":39.29},"branches":{"total":14,"covered":6,"skipped":0,"pct":42.86}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/form/fields/CheckboxField.tsx": {"lines":{"total":10,"covered":6,"skipped":0,"pct":60},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":6,"skipped":0,"pct":60},"branches":{"total":11,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/form/fields/DropdownField.tsx": {"lines":{"total":9,"covered":6,"skipped":0,"pct":66.67},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":9,"covered":6,"skipped":0,"pct":66.67},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/form/fields/DropdownWrapper.tsx": {"lines":{"total":13,"covered":4,"skipped":0,"pct":30.77},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":15,"covered":4,"skipped":0,"pct":26.67},"branches":{"total":9,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/form/fields/DynamicTextField.tsx": {"lines":{"total":10,"covered":8,"skipped":0,"pct":80},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":11,"covered":9,"skipped":0,"pct":81.82},"branches":{"total":8,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/form/fields/NumberField.tsx": {"lines":{"total":13,"covered":8,"skipped":0,"pct":61.54},"functions":{"total":5,"covered":1,"skipped":0,"pct":20},"statements":{"total":14,"covered":9,"skipped":0,"pct":64.29},"branches":{"total":11,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/form/fields/SelectField.tsx": {"lines":{"total":8,"covered":6,"skipped":0,"pct":75},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":6,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/form/fields/TagListField.tsx": {"lines":{"total":8,"covered":6,"skipped":0,"pct":75},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":6,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/editorComponents/form/fields/TextField.tsx": {"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":9,"covered":9,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/formControls/BaseControl.tsx": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/formControls/CheckboxControl.tsx": {"lines":{"total":13,"covered":10,"skipped":0,"pct":76.92},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":17,"covered":11,"skipped":0,"pct":64.71},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/formControls/DropDownControl.tsx": {"lines":{"total":28,"covered":16,"skipped":0,"pct":57.14},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.67},"statements":{"total":37,"covered":17,"skipped":0,"pct":45.95},"branches":{"total":23,"covered":4,"skipped":0,"pct":17.39}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/formControls/DynamicInputTextControl.tsx": {"lines":{"total":29,"covered":16,"skipped":0,"pct":55.17},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.67},"statements":{"total":34,"covered":17,"skipped":0,"pct":50},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/formControls/DynamicTextFieldControl.tsx": {"lines":{"total":42,"covered":23,"skipped":0,"pct":54.76},"functions":{"total":9,"covered":1,"skipped":0,"pct":11.11},"statements":{"total":47,"covered":24,"skipped":0,"pct":51.06},"branches":{"total":13,"covered":2,"skipped":0,"pct":15.38}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/formControls/FilePickerControl.tsx": {"lines":{"total":46,"covered":21,"skipped":0,"pct":45.65},"functions":{"total":12,"covered":2,"skipped":0,"pct":16.67},"statements":{"total":52,"covered":23,"skipped":0,"pct":44.23},"branches":{"total":10,"covered":4,"skipped":0,"pct":40}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/formControls/FixedKeyInputControl.tsx": {"lines":{"total":29,"covered":12,"skipped":0,"pct":41.38},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.67},"statements":{"total":30,"covered":13,"skipped":0,"pct":43.33},"branches":{"total":9,"covered":2,"skipped":0,"pct":22.22}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/formControls/InputNumberControl.tsx": {"lines":{"total":25,"covered":13,"skipped":0,"pct":52},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.67},"statements":{"total":26,"covered":14,"skipped":0,"pct":53.85},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/formControls/InputTextControl.tsx": {"lines":{"total":38,"covered":16,"skipped":0,"pct":42.11},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.67},"statements":{"total":39,"covered":17,"skipped":0,"pct":43.59},"branches":{"total":18,"covered":2,"skipped":0,"pct":11.11}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/formControls/KeyValueArrayControl.tsx": {"lines":{"total":58,"covered":21,"skipped":0,"pct":36.21},"functions":{"total":13,"covered":1,"skipped":0,"pct":7.69},"statements":{"total":61,"covered":22,"skipped":0,"pct":36.07},"branches":{"total":56,"covered":4,"skipped":0,"pct":7.14}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/formControls/KeyValueInputControl.tsx": {"lines":{"total":26,"covered":16,"skipped":0,"pct":61.54},"functions":{"total":8,"covered":1,"skipped":0,"pct":12.5},"statements":{"total":28,"covered":17,"skipped":0,"pct":60.71},"branches":{"total":12,"covered":2,"skipped":0,"pct":16.67}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/formControls/StyledControls.tsx": {"lines":{"total":57,"covered":22,"skipped":0,"pct":38.6},"functions":{"total":35,"covered":0,"skipped":0,"pct":0},"statements":{"total":57,"covered":22,"skipped":0,"pct":38.6},"branches":{"total":34,"covered":28,"skipped":0,"pct":82.35}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/formControls/SwitchControl.tsx": {"lines":{"total":28,"covered":18,"skipped":0,"pct":64.29},"functions":{"total":7,"covered":2,"skipped":0,"pct":28.57},"statements":{"total":41,"covered":21,"skipped":0,"pct":51.22},"branches":{"total":14,"covered":6,"skipped":0,"pct":42.86}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/formControls/utils.ts": {"lines":{"total":30,"covered":26,"skipped":0,"pct":86.67},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":31,"covered":26,"skipped":0,"pct":83.87},"branches":{"total":23,"covered":18,"skipped":0,"pct":78.26}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/components/propertyControls/StyledControls.tsx": {"lines":{"total":77,"covered":29,"skipped":0,"pct":37.66},"functions":{"total":48,"covered":0,"skipped":0,"pct":0},"statements":{"total":77,"covered":29,"skipped":0,"pct":37.66},"branches":{"total":64,"covered":40,"skipped":0,"pct":62.5}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/configs/index.ts": {"lines":{"total":40,"covered":39,"skipped":0,"pct":97.5},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":43,"covered":41,"skipped":0,"pct":95.35},"branches":{"total":92,"covered":75,"skipped":0,"pct":81.52}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/configs/types.ts": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/ApiConstants.tsx": {"lines":{"total":23,"covered":23,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":23,"covered":23,"skipped":0,"pct":100},"branches":{"total":6,"covered":6,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/ApiEditorConstants.ts": {"lines":{"total":24,"covered":24,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":25,"covered":25,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/AppConstants.ts": {"lines":{"total":18,"covered":8,"skipped":0,"pct":44.44},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":19,"covered":8,"skipped":0,"pct":42.11},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/BindingsConstants.ts": {"lines":{"total":3,"covered":3,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":3,"covered":3,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/Colors.tsx": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/DatasourceEditorConstants.ts": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/DefaultTheme.tsx": {"lines":{"total":82,"covered":62,"skipped":0,"pct":75.61},"functions":{"total":28,"covered":11,"skipped":0,"pct":39.29},"statements":{"total":92,"covered":66,"skipped":0,"pct":71.74},"branches":{"total":36,"covered":29,"skipped":0,"pct":80.56}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/Fonts.tsx": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/HelpConstants.ts": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/IconConstants.tsx": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":14,"covered":11,"skipped":0,"pct":78.57}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/KeyboardShortcuts.ts": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/Layers.tsx": {"lines":{"total":13,"covered":13,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":13,"covered":13,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/OnboardingConstants.tsx": {"lines":{"total":32,"covered":18,"skipped":0,"pct":56.25},"functions":{"total":12,"covered":1,"skipped":0,"pct":8.33},"statements":{"total":32,"covered":18,"skipped":0,"pct":56.25},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/QueryEditorConstants.ts": {"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":8,"covered":8,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/ReduxActionConstants.tsx": {"lines":{"total":3,"covered":3,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":3,"covered":3,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/WidgetConstants.tsx": {"lines":{"total":50,"covered":50,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":50,"covered":50,"skipped":0,"pct":100},"branches":{"total":6,"covered":6,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/WidgetValidation.ts": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/forms.ts": {"lines":{"total":17,"covered":17,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":17,"covered":17,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/messages.ts": {"lines":{"total":238,"covered":171,"skipped":0,"pct":71.85},"functions":{"total":166,"covered":3,"skipped":0,"pct":1.81},"statements":{"total":334,"covered":171,"skipped":0,"pct":51.2},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/routes.ts": {"lines":{"total":104,"covered":81,"skipped":0,"pct":77.88},"functions":{"total":17,"covered":10,"skipped":0,"pct":58.82},"statements":{"total":106,"covered":82,"skipped":0,"pct":77.36},"branches":{"total":82,"covered":26,"skipped":0,"pct":31.71}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/userConstants.ts": {"lines":{"total":3,"covered":3,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":3,"covered":3,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/AppsmithActionConstants/ActionConstants.tsx": {"lines":{"total":44,"covered":44,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":44,"covered":44,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/AppsmithActionConstants/formConfig/ApiEditorConfigs.ts": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/AppsmithActionConstants/formConfig/ApiSettingsConfig.ts": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/constants/AppsmithActionConstants/formConfig/QuerySettingsConfig.ts": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/entities/Action/actionProperties.ts": {"lines":{"total":22,"covered":22,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":24,"covered":24,"skipped":0,"pct":100},"branches":{"total":14,"covered":13,"skipped":0,"pct":92.86}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/entities/Action/index.ts": {"lines":{"total":12,"covered":9,"skipped":0,"pct":75},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.67},"statements":{"total":14,"covered":9,"skipped":0,"pct":64.29},"branches":{"total":8,"covered":4,"skipped":0,"pct":50}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/entities/DataTree/dataTreeAction.ts": {"lines":{"total":7,"covered":3,"skipped":0,"pct":42.86},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":3,"skipped":0,"pct":37.5},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/entities/DataTree/dataTreeFactory.ts": {"lines":{"total":25,"covered":9,"skipped":0,"pct":36},"functions":{"total":5,"covered":2,"skipped":0,"pct":40},"statements":{"total":26,"covered":10,"skipped":0,"pct":38.46},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/entities/DataTree/dataTreeWidget.ts": {"lines":{"total":31,"covered":6,"skipped":0,"pct":19.35},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":33,"covered":6,"skipped":0,"pct":18.18},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/entities/Widget/utils.ts": {"lines":{"total":52,"covered":48,"skipped":0,"pct":92.31},"functions":{"total":10,"covered":8,"skipped":0,"pct":80},"statements":{"total":52,"covered":48,"skipped":0,"pct":92.31},"branches":{"total":54,"covered":38,"skipped":0,"pct":70.37}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/globalStyles/tooltip.ts": {"lines":{"total":10,"covered":5,"skipped":0,"pct":50},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":5,"skipped":0,"pct":50},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/icons/AlertIcons.tsx": {"lines":{"total":11,"covered":7,"skipped":0,"pct":63.64},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":7,"skipped":0,"pct":63.64},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/icons/ControlIcons.tsx": {"lines":{"total":83,"covered":43,"skipped":0,"pct":51.81},"functions":{"total":40,"covered":0,"skipped":0,"pct":0},"statements":{"total":83,"covered":43,"skipped":0,"pct":51.81},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/icons/FormIcons.tsx": {"lines":{"total":17,"covered":9,"skipped":0,"pct":52.94},"functions":{"total":8,"covered":0,"skipped":0,"pct":0},"statements":{"total":17,"covered":9,"skipped":0,"pct":52.94},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/icons/HelpIcons.tsx": {"lines":{"total":18,"covered":12,"skipped":0,"pct":66.67},"functions":{"total":8,"covered":2,"skipped":0,"pct":25},"statements":{"total":18,"covered":12,"skipped":0,"pct":66.67},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/icons/MenuIcons.tsx": {"lines":{"total":37,"covered":20,"skipped":0,"pct":54.05},"functions":{"total":17,"covered":0,"skipped":0,"pct":0},"statements":{"total":37,"covered":20,"skipped":0,"pct":54.05},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/icons/WidgetIcons.tsx": {"lines":{"total":46,"covered":24,"skipped":0,"pct":52.17},"functions":{"total":22,"covered":0,"skipped":0,"pct":0},"statements":{"total":46,"covered":24,"skipped":0,"pct":52.17},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/mockResponses/WidgetConfigResponse.tsx": {"lines":{"total":17,"covered":6,"skipped":0,"pct":35.29},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":17,"covered":6,"skipped":0,"pct":35.29},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/mockResponses/WidgetSidebarResponse.tsx": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/normalizers/CanvasWidgetsNormalizer.tsx": {"lines":{"total":10,"covered":8,"skipped":0,"pct":80},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":10,"covered":8,"skipped":0,"pct":80},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Applications/ApplicationCard.tsx": {"lines":{"total":117,"covered":86,"skipped":0,"pct":73.5},"functions":{"total":33,"covered":16,"skipped":0,"pct":48.48},"statements":{"total":129,"covered":98,"skipped":0,"pct":75.97},"branches":{"total":121,"covered":64,"skipped":0,"pct":52.89}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Applications/ApplicationLoaders.tsx": {"lines":{"total":16,"covered":9,"skipped":0,"pct":56.25},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":16,"covered":9,"skipped":0,"pct":56.25},"branches":{"total":8,"covered":8,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Applications/index.tsx": {"lines":{"total":211,"covered":186,"skipped":0,"pct":88.15},"functions":{"total":94,"covered":77,"skipped":0,"pct":81.91},"statements":{"total":219,"covered":194,"skipped":0,"pct":88.58},"branches":{"total":122,"covered":94,"skipped":0,"pct":77.05}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Applications/permissionHelpers.tsx": {"lines":{"total":10,"covered":10,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":10,"covered":10,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Applications/ProductUpdatesModal/ReleaseComponent.tsx": {"lines":{"total":69,"covered":18,"skipped":0,"pct":26.09},"functions":{"total":37,"covered":1,"skipped":0,"pct":2.7},"statements":{"total":76,"covered":18,"skipped":0,"pct":23.68},"branches":{"total":34,"covered":16,"skipped":0,"pct":47.06}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Applications/ProductUpdatesModal/UpdatesButton.tsx": {"lines":{"total":25,"covered":19,"skipped":0,"pct":76},"functions":{"total":16,"covered":10,"skipped":0,"pct":62.5},"statements":{"total":29,"covered":23,"skipped":0,"pct":79.31},"branches":{"total":8,"covered":7,"skipped":0,"pct":87.5}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Applications/ProductUpdatesModal/index.tsx": {"lines":{"total":49,"covered":30,"skipped":0,"pct":61.22},"functions":{"total":22,"covered":4,"skipped":0,"pct":18.18},"statements":{"total":57,"covered":34,"skipped":0,"pct":59.65},"branches":{"total":14,"covered":14,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Popper.tsx": {"lines":{"total":42,"covered":14,"skipped":0,"pct":33.33},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":42,"covered":14,"skipped":0,"pct":33.33},"branches":{"total":46,"covered":4,"skipped":0,"pct":8.7}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/utils.ts": {"lines":{"total":85,"covered":5,"skipped":0,"pct":5.88},"functions":{"total":12,"covered":0,"skipped":0,"pct":0},"statements":{"total":90,"covered":5,"skipped":0,"pct":5.56},"branches":{"total":31,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Explorer/ContextMenuTrigger.tsx": {"lines":{"total":11,"covered":8,"skipped":0,"pct":72.73},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":8,"skipped":0,"pct":72.73},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Explorer/ExplorerIcons.tsx": {"lines":{"total":51,"covered":41,"skipped":0,"pct":80.39},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":51,"covered":41,"skipped":0,"pct":80.39},"branches":{"total":12,"covered":6,"skipped":0,"pct":50}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Explorer/ExplorerStyledComponents.tsx": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Explorer/TreeDropdown.tsx": {"lines":{"total":35,"covered":6,"skipped":0,"pct":17.14},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":37,"covered":6,"skipped":0,"pct":16.22},"branches":{"total":26,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Explorer/helpers.tsx": {"lines":{"total":18,"covered":6,"skipped":0,"pct":33.33},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":18,"covered":6,"skipped":0,"pct":33.33},"branches":{"total":40,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Explorer/hooks.ts": {"lines":{"total":125,"covered":16,"skipped":0,"pct":12.8},"functions":{"total":37,"covered":0,"skipped":0,"pct":0},"statements":{"total":152,"covered":16,"skipped":0,"pct":10.53},"branches":{"total":65,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Explorer/Entity/AddButton.tsx": {"lines":{"total":11,"covered":6,"skipped":0,"pct":54.55},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":12,"covered":6,"skipped":0,"pct":50},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Explorer/Entity/Collapse.tsx": {"lines":{"total":14,"covered":8,"skipped":0,"pct":57.14},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":15,"covered":8,"skipped":0,"pct":53.33},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Explorer/Entity/CollapseToggle.tsx": {"lines":{"total":12,"covered":6,"skipped":0,"pct":50},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":13,"covered":6,"skipped":0,"pct":46.15},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Explorer/Entity/CurrentPageEntityProperties.tsx": {"lines":{"total":46,"covered":13,"skipped":0,"pct":28.26},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":48,"covered":13,"skipped":0,"pct":27.08},"branches":{"total":16,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Explorer/Entity/EntityProperties.tsx": {"lines":{"total":51,"covered":12,"skipped":0,"pct":23.53},"functions":{"total":8,"covered":0,"skipped":0,"pct":0},"statements":{"total":52,"covered":12,"skipped":0,"pct":23.08},"branches":{"total":26,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Explorer/Entity/EntityProperty.tsx": {"lines":{"total":39,"covered":21,"skipped":0,"pct":53.85},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":39,"covered":21,"skipped":0,"pct":53.85},"branches":{"total":26,"covered":6,"skipped":0,"pct":23.08}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Explorer/Entity/Loader.tsx": {"lines":{"total":8,"covered":5,"skipped":0,"pct":62.5},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":9,"covered":5,"skipped":0,"pct":55.56},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Explorer/Entity/Name.tsx": {"lines":{"total":78,"covered":15,"skipped":0,"pct":19.23},"functions":{"total":19,"covered":0,"skipped":0,"pct":0},"statements":{"total":82,"covered":15,"skipped":0,"pct":18.29},"branches":{"total":42,"covered":2,"skipped":0,"pct":4.76}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Explorer/Entity/index.tsx": {"lines":{"total":57,"covered":26,"skipped":0,"pct":45.61},"functions":{"total":14,"covered":1,"skipped":0,"pct":7.14},"statements":{"total":60,"covered":26,"skipped":0,"pct":43.33},"branches":{"total":38,"covered":8,"skipped":0,"pct":21.05}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Explorer/Widgets/WidgetContextMenu.tsx": {"lines":{"total":32,"covered":12,"skipped":0,"pct":37.5},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":33,"covered":12,"skipped":0,"pct":36.36},"branches":{"total":10,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/Explorer/Widgets/WidgetEntity.tsx": {"lines":{"total":62,"covered":24,"skipped":0,"pct":38.71},"functions":{"total":11,"covered":0,"skipped":0,"pct":0},"statements":{"total":68,"covered":24,"skipped":0,"pct":35.29},"branches":{"total":35,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/Editor/QueryEditor/TemplateMenu.tsx": {"lines":{"total":32,"covered":13,"skipped":0,"pct":40.63},"functions":{"total":9,"covered":1,"skipped":0,"pct":11.11},"statements":{"total":40,"covered":14,"skipped":0,"pct":35},"branches":{"total":15,"covered":8,"skipped":0,"pct":53.33}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/common/PageSectionDivider.tsx": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/common/PageWrapper.tsx": {"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":6,"covered":5,"skipped":0,"pct":83.33}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/common/ProfileImage.tsx": {"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":6,"covered":6,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/common/SubHeader.tsx": {"lines":{"total":19,"covered":19,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":19,"covered":19,"skipped":0,"pct":100},"branches":{"total":15,"covered":12,"skipped":0,"pct":80}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/common/CustomizedDropdown/dropdownHelpers.tsx": {"lines":{"total":27,"covered":8,"skipped":0,"pct":29.63},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":27,"covered":8,"skipped":0,"pct":29.63},"branches":{"total":15,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/organization/CreateOrganizationForm.tsx": {"lines":{"total":18,"covered":14,"skipped":0,"pct":77.78},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":20,"covered":14,"skipped":0,"pct":70},"branches":{"total":10,"covered":3,"skipped":0,"pct":30}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/organization/ManageUsers.tsx": {"lines":{"total":19,"covered":10,"skipped":0,"pct":52.63},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":20,"covered":10,"skipped":0,"pct":50},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/organization/OrgInviteUsersForm.tsx": {"lines":{"total":103,"covered":43,"skipped":0,"pct":41.75},"functions":{"total":27,"covered":0,"skipped":0,"pct":0},"statements":{"total":107,"covered":43,"skipped":0,"pct":40.19},"branches":{"total":98,"covered":24,"skipped":0,"pct":24.49}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/pages/organization/helpers.ts": {"lines":{"total":16,"covered":5,"skipped":0,"pct":31.25},"functions":{"total":10,"covered":0,"skipped":0,"pct":0},"statements":{"total":17,"covered":5,"skipped":0,"pct":29.41},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/index.tsx": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/entityReducers/actionsReducer.tsx": {"lines":{"total":104,"covered":7,"skipped":0,"pct":6.73},"functions":{"total":51,"covered":0,"skipped":0,"pct":0},"statements":{"total":106,"covered":7,"skipped":0,"pct":6.6},"branches":{"total":48,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/entityReducers/appReducer.ts": {"lines":{"total":13,"covered":8,"skipped":0,"pct":61.54},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.67},"statements":{"total":13,"covered":8,"skipped":0,"pct":61.54},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/entityReducers/canvasWidgetsReducer.tsx": {"lines":{"total":11,"covered":7,"skipped":0,"pct":63.64},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":7,"skipped":0,"pct":63.64},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/entityReducers/datasourceReducer.ts": {"lines":{"total":33,"covered":5,"skipped":0,"pct":15.15},"functions":{"total":26,"covered":0,"skipped":0,"pct":0},"statements":{"total":35,"covered":5,"skipped":0,"pct":14.29},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/entityReducers/index.ts": {"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":12,"covered":12,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/entityReducers/jsExecutionsReducer.ts": {"lines":{"total":6,"covered":5,"skipped":0,"pct":83.33},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":5,"skipped":0,"pct":83.33},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/entityReducers/metaReducer.ts": {"lines":{"total":24,"covered":5,"skipped":0,"pct":20.83},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":24,"covered":5,"skipped":0,"pct":20.83},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/entityReducers/pageListReducer.tsx": {"lines":{"total":32,"covered":5,"skipped":0,"pct":15.63},"functions":{"total":13,"covered":0,"skipped":0,"pct":0},"statements":{"total":36,"covered":5,"skipped":0,"pct":13.89},"branches":{"total":18,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/entityReducers/pluginsReducer.ts": {"lines":{"total":10,"covered":5,"skipped":0,"pct":50},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":5,"skipped":0,"pct":50},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/entityReducers/widgetConfigReducer.tsx": {"lines":{"total":7,"covered":6,"skipped":0,"pct":85.71},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":6,"skipped":0,"pct":85.71},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/evaluationReducers/dependencyReducer.ts": {"lines":{"total":6,"covered":5,"skipped":0,"pct":83.33},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":5,"skipped":0,"pct":83.33},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/evaluationReducers/index.ts": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/evaluationReducers/loadingEntitiesReducer.ts": {"lines":{"total":7,"covered":5,"skipped":0,"pct":71.43},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":5,"skipped":0,"pct":71.43},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/evaluationReducers/treeReducer.ts": {"lines":{"total":7,"covered":5,"skipped":0,"pct":71.43},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":5,"skipped":0,"pct":71.43},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/apiNameReducer.ts": {"lines":{"total":8,"covered":5,"skipped":0,"pct":62.5},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":5,"skipped":0,"pct":62.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/apiPaneReducer.ts": {"lines":{"total":25,"covered":5,"skipped":0,"pct":20},"functions":{"total":18,"covered":0,"skipped":0,"pct":0},"statements":{"total":27,"covered":5,"skipped":0,"pct":18.52},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/appViewReducer.tsx": {"lines":{"total":10,"covered":5,"skipped":0,"pct":50},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":5,"skipped":0,"pct":50},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/applicationsReducer.tsx": {"lines":{"total":74,"covered":8,"skipped":0,"pct":10.81},"functions":{"total":35,"covered":2,"skipped":0,"pct":5.71},"statements":{"total":77,"covered":8,"skipped":0,"pct":10.39},"branches":{"total":12,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/authReducer.ts": {"lines":{"total":11,"covered":5,"skipped":0,"pct":45.45},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":5,"skipped":0,"pct":45.45},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/confirmRunActionReducer.ts": {"lines":{"total":6,"covered":5,"skipped":0,"pct":83.33},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":5,"skipped":0,"pct":83.33},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/datasourceNameReducer.ts": {"lines":{"total":8,"covered":5,"skipped":0,"pct":62.5},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":5,"skipped":0,"pct":62.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/datasourcePaneReducer.ts": {"lines":{"total":16,"covered":6,"skipped":0,"pct":37.5},"functions":{"total":10,"covered":0,"skipped":0,"pct":0},"statements":{"total":16,"covered":6,"skipped":0,"pct":37.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/dragResizeReducer.ts": {"lines":{"total":11,"covered":5,"skipped":0,"pct":45.45},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":5,"skipped":0,"pct":45.45},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/editorReducer.tsx": {"lines":{"total":66,"covered":6,"skipped":0,"pct":9.09},"functions":{"total":22,"covered":0,"skipped":0,"pct":0},"statements":{"total":66,"covered":6,"skipped":0,"pct":9.09},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/errorReducer.tsx": {"lines":{"total":9,"covered":6,"skipped":0,"pct":66.67},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":9,"covered":6,"skipped":0,"pct":66.67},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/explorerReducer.ts": {"lines":{"total":19,"covered":9,"skipped":0,"pct":47.37},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":19,"covered":9,"skipped":0,"pct":47.37},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/globalSearchReducer.ts": {"lines":{"total":10,"covered":5,"skipped":0,"pct":50},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":5,"skipped":0,"pct":50},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/helpReducer.ts": {"lines":{"total":7,"covered":5,"skipped":0,"pct":71.43},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":5,"skipped":0,"pct":71.43},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/importReducer.ts": {"lines":{"total":8,"covered":5,"skipped":0,"pct":62.5},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":5,"skipped":0,"pct":62.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/importedCollectionsReducer.ts": {"lines":{"total":8,"covered":5,"skipped":0,"pct":62.5},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":5,"skipped":0,"pct":62.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/index.tsx": {"lines":{"total":30,"covered":30,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":30,"covered":30,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/onBoardingReducer.ts": {"lines":{"total":21,"covered":7,"skipped":0,"pct":33.33},"functions":{"total":15,"covered":1,"skipped":0,"pct":6.67},"statements":{"total":21,"covered":7,"skipped":0,"pct":33.33},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/orgReducer.ts": {"lines":{"total":37,"covered":5,"skipped":0,"pct":13.51},"functions":{"total":24,"covered":0,"skipped":0,"pct":0},"statements":{"total":37,"covered":5,"skipped":0,"pct":13.51},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/pageCanvasStructureReducer.ts": {"lines":{"total":12,"covered":6,"skipped":0,"pct":50},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":12,"covered":6,"skipped":0,"pct":50},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/pageWidgetsReducer.ts": {"lines":{"total":11,"covered":6,"skipped":0,"pct":54.55},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":6,"skipped":0,"pct":54.55},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/propertyPaneReducer.tsx": {"lines":{"total":25,"covered":5,"skipped":0,"pct":20},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":27,"covered":5,"skipped":0,"pct":18.52},"branches":{"total":21,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/providerReducer.ts": {"lines":{"total":43,"covered":5,"skipped":0,"pct":11.63},"functions":{"total":23,"covered":0,"skipped":0,"pct":0},"statements":{"total":44,"covered":5,"skipped":0,"pct":11.36},"branches":{"total":8,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/queryPaneReducer.ts": {"lines":{"total":21,"covered":6,"skipped":0,"pct":28.57},"functions":{"total":13,"covered":0,"skipped":0,"pct":0},"statements":{"total":23,"covered":6,"skipped":0,"pct":26.09},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/releasesReducer.ts": {"lines":{"total":7,"covered":6,"skipped":0,"pct":85.71},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":7,"covered":6,"skipped":0,"pct":85.71},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/themeReducer.ts": {"lines":{"total":15,"covered":7,"skipped":0,"pct":46.67},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":15,"covered":7,"skipped":0,"pct":46.67},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/usersReducer.ts": {"lines":{"total":31,"covered":7,"skipped":0,"pct":22.58},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":31,"covered":7,"skipped":0,"pct":22.58},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/reducers/uiReducers/widgetSidebarReducer.ts": {"lines":{"total":6,"covered":5,"skipped":0,"pct":83.33},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":5,"skipped":0,"pct":83.33},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/resizable/index.tsx": {"lines":{"total":48,"covered":9,"skipped":0,"pct":18.75},"functions":{"total":19,"covered":0,"skipped":0,"pct":0},"statements":{"total":59,"covered":9,"skipped":0,"pct":15.25},"branches":{"total":20,"covered":2,"skipped":0,"pct":10}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/ActionExecutionSagas.ts": {"lines":{"total":307,"covered":44,"skipped":0,"pct":14.33},"functions":{"total":27,"covered":2,"skipped":0,"pct":7.41},"statements":{"total":362,"covered":44,"skipped":0,"pct":12.15},"branches":{"total":182,"covered":3,"skipped":0,"pct":1.65}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/ActionSagas.ts": {"lines":{"total":216,"covered":31,"skipped":0,"pct":14.35},"functions":{"total":22,"covered":1,"skipped":0,"pct":4.55},"statements":{"total":264,"covered":31,"skipped":0,"pct":11.74},"branches":{"total":86,"covered":1,"skipped":0,"pct":1.16}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/ApiPaneSagas.ts": {"lines":{"total":184,"covered":30,"skipped":0,"pct":16.3},"functions":{"total":26,"covered":2,"skipped":0,"pct":7.69},"statements":{"total":208,"covered":31,"skipped":0,"pct":14.9},"branches":{"total":103,"covered":2,"skipped":0,"pct":1.94}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/ApplicationSagas.tsx": {"lines":{"total":141,"covered":38,"skipped":0,"pct":26.95},"functions":{"total":19,"covered":3,"skipped":0,"pct":15.79},"statements":{"total":166,"covered":40,"skipped":0,"pct":24.1},"branches":{"total":51,"covered":4,"skipped":0,"pct":7.84}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/BatchSagas.tsx": {"lines":{"total":25,"covered":8,"skipped":0,"pct":32},"functions":{"total":5,"covered":1,"skipped":0,"pct":20},"statements":{"total":31,"covered":8,"skipped":0,"pct":25.81},"branches":{"total":12,"covered":1,"skipped":0,"pct":8.33}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/CollectionSagas.ts": {"lines":{"total":12,"covered":7,"skipped":0,"pct":58.33},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":14,"covered":7,"skipped":0,"pct":50},"branches":{"total":3,"covered":1,"skipped":0,"pct":33.33}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/CurlImportSagas.ts": {"lines":{"total":31,"covered":17,"skipped":0,"pct":54.84},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":35,"covered":17,"skipped":0,"pct":48.57},"branches":{"total":3,"covered":1,"skipped":0,"pct":33.33}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/DatasourcesSagas.ts": {"lines":{"total":161,"covered":26,"skipped":0,"pct":16.15},"functions":{"total":19,"covered":2,"skipped":0,"pct":10.53},"statements":{"total":203,"covered":27,"skipped":0,"pct":13.3},"branches":{"total":58,"covered":2,"skipped":0,"pct":3.45}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/ErrorSagas.tsx": {"lines":{"total":95,"covered":37,"skipped":0,"pct":38.95},"functions":{"total":18,"covered":4,"skipped":0,"pct":22.22},"statements":{"total":105,"covered":41,"skipped":0,"pct":39.05},"branches":{"total":57,"covered":10,"skipped":0,"pct":17.54}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/EvaluationsSaga.ts": {"lines":{"total":117,"covered":27,"skipped":0,"pct":23.08},"functions":{"total":20,"covered":1,"skipped":0,"pct":5},"statements":{"total":133,"covered":27,"skipped":0,"pct":20.3},"branches":{"total":43,"covered":1,"skipped":0,"pct":2.33}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/GlobalSearchSagas.ts": {"lines":{"total":37,"covered":9,"skipped":0,"pct":24.32},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.67},"statements":{"total":42,"covered":9,"skipped":0,"pct":21.43},"branches":{"total":25,"covered":1,"skipped":0,"pct":4}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/InitSagas.ts": {"lines":{"total":80,"covered":23,"skipped":0,"pct":28.75},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":87,"covered":23,"skipped":0,"pct":26.44},"branches":{"total":28,"covered":1,"skipped":0,"pct":3.57}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/ModalSagas.ts": {"lines":{"total":54,"covered":16,"skipped":0,"pct":29.63},"functions":{"total":10,"covered":1,"skipped":0,"pct":10},"statements":{"total":59,"covered":16,"skipped":0,"pct":27.12},"branches":{"total":22,"covered":1,"skipped":0,"pct":4.55}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/OnboardingSagas.ts": {"lines":{"total":307,"covered":48,"skipped":0,"pct":15.64},"functions":{"total":48,"covered":3,"skipped":0,"pct":6.25},"statements":{"total":354,"covered":49,"skipped":0,"pct":13.84},"branches":{"total":140,"covered":2,"skipped":0,"pct":1.43}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/OrgSagas.ts": {"lines":{"total":101,"covered":22,"skipped":0,"pct":21.78},"functions":{"total":14,"covered":1,"skipped":0,"pct":7.14},"statements":{"total":127,"covered":22,"skipped":0,"pct":17.32},"branches":{"total":26,"covered":1,"skipped":0,"pct":3.85}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/PageSagas.tsx": {"lines":{"total":233,"covered":45,"skipped":0,"pct":19.31},"functions":{"total":31,"covered":1,"skipped":0,"pct":3.23},"statements":{"total":272,"covered":45,"skipped":0,"pct":16.54},"branches":{"total":59,"covered":1,"skipped":0,"pct":1.69}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/PluginSagas.ts": {"lines":{"total":58,"covered":13,"skipped":0,"pct":22.41},"functions":{"total":7,"covered":1,"skipped":0,"pct":14.29},"statements":{"total":72,"covered":13,"skipped":0,"pct":18.06},"branches":{"total":19,"covered":1,"skipped":0,"pct":5.26}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/ProvidersSaga.ts": {"lines":{"total":63,"covered":19,"skipped":0,"pct":30.16},"functions":{"total":8,"covered":1,"skipped":0,"pct":12.5},"statements":{"total":78,"covered":19,"skipped":0,"pct":24.36},"branches":{"total":19,"covered":1,"skipped":0,"pct":5.26}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/QueryPaneSagas.ts": {"lines":{"total":69,"covered":20,"skipped":0,"pct":28.99},"functions":{"total":7,"covered":2,"skipped":0,"pct":28.57},"statements":{"total":83,"covered":21,"skipped":0,"pct":25.3},"branches":{"total":28,"covered":4,"skipped":0,"pct":14.29}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/RecentEntitiesSagas.ts": {"lines":{"total":29,"covered":8,"skipped":0,"pct":27.59},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":29,"covered":8,"skipped":0,"pct":27.59},"branches":{"total":66,"covered":1,"skipped":0,"pct":1.52}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/ThemeSaga.tsx": {"lines":{"total":7,"covered":6,"skipped":0,"pct":85.71},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":7,"covered":6,"skipped":0,"pct":85.71},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/WidgetBlueprintSagas.ts": {"lines":{"total":27,"covered":8,"skipped":0,"pct":29.63},"functions":{"total":7,"covered":1,"skipped":0,"pct":14.29},"statements":{"total":32,"covered":8,"skipped":0,"pct":25},"branches":{"total":23,"covered":2,"skipped":0,"pct":8.7}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/WidgetLoadingSaga.ts": {"lines":{"total":50,"covered":11,"skipped":0,"pct":22},"functions":{"total":13,"covered":1,"skipped":0,"pct":7.69},"statements":{"total":57,"covered":11,"skipped":0,"pct":19.3},"branches":{"total":14,"covered":1,"skipped":0,"pct":7.14}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/WidgetOperationSagas.tsx": {"lines":{"total":515,"covered":46,"skipped":0,"pct":8.93},"functions":{"total":63,"covered":2,"skipped":0,"pct":3.17},"statements":{"total":590,"covered":46,"skipped":0,"pct":7.8},"branches":{"total":281,"covered":3,"skipped":0,"pct":1.07}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/WidgetSidebarSagas.tsx": {"lines":{"total":10,"covered":7,"skipped":0,"pct":70},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":11,"covered":7,"skipped":0,"pct":63.64},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/index.tsx": {"lines":{"total":37,"covered":34,"skipped":0,"pct":91.89},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":38,"covered":34,"skipped":0,"pct":89.47},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/selectors.tsx": {"lines":{"total":56,"covered":20,"skipped":0,"pct":35.71},"functions":{"total":24,"covered":0,"skipped":0,"pct":0},"statements":{"total":62,"covered":20,"skipped":0,"pct":32.26},"branches":{"total":12,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/sagas/userSagas.tsx": {"lines":{"total":140,"covered":29,"skipped":0,"pct":20.71},"functions":{"total":12,"covered":1,"skipped":0,"pct":8.33},"statements":{"total":166,"covered":29,"skipped":0,"pct":17.47},"branches":{"total":37,"covered":1,"skipped":0,"pct":2.7}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/selectors/appViewSelectors.tsx": {"lines":{"total":15,"covered":9,"skipped":0,"pct":60},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":16,"covered":9,"skipped":0,"pct":56.25},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/selectors/applicationSelectors.tsx": {"lines":{"total":57,"covered":40,"skipped":0,"pct":70.18},"functions":{"total":22,"covered":13,"skipped":0,"pct":59.09},"statements":{"total":60,"covered":41,"skipped":0,"pct":68.33},"branches":{"total":22,"covered":13,"skipped":0,"pct":59.09}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/selectors/dataTreeSelectors.ts": {"lines":{"total":23,"covered":11,"skipped":0,"pct":47.83},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":24,"covered":11,"skipped":0,"pct":45.83},"branches":{"total":10,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/selectors/editorSelectors.tsx": {"lines":{"total":107,"covered":37,"skipped":0,"pct":34.58},"functions":{"total":42,"covered":0,"skipped":0,"pct":0},"statements":{"total":115,"covered":37,"skipped":0,"pct":32.17},"branches":{"total":35,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/selectors/entitiesSelector.ts": {"lines":{"total":159,"covered":50,"skipped":0,"pct":31.45},"functions":{"total":76,"covered":0,"skipped":0,"pct":0},"statements":{"total":187,"covered":50,"skipped":0,"pct":26.74},"branches":{"total":72,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/selectors/errorSelectors.tsx": {"lines":{"total":4,"covered":2,"skipped":0,"pct":50},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":2,"skipped":0,"pct":50},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/selectors/formSelectors.ts": {"lines":{"total":9,"covered":3,"skipped":0,"pct":33.33},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":9,"covered":3,"skipped":0,"pct":33.33},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/selectors/helpSelectors.tsx": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/selectors/organizationSelectors.tsx": {"lines":{"total":27,"covered":14,"skipped":0,"pct":51.85},"functions":{"total":19,"covered":0,"skipped":0,"pct":0},"statements":{"total":33,"covered":14,"skipped":0,"pct":42.42},"branches":{"total":14,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/selectors/propertyPaneSelectors.tsx": {"lines":{"total":24,"covered":9,"skipped":0,"pct":37.5},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":25,"covered":9,"skipped":0,"pct":36},"branches":{"total":14,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/selectors/themeSelectors.tsx": {"lines":{"total":12,"covered":9,"skipped":0,"pct":75},"functions":{"total":5,"covered":2,"skipped":0,"pct":40},"statements":{"total":13,"covered":9,"skipped":0,"pct":69.23},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/selectors/usersSelectors.tsx": {"lines":{"total":7,"covered":5,"skipped":0,"pct":71.43},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":8,"covered":5,"skipped":0,"pct":62.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/templates/default.ts": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/transformers/CurlImportTransformer.ts": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/transformers/RestActionTransformer.ts": {"lines":{"total":15,"covered":15,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":16,"covered":15,"skipped":0,"pct":93.75},"branches":{"total":16,"covered":13,"skipped":0,"pct":81.25}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/AnalyticsUtil.tsx": {"lines":{"total":95,"covered":27,"skipped":0,"pct":28.42},"functions":{"total":14,"covered":4,"skipped":0,"pct":28.57},"statements":{"total":99,"covered":28,"skipped":0,"pct":28.28},"branches":{"total":43,"covered":3,"skipped":0,"pct":6.98}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/ApiPaneUtils.tsx": {"lines":{"total":6,"covered":6,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":6,"covered":6,"skipped":0,"pct":100},"branches":{"total":7,"covered":7,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/AppsmithUtils.tsx": {"lines":{"total":153,"covered":58,"skipped":0,"pct":37.91},"functions":{"total":36,"covered":10,"skipped":0,"pct":27.78},"statements":{"total":161,"covered":63,"skipped":0,"pct":39.13},"branches":{"total":82,"covered":9,"skipped":0,"pct":10.98}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/DynamicBindingUtils.ts": {"lines":{"total":92,"covered":78,"skipped":0,"pct":84.78},"functions":{"total":14,"covered":10,"skipped":0,"pct":71.43},"statements":{"total":93,"covered":79,"skipped":0,"pct":84.95},"branches":{"total":61,"covered":43,"skipped":0,"pct":70.49}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/FormControlFactory.tsx": {"lines":{"total":16,"covered":7,"skipped":0,"pct":43.75},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":16,"covered":7,"skipped":0,"pct":43.75},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/FormControlRegistry.tsx": {"lines":{"total":39,"covered":17,"skipped":0,"pct":43.59},"functions":{"total":13,"covered":1,"skipped":0,"pct":7.69},"statements":{"total":39,"covered":17,"skipped":0,"pct":43.59},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/PerformanceTracker.ts": {"lines":{"total":108,"covered":45,"skipped":0,"pct":41.67},"functions":{"total":10,"covered":3,"skipped":0,"pct":30},"statements":{"total":109,"covered":45,"skipped":0,"pct":41.28},"branches":{"total":77,"covered":3,"skipped":0,"pct":3.9}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/TypeHelpers.ts": {"lines":{"total":21,"covered":19,"skipped":0,"pct":90.48},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":29,"covered":24,"skipped":0,"pct":82.76},"branches":{"total":18,"covered":13,"skipped":0,"pct":72.22}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/WidgetFactory.tsx": {"lines":{"total":75,"covered":22,"skipped":0,"pct":29.33},"functions":{"total":13,"covered":1,"skipped":0,"pct":7.69},"statements":{"total":75,"covered":22,"skipped":0,"pct":29.33},"branches":{"total":21,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/WidgetPropsUtils.tsx": {"lines":{"total":270,"covered":39,"skipped":0,"pct":14.44},"functions":{"total":40,"covered":0,"skipped":0,"pct":0},"statements":{"total":277,"covered":39,"skipped":0,"pct":14.08},"branches":{"total":247,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/WidgetValidation.ts": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/WorkerUtil.ts": {"lines":{"total":65,"covered":60,"skipped":0,"pct":92.31},"functions":{"total":7,"covered":7,"skipped":0,"pct":100},"statements":{"total":79,"covered":71,"skipped":0,"pct":89.87},"branches":{"total":34,"covered":24,"skipped":0,"pct":70.59}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/canvasStructureHelpers.ts": {"lines":{"total":16,"covered":15,"skipped":0,"pct":93.75},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":17,"covered":16,"skipped":0,"pct":94.12},"branches":{"total":20,"covered":18,"skipped":0,"pct":90}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/featureFlags.ts": {"lines":{"total":31,"covered":11,"skipped":0,"pct":35.48},"functions":{"total":9,"covered":1,"skipped":0,"pct":11.11},"statements":{"total":31,"covered":11,"skipped":0,"pct":35.48},"branches":{"total":10,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/formhelpers.ts": {"lines":{"total":12,"covered":9,"skipped":0,"pct":75},"functions":{"total":5,"covered":2,"skipped":0,"pct":40},"statements":{"total":12,"covered":9,"skipped":0,"pct":75},"branches":{"total":5,"covered":2,"skipped":0,"pct":40}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/generators.tsx": {"lines":{"total":13,"covered":9,"skipped":0,"pct":69.23},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":16,"covered":10,"skipped":0,"pct":62.5},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/helpers.tsx": {"lines":{"total":98,"covered":29,"skipped":0,"pct":29.59},"functions":{"total":22,"covered":1,"skipped":0,"pct":4.55},"statements":{"total":105,"covered":29,"skipped":0,"pct":27.62},"branches":{"total":57,"covered":3,"skipped":0,"pct":5.26}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/history.ts": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/localStorage.tsx": {"lines":{"total":34,"covered":22,"skipped":0,"pct":64.71},"functions":{"total":7,"covered":5,"skipped":0,"pct":71.43},"statements":{"total":35,"covered":22,"skipped":0,"pct":62.86},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/storage.ts": {"lines":{"total":73,"covered":21,"skipped":0,"pct":28.77},"functions":{"total":24,"covered":1,"skipped":0,"pct":4.17},"statements":{"total":92,"covered":23,"skipped":0,"pct":25},"branches":{"total":22,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/autocomplete/EntityDefinitions.ts": {"lines":{"total":14,"covered":6,"skipped":0,"pct":42.86},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":14,"covered":6,"skipped":0,"pct":42.86},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/autocomplete/TernServer.ts": {"lines":{"total":285,"covered":141,"skipped":0,"pct":49.47},"functions":{"total":49,"covered":16,"skipped":0,"pct":32.65},"statements":{"total":326,"covered":145,"skipped":0,"pct":44.48},"branches":{"total":172,"covered":46,"skipped":0,"pct":26.74}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/autocomplete/customTreeTypeDefCreator.ts": {"lines":{"total":27,"covered":5,"skipped":0,"pct":18.52},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":27,"covered":5,"skipped":0,"pct":18.52},"branches":{"total":8,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/autocomplete/dataTreeTypeDefCreator.ts": {"lines":{"total":41,"covered":33,"skipped":0,"pct":80.49},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":41,"covered":33,"skipped":0,"pct":80.49},"branches":{"total":22,"covered":13,"skipped":0,"pct":59.09}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/hooks/dragResizeHooks.tsx": {"lines":{"total":40,"covered":10,"skipped":0,"pct":25},"functions":{"total":16,"covered":0,"skipped":0,"pct":0},"statements":{"total":42,"covered":10,"skipped":0,"pct":23.81},"branches":{"total":8,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/hooks/localstorage.tsx": {"lines":{"total":17,"covered":4,"skipped":0,"pct":23.53},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":19,"covered":4,"skipped":0,"pct":21.05},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/hooks/useClick.tsx": {"lines":{"total":20,"covered":2,"skipped":0,"pct":10},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":20,"covered":2,"skipped":0,"pct":10},"branches":{"total":14,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/hooks/useClickOpenPropPane.tsx": {"lines":{"total":23,"covered":7,"skipped":0,"pct":30.43},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":24,"covered":7,"skipped":0,"pct":29.17},"branches":{"total":10,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/hooks/useClipboard.tsx": {"lines":{"total":21,"covered":3,"skipped":0,"pct":14.29},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":21,"covered":3,"skipped":0,"pct":14.29},"branches":{"total":10,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/hooks/useScript.tsx": {"lines":{"total":38,"covered":10,"skipped":0,"pct":26.32},"functions":{"total":7,"covered":2,"skipped":0,"pct":28.57},"statements":{"total":41,"covered":10,"skipped":0,"pct":24.39},"branches":{"total":20,"covered":4,"skipped":0,"pct":20}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/migrations/IncorrectDynamicBindingPathLists.ts": {"lines":{"total":18,"covered":5,"skipped":0,"pct":27.78},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":18,"covered":5,"skipped":0,"pct":27.78},"branches":{"total":8,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/migrations/TableWidget.ts": {"lines":{"total":78,"covered":51,"skipped":0,"pct":65.38},"functions":{"total":10,"covered":5,"skipped":0,"pct":50},"statements":{"total":82,"covered":51,"skipped":0,"pct":62.2},"branches":{"total":80,"covered":33,"skipped":0,"pct":41.25}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/utils/migrations/TextWidgetReplaceTextStyle.ts": {"lines":{"total":23,"covered":20,"skipped":0,"pct":86.96},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":23,"covered":20,"skipped":0,"pct":86.96},"branches":{"total":14,"covered":7,"skipped":0,"pct":50}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/widgets/BaseWidget.tsx": {"lines":{"total":98,"covered":45,"skipped":0,"pct":45.92},"functions":{"total":27,"covered":1,"skipped":0,"pct":3.7},"statements":{"total":102,"covered":45,"skipped":0,"pct":44.12},"branches":{"total":31,"covered":0,"skipped":0,"pct":0}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/widgets/FileDataTypes.ts": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/widgets/ChartWidget/propertyConfig.ts": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/widgets/TableWidget/TablePropertyPaneConfig.ts": {"lines":{"total":66,"covered":24,"skipped":0,"pct":36.36},"functions":{"total":12,"covered":6,"skipped":0,"pct":50},"statements":{"total":70,"covered":24,"skipped":0,"pct":34.29},"branches":{"total":51,"covered":7,"skipped":0,"pct":13.73}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/widgets/TableWidget/derived.js": {"lines":{"total":169,"covered":77,"skipped":0,"pct":45.56},"functions":{"total":36,"covered":13,"skipped":0,"pct":36.11},"statements":{"total":185,"covered":86,"skipped":0,"pct":46.49},"branches":{"total":137,"covered":69,"skipped":0,"pct":50.36}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/workers/DataTreeEvaluator.ts": {"lines":{"total":423,"covered":362,"skipped":0,"pct":85.58},"functions":{"total":69,"covered":58,"skipped":0,"pct":84.06},"statements":{"total":451,"covered":385,"skipped":0,"pct":85.37},"branches":{"total":171,"covered":126,"skipped":0,"pct":73.68}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/workers/evaluate.ts": {"lines":{"total":36,"covered":36,"skipped":0,"pct":100},"functions":{"total":9,"covered":9,"skipped":0,"pct":100},"statements":{"total":39,"covered":39,"skipped":0,"pct":100},"branches":{"total":6,"covered":4,"skipped":0,"pct":66.67}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/workers/evaluationUtils.ts": {"lines":{"total":190,"covered":177,"skipped":0,"pct":93.16},"functions":{"total":37,"covered":37,"skipped":0,"pct":100},"statements":{"total":202,"covered":188,"skipped":0,"pct":93.07},"branches":{"total":101,"covered":77,"skipped":0,"pct":76.24}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/src/workers/validations.ts": {"lines":{"total":314,"covered":130,"skipped":0,"pct":41.4},"functions":{"total":41,"covered":18,"skipped":0,"pct":43.9},"statements":{"total":346,"covered":143,"skipped":0,"pct":41.33},"branches":{"total":263,"covered":90,"skipped":0,"pct":34.22}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/test/customQueries.js": {"lines":{"total":19,"covered":17,"skipped":0,"pct":89.47},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":20,"covered":18,"skipped":0,"pct":90},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} -,"/Users/rishabhsaxena/ws/appsmith/app/client/test/testUtils.tsx": {"lines":{"total":15,"covered":15,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":16,"covered":16,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +{"total": {"lines":{"total":29011,"covered":15792,"skipped":0,"pct":54.43},"statements":{"total":32408,"covered":17454,"skipped":0,"pct":53.86},"functions":{"total":7082,"covered":2298,"skipped":0,"pct":32.45},"branches":{"total":15912,"covered":5681,"skipped":0,"pct":35.7}} +,"/Users/hetunandu/code/appsmith/app/client/src/store.ts": {"lines":{"total":19,"covered":16,"skipped":0,"pct":84.21},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":20,"covered":17,"skipped":0,"pct":85},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/actionActions.ts": {"lines":{"total":58,"covered":32,"skipped":0,"pct":55.17},"functions":{"total":29,"covered":0,"skipped":0,"pct":0},"statements":{"total":90,"covered":61,"skipped":0,"pct":67.78},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/apiPaneActions.ts": {"lines":{"total":19,"covered":10,"skipped":0,"pct":52.63},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":28,"covered":19,"skipped":0,"pct":67.86},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/applicationActions.ts": {"lines":{"total":20,"covered":12,"skipped":0,"pct":60},"functions":{"total":10,"covered":2,"skipped":0,"pct":20},"statements":{"total":31,"covered":23,"skipped":0,"pct":74.19},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/batchActions.ts": {"lines":{"total":3,"covered":3,"skipped":0,"pct":100},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":5,"skipped":0,"pct":71.43},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/canvasSelectionActions.ts": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/commentActions.ts": {"lines":{"total":62,"covered":48,"skipped":0,"pct":77.42},"functions":{"total":39,"covered":17,"skipped":0,"pct":43.59},"statements":{"total":122,"covered":97,"skipped":0,"pct":79.51},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/controlActions.tsx": {"lines":{"total":9,"covered":6,"skipped":0,"pct":66.67},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":13,"covered":10,"skipped":0,"pct":76.92},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/datasourceActions.ts": {"lines":{"total":40,"covered":21,"skipped":0,"pct":52.5},"functions":{"total":19,"covered":0,"skipped":0,"pct":0},"statements":{"total":60,"covered":40,"skipped":0,"pct":66.67},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/debuggerActions.ts": {"lines":{"total":9,"covered":8,"skipped":0,"pct":88.89},"functions":{"total":7,"covered":2,"skipped":0,"pct":28.57},"statements":{"total":22,"covered":17,"skipped":0,"pct":77.27},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/errorActions.ts": {"lines":{"total":5,"covered":3,"skipped":0,"pct":60},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":5,"skipped":0,"pct":71.43},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/evaluationActions.ts": {"lines":{"total":14,"covered":7,"skipped":0,"pct":50},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":17,"covered":10,"skipped":0,"pct":58.82},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/explorerActions.ts": {"lines":{"total":3,"covered":2,"skipped":0,"pct":66.67},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/globalSearchActions.ts": {"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":7,"covered":2,"skipped":0,"pct":28.57},"statements":{"total":22,"covered":17,"skipped":0,"pct":77.27},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/helpActions.ts": {"lines":{"total":5,"covered":3,"skipped":0,"pct":60},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":5,"skipped":0,"pct":71.43},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/importActions.ts": {"lines":{"total":3,"covered":2,"skipped":0,"pct":66.67},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/initActions.ts": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.67},"statements":{"total":10,"covered":9,"skipped":0,"pct":90},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/metaActions.ts": {"lines":{"total":8,"covered":5,"skipped":0,"pct":62.5},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":8,"skipped":0,"pct":72.73},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/notificationActions.ts": {"lines":{"total":14,"covered":12,"skipped":0,"pct":85.71},"functions":{"total":11,"covered":0,"skipped":0,"pct":0},"statements":{"total":34,"covered":23,"skipped":0,"pct":67.65},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/onboardingActions.ts": {"lines":{"total":21,"covered":11,"skipped":0,"pct":52.38},"functions":{"total":10,"covered":0,"skipped":0,"pct":0},"statements":{"total":31,"covered":21,"skipped":0,"pct":67.74},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/orgActions.ts": {"lines":{"total":19,"covered":10,"skipped":0,"pct":52.63},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":28,"covered":19,"skipped":0,"pct":67.86},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/pageActions.tsx": {"lines":{"total":45,"covered":32,"skipped":0,"pct":71.11},"functions":{"total":22,"covered":8,"skipped":0,"pct":36.36},"statements":{"total":71,"covered":55,"skipped":0,"pct":77.46},"branches":{"total":4,"covered":1,"skipped":0,"pct":25}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/pluginActions.ts": {"lines":{"total":7,"covered":5,"skipped":0,"pct":71.43},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":13,"covered":9,"skipped":0,"pct":69.23},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/propertyPaneActions.ts": {"lines":{"total":5,"covered":4,"skipped":0,"pct":80},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":7,"covered":6,"skipped":0,"pct":85.71},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/providerActions.ts": {"lines":{"total":17,"covered":9,"skipped":0,"pct":52.94},"functions":{"total":8,"covered":0,"skipped":0,"pct":0},"statements":{"total":25,"covered":17,"skipped":0,"pct":68},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/queryPaneActions.ts": {"lines":{"total":7,"covered":4,"skipped":0,"pct":57.14},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":7,"skipped":0,"pct":70},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/themeActions.ts": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/tourActions.ts": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":13,"covered":9,"skipped":0,"pct":69.23},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/userActions.ts": {"lines":{"total":19,"covered":16,"skipped":0,"pct":84.21},"functions":{"total":14,"covered":0,"skipped":0,"pct":0},"statements":{"total":44,"covered":30,"skipped":0,"pct":68.18},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/websocketActions.ts": {"lines":{"total":8,"covered":6,"skipped":0,"pct":75},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":14,"covered":10,"skipped":0,"pct":71.43},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/widgetActions.tsx": {"lines":{"total":34,"covered":26,"skipped":0,"pct":76.47},"functions":{"total":15,"covered":7,"skipped":0,"pct":46.67},"statements":{"total":50,"covered":41,"skipped":0,"pct":82},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/widgetSelectionActions.ts": {"lines":{"total":19,"covered":19,"skipped":0,"pct":100},"functions":{"total":8,"covered":8,"skipped":0,"pct":100},"statements":{"total":27,"covered":27,"skipped":0,"pct":100},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/actions/widgetSidebarActions.tsx": {"lines":{"total":8,"covered":5,"skipped":0,"pct":62.5},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":8,"skipped":0,"pct":72.73},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/api/ActionAPI.tsx": {"lines":{"total":32,"covered":17,"skipped":0,"pct":53.13},"functions":{"total":11,"covered":1,"skipped":0,"pct":9.09},"statements":{"total":33,"covered":18,"skipped":0,"pct":54.55},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/api/Api.ts": {"lines":{"total":27,"covered":23,"skipped":0,"pct":85.19},"functions":{"total":6,"covered":4,"skipped":0,"pct":66.67},"statements":{"total":27,"covered":23,"skipped":0,"pct":85.19},"branches":{"total":10,"covered":4,"skipped":0,"pct":40}} +,"/Users/hetunandu/code/appsmith/app/client/src/api/ApiUtils.ts": {"lines":{"total":49,"covered":36,"skipped":0,"pct":73.47},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":53,"covered":40,"skipped":0,"pct":75.47},"branches":{"total":35,"covered":22,"skipped":0,"pct":62.86}} +,"/Users/hetunandu/code/appsmith/app/client/src/api/ApplicationApi.tsx": {"lines":{"total":41,"covered":23,"skipped":0,"pct":56.1},"functions":{"total":18,"covered":2,"skipped":0,"pct":11.11},"statements":{"total":45,"covered":24,"skipped":0,"pct":53.33},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/api/CloudServicesApi.ts": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":5,"covered":4,"skipped":0,"pct":80},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/api/CollectionApi.ts": {"lines":{"total":7,"covered":6,"skipped":0,"pct":85.71},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":8,"covered":7,"skipped":0,"pct":87.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/api/CommentsAPI.tsx": {"lines":{"total":27,"covered":21,"skipped":0,"pct":77.78},"functions":{"total":11,"covered":5,"skipped":0,"pct":45.45},"statements":{"total":28,"covered":22,"skipped":0,"pct":78.57},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/api/DatasourcesApi.ts": {"lines":{"total":23,"covered":14,"skipped":0,"pct":60.87},"functions":{"total":9,"covered":1,"skipped":0,"pct":11.11},"statements":{"total":24,"covered":15,"skipped":0,"pct":62.5},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/api/ImportApi.ts": {"lines":{"total":8,"covered":6,"skipped":0,"pct":75},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":9,"covered":7,"skipped":0,"pct":77.78},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/api/NotificationsAPI.tsx": {"lines":{"total":16,"covered":12,"skipped":0,"pct":75},"functions":{"total":5,"covered":1,"skipped":0,"pct":20},"statements":{"total":17,"covered":13,"skipped":0,"pct":76.47},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/api/OrgApi.ts": {"lines":{"total":31,"covered":18,"skipped":0,"pct":58.06},"functions":{"total":12,"covered":2,"skipped":0,"pct":16.67},"statements":{"total":32,"covered":19,"skipped":0,"pct":59.38},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/api/PageApi.tsx": {"lines":{"total":38,"covered":27,"skipped":0,"pct":71.05},"functions":{"total":14,"covered":3,"skipped":0,"pct":21.43},"statements":{"total":40,"covered":28,"skipped":0,"pct":70},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/api/PluginApi.ts": {"lines":{"total":9,"covered":7,"skipped":0,"pct":77.78},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":10,"covered":8,"skipped":0,"pct":80},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/api/ProvidersApi.ts": {"lines":{"total":33,"covered":18,"skipped":0,"pct":54.55},"functions":{"total":12,"covered":1,"skipped":0,"pct":8.33},"statements":{"total":35,"covered":20,"skipped":0,"pct":57.14},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/api/SaasApi.ts": {"lines":{"total":9,"covered":7,"skipped":0,"pct":77.78},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":10,"covered":8,"skipped":0,"pct":80},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/api/UserApi.tsx": {"lines":{"total":47,"covered":30,"skipped":0,"pct":63.83},"functions":{"total":15,"covered":1,"skipped":0,"pct":6.67},"statements":{"total":48,"covered":31,"skipped":0,"pct":64.58},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/api/WidgetSidebarApi.tsx": {"lines":{"total":7,"covered":6,"skipped":0,"pct":85.71},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":8,"covered":7,"skipped":0,"pct":87.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/comments/utils.ts": {"lines":{"total":32,"covered":29,"skipped":0,"pct":90.63},"functions":{"total":6,"covered":4,"skipped":0,"pct":66.67},"statements":{"total":39,"covered":36,"skipped":0,"pct":92.31},"branches":{"total":12,"covered":3,"skipped":0,"pct":25}} +,"/Users/hetunandu/code/appsmith/app/client/src/comments/AppComments/AppCommentsFilterPopover.tsx": {"lines":{"total":36,"covered":17,"skipped":0,"pct":47.22},"functions":{"total":10,"covered":0,"skipped":0,"pct":0},"statements":{"total":38,"covered":17,"skipped":0,"pct":44.74},"branches":{"total":6,"covered":4,"skipped":0,"pct":66.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/comments/CommentCard/CommentCard.tsx": {"lines":{"total":154,"covered":114,"skipped":0,"pct":74.03},"functions":{"total":41,"covered":18,"skipped":0,"pct":43.9},"statements":{"total":166,"covered":122,"skipped":0,"pct":73.49},"branches":{"total":113,"covered":74,"skipped":0,"pct":65.49}} +,"/Users/hetunandu/code/appsmith/app/client/src/comments/CommentCard/CommentContextMenu.tsx": {"lines":{"total":46,"covered":37,"skipped":0,"pct":80.43},"functions":{"total":12,"covered":4,"skipped":0,"pct":33.33},"statements":{"total":49,"covered":39,"skipped":0,"pct":79.59},"branches":{"total":22,"covered":18,"skipped":0,"pct":81.82}} +,"/Users/hetunandu/code/appsmith/app/client/src/comments/CommentCard/ResolveCommentButton.tsx": {"lines":{"total":24,"covered":22,"skipped":0,"pct":91.67},"functions":{"total":5,"covered":4,"skipped":0,"pct":80},"statements":{"total":26,"covered":24,"skipped":0,"pct":92.31},"branches":{"total":10,"covered":7,"skipped":0,"pct":70}} +,"/Users/hetunandu/code/appsmith/app/client/src/comments/CommentThread/CommentThread.tsx": {"lines":{"total":49,"covered":47,"skipped":0,"pct":95.92},"functions":{"total":11,"covered":9,"skipped":0,"pct":81.82},"statements":{"total":53,"covered":49,"skipped":0,"pct":92.45},"branches":{"total":93,"covered":58,"skipped":0,"pct":62.37}} +,"/Users/hetunandu/code/appsmith/app/client/src/comments/CommentThread/ScrollToLatest.tsx": {"lines":{"total":13,"covered":13,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":14,"covered":14,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/comments/inlineComments/AddCommentInput.tsx": {"lines":{"total":91,"covered":66,"skipped":0,"pct":72.53},"functions":{"total":19,"covered":12,"skipped":0,"pct":63.16},"statements":{"total":105,"covered":76,"skipped":0,"pct":72.38},"branches":{"total":40,"covered":17,"skipped":0,"pct":42.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/comments/inlineComments/Comments.tsx": {"lines":{"total":30,"covered":30,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":33,"covered":32,"skipped":0,"pct":96.97},"branches":{"total":8,"covered":7,"skipped":0,"pct":87.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/comments/inlineComments/InlineCommentPin.tsx": {"lines":{"total":56,"covered":48,"skipped":0,"pct":85.71},"functions":{"total":14,"covered":12,"skipped":0,"pct":85.71},"statements":{"total":60,"covered":51,"skipped":0,"pct":85},"branches":{"total":42,"covered":25,"skipped":0,"pct":59.52}} +,"/Users/hetunandu/code/appsmith/app/client/src/comments/inlineComments/OverlayCommentsWrapper.tsx": {"lines":{"total":26,"covered":26,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":29,"covered":28,"skipped":0,"pct":96.55},"branches":{"total":8,"covered":6,"skipped":0,"pct":75}} +,"/Users/hetunandu/code/appsmith/app/client/src/comments/inlineComments/StyledComponents.tsx": {"lines":{"total":9,"covered":6,"skipped":0,"pct":66.67},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":9,"covered":6,"skipped":0,"pct":66.67},"branches":{"total":8,"covered":8,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/comments/inlineComments/UnpublishedCommentThread.tsx": {"lines":{"total":25,"covered":22,"skipped":0,"pct":88},"functions":{"total":7,"covered":5,"skipped":0,"pct":71.43},"statements":{"total":27,"covered":24,"skipped":0,"pct":88.89},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/comments/inlineComments/useOrgUsers.tsx": {"lines":{"total":13,"covered":13,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":13,"covered":13,"skipped":0,"pct":100},"branches":{"total":4,"covered":3,"skipped":0,"pct":75}} +,"/Users/hetunandu/code/appsmith/app/client/src/comments/tests/setMockPages.ts": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/comments/tour/commentsTourSteps.ts": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/AppIcon.tsx": {"lines":{"total":276,"covered":88,"skipped":0,"pct":31.88},"functions":{"total":8,"covered":0,"skipped":0,"pct":0},"statements":{"total":277,"covered":88,"skipped":0,"pct":31.77},"branches":{"total":91,"covered":2,"skipped":0,"pct":2.2}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/Button.tsx": {"lines":{"total":126,"covered":117,"skipped":0,"pct":92.86},"functions":{"total":43,"covered":40,"skipped":0,"pct":93.02},"statements":{"total":128,"covered":118,"skipped":0,"pct":92.19},"branches":{"total":93,"covered":74,"skipped":0,"pct":79.57}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/ButtonTabComponent.tsx": {"lines":{"total":14,"covered":6,"skipped":0,"pct":42.86},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":14,"covered":6,"skipped":0,"pct":42.86},"branches":{"total":8,"covered":4,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/Callout.tsx": {"lines":{"total":23,"covered":10,"skipped":0,"pct":43.48},"functions":{"total":13,"covered":0,"skipped":0,"pct":0},"statements":{"total":23,"covered":10,"skipped":0,"pct":43.48},"branches":{"total":20,"covered":4,"skipped":0,"pct":20}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/Checkbox.tsx": {"lines":{"total":33,"covered":10,"skipped":0,"pct":30.3},"functions":{"total":16,"covered":0,"skipped":0,"pct":0},"statements":{"total":37,"covered":10,"skipped":0,"pct":27.03},"branches":{"total":32,"covered":6,"skipped":0,"pct":18.75}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/ColorPickerComponent.tsx": {"lines":{"total":35,"covered":14,"skipped":0,"pct":40},"functions":{"total":15,"covered":0,"skipped":0,"pct":0},"statements":{"total":37,"covered":14,"skipped":0,"pct":37.84},"branches":{"total":22,"covered":14,"skipped":0,"pct":63.64}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/CopyToClipBoard.tsx": {"lines":{"total":21,"covered":7,"skipped":0,"pct":33.33},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":23,"covered":7,"skipped":0,"pct":30.43},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/DatePickerComponent.tsx": {"lines":{"total":17,"covered":8,"skipped":0,"pct":47.06},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":17,"covered":8,"skipped":0,"pct":47.06},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/DialogComponent.tsx": {"lines":{"total":34,"covered":31,"skipped":0,"pct":91.18},"functions":{"total":21,"covered":19,"skipped":0,"pct":90.48},"statements":{"total":36,"covered":33,"skipped":0,"pct":91.67},"branches":{"total":18,"covered":13,"skipped":0,"pct":72.22}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/DraggableList.tsx": {"lines":{"total":47,"covered":12,"skipped":0,"pct":25.53},"functions":{"total":14,"covered":0,"skipped":0,"pct":0},"statements":{"total":62,"covered":12,"skipped":0,"pct":19.35},"branches":{"total":14,"covered":2,"skipped":0,"pct":14.29}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/DraggableListComponent.tsx": {"lines":{"total":23,"covered":7,"skipped":0,"pct":30.43},"functions":{"total":9,"covered":1,"skipped":0,"pct":11.11},"statements":{"total":29,"covered":9,"skipped":0,"pct":31.03},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/Dropdown.tsx": {"lines":{"total":72,"covered":44,"skipped":0,"pct":61.11},"functions":{"total":38,"covered":14,"skipped":0,"pct":36.84},"statements":{"total":78,"covered":50,"skipped":0,"pct":64.1},"branches":{"total":93,"covered":62,"skipped":0,"pct":66.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/EditableText.tsx": {"lines":{"total":102,"covered":68,"skipped":0,"pct":66.67},"functions":{"total":34,"covered":28,"skipped":0,"pct":82.35},"statements":{"total":115,"covered":80,"skipped":0,"pct":69.57},"branches":{"total":100,"covered":42,"skipped":0,"pct":42}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/EmojiPicker.tsx": {"lines":{"total":19,"covered":16,"skipped":0,"pct":84.21},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":21,"covered":18,"skipped":0,"pct":85.71},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/EmojiReactions.tsx": {"lines":{"total":50,"covered":20,"skipped":0,"pct":40},"functions":{"total":17,"covered":2,"skipped":0,"pct":11.76},"statements":{"total":58,"covered":23,"skipped":0,"pct":39.66},"branches":{"total":54,"covered":15,"skipped":0,"pct":27.78}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/FilePicker.tsx": {"lines":{"total":156,"covered":70,"skipped":0,"pct":44.87},"functions":{"total":46,"covered":27,"skipped":0,"pct":58.7},"statements":{"total":166,"covered":80,"skipped":0,"pct":48.19},"branches":{"total":84,"covered":13,"skipped":0,"pct":15.48}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/GifPlayerComponent.tsx": {"lines":{"total":17,"covered":9,"skipped":0,"pct":52.94},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":19,"covered":9,"skipped":0,"pct":47.37},"branches":{"total":8,"covered":6,"skipped":0,"pct":75}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/Icon.tsx": {"lines":{"total":280,"covered":157,"skipped":0,"pct":56.07},"functions":{"total":9,"covered":9,"skipped":0,"pct":100},"statements":{"total":281,"covered":158,"skipped":0,"pct":56.23},"branches":{"total":119,"covered":49,"skipped":0,"pct":41.18}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/IconTabsComponent.tsx": {"lines":{"total":15,"covered":6,"skipped":0,"pct":40},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":18,"covered":6,"skipped":0,"pct":33.33},"branches":{"total":10,"covered":4,"skipped":0,"pct":40}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/MentionsInput.tsx": {"lines":{"total":69,"covered":44,"skipped":0,"pct":63.77},"functions":{"total":22,"covered":6,"skipped":0,"pct":27.27},"statements":{"total":76,"covered":50,"skipped":0,"pct":65.79},"branches":{"total":48,"covered":19,"skipped":0,"pct":39.58}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/Menu.tsx": {"lines":{"total":12,"covered":7,"skipped":0,"pct":58.33},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":12,"covered":7,"skipped":0,"pct":58.33},"branches":{"total":8,"covered":4,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/MenuDivider.tsx": {"lines":{"total":6,"covered":3,"skipped":0,"pct":50},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":3,"skipped":0,"pct":50},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/MenuItem.tsx": {"lines":{"total":23,"covered":14,"skipped":0,"pct":60.87},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":23,"covered":14,"skipped":0,"pct":60.87},"branches":{"total":32,"covered":4,"skipped":0,"pct":12.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/MultiSwitch.tsx": {"lines":{"total":15,"covered":7,"skipped":0,"pct":46.67},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":15,"covered":7,"skipped":0,"pct":46.67},"branches":{"total":10,"covered":6,"skipped":0,"pct":60}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/MultiselectDropdown.tsx": {"lines":{"total":78,"covered":15,"skipped":0,"pct":19.23},"functions":{"total":40,"covered":0,"skipped":0,"pct":0},"statements":{"total":83,"covered":15,"skipped":0,"pct":18.07},"branches":{"total":84,"covered":14,"skipped":0,"pct":16.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/Radio.tsx": {"lines":{"total":38,"covered":5,"skipped":0,"pct":13.16},"functions":{"total":27,"covered":0,"skipped":0,"pct":0},"statements":{"total":40,"covered":5,"skipped":0,"pct":12.5},"branches":{"total":40,"covered":4,"skipped":0,"pct":10}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/RectangularSwitcher.tsx": {"lines":{"total":26,"covered":8,"skipped":0,"pct":30.77},"functions":{"total":11,"covered":0,"skipped":0,"pct":0},"statements":{"total":30,"covered":8,"skipped":0,"pct":26.67},"branches":{"total":20,"covered":6,"skipped":0,"pct":30}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/ScrollIndicator.tsx": {"lines":{"total":42,"covered":34,"skipped":0,"pct":80.95},"functions":{"total":15,"covered":13,"skipped":0,"pct":86.67},"statements":{"total":46,"covered":38,"skipped":0,"pct":82.61},"branches":{"total":36,"covered":19,"skipped":0,"pct":52.78}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/Spinner.tsx": {"lines":{"total":15,"covered":10,"skipped":0,"pct":66.67},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":15,"covered":10,"skipped":0,"pct":66.67},"branches":{"total":8,"covered":8,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/StepComponent.tsx": {"lines":{"total":22,"covered":9,"skipped":0,"pct":40.91},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":22,"covered":9,"skipped":0,"pct":40.91},"branches":{"total":12,"covered":8,"skipped":0,"pct":66.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/Switch.tsx": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/Tabs.tsx": {"lines":{"total":48,"covered":11,"skipped":0,"pct":22.92},"functions":{"total":37,"covered":0,"skipped":0,"pct":0},"statements":{"total":48,"covered":11,"skipped":0,"pct":22.92},"branches":{"total":44,"covered":8,"skipped":0,"pct":18.18}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/TagInputComponent.tsx": {"lines":{"total":57,"covered":7,"skipped":0,"pct":12.28},"functions":{"total":17,"covered":0,"skipped":0,"pct":0},"statements":{"total":61,"covered":7,"skipped":0,"pct":11.48},"branches":{"total":38,"covered":2,"skipped":0,"pct":5.26}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/Text.tsx": {"lines":{"total":42,"covered":42,"skipped":0,"pct":100},"functions":{"total":14,"covered":14,"skipped":0,"pct":100},"statements":{"total":43,"covered":43,"skipped":0,"pct":100},"branches":{"total":28,"covered":21,"skipped":0,"pct":75}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/TextInput.tsx": {"lines":{"total":67,"covered":45,"skipped":0,"pct":67.16},"functions":{"total":18,"covered":15,"skipped":0,"pct":83.33},"statements":{"total":70,"covered":48,"skipped":0,"pct":68.57},"branches":{"total":45,"covered":18,"skipped":0,"pct":40}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/Toast.tsx": {"lines":{"total":46,"covered":21,"skipped":0,"pct":45.65},"functions":{"total":17,"covered":1,"skipped":0,"pct":5.88},"statements":{"total":46,"covered":21,"skipped":0,"pct":45.65},"branches":{"total":54,"covered":18,"skipped":0,"pct":33.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/Toggle.tsx": {"lines":{"total":22,"covered":6,"skipped":0,"pct":27.27},"functions":{"total":12,"covered":0,"skipped":0,"pct":0},"statements":{"total":24,"covered":6,"skipped":0,"pct":25},"branches":{"total":30,"covered":2,"skipped":0,"pct":6.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/Tooltip.tsx": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/TreeDropdown.tsx": {"lines":{"total":54,"covered":28,"skipped":0,"pct":51.85},"functions":{"total":23,"covered":7,"skipped":0,"pct":30.43},"statements":{"total":56,"covered":30,"skipped":0,"pct":53.57},"branches":{"total":34,"covered":20,"skipped":0,"pct":58.82}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/common.tsx": {"lines":{"total":41,"covered":27,"skipped":0,"pct":65.85},"functions":{"total":7,"covered":4,"skipped":0,"pct":57.14},"statements":{"total":46,"covered":32,"skipped":0,"pct":69.57},"branches":{"total":13,"covered":7,"skipped":0,"pct":53.85}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/ads/tour/TourTooltipWrapper.tsx": {"lines":{"total":31,"covered":30,"skipped":0,"pct":96.77},"functions":{"total":6,"covered":5,"skipped":0,"pct":83.33},"statements":{"total":31,"covered":30,"skipped":0,"pct":96.77},"branches":{"total":32,"covered":22,"skipped":0,"pct":68.75}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/CenteredWrapper.tsx": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/ContainerComponent.tsx": {"lines":{"total":30,"covered":28,"skipped":0,"pct":93.33},"functions":{"total":12,"covered":12,"skipped":0,"pct":100},"statements":{"total":30,"covered":28,"skipped":0,"pct":93.33},"branches":{"total":44,"covered":26,"skipped":0,"pct":59.09}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/CopyToClipBoard.tsx": {"lines":{"total":21,"covered":7,"skipped":0,"pct":33.33},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":23,"covered":7,"skipped":0,"pct":30.43},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/Dropdown.tsx": {"lines":{"total":22,"covered":7,"skipped":0,"pct":31.82},"functions":{"total":12,"covered":0,"skipped":0,"pct":0},"statements":{"total":22,"covered":7,"skipped":0,"pct":31.82},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/FilePickerComponent.tsx": {"lines":{"total":19,"covered":10,"skipped":0,"pct":52.63},"functions":{"total":5,"covered":1,"skipped":0,"pct":20},"statements":{"total":20,"covered":11,"skipped":0,"pct":55},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/IconComponent.tsx": {"lines":{"total":8,"covered":7,"skipped":0,"pct":87.5},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":9,"covered":8,"skipped":0,"pct":88.89},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/ImageComponent.tsx": {"lines":{"total":45,"covered":12,"skipped":0,"pct":26.67},"functions":{"total":16,"covered":2,"skipped":0,"pct":12.5},"statements":{"total":49,"covered":13,"skipped":0,"pct":26.53},"branches":{"total":43,"covered":6,"skipped":0,"pct":13.95}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/MapComponent.tsx": {"lines":{"total":41,"covered":13,"skipped":0,"pct":31.71},"functions":{"total":10,"covered":0,"skipped":0,"pct":0},"statements":{"total":43,"covered":13,"skipped":0,"pct":30.23},"branches":{"total":33,"covered":8,"skipped":0,"pct":24.24}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/PickMyLocation.tsx": {"lines":{"total":21,"covered":8,"skipped":0,"pct":38.1},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.67},"statements":{"total":24,"covered":9,"skipped":0,"pct":37.5},"branches":{"total":16,"covered":4,"skipped":0,"pct":25}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/PopoverVideo.tsx": {"lines":{"total":11,"covered":9,"skipped":0,"pct":81.82},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":9,"skipped":0,"pct":81.82},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/PositionedContainer.tsx": {"lines":{"total":21,"covered":21,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":22,"covered":22,"skipped":0,"pct":100},"branches":{"total":14,"covered":11,"skipped":0,"pct":78.57}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/StyledHeader.tsx": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/TabbedView.tsx": {"lines":{"total":14,"covered":6,"skipped":0,"pct":42.86},"functions":{"total":8,"covered":0,"skipped":0,"pct":0},"statements":{"total":14,"covered":6,"skipped":0,"pct":42.86},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/TabsComponent.tsx": {"lines":{"total":36,"covered":36,"skipped":0,"pct":100},"functions":{"total":18,"covered":18,"skipped":0,"pct":100},"statements":{"total":37,"covered":37,"skipped":0,"pct":100},"branches":{"total":34,"covered":29,"skipped":0,"pct":85.29}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/TextInputComponent.tsx": {"lines":{"total":35,"covered":10,"skipped":0,"pct":28.57},"functions":{"total":11,"covered":1,"skipped":0,"pct":9.09},"statements":{"total":40,"covered":12,"skipped":0,"pct":30},"branches":{"total":27,"covered":4,"skipped":0,"pct":14.81}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/VideoComponent.tsx": {"lines":{"total":9,"covered":7,"skipped":0,"pct":77.78},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":9,"covered":7,"skipped":0,"pct":77.78},"branches":{"total":8,"covered":4,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/TableComponent/AutoToolTipComponent.tsx": {"lines":{"total":29,"covered":9,"skipped":0,"pct":31.03},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":33,"covered":9,"skipped":0,"pct":27.27},"branches":{"total":28,"covered":4,"skipped":0,"pct":14.29}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/TableComponent/CommonUtilities.ts": {"lines":{"total":32,"covered":28,"skipped":0,"pct":87.5},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":35,"covered":31,"skipped":0,"pct":88.57},"branches":{"total":47,"covered":23,"skipped":0,"pct":48.94}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/TableComponent/Constants.ts": {"lines":{"total":59,"covered":50,"skipped":0,"pct":84.75},"functions":{"total":22,"covered":20,"skipped":0,"pct":90.91},"statements":{"total":59,"covered":50,"skipped":0,"pct":84.75},"branches":{"total":32,"covered":23,"skipped":0,"pct":71.88}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/TableComponent/TableHelpers.ts": {"lines":{"total":23,"covered":23,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":28,"covered":28,"skipped":0,"pct":100},"branches":{"total":10,"covered":8,"skipped":0,"pct":80}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/TableComponent/TableStyledWrappers.tsx": {"lines":{"total":86,"covered":31,"skipped":0,"pct":36.05},"functions":{"total":55,"covered":0,"skipped":0,"pct":0},"statements":{"total":86,"covered":31,"skipped":0,"pct":36.05},"branches":{"total":268,"covered":44,"skipped":0,"pct":16.42}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/TableComponent/TableUtilities.tsx": {"lines":{"total":104,"covered":38,"skipped":0,"pct":36.54},"functions":{"total":32,"covered":3,"skipped":0,"pct":9.38},"statements":{"total":114,"covered":44,"skipped":0,"pct":38.6},"branches":{"total":73,"covered":14,"skipped":0,"pct":19.18}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/header/DeployLinkButton.tsx": {"lines":{"total":16,"covered":11,"skipped":0,"pct":68.75},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.67},"statements":{"total":18,"covered":13,"skipped":0,"pct":72.22},"branches":{"total":6,"covered":6,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/header/ThreeDotsLoading.tsx": {"lines":{"total":5,"covered":4,"skipped":0,"pct":80},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":5,"covered":4,"skipped":0,"pct":80},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/help/CollapsibleHelp.tsx": {"lines":{"total":8,"covered":7,"skipped":0,"pct":87.5},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":7,"skipped":0,"pct":87.5},"branches":{"total":6,"covered":6,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/appsmith/help/DocumentationSearch.tsx": {"lines":{"total":72,"covered":45,"skipped":0,"pct":62.5},"functions":{"total":14,"covered":1,"skipped":0,"pct":7.14},"statements":{"total":77,"covered":46,"skipped":0,"pct":59.74},"branches":{"total":72,"covered":23,"skipped":0,"pct":31.94}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/blueprint/ButtonComponent.tsx": {"lines":{"total":71,"covered":44,"skipped":0,"pct":61.97},"functions":{"total":21,"covered":14,"skipped":0,"pct":66.67},"statements":{"total":77,"covered":46,"skipped":0,"pct":59.74},"branches":{"total":57,"covered":30,"skipped":0,"pct":52.63}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/blueprint/CheckboxComponent.tsx": {"lines":{"total":15,"covered":14,"skipped":0,"pct":93.33},"functions":{"total":5,"covered":4,"skipped":0,"pct":80},"statements":{"total":17,"covered":16,"skipped":0,"pct":94.12},"branches":{"total":15,"covered":10,"skipped":0,"pct":66.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/blueprint/DatePickerComponent.tsx": {"lines":{"total":69,"covered":19,"skipped":0,"pct":27.54},"functions":{"total":16,"covered":1,"skipped":0,"pct":6.25},"statements":{"total":71,"covered":20,"skipped":0,"pct":28.17},"branches":{"total":63,"covered":2,"skipped":0,"pct":3.17}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/blueprint/DatePickerComponent2.tsx": {"lines":{"total":67,"covered":19,"skipped":0,"pct":28.36},"functions":{"total":17,"covered":1,"skipped":0,"pct":5.88},"statements":{"total":69,"covered":20,"skipped":0,"pct":28.99},"branches":{"total":61,"covered":2,"skipped":0,"pct":3.28}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/blueprint/DividerComponent.tsx": {"lines":{"total":42,"covered":29,"skipped":0,"pct":69.05},"functions":{"total":12,"covered":5,"skipped":0,"pct":41.67},"statements":{"total":48,"covered":31,"skipped":0,"pct":64.58},"branches":{"total":71,"covered":30,"skipped":0,"pct":42.25}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/blueprint/DropdownComponent.tsx": {"lines":{"total":78,"covered":25,"skipped":0,"pct":32.05},"functions":{"total":31,"covered":1,"skipped":0,"pct":3.23},"statements":{"total":81,"covered":26,"skipped":0,"pct":32.1},"branches":{"total":53,"covered":12,"skipped":0,"pct":22.64}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/blueprint/IframeComponent.tsx": {"lines":{"total":15,"covered":5,"skipped":0,"pct":33.33},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":15,"covered":5,"skipped":0,"pct":33.33},"branches":{"total":10,"covered":2,"skipped":0,"pct":20}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/blueprint/InputComponent.tsx": {"lines":{"total":69,"covered":43,"skipped":0,"pct":62.32},"functions":{"total":29,"covered":15,"skipped":0,"pct":51.72},"statements":{"total":73,"covered":46,"skipped":0,"pct":63.01},"branches":{"total":62,"covered":26,"skipped":0,"pct":41.94}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/blueprint/ModalComponent.tsx": {"lines":{"total":28,"covered":9,"skipped":0,"pct":32.14},"functions":{"total":15,"covered":0,"skipped":0,"pct":0},"statements":{"total":29,"covered":9,"skipped":0,"pct":31.03},"branches":{"total":26,"covered":4,"skipped":0,"pct":15.38}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/blueprint/RadioGroupComponent.tsx": {"lines":{"total":15,"covered":11,"skipped":0,"pct":73.33},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":18,"covered":12,"skipped":0,"pct":66.67},"branches":{"total":13,"covered":4,"skipped":0,"pct":30.77}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/blueprint/RateComponent.tsx": {"lines":{"total":30,"covered":11,"skipped":0,"pct":36.67},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":34,"covered":11,"skipped":0,"pct":32.35},"branches":{"total":20,"covered":4,"skipped":0,"pct":20}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/blueprint/SwitchComponent.tsx": {"lines":{"total":15,"covered":14,"skipped":0,"pct":93.33},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":15,"covered":14,"skipped":0,"pct":93.33},"branches":{"total":8,"covered":5,"skipped":0,"pct":62.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/designSystems/blueprint/TextComponent.tsx": {"lines":{"total":31,"covered":13,"skipped":0,"pct":41.94},"functions":{"total":11,"covered":1,"skipped":0,"pct":9.09},"statements":{"total":32,"covered":14,"skipped":0,"pct":43.75},"branches":{"total":60,"covered":6,"skipped":0,"pct":10}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/ActionNameEditor.tsx": {"lines":{"total":63,"covered":18,"skipped":0,"pct":28.57},"functions":{"total":15,"covered":0,"skipped":0,"pct":0},"statements":{"total":66,"covered":18,"skipped":0,"pct":27.27},"branches":{"total":59,"covered":2,"skipped":0,"pct":3.39}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/ApiResponseView.tsx": {"lines":{"total":70,"covered":39,"skipped":0,"pct":55.71},"functions":{"total":14,"covered":0,"skipped":0,"pct":0},"statements":{"total":72,"covered":39,"skipped":0,"pct":54.17},"branches":{"total":64,"covered":24,"skipped":0,"pct":37.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Button.tsx": {"lines":{"total":27,"covered":12,"skipped":0,"pct":44.44},"functions":{"total":11,"covered":0,"skipped":0,"pct":0},"statements":{"total":29,"covered":13,"skipped":0,"pct":44.83},"branches":{"total":43,"covered":8,"skipped":0,"pct":18.6}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/CloseEditor.tsx": {"lines":{"total":22,"covered":11,"skipped":0,"pct":50},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":22,"covered":11,"skipped":0,"pct":50},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Divider.tsx": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/DragLayerComponent.tsx": {"lines":{"total":50,"covered":40,"skipped":0,"pct":80},"functions":{"total":11,"covered":11,"skipped":0,"pct":100},"statements":{"total":54,"covered":44,"skipped":0,"pct":81.48},"branches":{"total":50,"covered":19,"skipped":0,"pct":38}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/DraggableComponent.tsx": {"lines":{"total":53,"covered":44,"skipped":0,"pct":83.02},"functions":{"total":15,"covered":11,"skipped":0,"pct":73.33},"statements":{"total":59,"covered":49,"skipped":0,"pct":83.05},"branches":{"total":39,"covered":24,"skipped":0,"pct":61.54}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/DropTargetComponent.tsx": {"lines":{"total":87,"covered":52,"skipped":0,"pct":59.77},"functions":{"total":16,"covered":8,"skipped":0,"pct":50},"statements":{"total":98,"covered":63,"skipped":0,"pct":64.29},"branches":{"total":73,"covered":29,"skipped":0,"pct":39.73}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/DropTargetUtils.ts": {"lines":{"total":9,"covered":2,"skipped":0,"pct":22.22},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":3,"skipped":0,"pct":30},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Dropzone.tsx": {"lines":{"total":33,"covered":14,"skipped":0,"pct":42.42},"functions":{"total":13,"covered":0,"skipped":0,"pct":0},"statements":{"total":43,"covered":14,"skipped":0,"pct":32.56},"branches":{"total":10,"covered":4,"skipped":0,"pct":40}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/EditableText.tsx": {"lines":{"total":58,"covered":17,"skipped":0,"pct":29.31},"functions":{"total":16,"covered":1,"skipped":0,"pct":6.25},"statements":{"total":63,"covered":17,"skipped":0,"pct":26.98},"branches":{"total":47,"covered":8,"skipped":0,"pct":17.02}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/EditorContextProvider.tsx": {"lines":{"total":15,"covered":14,"skipped":0,"pct":93.33},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.67},"statements":{"total":15,"covered":14,"skipped":0,"pct":93.33},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/ErrorBoundry.tsx": {"lines":{"total":19,"covered":14,"skipped":0,"pct":73.68},"functions":{"total":7,"covered":3,"skipped":0,"pct":42.86},"statements":{"total":21,"covered":16,"skipped":0,"pct":76.19},"branches":{"total":8,"covered":7,"skipped":0,"pct":87.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/ErrorTooltip.tsx": {"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":8,"covered":8,"skipped":0,"pct":100},"branches":{"total":6,"covered":5,"skipped":0,"pct":83.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/FormLabel.tsx": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/FormRow.tsx": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/HelperTooltip.tsx": {"lines":{"total":8,"covered":7,"skipped":0,"pct":87.5},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":7,"skipped":0,"pct":87.5},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/LoadingOverlayScreen.tsx": {"lines":{"total":5,"covered":3,"skipped":0,"pct":60},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":5,"covered":3,"skipped":0,"pct":60},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/PaneWrapper.tsx": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/PreventInteractionsOverlay.tsx": {"lines":{"total":13,"covered":13,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":14,"covered":14,"skipped":0,"pct":100},"branches":{"total":8,"covered":7,"skipped":0,"pct":87.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/ReadOnlyEditor.tsx": {"lines":{"total":6,"covered":4,"skipped":0,"pct":66.67},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":4,"skipped":0,"pct":66.67},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/ResizableComponent.tsx": {"lines":{"total":89,"covered":52,"skipped":0,"pct":58.43},"functions":{"total":11,"covered":7,"skipped":0,"pct":63.64},"statements":{"total":91,"covered":54,"skipped":0,"pct":59.34},"branches":{"total":61,"covered":14,"skipped":0,"pct":22.95}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/ResizableUtils.tsx": {"lines":{"total":11,"covered":6,"skipped":0,"pct":54.55},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":15,"covered":10,"skipped":0,"pct":66.67},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/ResizeStyledComponents.tsx": {"lines":{"total":19,"covered":19,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":19,"covered":19,"skipped":0,"pct":100},"branches":{"total":28,"covered":28,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Sidebar.tsx": {"lines":{"total":19,"covered":19,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":19,"covered":19,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Spinner.tsx": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/StoreAsDatasource.tsx": {"lines":{"total":16,"covered":10,"skipped":0,"pct":62.5},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":16,"covered":10,"skipped":0,"pct":62.5},"branches":{"total":6,"covered":4,"skipped":0,"pct":66.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/ActionCreator/Fields.tsx": {"lines":{"total":263,"covered":74,"skipped":0,"pct":28.14},"functions":{"total":65,"covered":5,"skipped":0,"pct":7.69},"statements":{"total":269,"covered":78,"skipped":0,"pct":29},"branches":{"total":138,"covered":36,"skipped":0,"pct":26.09}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/ActionCreator/index.tsx": {"lines":{"total":121,"covered":58,"skipped":0,"pct":47.93},"functions":{"total":23,"covered":13,"skipped":0,"pct":56.52},"statements":{"total":123,"covered":60,"skipped":0,"pct":48.78},"branches":{"total":70,"covered":8,"skipped":0,"pct":11.43}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/CodeEditor/BindingPrompt.tsx": {"lines":{"total":14,"covered":14,"skipped":0,"pct":100},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":14,"covered":14,"skipped":0,"pct":100},"branches":{"total":16,"covered":12,"skipped":0,"pct":75}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/CodeEditor/BindingPromptHelper.ts": {"lines":{"total":3,"covered":3,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":8,"covered":7,"skipped":0,"pct":87.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/CodeEditor/EditorConfig.ts": {"lines":{"total":22,"covered":22,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":22,"covered":22,"skipped":0,"pct":100},"branches":{"total":10,"covered":10,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/CodeEditor/EvaluatedValuePopup.tsx": {"lines":{"total":84,"covered":55,"skipped":0,"pct":65.48},"functions":{"total":28,"covered":12,"skipped":0,"pct":42.86},"statements":{"total":90,"covered":57,"skipped":0,"pct":63.33},"branches":{"total":64,"covered":38,"skipped":0,"pct":59.38}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/CodeEditor/codeEditorUtils.ts": {"lines":{"total":35,"covered":35,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":39,"covered":39,"skipped":0,"pct":100},"branches":{"total":18,"covered":16,"skipped":0,"pct":88.89}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/CodeEditor/commandsHelper.ts": {"lines":{"total":54,"covered":25,"skipped":0,"pct":46.3},"functions":{"total":9,"covered":2,"skipped":0,"pct":22.22},"statements":{"total":59,"covered":26,"skipped":0,"pct":44.07},"branches":{"total":21,"covered":7,"skipped":0,"pct":33.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/CodeEditor/generateQuickCommands.tsx": {"lines":{"total":57,"covered":9,"skipped":0,"pct":15.79},"functions":{"total":14,"covered":0,"skipped":0,"pct":0},"statements":{"total":58,"covered":10,"skipped":0,"pct":17.24},"branches":{"total":28,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/CodeEditor/hintHelpers.ts": {"lines":{"total":22,"covered":17,"skipped":0,"pct":77.27},"functions":{"total":5,"covered":2,"skipped":0,"pct":40},"statements":{"total":23,"covered":18,"skipped":0,"pct":78.26},"branches":{"total":4,"covered":3,"skipped":0,"pct":75}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/CodeEditor/index.tsx": {"lines":{"total":228,"covered":163,"skipped":0,"pct":71.49},"functions":{"total":38,"covered":20,"skipped":0,"pct":52.63},"statements":{"total":244,"covered":174,"skipped":0,"pct":71.31},"branches":{"total":137,"covered":63,"skipped":0,"pct":45.99}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/CodeEditor/markHelpers.ts": {"lines":{"total":10,"covered":5,"skipped":0,"pct":50},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":11,"covered":6,"skipped":0,"pct":54.55},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/CodeEditor/modes.ts": {"lines":{"total":12,"covered":11,"skipped":0,"pct":91.67},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.67},"statements":{"total":12,"covered":11,"skipped":0,"pct":91.67},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/CodeEditor/styledComponents.ts": {"lines":{"total":44,"covered":41,"skipped":0,"pct":93.18},"functions":{"total":25,"covered":25,"skipped":0,"pct":100},"statements":{"total":46,"covered":41,"skipped":0,"pct":89.13},"branches":{"total":74,"covered":41,"skipped":0,"pct":55.41}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Debugger/DebugCTA.tsx": {"lines":{"total":21,"covered":12,"skipped":0,"pct":57.14},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":22,"covered":12,"skipped":0,"pct":54.55},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Debugger/DebuggerLogs.tsx": {"lines":{"total":39,"covered":15,"skipped":0,"pct":38.46},"functions":{"total":10,"covered":0,"skipped":0,"pct":0},"statements":{"total":48,"covered":15,"skipped":0,"pct":31.25},"branches":{"total":16,"covered":4,"skipped":0,"pct":25}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Debugger/DebuggerMessage.tsx": {"lines":{"total":9,"covered":7,"skipped":0,"pct":77.78},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":9,"covered":7,"skipped":0,"pct":77.78},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Debugger/DebuggerTabs.tsx": {"lines":{"total":27,"covered":17,"skipped":0,"pct":62.96},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":30,"covered":17,"skipped":0,"pct":56.67},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Debugger/EntityDependecies.tsx": {"lines":{"total":47,"covered":16,"skipped":0,"pct":34.04},"functions":{"total":23,"covered":0,"skipped":0,"pct":0},"statements":{"total":51,"covered":16,"skipped":0,"pct":31.37},"branches":{"total":20,"covered":8,"skipped":0,"pct":40}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Debugger/EntityLink.tsx": {"lines":{"total":56,"covered":17,"skipped":0,"pct":30.36},"functions":{"total":12,"covered":1,"skipped":0,"pct":8.33},"statements":{"total":58,"covered":17,"skipped":0,"pct":29.31},"branches":{"total":21,"covered":2,"skipped":0,"pct":9.52}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Debugger/Errors.tsx": {"lines":{"total":16,"covered":10,"skipped":0,"pct":62.5},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":17,"covered":10,"skipped":0,"pct":58.82},"branches":{"total":6,"covered":4,"skipped":0,"pct":66.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Debugger/FilterHeader.tsx": {"lines":{"total":17,"covered":10,"skipped":0,"pct":58.82},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":17,"covered":10,"skipped":0,"pct":58.82},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Debugger/LogItem.tsx": {"lines":{"total":64,"covered":23,"skipped":0,"pct":35.94},"functions":{"total":31,"covered":0,"skipped":0,"pct":0},"statements":{"total":67,"covered":24,"skipped":0,"pct":35.82},"branches":{"total":38,"covered":10,"skipped":0,"pct":26.32}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Debugger/helpers.tsx": {"lines":{"total":46,"covered":38,"skipped":0,"pct":82.61},"functions":{"total":13,"covered":5,"skipped":0,"pct":38.46},"statements":{"total":54,"covered":44,"skipped":0,"pct":81.48},"branches":{"total":20,"covered":16,"skipped":0,"pct":80}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Debugger/hooks.ts": {"lines":{"total":73,"covered":24,"skipped":0,"pct":32.88},"functions":{"total":14,"covered":1,"skipped":0,"pct":7.14},"statements":{"total":84,"covered":28,"skipped":0,"pct":33.33},"branches":{"total":84,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Debugger/index.tsx": {"lines":{"total":35,"covered":31,"skipped":0,"pct":88.57},"functions":{"total":12,"covered":11,"skipped":0,"pct":91.67},"statements":{"total":35,"covered":31,"skipped":0,"pct":88.57},"branches":{"total":8,"covered":4,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Debugger/Resizer/index.tsx": {"lines":{"total":36,"covered":6,"skipped":0,"pct":16.67},"functions":{"total":11,"covered":0,"skipped":0,"pct":0},"statements":{"total":40,"covered":6,"skipped":0,"pct":15},"branches":{"total":14,"covered":4,"skipped":0,"pct":28.57}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/ActionLink.tsx": {"lines":{"total":16,"covered":8,"skipped":0,"pct":50},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":16,"covered":8,"skipped":0,"pct":50},"branches":{"total":8,"covered":2,"skipped":0,"pct":25}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/AlgoliaSearchWrapper.tsx": {"lines":{"total":14,"covered":8,"skipped":0,"pct":57.14},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":17,"covered":8,"skipped":0,"pct":47.06},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/Description.tsx": {"lines":{"total":65,"covered":13,"skipped":0,"pct":20},"functions":{"total":30,"covered":0,"skipped":0,"pct":0},"statements":{"total":68,"covered":13,"skipped":0,"pct":19.12},"branches":{"total":27,"covered":8,"skipped":0,"pct":29.63}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/Footer.tsx": {"lines":{"total":14,"covered":5,"skipped":0,"pct":35.71},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":14,"covered":5,"skipped":0,"pct":35.71},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/GlobalSearchContext.tsx": {"lines":{"total":3,"covered":3,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":3,"covered":3,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/GlobalSearchHotKeys.tsx": {"lines":{"total":18,"covered":14,"skipped":0,"pct":77.78},"functions":{"total":7,"covered":5,"skipped":0,"pct":71.43},"statements":{"total":26,"covered":17,"skipped":0,"pct":65.38},"branches":{"total":7,"covered":3,"skipped":0,"pct":42.86}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/HelpBar.tsx": {"lines":{"total":24,"covered":22,"skipped":0,"pct":91.67},"functions":{"total":10,"covered":9,"skipped":0,"pct":90},"statements":{"total":26,"covered":24,"skipped":0,"pct":92.31},"branches":{"total":4,"covered":3,"skipped":0,"pct":75}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/Highlight.tsx": {"lines":{"total":15,"covered":2,"skipped":0,"pct":13.33},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":17,"covered":2,"skipped":0,"pct":11.76},"branches":{"total":18,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/ResultsNotFound.tsx": {"lines":{"total":17,"covered":10,"skipped":0,"pct":58.82},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":17,"covered":10,"skipped":0,"pct":58.82},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/SearchBox.tsx": {"lines":{"total":34,"covered":12,"skipped":0,"pct":35.29},"functions":{"total":14,"covered":0,"skipped":0,"pct":0},"statements":{"total":41,"covered":12,"skipped":0,"pct":29.27},"branches":{"total":14,"covered":4,"skipped":0,"pct":28.57}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/SearchModal.tsx": {"lines":{"total":9,"covered":8,"skipped":0,"pct":88.89},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":11,"covered":10,"skipped":0,"pct":90.91},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/SearchResults.tsx": {"lines":{"total":103,"covered":29,"skipped":0,"pct":28.16},"functions":{"total":37,"covered":0,"skipped":0,"pct":0},"statements":{"total":106,"covered":29,"skipped":0,"pct":27.36},"branches":{"total":71,"covered":18,"skipped":0,"pct":25.35}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/SetSearchResults.tsx": {"lines":{"total":12,"covered":5,"skipped":0,"pct":41.67},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":13,"covered":5,"skipped":0,"pct":38.46},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/githubHelper.ts": {"lines":{"total":13,"covered":6,"skipped":0,"pct":46.15},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":17,"covered":8,"skipped":0,"pct":47.06},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/index.tsx": {"lines":{"total":186,"covered":110,"skipped":0,"pct":59.14},"functions":{"total":43,"covered":17,"skipped":0,"pct":39.53},"statements":{"total":205,"covered":120,"skipped":0,"pct":58.54},"branches":{"total":160,"covered":23,"skipped":0,"pct":14.38}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/parseDocumentationContent.ts": {"lines":{"total":88,"covered":70,"skipped":0,"pct":79.55},"functions":{"total":13,"covered":12,"skipped":0,"pct":92.31},"statements":{"total":91,"covered":72,"skipped":0,"pct":79.12},"branches":{"total":86,"covered":37,"skipped":0,"pct":43.02}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/useRecentEntities.tsx": {"lines":{"total":31,"covered":17,"skipped":0,"pct":54.84},"functions":{"total":7,"covered":3,"skipped":0,"pct":42.86},"statements":{"total":33,"covered":17,"skipped":0,"pct":51.52},"branches":{"total":26,"covered":1,"skipped":0,"pct":3.85}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/GlobalSearch/utils.tsx": {"lines":{"total":50,"covered":34,"skipped":0,"pct":68},"functions":{"total":10,"covered":7,"skipped":0,"pct":70},"statements":{"total":64,"covered":44,"skipped":0,"pct":68.75},"branches":{"total":59,"covered":12,"skipped":0,"pct":20.34}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/HighlightedCode/index.tsx": {"lines":{"total":19,"covered":12,"skipped":0,"pct":63.16},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":19,"covered":12,"skipped":0,"pct":63.16},"branches":{"total":12,"covered":4,"skipped":0,"pct":33.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/HighlightedCode/themes.ts": {"lines":{"total":6,"covered":4,"skipped":0,"pct":66.67},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":4,"skipped":0,"pct":66.67},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Onboarding/Boxed.tsx": {"lines":{"total":12,"covered":9,"skipped":0,"pct":75},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":12,"covered":9,"skipped":0,"pct":75},"branches":{"total":7,"covered":2,"skipped":0,"pct":28.57}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Onboarding/EndTour.tsx": {"lines":{"total":11,"covered":7,"skipped":0,"pct":63.64},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":7,"skipped":0,"pct":63.64},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Onboarding/Helper.tsx": {"lines":{"total":61,"covered":42,"skipped":0,"pct":68.85},"functions":{"total":17,"covered":6,"skipped":0,"pct":35.29},"statements":{"total":65,"covered":46,"skipped":0,"pct":70.77},"branches":{"total":103,"covered":36,"skipped":0,"pct":34.95}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/Onboarding/Indicator.tsx": {"lines":{"total":18,"covered":10,"skipped":0,"pct":55.56},"functions":{"total":9,"covered":2,"skipped":0,"pct":22.22},"statements":{"total":18,"covered":10,"skipped":0,"pct":55.56},"branches":{"total":20,"covered":5,"skipped":0,"pct":25}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/WidgetNameComponent/SettingsControl.tsx": {"lines":{"total":34,"covered":32,"skipped":0,"pct":94.12},"functions":{"total":9,"covered":8,"skipped":0,"pct":88.89},"statements":{"total":34,"covered":32,"skipped":0,"pct":94.12},"branches":{"total":21,"covered":18,"skipped":0,"pct":85.71}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/WidgetNameComponent/index.tsx": {"lines":{"total":47,"covered":38,"skipped":0,"pct":80.85},"functions":{"total":10,"covered":9,"skipped":0,"pct":90},"statements":{"total":49,"covered":40,"skipped":0,"pct":81.63},"branches":{"total":38,"covered":26,"skipped":0,"pct":68.42}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/form/CredentialsTooltip.tsx": {"lines":{"total":10,"covered":9,"skipped":0,"pct":90},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":9,"skipped":0,"pct":90},"branches":{"total":6,"covered":6,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/form/FormDialogComponent.tsx": {"lines":{"total":21,"covered":17,"skipped":0,"pct":80.95},"functions":{"total":6,"covered":3,"skipped":0,"pct":50},"statements":{"total":23,"covered":19,"skipped":0,"pct":82.61},"branches":{"total":5,"covered":2,"skipped":0,"pct":40}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/form/fields/CheckboxField.tsx": {"lines":{"total":9,"covered":5,"skipped":0,"pct":55.56},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":9,"covered":5,"skipped":0,"pct":55.56},"branches":{"total":11,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/form/fields/DropdownField.tsx": {"lines":{"total":8,"covered":5,"skipped":0,"pct":62.5},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":5,"skipped":0,"pct":62.5},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/form/fields/DropdownFieldWrapper.tsx": {"lines":{"total":17,"covered":4,"skipped":0,"pct":23.53},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":19,"covered":4,"skipped":0,"pct":21.05},"branches":{"total":11,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/form/fields/DropdownWrapper.tsx": {"lines":{"total":12,"covered":3,"skipped":0,"pct":25},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":14,"covered":3,"skipped":0,"pct":21.43},"branches":{"total":9,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/form/fields/DynamicTextField.tsx": {"lines":{"total":10,"covered":10,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":8,"covered":8,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/form/fields/EmbeddedDatasourcePathField.tsx": {"lines":{"total":115,"covered":36,"skipped":0,"pct":31.3},"functions":{"total":25,"covered":1,"skipped":0,"pct":4},"statements":{"total":126,"covered":37,"skipped":0,"pct":29.37},"branches":{"total":75,"covered":2,"skipped":0,"pct":2.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/form/fields/KeyValueFieldArray.tsx": {"lines":{"total":43,"covered":19,"skipped":0,"pct":44.19},"functions":{"total":18,"covered":0,"skipped":0,"pct":0},"statements":{"total":44,"covered":19,"skipped":0,"pct":43.18},"branches":{"total":49,"covered":12,"skipped":0,"pct":24.49}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/form/fields/NumberField.tsx": {"lines":{"total":12,"covered":7,"skipped":0,"pct":58.33},"functions":{"total":5,"covered":1,"skipped":0,"pct":20},"statements":{"total":13,"covered":8,"skipped":0,"pct":61.54},"branches":{"total":11,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/form/fields/RadioGroupField.tsx": {"lines":{"total":10,"covered":6,"skipped":0,"pct":60},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":6,"skipped":0,"pct":60},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/form/fields/RadioGroupWrapper.tsx": {"lines":{"total":17,"covered":3,"skipped":0,"pct":17.65},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":19,"covered":3,"skipped":0,"pct":15.79},"branches":{"total":11,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/form/fields/RequestDropdownField.tsx": {"lines":{"total":10,"covered":6,"skipped":0,"pct":60},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":6,"skipped":0,"pct":60},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/form/fields/SelectField.tsx": {"lines":{"total":8,"covered":6,"skipped":0,"pct":75},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":6,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/form/fields/TagListField.tsx": {"lines":{"total":7,"covered":5,"skipped":0,"pct":71.43},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":5,"skipped":0,"pct":71.43},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/editorComponents/form/fields/TextField.tsx": {"lines":{"total":8,"covered":7,"skipped":0,"pct":87.5},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":9,"covered":8,"skipped":0,"pct":88.89},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/formControls/BaseControl.tsx": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/formControls/CheckboxControl.tsx": {"lines":{"total":13,"covered":10,"skipped":0,"pct":76.92},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":17,"covered":11,"skipped":0,"pct":64.71},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/formControls/DropDownControl.tsx": {"lines":{"total":28,"covered":16,"skipped":0,"pct":57.14},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.67},"statements":{"total":37,"covered":17,"skipped":0,"pct":45.95},"branches":{"total":23,"covered":4,"skipped":0,"pct":17.39}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/formControls/DynamicInputTextControl.tsx": {"lines":{"total":24,"covered":23,"skipped":0,"pct":95.83},"functions":{"total":5,"covered":4,"skipped":0,"pct":80},"statements":{"total":29,"covered":28,"skipped":0,"pct":96.55},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/formControls/DynamicTextFieldControl.tsx": {"lines":{"total":51,"covered":50,"skipped":0,"pct":98.04},"functions":{"total":9,"covered":8,"skipped":0,"pct":88.89},"statements":{"total":54,"covered":53,"skipped":0,"pct":98.15},"branches":{"total":17,"covered":12,"skipped":0,"pct":70.59}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/formControls/FieldArrayControl.tsx": {"lines":{"total":26,"covered":13,"skipped":0,"pct":50},"functions":{"total":8,"covered":0,"skipped":0,"pct":0},"statements":{"total":26,"covered":13,"skipped":0,"pct":50},"branches":{"total":13,"covered":8,"skipped":0,"pct":61.54}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/formControls/FilePickerControl.tsx": {"lines":{"total":46,"covered":21,"skipped":0,"pct":45.65},"functions":{"total":12,"covered":2,"skipped":0,"pct":16.67},"statements":{"total":52,"covered":23,"skipped":0,"pct":44.23},"branches":{"total":10,"covered":4,"skipped":0,"pct":40}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/formControls/FixedKeyInputControl.tsx": {"lines":{"total":29,"covered":12,"skipped":0,"pct":41.38},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.67},"statements":{"total":30,"covered":13,"skipped":0,"pct":43.33},"branches":{"total":9,"covered":2,"skipped":0,"pct":22.22}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/formControls/InputNumberControl.tsx": {"lines":{"total":25,"covered":13,"skipped":0,"pct":52},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.67},"statements":{"total":26,"covered":14,"skipped":0,"pct":53.85},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/formControls/InputTextControl.tsx": {"lines":{"total":38,"covered":16,"skipped":0,"pct":42.11},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.67},"statements":{"total":39,"covered":17,"skipped":0,"pct":43.59},"branches":{"total":18,"covered":2,"skipped":0,"pct":11.11}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/formControls/KeyValueArrayControl.tsx": {"lines":{"total":57,"covered":20,"skipped":0,"pct":35.09},"functions":{"total":13,"covered":1,"skipped":0,"pct":7.69},"statements":{"total":60,"covered":21,"skipped":0,"pct":35},"branches":{"total":56,"covered":4,"skipped":0,"pct":7.14}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/formControls/KeyValueInputControl.tsx": {"lines":{"total":25,"covered":15,"skipped":0,"pct":60},"functions":{"total":8,"covered":1,"skipped":0,"pct":12.5},"statements":{"total":27,"covered":16,"skipped":0,"pct":59.26},"branches":{"total":12,"covered":2,"skipped":0,"pct":16.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/formControls/StyledControls.tsx": {"lines":{"total":57,"covered":22,"skipped":0,"pct":38.6},"functions":{"total":35,"covered":0,"skipped":0,"pct":0},"statements":{"total":57,"covered":22,"skipped":0,"pct":38.6},"branches":{"total":34,"covered":28,"skipped":0,"pct":82.35}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/formControls/SwitchControl.tsx": {"lines":{"total":28,"covered":18,"skipped":0,"pct":64.29},"functions":{"total":7,"covered":2,"skipped":0,"pct":28.57},"statements":{"total":41,"covered":21,"skipped":0,"pct":51.22},"branches":{"total":14,"covered":6,"skipped":0,"pct":42.86}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/formControls/utils.ts": {"lines":{"total":71,"covered":66,"skipped":0,"pct":92.96},"functions":{"total":13,"covered":13,"skipped":0,"pct":100},"statements":{"total":80,"covered":74,"skipped":0,"pct":92.5},"branches":{"total":59,"covered":45,"skipped":0,"pct":76.27}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/ActionSelectorControl.tsx": {"lines":{"total":14,"covered":12,"skipped":0,"pct":85.71},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":16,"covered":14,"skipped":0,"pct":87.5},"branches":{"total":3,"covered":2,"skipped":0,"pct":66.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/BaseControl.tsx": {"lines":{"total":11,"covered":7,"skipped":0,"pct":63.64},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":12,"covered":8,"skipped":0,"pct":66.67},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/ButtonTabControl.tsx": {"lines":{"total":21,"covered":10,"skipped":0,"pct":47.62},"functions":{"total":5,"covered":2,"skipped":0,"pct":40},"statements":{"total":27,"covered":11,"skipped":0,"pct":40.74},"branches":{"total":11,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/ChartDataControl.tsx": {"lines":{"total":58,"covered":23,"skipped":0,"pct":39.66},"functions":{"total":18,"covered":2,"skipped":0,"pct":11.11},"statements":{"total":61,"covered":24,"skipped":0,"pct":39.34},"branches":{"total":37,"covered":14,"skipped":0,"pct":37.84}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/CodeEditorControl.tsx": {"lines":{"total":23,"covered":10,"skipped":0,"pct":43.48},"functions":{"total":4,"covered":2,"skipped":0,"pct":50},"statements":{"total":28,"covered":11,"skipped":0,"pct":39.29},"branches":{"total":9,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/ColorPickerControl.tsx": {"lines":{"total":12,"covered":9,"skipped":0,"pct":75},"functions":{"total":4,"covered":2,"skipped":0,"pct":50},"statements":{"total":14,"covered":10,"skipped":0,"pct":71.43},"branches":{"total":5,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/ColumnActionSelectorControl.tsx": {"lines":{"total":42,"covered":18,"skipped":0,"pct":42.86},"functions":{"total":12,"covered":2,"skipped":0,"pct":16.67},"statements":{"total":47,"covered":19,"skipped":0,"pct":40.43},"branches":{"total":19,"covered":6,"skipped":0,"pct":31.58}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/ComputeTablePropertyControl.tsx": {"lines":{"total":51,"covered":17,"skipped":0,"pct":33.33},"functions":{"total":9,"covered":2,"skipped":0,"pct":22.22},"statements":{"total":53,"covered":18,"skipped":0,"pct":33.96},"branches":{"total":19,"covered":4,"skipped":0,"pct":21.05}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/CustomFusionChartControl.tsx": {"lines":{"total":11,"covered":8,"skipped":0,"pct":72.73},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.67},"statements":{"total":16,"covered":9,"skipped":0,"pct":56.25},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/DatePickerControl.tsx": {"lines":{"total":52,"covered":14,"skipped":0,"pct":26.92},"functions":{"total":15,"covered":2,"skipped":0,"pct":13.33},"statements":{"total":55,"covered":15,"skipped":0,"pct":27.27},"branches":{"total":42,"covered":2,"skipped":0,"pct":4.76}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/DropDownControl.tsx": {"lines":{"total":23,"covered":17,"skipped":0,"pct":73.91},"functions":{"total":7,"covered":4,"skipped":0,"pct":57.14},"statements":{"total":26,"covered":20,"skipped":0,"pct":76.92},"branches":{"total":11,"covered":5,"skipped":0,"pct":45.45}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/IconTabControl.tsx": {"lines":{"total":16,"covered":9,"skipped":0,"pct":56.25},"functions":{"total":4,"covered":2,"skipped":0,"pct":50},"statements":{"total":22,"covered":10,"skipped":0,"pct":45.45},"branches":{"total":5,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/InputTextControl.tsx": {"lines":{"total":34,"covered":26,"skipped":0,"pct":76.47},"functions":{"total":6,"covered":4,"skipped":0,"pct":66.67},"statements":{"total":36,"covered":28,"skipped":0,"pct":77.78},"branches":{"total":14,"covered":4,"skipped":0,"pct":28.57}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/KeyValueComponent.tsx": {"lines":{"total":58,"covered":11,"skipped":0,"pct":18.97},"functions":{"total":18,"covered":0,"skipped":0,"pct":0},"statements":{"total":62,"covered":11,"skipped":0,"pct":17.74},"branches":{"total":27,"covered":8,"skipped":0,"pct":29.63}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/LocationSearchControl.tsx": {"lines":{"total":40,"covered":14,"skipped":0,"pct":35},"functions":{"total":9,"covered":2,"skipped":0,"pct":22.22},"statements":{"total":44,"covered":15,"skipped":0,"pct":34.09},"branches":{"total":17,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/MultiSelectControl.tsx": {"lines":{"total":19,"covered":10,"skipped":0,"pct":52.63},"functions":{"total":6,"covered":2,"skipped":0,"pct":33.33},"statements":{"total":23,"covered":11,"skipped":0,"pct":47.83},"branches":{"total":5,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/MultiSwitchControl.tsx": {"lines":{"total":16,"covered":11,"skipped":0,"pct":68.75},"functions":{"total":5,"covered":2,"skipped":0,"pct":40},"statements":{"total":18,"covered":12,"skipped":0,"pct":66.67},"branches":{"total":11,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/OptionControl.tsx": {"lines":{"total":12,"covered":9,"skipped":0,"pct":75},"functions":{"total":4,"covered":2,"skipped":0,"pct":50},"statements":{"total":14,"covered":10,"skipped":0,"pct":71.43},"branches":{"total":3,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/PrimaryColumnsControl.tsx": {"lines":{"total":96,"covered":22,"skipped":0,"pct":22.92},"functions":{"total":25,"covered":2,"skipped":0,"pct":8},"statements":{"total":103,"covered":23,"skipped":0,"pct":22.33},"branches":{"total":55,"covered":8,"skipped":0,"pct":14.55}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/StepControl.tsx": {"lines":{"total":19,"covered":9,"skipped":0,"pct":47.37},"functions":{"total":7,"covered":2,"skipped":0,"pct":28.57},"statements":{"total":26,"covered":10,"skipped":0,"pct":38.46},"branches":{"total":5,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/StyledControls.tsx": {"lines":{"total":77,"covered":49,"skipped":0,"pct":63.64},"functions":{"total":48,"covered":20,"skipped":0,"pct":41.67},"statements":{"total":77,"covered":49,"skipped":0,"pct":63.64},"branches":{"total":64,"covered":49,"skipped":0,"pct":76.56}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/SwitchControl.tsx": {"lines":{"total":12,"covered":11,"skipped":0,"pct":91.67},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":14,"covered":13,"skipped":0,"pct":92.86},"branches":{"total":3,"covered":2,"skipped":0,"pct":66.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/TabControl.tsx": {"lines":{"total":82,"covered":22,"skipped":0,"pct":26.83},"functions":{"total":24,"covered":2,"skipped":0,"pct":8.33},"statements":{"total":86,"covered":23,"skipped":0,"pct":26.74},"branches":{"total":25,"covered":8,"skipped":0,"pct":32}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/propertyControls/index.ts": {"lines":{"total":27,"covered":22,"skipped":0,"pct":81.48},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":28,"covered":23,"skipped":0,"pct":82.14},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/utils/CollapseComponent.tsx": {"lines":{"total":13,"covered":6,"skipped":0,"pct":46.15},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":15,"covered":6,"skipped":0,"pct":40},"branches":{"total":10,"covered":2,"skipped":0,"pct":20}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/utils/EmptyDataState.tsx": {"lines":{"total":6,"covered":5,"skipped":0,"pct":83.33},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":5,"skipped":0,"pct":83.33},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/utils/Skeleton.tsx": {"lines":{"total":7,"covered":6,"skipped":0,"pct":85.71},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":6,"skipped":0,"pct":85.71},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/components/utils/TreeStructure.tsx": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/configs/index.ts": {"lines":{"total":41,"covered":40,"skipped":0,"pct":97.56},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":45,"covered":43,"skipped":0,"pct":95.56},"branches":{"total":98,"covered":82,"skipped":0,"pct":83.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/configs/types.ts": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/ApiConstants.tsx": {"lines":{"total":23,"covered":23,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":23,"covered":23,"skipped":0,"pct":100},"branches":{"total":6,"covered":6,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/ApiEditorConstants.ts": {"lines":{"total":21,"covered":21,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":22,"covered":22,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/AppConstants.ts": {"lines":{"total":18,"covered":17,"skipped":0,"pct":94.44},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":21,"covered":19,"skipped":0,"pct":90.48},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/BindingsConstants.ts": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/Colors.tsx": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/CommentConstants.tsx": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/CustomChartConstants.ts": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/DatasourceEditorConstants.ts": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/DefaultTheme.tsx": {"lines":{"total":90,"covered":86,"skipped":0,"pct":95.56},"functions":{"total":28,"covered":24,"skipped":0,"pct":85.71},"statements":{"total":106,"covered":102,"skipped":0,"pct":96.23},"branches":{"total":38,"covered":34,"skipped":0,"pct":89.47}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/Explorer.ts": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/FieldExpectedValue.ts": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/Fonts.tsx": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/HelpConstants.ts": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/IconConstants.tsx": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":14,"covered":14,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/KeyboardShortcuts.ts": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/Layers.tsx": {"lines":{"total":16,"covered":16,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":16,"covered":16,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/OmnibarDocumentationConstants.ts": {"lines":{"total":10,"covered":3,"skipped":0,"pct":30},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":3,"skipped":0,"pct":30},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/OnboardingConstants.tsx": {"lines":{"total":32,"covered":18,"skipped":0,"pct":56.25},"functions":{"total":12,"covered":1,"skipped":0,"pct":8.33},"statements":{"total":32,"covered":18,"skipped":0,"pct":56.25},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/QueryEditorConstants.ts": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/ReduxActionConstants.tsx": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/TourSteps.tsx": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/WebsocketConstants.tsx": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":7,"skipped":0,"pct":70},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/WidgetConstants.tsx": {"lines":{"total":61,"covered":61,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":61,"covered":61,"skipped":0,"pct":100},"branches":{"total":8,"covered":8,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/WidgetValidation.ts": {"lines":{"total":36,"covered":36,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":36,"covered":36,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/forms.ts": {"lines":{"total":19,"covered":19,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":19,"covered":19,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/messages.ts": {"lines":{"total":296,"covered":226,"skipped":0,"pct":76.35},"functions":{"total":214,"covered":25,"skipped":0,"pct":11.68},"statements":{"total":647,"covered":458,"skipped":0,"pct":70.79},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/providerConstants.ts": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/routes.ts": {"lines":{"total":115,"covered":95,"skipped":0,"pct":82.61},"functions":{"total":18,"covered":12,"skipped":0,"pct":66.67},"statements":{"total":133,"covered":112,"skipped":0,"pct":84.21},"branches":{"total":92,"covered":40,"skipped":0,"pct":43.48}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/userConstants.ts": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/AppsmithActionConstants/ActionConstants.tsx": {"lines":{"total":51,"covered":51,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":51,"covered":51,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/AppsmithActionConstants/formConfig/ApiDependencyConfigs.ts": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/AppsmithActionConstants/formConfig/ApiEditorConfigs.ts": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/AppsmithActionConstants/formConfig/ApiSettingsConfig.ts": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/AppsmithActionConstants/formConfig/GoogleSheetsSettingsConfig.ts": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/constants/AppsmithActionConstants/formConfig/QuerySettingsConfig.ts": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/entities/Action/actionProperties.ts": {"lines":{"total":34,"covered":34,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":38,"covered":38,"skipped":0,"pct":100},"branches":{"total":22,"covered":20,"skipped":0,"pct":90.91}} +,"/Users/hetunandu/code/appsmith/app/client/src/entities/Action/index.ts": {"lines":{"total":13,"covered":10,"skipped":0,"pct":76.92},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.67},"statements":{"total":16,"covered":11,"skipped":0,"pct":68.75},"branches":{"total":8,"covered":4,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/entities/AppsmithConsole/index.ts": {"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":8,"covered":8,"skipped":0,"pct":100},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/entities/AppsmithConsole/logtype.ts": {"lines":{"total":9,"covered":9,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":9,"covered":9,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/entities/DataTree/dataTreeAction.ts": {"lines":{"total":11,"covered":3,"skipped":0,"pct":27.27},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":16,"covered":4,"skipped":0,"pct":25},"branches":{"total":22,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/entities/DataTree/dataTreeFactory.ts": {"lines":{"total":31,"covered":13,"skipped":0,"pct":41.94},"functions":{"total":6,"covered":3,"skipped":0,"pct":50},"statements":{"total":32,"covered":14,"skipped":0,"pct":43.75},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/entities/DataTree/dataTreeWidget.ts": {"lines":{"total":32,"covered":27,"skipped":0,"pct":84.38},"functions":{"total":5,"covered":4,"skipped":0,"pct":80},"statements":{"total":33,"covered":28,"skipped":0,"pct":84.85},"branches":{"total":4,"covered":1,"skipped":0,"pct":25}} +,"/Users/hetunandu/code/appsmith/app/client/src/entities/Datasource/RestAPIForm.ts": {"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":12,"covered":12,"skipped":0,"pct":100},"branches":{"total":6,"covered":6,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/entities/Datasource/index.ts": {"lines":{"total":10,"covered":3,"skipped":0,"pct":30},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":16,"covered":5,"skipped":0,"pct":31.25},"branches":{"total":8,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/entities/Tour/index.ts": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/entities/Widget/utils.ts": {"lines":{"total":62,"covered":60,"skipped":0,"pct":96.77},"functions":{"total":11,"covered":11,"skipped":0,"pct":100},"statements":{"total":64,"covered":62,"skipped":0,"pct":96.88},"branches":{"total":68,"covered":58,"skipped":0,"pct":85.29}} +,"/Users/hetunandu/code/appsmith/app/client/src/globalStyles/tooltip.ts": {"lines":{"total":10,"covered":5,"skipped":0,"pct":50},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":5,"skipped":0,"pct":50},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/icons/AlertIcons.tsx": {"lines":{"total":11,"covered":7,"skipped":0,"pct":63.64},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":7,"skipped":0,"pct":63.64},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/icons/ControlIcons.tsx": {"lines":{"total":95,"covered":55,"skipped":0,"pct":57.89},"functions":{"total":46,"covered":6,"skipped":0,"pct":13.04},"statements":{"total":95,"covered":55,"skipped":0,"pct":57.89},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/icons/FormIcons.tsx": {"lines":{"total":17,"covered":10,"skipped":0,"pct":58.82},"functions":{"total":8,"covered":1,"skipped":0,"pct":12.5},"statements":{"total":17,"covered":10,"skipped":0,"pct":58.82},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/icons/HeaderIcons.tsx": {"lines":{"total":13,"covered":9,"skipped":0,"pct":69.23},"functions":{"total":5,"covered":1,"skipped":0,"pct":20},"statements":{"total":13,"covered":9,"skipped":0,"pct":69.23},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/icons/HelpIcons.tsx": {"lines":{"total":18,"covered":10,"skipped":0,"pct":55.56},"functions":{"total":8,"covered":0,"skipped":0,"pct":0},"statements":{"total":18,"covered":10,"skipped":0,"pct":55.56},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/icons/MenuIcons.tsx": {"lines":{"total":37,"covered":23,"skipped":0,"pct":62.16},"functions":{"total":17,"covered":3,"skipped":0,"pct":17.65},"statements":{"total":37,"covered":23,"skipped":0,"pct":62.16},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/icons/WidgetIcons.tsx": {"lines":{"total":54,"covered":35,"skipped":0,"pct":64.81},"functions":{"total":26,"covered":7,"skipped":0,"pct":26.92},"statements":{"total":54,"covered":35,"skipped":0,"pct":64.81},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/mockResponses/CommentApiMockResponse.tsx": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/mockResponses/WidgetConfigResponse.tsx": {"lines":{"total":94,"covered":11,"skipped":0,"pct":11.7},"functions":{"total":19,"covered":0,"skipped":0,"pct":0},"statements":{"total":97,"covered":11,"skipped":0,"pct":11.34},"branches":{"total":32,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/mockResponses/WidgetSidebarResponse.tsx": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/normalizers/CanvasWidgetsNormalizer.tsx": {"lines":{"total":10,"covered":10,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":10,"covered":10,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/AppViewer/viewer/GetAppViewerHeaderCTA.tsx": {"lines":{"total":29,"covered":27,"skipped":0,"pct":93.1},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":29,"covered":27,"skipped":0,"pct":93.1},"branches":{"total":38,"covered":32,"skipped":0,"pct":84.21}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Applications/ForkApplicationModal.tsx": {"lines":{"total":38,"covered":32,"skipped":0,"pct":84.21},"functions":{"total":7,"covered":3,"skipped":0,"pct":42.86},"statements":{"total":40,"covered":34,"skipped":0,"pct":85},"branches":{"total":13,"covered":6,"skipped":0,"pct":46.15}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Applications/ForkModalStyles.ts": {"lines":{"total":22,"covered":21,"skipped":0,"pct":95.45},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":22,"covered":21,"skipped":0,"pct":95.45},"branches":{"total":16,"covered":14,"skipped":0,"pct":87.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Applications/permissionHelpers.tsx": {"lines":{"total":12,"covered":11,"skipped":0,"pct":91.67},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":13,"covered":12,"skipped":0,"pct":92.31},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Applications/ProductUpdatesModal/ReleaseComponent.tsx": {"lines":{"total":69,"covered":17,"skipped":0,"pct":24.64},"functions":{"total":37,"covered":1,"skipped":0,"pct":2.7},"statements":{"total":75,"covered":17,"skipped":0,"pct":22.67},"branches":{"total":34,"covered":16,"skipped":0,"pct":47.06}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/ActionSettings.tsx": {"lines":{"total":18,"covered":7,"skipped":0,"pct":38.89},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":18,"covered":7,"skipped":0,"pct":38.89},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Canvas.tsx": {"lines":{"total":15,"covered":12,"skipped":0,"pct":80},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":15,"covered":12,"skipped":0,"pct":80},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/EditableAppName.tsx": {"lines":{"total":19,"covered":14,"skipped":0,"pct":73.68},"functions":{"total":6,"covered":4,"skipped":0,"pct":66.67},"statements":{"total":22,"covered":16,"skipped":0,"pct":72.73},"branches":{"total":8,"covered":3,"skipped":0,"pct":37.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/EditorHeader.tsx": {"lines":{"total":96,"covered":85,"skipped":0,"pct":88.54},"functions":{"total":26,"covered":20,"skipped":0,"pct":76.92},"statements":{"total":100,"covered":89,"skipped":0,"pct":89},"branches":{"total":45,"covered":25,"skipped":0,"pct":55.56}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/EntityNotFoundPane.tsx": {"lines":{"total":11,"covered":8,"skipped":0,"pct":72.73},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":8,"skipped":0,"pct":72.73},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/FormControl.tsx": {"lines":{"total":11,"covered":6,"skipped":0,"pct":54.55},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":12,"covered":6,"skipped":0,"pct":50},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/GlobalHotKeys.tsx": {"lines":{"total":76,"covered":53,"skipped":0,"pct":69.74},"functions":{"total":30,"covered":18,"skipped":0,"pct":60},"statements":{"total":80,"covered":57,"skipped":0,"pct":71.25},"branches":{"total":23,"covered":9,"skipped":0,"pct":39.13}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/HelpButton.tsx": {"lines":{"total":16,"covered":15,"skipped":0,"pct":93.75},"functions":{"total":5,"covered":4,"skipped":0,"pct":80},"statements":{"total":18,"covered":17,"skipped":0,"pct":94.44},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/MainContainer.tsx": {"lines":{"total":17,"covered":17,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":17,"covered":17,"skipped":0,"pct":100},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/MainContainerLayoutControl.tsx": {"lines":{"total":28,"covered":24,"skipped":0,"pct":85.71},"functions":{"total":6,"covered":3,"skipped":0,"pct":50},"statements":{"total":28,"covered":24,"skipped":0,"pct":85.71},"branches":{"total":10,"covered":5,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Popper.tsx": {"lines":{"total":40,"covered":34,"skipped":0,"pct":85},"functions":{"total":9,"covered":8,"skipped":0,"pct":88.89},"statements":{"total":40,"covered":34,"skipped":0,"pct":85},"branches":{"total":36,"covered":26,"skipped":0,"pct":72.22}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/PropertyPaneHelpButton.tsx": {"lines":{"total":19,"covered":16,"skipped":0,"pct":84.21},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":20,"covered":17,"skipped":0,"pct":85},"branches":{"total":12,"covered":6,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/PropertyPaneTitle.tsx": {"lines":{"total":49,"covered":40,"skipped":0,"pct":81.63},"functions":{"total":17,"covered":14,"skipped":0,"pct":82.35},"statements":{"total":53,"covered":44,"skipped":0,"pct":83.02},"branches":{"total":44,"covered":17,"skipped":0,"pct":38.64}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/ToggleModeButton.tsx": {"lines":{"total":101,"covered":69,"skipped":0,"pct":68.32},"functions":{"total":26,"covered":10,"skipped":0,"pct":38.46},"statements":{"total":111,"covered":78,"skipped":0,"pct":70.27},"branches":{"total":44,"covered":17,"skipped":0,"pct":38.64}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/WidgetCard.tsx": {"lines":{"total":33,"covered":14,"skipped":0,"pct":42.42},"functions":{"total":8,"covered":0,"skipped":0,"pct":0},"statements":{"total":37,"covered":14,"skipped":0,"pct":37.84},"branches":{"total":12,"covered":6,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/WidgetSidebar.tsx": {"lines":{"total":67,"covered":24,"skipped":0,"pct":35.82},"functions":{"total":17,"covered":0,"skipped":0,"pct":0},"statements":{"total":69,"covered":24,"skipped":0,"pct":34.78},"branches":{"total":47,"covered":10,"skipped":0,"pct":21.28}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/WidgetsEditor.tsx": {"lines":{"total":60,"covered":54,"skipped":0,"pct":90},"functions":{"total":7,"covered":7,"skipped":0,"pct":100},"statements":{"total":63,"covered":57,"skipped":0,"pct":90.48},"branches":{"total":32,"covered":23,"skipped":0,"pct":71.88}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/WidgetsMultiSelectBox.tsx": {"lines":{"total":83,"covered":71,"skipped":0,"pct":85.54},"functions":{"total":24,"covered":19,"skipped":0,"pct":79.17},"statements":{"total":90,"covered":78,"skipped":0,"pct":86.67},"branches":{"total":36,"covered":32,"skipped":0,"pct":88.89}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/routes.tsx": {"lines":{"total":59,"covered":26,"skipped":0,"pct":44.07},"functions":{"total":15,"covered":1,"skipped":0,"pct":6.67},"statements":{"total":68,"covered":27,"skipped":0,"pct":39.71},"branches":{"total":18,"covered":4,"skipped":0,"pct":22.22}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/utils.ts": {"lines":{"total":86,"covered":38,"skipped":0,"pct":44.19},"functions":{"total":12,"covered":3,"skipped":0,"pct":25},"statements":{"total":92,"covered":39,"skipped":0,"pct":42.39},"branches":{"total":31,"covered":4,"skipped":0,"pct":12.9}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/APIEditor/CurlImportForm.tsx": {"lines":{"total":29,"covered":23,"skipped":0,"pct":79.31},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":32,"covered":24,"skipped":0,"pct":75},"branches":{"total":14,"covered":12,"skipped":0,"pct":85.71}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/APIEditor/DatasourceList.tsx": {"lines":{"total":37,"covered":19,"skipped":0,"pct":51.35},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":41,"covered":20,"skipped":0,"pct":48.78},"branches":{"total":30,"covered":14,"skipped":0,"pct":46.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/APIEditor/Form.tsx": {"lines":{"total":154,"covered":62,"skipped":0,"pct":40.26},"functions":{"total":54,"covered":0,"skipped":0,"pct":0},"statements":{"total":163,"covered":62,"skipped":0,"pct":38.04},"branches":{"total":96,"covered":46,"skipped":0,"pct":47.92}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/APIEditor/Pagination.tsx": {"lines":{"total":51,"covered":26,"skipped":0,"pct":50.98},"functions":{"total":25,"covered":0,"skipped":0,"pct":0},"statements":{"total":51,"covered":26,"skipped":0,"pct":50.98},"branches":{"total":32,"covered":20,"skipped":0,"pct":62.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/APIEditor/PostBodyData.tsx": {"lines":{"total":32,"covered":17,"skipped":0,"pct":53.13},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":33,"covered":17,"skipped":0,"pct":51.52},"branches":{"total":14,"covered":4,"skipped":0,"pct":28.57}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/APIEditor/ProviderTemplates.tsx": {"lines":{"total":93,"covered":35,"skipped":0,"pct":37.63},"functions":{"total":21,"covered":1,"skipped":0,"pct":4.76},"statements":{"total":102,"covered":36,"skipped":0,"pct":35.29},"branches":{"total":49,"covered":20,"skipped":0,"pct":40.82}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/APIEditor/RapidApiEditorForm.tsx": {"lines":{"total":46,"covered":29,"skipped":0,"pct":63.04},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":46,"covered":29,"skipped":0,"pct":63.04},"branches":{"total":39,"covered":18,"skipped":0,"pct":46.15}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/APIEditor/helpers.ts": {"lines":{"total":3,"covered":2,"skipped":0,"pct":66.67},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/APIEditor/index.tsx": {"lines":{"total":93,"covered":31,"skipped":0,"pct":33.33},"functions":{"total":20,"covered":1,"skipped":0,"pct":5},"statements":{"total":104,"covered":32,"skipped":0,"pct":30.77},"branches":{"total":55,"covered":2,"skipped":0,"pct":3.64}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/DataSourceEditor/BackButton.tsx": {"lines":{"total":17,"covered":10,"skipped":0,"pct":58.82},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":17,"covered":10,"skipped":0,"pct":58.82},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/DataSourceEditor/Collapsible.tsx": {"lines":{"total":15,"covered":9,"skipped":0,"pct":60},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":19,"covered":10,"skipped":0,"pct":52.63},"branches":{"total":10,"covered":4,"skipped":0,"pct":40}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/DataSourceEditor/Connected.tsx": {"lines":{"total":50,"covered":25,"skipped":0,"pct":50},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":51,"covered":25,"skipped":0,"pct":49.02},"branches":{"total":72,"covered":8,"skipped":0,"pct":11.11}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/DataSourceEditor/DBForm.tsx": {"lines":{"total":71,"covered":34,"skipped":0,"pct":47.89},"functions":{"total":13,"covered":1,"skipped":0,"pct":7.69},"statements":{"total":73,"covered":35,"skipped":0,"pct":47.95},"branches":{"total":27,"covered":8,"skipped":0,"pct":29.63}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/DataSourceEditor/DatasourceSection.tsx": {"lines":{"total":39,"covered":11,"skipped":0,"pct":28.21},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":41,"covered":12,"skipped":0,"pct":29.27},"branches":{"total":30,"covered":8,"skipped":0,"pct":26.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/DataSourceEditor/FormTitle.tsx": {"lines":{"total":45,"covered":13,"skipped":0,"pct":28.89},"functions":{"total":10,"covered":0,"skipped":0,"pct":0},"statements":{"total":47,"covered":13,"skipped":0,"pct":27.66},"branches":{"total":39,"covered":2,"skipped":0,"pct":5.13}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/DataSourceEditor/JSONtoForm.tsx": {"lines":{"total":127,"covered":22,"skipped":0,"pct":17.32},"functions":{"total":23,"covered":1,"skipped":0,"pct":4.35},"statements":{"total":142,"covered":23,"skipped":0,"pct":16.2},"branches":{"total":69,"covered":14,"skipped":0,"pct":20.29}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/DataSourceEditor/RestAPIDatasourceForm.tsx": {"lines":{"total":169,"covered":49,"skipped":0,"pct":28.99},"functions":{"total":34,"covered":1,"skipped":0,"pct":2.94},"statements":{"total":194,"covered":50,"skipped":0,"pct":25.77},"branches":{"total":112,"covered":22,"skipped":0,"pct":19.64}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/DataSourceEditor/index.tsx": {"lines":{"total":86,"covered":25,"skipped":0,"pct":29.07},"functions":{"total":18,"covered":2,"skipped":0,"pct":11.11},"statements":{"total":97,"covered":27,"skipped":0,"pct":27.84},"branches":{"total":55,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/ContextMenuTrigger.tsx": {"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/EntityExplorer.tsx": {"lines":{"total":45,"covered":38,"skipped":0,"pct":84.44},"functions":{"total":5,"covered":2,"skipped":0,"pct":40},"statements":{"total":48,"covered":40,"skipped":0,"pct":83.33},"branches":{"total":17,"covered":8,"skipped":0,"pct":47.06}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/ExplorerIcons.tsx": {"lines":{"total":51,"covered":44,"skipped":0,"pct":86.27},"functions":{"total":5,"covered":1,"skipped":0,"pct":20},"statements":{"total":53,"covered":46,"skipped":0,"pct":86.79},"branches":{"total":12,"covered":7,"skipped":0,"pct":58.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/ExplorerSearch.tsx": {"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":8,"covered":7,"skipped":0,"pct":87.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/ExplorerStyledComponents.tsx": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/JSDependencies.tsx": {"lines":{"total":28,"covered":25,"skipped":0,"pct":89.29},"functions":{"total":6,"covered":3,"skipped":0,"pct":50},"statements":{"total":33,"covered":28,"skipped":0,"pct":84.85},"branches":{"total":16,"covered":15,"skipped":0,"pct":93.75}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/TreeDropdown.tsx": {"lines":{"total":35,"covered":22,"skipped":0,"pct":62.86},"functions":{"total":9,"covered":4,"skipped":0,"pct":44.44},"statements":{"total":37,"covered":24,"skipped":0,"pct":64.86},"branches":{"total":26,"covered":14,"skipped":0,"pct":53.85}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/helpers.tsx": {"lines":{"total":25,"covered":16,"skipped":0,"pct":64},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":28,"covered":19,"skipped":0,"pct":67.86},"branches":{"total":60,"covered":27,"skipped":0,"pct":45}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/hooks.ts": {"lines":{"total":125,"covered":65,"skipped":0,"pct":52},"functions":{"total":37,"covered":22,"skipped":0,"pct":59.46},"statements":{"total":159,"covered":77,"skipped":0,"pct":48.43},"branches":{"total":65,"covered":19,"skipped":0,"pct":29.23}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/index.tsx": {"lines":{"total":11,"covered":10,"skipped":0,"pct":90.91},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":11,"covered":10,"skipped":0,"pct":90.91},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Actions/ActionEntity.tsx": {"lines":{"total":25,"covered":15,"skipped":0,"pct":60},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":25,"covered":15,"skipped":0,"pct":60},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Actions/ActionEntityContextMenu.tsx": {"lines":{"total":35,"covered":14,"skipped":0,"pct":40},"functions":{"total":14,"covered":0,"skipped":0,"pct":0},"statements":{"total":36,"covered":14,"skipped":0,"pct":38.89},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Actions/ActionsGroup.tsx": {"lines":{"total":15,"covered":7,"skipped":0,"pct":46.67},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":15,"covered":7,"skipped":0,"pct":46.67},"branches":{"total":10,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Actions/MoreActionsMenu.tsx": {"lines":{"total":35,"covered":12,"skipped":0,"pct":34.29},"functions":{"total":17,"covered":0,"skipped":0,"pct":0},"statements":{"total":38,"covered":12,"skipped":0,"pct":31.58},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Actions/helpers.tsx": {"lines":{"total":53,"covered":26,"skipped":0,"pct":49.06},"functions":{"total":20,"covered":4,"skipped":0,"pct":20},"statements":{"total":62,"covered":29,"skipped":0,"pct":46.77},"branches":{"total":53,"covered":19,"skipped":0,"pct":35.85}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Datasources/DataSourceContextMenu.tsx": {"lines":{"total":18,"covered":10,"skipped":0,"pct":55.56},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":18,"covered":10,"skipped":0,"pct":55.56},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Datasources/DatasourceEntity.tsx": {"lines":{"total":45,"covered":16,"skipped":0,"pct":35.56},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":45,"covered":16,"skipped":0,"pct":35.56},"branches":{"total":18,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Datasources/DatasourceField.tsx": {"lines":{"total":21,"covered":14,"skipped":0,"pct":66.67},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":21,"covered":14,"skipped":0,"pct":66.67},"branches":{"total":16,"covered":14,"skipped":0,"pct":87.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Datasources/DatasourceStructure.tsx": {"lines":{"total":28,"covered":14,"skipped":0,"pct":50},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":31,"covered":14,"skipped":0,"pct":45.16},"branches":{"total":8,"covered":4,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Datasources/DatasourceStructureContainer.tsx": {"lines":{"total":17,"covered":9,"skipped":0,"pct":52.94},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":17,"covered":9,"skipped":0,"pct":52.94},"branches":{"total":17,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Datasources/QueryTemplates.tsx": {"lines":{"total":33,"covered":16,"skipped":0,"pct":48.48},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":34,"covered":16,"skipped":0,"pct":47.06},"branches":{"total":10,"covered":4,"skipped":0,"pct":40}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Entity/AddButton.tsx": {"lines":{"total":11,"covered":9,"skipped":0,"pct":81.82},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":13,"covered":11,"skipped":0,"pct":84.62},"branches":{"total":6,"covered":4,"skipped":0,"pct":66.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Entity/Collapse.tsx": {"lines":{"total":14,"covered":14,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":15,"covered":14,"skipped":0,"pct":93.33},"branches":{"total":6,"covered":5,"skipped":0,"pct":83.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Entity/CollapseToggle.tsx": {"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":13,"covered":12,"skipped":0,"pct":92.31},"branches":{"total":6,"covered":4,"skipped":0,"pct":66.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Entity/CurrentPageEntityProperties.tsx": {"lines":{"total":46,"covered":13,"skipped":0,"pct":28.26},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":48,"covered":13,"skipped":0,"pct":27.08},"branches":{"total":16,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Entity/EntityProperties.tsx": {"lines":{"total":51,"covered":12,"skipped":0,"pct":23.53},"functions":{"total":8,"covered":0,"skipped":0,"pct":0},"statements":{"total":52,"covered":12,"skipped":0,"pct":23.08},"branches":{"total":26,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Entity/EntityProperty.tsx": {"lines":{"total":39,"covered":21,"skipped":0,"pct":53.85},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":39,"covered":21,"skipped":0,"pct":53.85},"branches":{"total":26,"covered":6,"skipped":0,"pct":23.08}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Entity/Loader.tsx": {"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":9,"covered":9,"skipped":0,"pct":100},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Entity/Name.tsx": {"lines":{"total":78,"covered":46,"skipped":0,"pct":58.97},"functions":{"total":19,"covered":10,"skipped":0,"pct":52.63},"statements":{"total":82,"covered":49,"skipped":0,"pct":59.76},"branches":{"total":42,"covered":11,"skipped":0,"pct":26.19}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Entity/Placeholder.tsx": {"lines":{"total":11,"covered":6,"skipped":0,"pct":54.55},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":6,"skipped":0,"pct":54.55},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Entity/index.tsx": {"lines":{"total":59,"covered":56,"skipped":0,"pct":94.92},"functions":{"total":16,"covered":15,"skipped":0,"pct":93.75},"statements":{"total":62,"covered":59,"skipped":0,"pct":95.16},"branches":{"total":46,"covered":37,"skipped":0,"pct":80.43}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Onboarding/DBQueryGroup.tsx": {"lines":{"total":37,"covered":18,"skipped":0,"pct":48.65},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":38,"covered":18,"skipped":0,"pct":47.37},"branches":{"total":16,"covered":6,"skipped":0,"pct":37.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Onboarding/Loading.tsx": {"lines":{"total":7,"covered":5,"skipped":0,"pct":71.43},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":5,"skipped":0,"pct":71.43},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Onboarding/index.tsx": {"lines":{"total":24,"covered":12,"skipped":0,"pct":50},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":26,"covered":12,"skipped":0,"pct":46.15},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Pages/PageContextMenu.tsx": {"lines":{"total":34,"covered":25,"skipped":0,"pct":73.53},"functions":{"total":8,"covered":1,"skipped":0,"pct":12.5},"statements":{"total":35,"covered":25,"skipped":0,"pct":71.43},"branches":{"total":10,"covered":6,"skipped":0,"pct":60}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Pages/PageEntity.tsx": {"lines":{"total":30,"covered":26,"skipped":0,"pct":86.67},"functions":{"total":5,"covered":2,"skipped":0,"pct":40},"statements":{"total":30,"covered":26,"skipped":0,"pct":86.67},"branches":{"total":8,"covered":3,"skipped":0,"pct":37.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Pages/PageGroup.tsx": {"lines":{"total":33,"covered":28,"skipped":0,"pct":84.85},"functions":{"total":6,"covered":4,"skipped":0,"pct":66.67},"statements":{"total":34,"covered":28,"skipped":0,"pct":82.35},"branches":{"total":17,"covered":10,"skipped":0,"pct":58.82}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/PluginGroup/PluginGroup.tsx": {"lines":{"total":25,"covered":22,"skipped":0,"pct":88},"functions":{"total":5,"covered":3,"skipped":0,"pct":60},"statements":{"total":26,"covered":23,"skipped":0,"pct":88.46},"branches":{"total":57,"covered":35,"skipped":0,"pct":61.4}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Widgets/WidgetContextMenu.tsx": {"lines":{"total":37,"covered":12,"skipped":0,"pct":32.43},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":38,"covered":12,"skipped":0,"pct":31.58},"branches":{"total":12,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Widgets/WidgetEntity.tsx": {"lines":{"total":50,"covered":50,"skipped":0,"pct":100},"functions":{"total":8,"covered":8,"skipped":0,"pct":100},"statements":{"total":52,"covered":51,"skipped":0,"pct":98.08},"branches":{"total":49,"covered":39,"skipped":0,"pct":79.59}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Widgets/WidgetGroup.tsx": {"lines":{"total":24,"covered":22,"skipped":0,"pct":91.67},"functions":{"total":5,"covered":3,"skipped":0,"pct":60},"statements":{"total":25,"covered":23,"skipped":0,"pct":92},"branches":{"total":43,"covered":28,"skipped":0,"pct":65.12}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Widgets/useNavigateToWidget.ts": {"lines":{"total":39,"covered":36,"skipped":0,"pct":92.31},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":41,"covered":37,"skipped":0,"pct":90.24},"branches":{"total":16,"covered":12,"skipped":0,"pct":75}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/Explorer/Widgets/utils.ts": {"lines":{"total":6,"covered":6,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/IntegrationEditor/ActiveDataSources.tsx": {"lines":{"total":41,"covered":21,"skipped":0,"pct":51.22},"functions":{"total":11,"covered":1,"skipped":0,"pct":9.09},"statements":{"total":50,"covered":22,"skipped":0,"pct":44},"branches":{"total":35,"covered":6,"skipped":0,"pct":17.14}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/IntegrationEditor/AddDatasourceSecurely.tsx": {"lines":{"total":11,"covered":10,"skipped":0,"pct":90.91},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":10,"skipped":0,"pct":90.91},"branches":{"total":8,"covered":8,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/IntegrationEditor/DatasourceCard.tsx": {"lines":{"total":52,"covered":26,"skipped":0,"pct":50},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":55,"covered":26,"skipped":0,"pct":47.27},"branches":{"total":42,"covered":20,"skipped":0,"pct":47.62}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/IntegrationEditor/DatasourceHome.tsx": {"lines":{"total":33,"covered":20,"skipped":0,"pct":60.61},"functions":{"total":9,"covered":1,"skipped":0,"pct":11.11},"statements":{"total":38,"covered":21,"skipped":0,"pct":55.26},"branches":{"total":15,"covered":8,"skipped":0,"pct":53.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/IntegrationEditor/IntegrationsHomeScreen.tsx": {"lines":{"total":120,"covered":37,"skipped":0,"pct":30.83},"functions":{"total":19,"covered":1,"skipped":0,"pct":5.26},"statements":{"total":134,"covered":38,"skipped":0,"pct":28.36},"branches":{"total":78,"covered":10,"skipped":0,"pct":12.82}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/IntegrationEditor/MockDataSources.tsx": {"lines":{"total":33,"covered":15,"skipped":0,"pct":45.45},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":33,"covered":15,"skipped":0,"pct":45.45},"branches":{"total":16,"covered":14,"skipped":0,"pct":87.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/IntegrationEditor/NewApi.tsx": {"lines":{"total":31,"covered":20,"skipped":0,"pct":64.52},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":32,"covered":20,"skipped":0,"pct":62.5},"branches":{"total":12,"covered":8,"skipped":0,"pct":66.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/IntegrationEditor/NewQuery.tsx": {"lines":{"total":16,"covered":11,"skipped":0,"pct":68.75},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.67},"statements":{"total":22,"covered":12,"skipped":0,"pct":54.55},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/IntegrationEditor/index.tsx": {"lines":{"total":7,"covered":5,"skipped":0,"pct":71.43},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":5,"skipped":0,"pct":71.43},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/PropertyPane/ConnectDataCTA.tsx": {"lines":{"total":33,"covered":29,"skipped":0,"pct":87.88},"functions":{"total":14,"covered":12,"skipped":0,"pct":85.71},"statements":{"total":34,"covered":30,"skipped":0,"pct":88.24},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/PropertyPane/Generator.tsx": {"lines":{"total":17,"covered":16,"skipped":0,"pct":94.12},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":19,"covered":17,"skipped":0,"pct":89.47},"branches":{"total":10,"covered":7,"skipped":0,"pct":70}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/PropertyPane/PanelPropertiesEditor.tsx": {"lines":{"total":74,"covered":14,"skipped":0,"pct":18.92},"functions":{"total":14,"covered":0,"skipped":0,"pct":0},"statements":{"total":76,"covered":14,"skipped":0,"pct":18.42},"branches":{"total":40,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/PropertyPane/PropertyControl.tsx": {"lines":{"total":107,"covered":64,"skipped":0,"pct":59.81},"functions":{"total":12,"covered":3,"skipped":0,"pct":25},"statements":{"total":113,"covered":65,"skipped":0,"pct":57.52},"branches":{"total":48,"covered":20,"skipped":0,"pct":41.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/PropertyPane/PropertyHelpLabel.tsx": {"lines":{"total":8,"covered":7,"skipped":0,"pct":87.5},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":8,"covered":7,"skipped":0,"pct":87.5},"branches":{"total":8,"covered":4,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/PropertyPane/PropertyPaneConnections.tsx": {"lines":{"total":70,"covered":40,"skipped":0,"pct":57.14},"functions":{"total":28,"covered":9,"skipped":0,"pct":32.14},"statements":{"total":72,"covered":41,"skipped":0,"pct":56.94},"branches":{"total":68,"covered":26,"skipped":0,"pct":38.24}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/PropertyPane/PropertySection.tsx": {"lines":{"total":26,"covered":22,"skipped":0,"pct":84.62},"functions":{"total":6,"covered":4,"skipped":0,"pct":66.67},"statements":{"total":28,"covered":24,"skipped":0,"pct":85.71},"branches":{"total":14,"covered":8,"skipped":0,"pct":57.14}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/PropertyPane/index.tsx": {"lines":{"total":99,"covered":84,"skipped":0,"pct":84.85},"functions":{"total":25,"covered":17,"skipped":0,"pct":68},"statements":{"total":107,"covered":89,"skipped":0,"pct":83.18},"branches":{"total":103,"covered":75,"skipped":0,"pct":72.82}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/QueryEditor/EditorJSONtoForm.tsx": {"lines":{"total":140,"covered":67,"skipped":0,"pct":47.86},"functions":{"total":31,"covered":0,"skipped":0,"pct":0},"statements":{"total":147,"covered":67,"skipped":0,"pct":45.58},"branches":{"total":105,"covered":48,"skipped":0,"pct":45.71}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/QueryEditor/Form.tsx": {"lines":{"total":16,"covered":9,"skipped":0,"pct":56.25},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":16,"covered":9,"skipped":0,"pct":56.25},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/QueryEditor/JSONViewer.tsx": {"lines":{"total":19,"covered":11,"skipped":0,"pct":57.89},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":20,"covered":12,"skipped":0,"pct":60},"branches":{"total":10,"covered":6,"skipped":0,"pct":60}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/QueryEditor/Table.tsx": {"lines":{"total":54,"covered":14,"skipped":0,"pct":25.93},"functions":{"total":11,"covered":0,"skipped":0,"pct":0},"statements":{"total":57,"covered":14,"skipped":0,"pct":24.56},"branches":{"total":24,"covered":2,"skipped":0,"pct":8.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/QueryEditor/TemplateMenu.tsx": {"lines":{"total":32,"covered":28,"skipped":0,"pct":87.5},"functions":{"total":9,"covered":7,"skipped":0,"pct":77.78},"statements":{"total":40,"covered":36,"skipped":0,"pct":90},"branches":{"total":15,"covered":12,"skipped":0,"pct":80}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/QueryEditor/index.tsx": {"lines":{"total":79,"covered":27,"skipped":0,"pct":34.18},"functions":{"total":13,"covered":1,"skipped":0,"pct":7.69},"statements":{"total":87,"covered":28,"skipped":0,"pct":32.18},"branches":{"total":33,"covered":4,"skipped":0,"pct":12.12}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/SaaSEditor/ActionForm.tsx": {"lines":{"total":48,"covered":13,"skipped":0,"pct":27.08},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":51,"covered":13,"skipped":0,"pct":25.49},"branches":{"total":26,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/SaaSEditor/DatasourceCard.tsx": {"lines":{"total":36,"covered":22,"skipped":0,"pct":61.11},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":36,"covered":22,"skipped":0,"pct":61.11},"branches":{"total":34,"covered":18,"skipped":0,"pct":52.94}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/SaaSEditor/DatasourceForm.tsx": {"lines":{"total":91,"covered":33,"skipped":0,"pct":36.26},"functions":{"total":16,"covered":1,"skipped":0,"pct":6.25},"statements":{"total":99,"covered":34,"skipped":0,"pct":34.34},"branches":{"total":35,"covered":6,"skipped":0,"pct":17.14}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/SaaSEditor/ListView.tsx": {"lines":{"total":69,"covered":26,"skipped":0,"pct":37.68},"functions":{"total":17,"covered":1,"skipped":0,"pct":5.88},"statements":{"total":79,"covered":27,"skipped":0,"pct":34.18},"branches":{"total":25,"covered":8,"skipped":0,"pct":32}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/SaaSEditor/constants.ts": {"lines":{"total":27,"covered":27,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":31,"covered":31,"skipped":0,"pct":100},"branches":{"total":30,"covered":19,"skipped":0,"pct":63.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/Editor/SaaSEditor/routes.ts": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/common/ArtBoard.tsx": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/common/CanvasSelectionArena.tsx": {"lines":{"total":101,"covered":91,"skipped":0,"pct":90.1},"functions":{"total":17,"covered":14,"skipped":0,"pct":82.35},"statements":{"total":104,"covered":94,"skipped":0,"pct":90.38},"branches":{"total":33,"covered":19,"skipped":0,"pct":57.58}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/common/NotFound.tsx": {"lines":{"total":10,"covered":6,"skipped":0,"pct":60},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":6,"skipped":0,"pct":60},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/common/ProfileDropdown.tsx": {"lines":{"total":26,"covered":18,"skipped":0,"pct":69.23},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":26,"covered":18,"skipped":0,"pct":69.23},"branches":{"total":10,"covered":6,"skipped":0,"pct":60}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/common/ProfileImage.tsx": {"lines":{"total":18,"covered":16,"skipped":0,"pct":88.89},"functions":{"total":7,"covered":5,"skipped":0,"pct":71.43},"statements":{"total":20,"covered":18,"skipped":0,"pct":90},"branches":{"total":16,"covered":10,"skipped":0,"pct":62.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/common/ThemeSwitcher.tsx": {"lines":{"total":13,"covered":7,"skipped":0,"pct":53.85},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":15,"covered":7,"skipped":0,"pct":46.67},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/common/CustomizedDropdown/dropdownHelpers.tsx": {"lines":{"total":28,"covered":9,"skipped":0,"pct":32.14},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":29,"covered":10,"skipped":0,"pct":34.48},"branches":{"total":15,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/organization/AppInviteUsersForm.tsx": {"lines":{"total":35,"covered":17,"skipped":0,"pct":48.57},"functions":{"total":8,"covered":0,"skipped":0,"pct":0},"statements":{"total":35,"covered":17,"skipped":0,"pct":48.57},"branches":{"total":38,"covered":6,"skipped":0,"pct":15.79}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/organization/General.tsx": {"lines":{"total":47,"covered":35,"skipped":0,"pct":74.47},"functions":{"total":10,"covered":2,"skipped":0,"pct":20},"statements":{"total":47,"covered":35,"skipped":0,"pct":74.47},"branches":{"total":44,"covered":32,"skipped":0,"pct":72.73}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/organization/ManageUsers.tsx": {"lines":{"total":19,"covered":9,"skipped":0,"pct":47.37},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":19,"covered":9,"skipped":0,"pct":47.37},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/organization/OrgInviteUsersForm.tsx": {"lines":{"total":103,"covered":43,"skipped":0,"pct":41.75},"functions":{"total":27,"covered":0,"skipped":0,"pct":0},"statements":{"total":107,"covered":43,"skipped":0,"pct":40.19},"branches":{"total":100,"covered":24,"skipped":0,"pct":24}} +,"/Users/hetunandu/code/appsmith/app/client/src/pages/organization/helpers.ts": {"lines":{"total":16,"covered":5,"skipped":0,"pct":31.25},"functions":{"total":10,"covered":0,"skipped":0,"pct":0},"statements":{"total":20,"covered":8,"skipped":0,"pct":40},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/index.tsx": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/entityReducers/actionsReducer.tsx": {"lines":{"total":104,"covered":7,"skipped":0,"pct":6.73},"functions":{"total":51,"covered":0,"skipped":0,"pct":0},"statements":{"total":106,"covered":7,"skipped":0,"pct":6.6},"branches":{"total":48,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/entityReducers/appReducer.ts": {"lines":{"total":13,"covered":10,"skipped":0,"pct":76.92},"functions":{"total":6,"covered":3,"skipped":0,"pct":50},"statements":{"total":13,"covered":10,"skipped":0,"pct":76.92},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/entityReducers/canvasWidgetsReducer.tsx": {"lines":{"total":11,"covered":8,"skipped":0,"pct":72.73},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":11,"covered":8,"skipped":0,"pct":72.73},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/entityReducers/datasourceReducer.ts": {"lines":{"total":52,"covered":5,"skipped":0,"pct":9.62},"functions":{"total":34,"covered":0,"skipped":0,"pct":0},"statements":{"total":54,"covered":5,"skipped":0,"pct":9.26},"branches":{"total":12,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/entityReducers/index.ts": {"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":12,"covered":12,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/entityReducers/jsExecutionsReducer.ts": {"lines":{"total":6,"covered":5,"skipped":0,"pct":83.33},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":5,"skipped":0,"pct":83.33},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/entityReducers/metaReducer.ts": {"lines":{"total":21,"covered":9,"skipped":0,"pct":42.86},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.67},"statements":{"total":21,"covered":9,"skipped":0,"pct":42.86},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/entityReducers/pageListReducer.tsx": {"lines":{"total":32,"covered":8,"skipped":0,"pct":25},"functions":{"total":13,"covered":3,"skipped":0,"pct":23.08},"statements":{"total":36,"covered":8,"skipped":0,"pct":22.22},"branches":{"total":18,"covered":5,"skipped":0,"pct":27.78}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/entityReducers/pluginsReducer.ts": {"lines":{"total":10,"covered":5,"skipped":0,"pct":50},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":5,"skipped":0,"pct":50},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/entityReducers/widgetConfigReducer.tsx": {"lines":{"total":7,"covered":6,"skipped":0,"pct":85.71},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":6,"skipped":0,"pct":85.71},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/evaluationReducers/dependencyReducer.ts": {"lines":{"total":6,"covered":5,"skipped":0,"pct":83.33},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":5,"skipped":0,"pct":83.33},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/evaluationReducers/index.ts": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/evaluationReducers/loadingEntitiesReducer.ts": {"lines":{"total":7,"covered":6,"skipped":0,"pct":85.71},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":7,"covered":6,"skipped":0,"pct":85.71},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/evaluationReducers/treeReducer.ts": {"lines":{"total":7,"covered":6,"skipped":0,"pct":85.71},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":7,"covered":6,"skipped":0,"pct":85.71},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/apiNameReducer.ts": {"lines":{"total":8,"covered":5,"skipped":0,"pct":62.5},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":5,"skipped":0,"pct":62.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/apiPaneReducer.ts": {"lines":{"total":25,"covered":5,"skipped":0,"pct":20},"functions":{"total":18,"covered":0,"skipped":0,"pct":0},"statements":{"total":27,"covered":5,"skipped":0,"pct":18.52},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/appViewReducer.tsx": {"lines":{"total":10,"covered":5,"skipped":0,"pct":50},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":5,"skipped":0,"pct":50},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/applicationsReducer.tsx": {"lines":{"total":79,"covered":9,"skipped":0,"pct":11.39},"functions":{"total":39,"covered":3,"skipped":0,"pct":7.69},"statements":{"total":82,"covered":9,"skipped":0,"pct":10.98},"branches":{"total":12,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/authReducer.ts": {"lines":{"total":11,"covered":5,"skipped":0,"pct":45.45},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":5,"skipped":0,"pct":45.45},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/canvasSelectionReducer.ts": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/confirmRunActionReducer.ts": {"lines":{"total":6,"covered":5,"skipped":0,"pct":83.33},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":5,"skipped":0,"pct":83.33},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/datasourceNameReducer.ts": {"lines":{"total":8,"covered":5,"skipped":0,"pct":62.5},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":5,"skipped":0,"pct":62.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/datasourcePaneReducer.ts": {"lines":{"total":15,"covered":6,"skipped":0,"pct":40},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":15,"covered":6,"skipped":0,"pct":40},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/debuggerReducer.ts": {"lines":{"total":26,"covered":10,"skipped":0,"pct":38.46},"functions":{"total":7,"covered":1,"skipped":0,"pct":14.29},"statements":{"total":28,"covered":10,"skipped":0,"pct":35.71},"branches":{"total":18,"covered":1,"skipped":0,"pct":5.56}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/dragResizeReducer.ts": {"lines":{"total":39,"covered":34,"skipped":0,"pct":87.18},"functions":{"total":11,"covered":7,"skipped":0,"pct":63.64},"statements":{"total":40,"covered":34,"skipped":0,"pct":85},"branches":{"total":26,"covered":16,"skipped":0,"pct":61.54}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/editorReducer.tsx": {"lines":{"total":68,"covered":15,"skipped":0,"pct":22.06},"functions":{"total":23,"covered":5,"skipped":0,"pct":21.74},"statements":{"total":68,"covered":15,"skipped":0,"pct":22.06},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/errorReducer.tsx": {"lines":{"total":9,"covered":7,"skipped":0,"pct":77.78},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":9,"covered":7,"skipped":0,"pct":77.78},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/explorerReducer.ts": {"lines":{"total":19,"covered":10,"skipped":0,"pct":52.63},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.67},"statements":{"total":19,"covered":10,"skipped":0,"pct":52.63},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/globalSearchReducer.ts": {"lines":{"total":10,"covered":6,"skipped":0,"pct":60},"functions":{"total":5,"covered":1,"skipped":0,"pct":20},"statements":{"total":10,"covered":6,"skipped":0,"pct":60},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/helpReducer.ts": {"lines":{"total":7,"covered":5,"skipped":0,"pct":71.43},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":5,"skipped":0,"pct":71.43},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/importReducer.ts": {"lines":{"total":8,"covered":5,"skipped":0,"pct":62.5},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":5,"skipped":0,"pct":62.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/importedCollectionsReducer.ts": {"lines":{"total":8,"covered":5,"skipped":0,"pct":62.5},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":5,"skipped":0,"pct":62.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/index.tsx": {"lines":{"total":36,"covered":36,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":36,"covered":36,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/notificationsReducer.ts": {"lines":{"total":21,"covered":6,"skipped":0,"pct":28.57},"functions":{"total":8,"covered":0,"skipped":0,"pct":0},"statements":{"total":21,"covered":6,"skipped":0,"pct":28.57},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/onBoardingReducer.ts": {"lines":{"total":21,"covered":6,"skipped":0,"pct":28.57},"functions":{"total":15,"covered":0,"skipped":0,"pct":0},"statements":{"total":21,"covered":6,"skipped":0,"pct":28.57},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/orgReducer.ts": {"lines":{"total":37,"covered":6,"skipped":0,"pct":16.22},"functions":{"total":24,"covered":1,"skipped":0,"pct":4.17},"statements":{"total":37,"covered":6,"skipped":0,"pct":16.22},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/pageCanvasStructureReducer.ts": {"lines":{"total":12,"covered":10,"skipped":0,"pct":83.33},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":12,"covered":10,"skipped":0,"pct":83.33},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/pageWidgetsReducer.ts": {"lines":{"total":12,"covered":11,"skipped":0,"pct":91.67},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":12,"covered":11,"skipped":0,"pct":91.67},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/propertyPaneReducer.tsx": {"lines":{"total":25,"covered":15,"skipped":0,"pct":60},"functions":{"total":4,"covered":2,"skipped":0,"pct":50},"statements":{"total":27,"covered":17,"skipped":0,"pct":62.96},"branches":{"total":21,"covered":9,"skipped":0,"pct":42.86}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/providerReducer.ts": {"lines":{"total":43,"covered":5,"skipped":0,"pct":11.63},"functions":{"total":23,"covered":0,"skipped":0,"pct":0},"statements":{"total":44,"covered":5,"skipped":0,"pct":11.36},"branches":{"total":8,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/queryPaneReducer.ts": {"lines":{"total":21,"covered":6,"skipped":0,"pct":28.57},"functions":{"total":13,"covered":0,"skipped":0,"pct":0},"statements":{"total":23,"covered":6,"skipped":0,"pct":26.09},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/releasesReducer.ts": {"lines":{"total":7,"covered":5,"skipped":0,"pct":71.43},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":5,"skipped":0,"pct":71.43},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/themeReducer.ts": {"lines":{"total":15,"covered":7,"skipped":0,"pct":46.67},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":15,"covered":7,"skipped":0,"pct":46.67},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/tourReducer.ts": {"lines":{"total":8,"covered":5,"skipped":0,"pct":62.5},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":8,"covered":5,"skipped":0,"pct":62.5},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/usersReducer.ts": {"lines":{"total":31,"covered":7,"skipped":0,"pct":22.58},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":31,"covered":7,"skipped":0,"pct":22.58},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/websocketReducer.ts": {"lines":{"total":6,"covered":5,"skipped":0,"pct":83.33},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":5,"skipped":0,"pct":83.33},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/widgetSidebarReducer.ts": {"lines":{"total":6,"covered":5,"skipped":0,"pct":83.33},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":5,"skipped":0,"pct":83.33},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/commentsReducer/commentsReducer.ts": {"lines":{"total":65,"covered":33,"skipped":0,"pct":50.77},"functions":{"total":27,"covered":14,"skipped":0,"pct":51.85},"statements":{"total":74,"covered":33,"skipped":0,"pct":44.59},"branches":{"total":12,"covered":3,"skipped":0,"pct":25}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/commentsReducer/handleAddCommentToThreadSuccess.ts": {"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":10,"covered":10,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/commentsReducer/handleCreateNewCommentThreadSuccess.ts": {"lines":{"total":10,"covered":9,"skipped":0,"pct":90},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":13,"covered":12,"skipped":0,"pct":92.31},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/commentsReducer/handleFetchApplicationCommentsSuccess.ts": {"lines":{"total":13,"covered":13,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":15,"covered":14,"skipped":0,"pct":93.33},"branches":{"total":4,"covered":3,"skipped":0,"pct":75}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/commentsReducer/handleNewCommentThreadEvent.ts": {"lines":{"total":13,"covered":12,"skipped":0,"pct":92.31},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":13,"covered":12,"skipped":0,"pct":92.31},"branches":{"total":6,"covered":5,"skipped":0,"pct":83.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/commentsReducer/handleUpdateCommentEvent.ts": {"lines":{"total":10,"covered":2,"skipped":0,"pct":20},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":13,"covered":2,"skipped":0,"pct":15.38},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/commentsReducer/handleUpdateCommentThreadEvent.ts": {"lines":{"total":15,"covered":14,"skipped":0,"pct":93.33},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":15,"covered":14,"skipped":0,"pct":93.33},"branches":{"total":46,"covered":28,"skipped":0,"pct":60.87}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/commentsReducer/handleUpdateCommentThreadSuccess.ts": {"lines":{"total":14,"covered":13,"skipped":0,"pct":92.86},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":15,"covered":13,"skipped":0,"pct":86.67},"branches":{"total":40,"covered":23,"skipped":0,"pct":57.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/reducers/uiReducers/commentsReducer/testFixtures.ts": {"lines":{"total":9,"covered":9,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":9,"covered":9,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/resizable/index.tsx": {"lines":{"total":68,"covered":42,"skipped":0,"pct":61.76},"functions":{"total":20,"covered":7,"skipped":0,"pct":35},"statements":{"total":79,"covered":47,"skipped":0,"pct":59.49},"branches":{"total":38,"covered":16,"skipped":0,"pct":42.11}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/ActionExecutionSagas.ts": {"lines":{"total":344,"covered":48,"skipped":0,"pct":13.95},"functions":{"total":28,"covered":2,"skipped":0,"pct":7.14},"statements":{"total":403,"covered":49,"skipped":0,"pct":12.16},"branches":{"total":232,"covered":3,"skipped":0,"pct":1.29}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/ActionSagas.ts": {"lines":{"total":263,"covered":37,"skipped":0,"pct":14.07},"functions":{"total":24,"covered":1,"skipped":0,"pct":4.17},"statements":{"total":319,"covered":37,"skipped":0,"pct":11.6},"branches":{"total":100,"covered":1,"skipped":0,"pct":1}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/ApiPaneSagas.ts": {"lines":{"total":184,"covered":32,"skipped":0,"pct":17.39},"functions":{"total":28,"covered":2,"skipped":0,"pct":7.14},"statements":{"total":213,"covered":33,"skipped":0,"pct":15.49},"branches":{"total":107,"covered":2,"skipped":0,"pct":1.87}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/ApplicationSagas.tsx": {"lines":{"total":164,"covered":37,"skipped":0,"pct":22.56},"functions":{"total":22,"covered":2,"skipped":0,"pct":9.09},"statements":{"total":193,"covered":37,"skipped":0,"pct":19.17},"branches":{"total":59,"covered":2,"skipped":0,"pct":3.39}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/BatchSagas.tsx": {"lines":{"total":25,"covered":8,"skipped":0,"pct":32},"functions":{"total":5,"covered":1,"skipped":0,"pct":20},"statements":{"total":31,"covered":8,"skipped":0,"pct":25.81},"branches":{"total":12,"covered":1,"skipped":0,"pct":8.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/CollectionSagas.ts": {"lines":{"total":12,"covered":7,"skipped":0,"pct":58.33},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":14,"covered":7,"skipped":0,"pct":50},"branches":{"total":3,"covered":1,"skipped":0,"pct":33.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/CurlImportSagas.ts": {"lines":{"total":31,"covered":17,"skipped":0,"pct":54.84},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":35,"covered":17,"skipped":0,"pct":48.57},"branches":{"total":3,"covered":1,"skipped":0,"pct":33.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/DatasourcesSagas.ts": {"lines":{"total":237,"covered":37,"skipped":0,"pct":15.61},"functions":{"total":23,"covered":2,"skipped":0,"pct":8.7},"statements":{"total":288,"covered":38,"skipped":0,"pct":13.19},"branches":{"total":102,"covered":2,"skipped":0,"pct":1.96}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/DebuggerSagas.ts": {"lines":{"total":114,"covered":27,"skipped":0,"pct":23.68},"functions":{"total":9,"covered":3,"skipped":0,"pct":33.33},"statements":{"total":126,"covered":28,"skipped":0,"pct":22.22},"branches":{"total":126,"covered":6,"skipped":0,"pct":4.76}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/ErrorSagas.tsx": {"lines":{"total":102,"covered":58,"skipped":0,"pct":56.86},"functions":{"total":18,"covered":7,"skipped":0,"pct":38.89},"statements":{"total":113,"covered":65,"skipped":0,"pct":57.52},"branches":{"total":63,"covered":24,"skipped":0,"pct":38.1}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/EvaluationsSaga.ts": {"lines":{"total":93,"covered":21,"skipped":0,"pct":22.58},"functions":{"total":15,"covered":1,"skipped":0,"pct":6.67},"statements":{"total":106,"covered":21,"skipped":0,"pct":19.81},"branches":{"total":33,"covered":1,"skipped":0,"pct":3.03}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/GlobalSearchSagas.ts": {"lines":{"total":35,"covered":19,"skipped":0,"pct":54.29},"functions":{"total":6,"covered":3,"skipped":0,"pct":50},"statements":{"total":40,"covered":21,"skipped":0,"pct":52.5},"branches":{"total":23,"covered":3,"skipped":0,"pct":13.04}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/InitSagas.ts": {"lines":{"total":93,"covered":45,"skipped":0,"pct":48.39},"functions":{"total":6,"covered":4,"skipped":0,"pct":66.67},"statements":{"total":110,"covered":49,"skipped":0,"pct":44.55},"branches":{"total":35,"covered":5,"skipped":0,"pct":14.29}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/ModalSagas.ts": {"lines":{"total":56,"covered":26,"skipped":0,"pct":46.43},"functions":{"total":10,"covered":2,"skipped":0,"pct":20},"statements":{"total":61,"covered":28,"skipped":0,"pct":45.9},"branches":{"total":24,"covered":5,"skipped":0,"pct":20.83}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/NotificationsSagas.ts": {"lines":{"total":34,"covered":8,"skipped":0,"pct":23.53},"functions":{"total":5,"covered":1,"skipped":0,"pct":20},"statements":{"total":44,"covered":8,"skipped":0,"pct":18.18},"branches":{"total":12,"covered":1,"skipped":0,"pct":8.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/OnboardingSagas.ts": {"lines":{"total":315,"covered":53,"skipped":0,"pct":16.83},"functions":{"total":49,"covered":5,"skipped":0,"pct":10.2},"statements":{"total":371,"covered":62,"skipped":0,"pct":16.71},"branches":{"total":137,"covered":2,"skipped":0,"pct":1.46}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/OrgSagas.ts": {"lines":{"total":106,"covered":26,"skipped":0,"pct":24.53},"functions":{"total":14,"covered":2,"skipped":0,"pct":14.29},"statements":{"total":133,"covered":26,"skipped":0,"pct":19.55},"branches":{"total":33,"covered":1,"skipped":0,"pct":3.03}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/PageSagas.tsx": {"lines":{"total":243,"covered":62,"skipped":0,"pct":25.51},"functions":{"total":32,"covered":5,"skipped":0,"pct":15.63},"statements":{"total":283,"covered":67,"skipped":0,"pct":23.67},"branches":{"total":65,"covered":4,"skipped":0,"pct":6.15}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/PluginSagas.ts": {"lines":{"total":69,"covered":14,"skipped":0,"pct":20.29},"functions":{"total":8,"covered":1,"skipped":0,"pct":12.5},"statements":{"total":84,"covered":14,"skipped":0,"pct":16.67},"branches":{"total":27,"covered":1,"skipped":0,"pct":3.7}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/PostEvaluationSagas.ts": {"lines":{"total":110,"covered":26,"skipped":0,"pct":23.64},"functions":{"total":15,"covered":0,"skipped":0,"pct":0},"statements":{"total":129,"covered":26,"skipped":0,"pct":20.16},"branches":{"total":64,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/ProvidersSaga.ts": {"lines":{"total":63,"covered":19,"skipped":0,"pct":30.16},"functions":{"total":8,"covered":1,"skipped":0,"pct":12.5},"statements":{"total":78,"covered":19,"skipped":0,"pct":24.36},"branches":{"total":19,"covered":1,"skipped":0,"pct":5.26}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/QueryPaneSagas.ts": {"lines":{"total":89,"covered":25,"skipped":0,"pct":28.09},"functions":{"total":8,"covered":2,"skipped":0,"pct":25},"statements":{"total":109,"covered":26,"skipped":0,"pct":23.85},"branches":{"total":39,"covered":5,"skipped":0,"pct":12.82}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/RecentEntitiesSagas.ts": {"lines":{"total":29,"covered":13,"skipped":0,"pct":44.83},"functions":{"total":4,"covered":2,"skipped":0,"pct":50},"statements":{"total":29,"covered":13,"skipped":0,"pct":44.83},"branches":{"total":66,"covered":8,"skipped":0,"pct":12.12}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/SaaSPaneSagas.ts": {"lines":{"total":34,"covered":16,"skipped":0,"pct":47.06},"functions":{"total":4,"covered":2,"skipped":0,"pct":50},"statements":{"total":46,"covered":17,"skipped":0,"pct":36.96},"branches":{"total":15,"covered":5,"skipped":0,"pct":33.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/SelectionCanvasSagas.ts": {"lines":{"total":39,"covered":37,"skipped":0,"pct":94.87},"functions":{"total":7,"covered":5,"skipped":0,"pct":71.43},"statements":{"total":44,"covered":42,"skipped":0,"pct":95.45},"branches":{"total":16,"covered":9,"skipped":0,"pct":56.25}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/ThemeSaga.tsx": {"lines":{"total":7,"covered":6,"skipped":0,"pct":85.71},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":7,"covered":6,"skipped":0,"pct":85.71},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/TourSagas.ts": {"lines":{"total":15,"covered":7,"skipped":0,"pct":46.67},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":18,"covered":7,"skipped":0,"pct":38.89},"branches":{"total":7,"covered":1,"skipped":0,"pct":14.29}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/UtilSagas.ts": {"lines":{"total":7,"covered":5,"skipped":0,"pct":71.43},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":7,"covered":5,"skipped":0,"pct":71.43},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/WidgetBlueprintSagas.ts": {"lines":{"total":50,"covered":17,"skipped":0,"pct":34},"functions":{"total":9,"covered":1,"skipped":0,"pct":11.11},"statements":{"total":56,"covered":17,"skipped":0,"pct":30.36},"branches":{"total":32,"covered":1,"skipped":0,"pct":3.13}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/WidgetBlueprintSagasEnums.ts": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/WidgetEnhancementHelpers.ts": {"lines":{"total":65,"covered":36,"skipped":0,"pct":55.38},"functions":{"total":14,"covered":6,"skipped":0,"pct":42.86},"statements":{"total":73,"covered":38,"skipped":0,"pct":52.05},"branches":{"total":47,"covered":17,"skipped":0,"pct":36.17}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/WidgetLoadingSaga.ts": {"lines":{"total":50,"covered":15,"skipped":0,"pct":30},"functions":{"total":13,"covered":2,"skipped":0,"pct":15.38},"statements":{"total":57,"covered":15,"skipped":0,"pct":26.32},"branches":{"total":14,"covered":3,"skipped":0,"pct":21.43}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/WidgetOperationSagas.tsx": {"lines":{"total":606,"covered":270,"skipped":0,"pct":44.55},"functions":{"total":85,"covered":43,"skipped":0,"pct":50.59},"statements":{"total":694,"covered":307,"skipped":0,"pct":44.24},"branches":{"total":319,"covered":98,"skipped":0,"pct":30.72}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/WidgetOperationUtils.ts": {"lines":{"total":107,"covered":56,"skipped":0,"pct":52.34},"functions":{"total":13,"covered":9,"skipped":0,"pct":69.23},"statements":{"total":117,"covered":62,"skipped":0,"pct":52.99},"branches":{"total":89,"covered":29,"skipped":0,"pct":32.58}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/WidgetSelectionSagas.ts": {"lines":{"total":71,"covered":68,"skipped":0,"pct":95.77},"functions":{"total":11,"covered":11,"skipped":0,"pct":100},"statements":{"total":79,"covered":76,"skipped":0,"pct":96.2},"branches":{"total":46,"covered":43,"skipped":0,"pct":93.48}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/WidgetSidebarSagas.tsx": {"lines":{"total":10,"covered":7,"skipped":0,"pct":70},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":11,"covered":7,"skipped":0,"pct":63.64},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/index.tsx": {"lines":{"total":45,"covered":42,"skipped":0,"pct":93.33},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":47,"covered":43,"skipped":0,"pct":91.49},"branches":{"total":5,"covered":3,"skipped":0,"pct":60}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/selectors.tsx": {"lines":{"total":75,"covered":50,"skipped":0,"pct":66.67},"functions":{"total":28,"covered":14,"skipped":0,"pct":50},"statements":{"total":99,"covered":72,"skipped":0,"pct":72.73},"branches":{"total":24,"covered":13,"skipped":0,"pct":54.17}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/userSagas.tsx": {"lines":{"total":161,"covered":37,"skipped":0,"pct":22.98},"functions":{"total":16,"covered":2,"skipped":0,"pct":12.5},"statements":{"total":192,"covered":38,"skipped":0,"pct":19.79},"branches":{"total":52,"covered":3,"skipped":0,"pct":5.77}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/CommentSagas/index.ts": {"lines":{"total":102,"covered":43,"skipped":0,"pct":42.16},"functions":{"total":18,"covered":9,"skipped":0,"pct":50},"statements":{"total":132,"covered":56,"skipped":0,"pct":42.42},"branches":{"total":28,"covered":5,"skipped":0,"pct":17.86}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/WebsocketSagas/WebsocketSagas.ts": {"lines":{"total":54,"covered":12,"skipped":0,"pct":22.22},"functions":{"total":15,"covered":2,"skipped":0,"pct":13.33},"statements":{"total":64,"covered":12,"skipped":0,"pct":18.75},"branches":{"total":19,"covered":2,"skipped":0,"pct":10.53}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/WebsocketSagas/constants.ts": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/sagas/WebsocketSagas/handleSocketEvent.ts": {"lines":{"total":30,"covered":7,"skipped":0,"pct":23.33},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":32,"covered":7,"skipped":0,"pct":21.88},"branches":{"total":24,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/selectors/appViewSelectors.tsx": {"lines":{"total":15,"covered":10,"skipped":0,"pct":66.67},"functions":{"total":7,"covered":2,"skipped":0,"pct":28.57},"statements":{"total":16,"covered":11,"skipped":0,"pct":68.75},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/selectors/applicationSelectors.tsx": {"lines":{"total":61,"covered":37,"skipped":0,"pct":60.66},"functions":{"total":24,"covered":11,"skipped":0,"pct":45.83},"statements":{"total":79,"covered":54,"skipped":0,"pct":68.35},"branches":{"total":22,"covered":6,"skipped":0,"pct":27.27}} +,"/Users/hetunandu/code/appsmith/app/client/src/selectors/commentsSelectors.ts": {"lines":{"total":69,"covered":24,"skipped":0,"pct":34.78},"functions":{"total":25,"covered":10,"skipped":0,"pct":40},"statements":{"total":99,"covered":42,"skipped":0,"pct":42.42},"branches":{"total":60,"covered":7,"skipped":0,"pct":11.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/selectors/dataTreeSelectors.ts": {"lines":{"total":23,"covered":14,"skipped":0,"pct":60.87},"functions":{"total":6,"covered":2,"skipped":0,"pct":33.33},"statements":{"total":27,"covered":18,"skipped":0,"pct":66.67},"branches":{"total":10,"covered":3,"skipped":0,"pct":30}} +,"/Users/hetunandu/code/appsmith/app/client/src/selectors/debuggerSelectors.tsx": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":3,"covered":3,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/selectors/editorSelectors.tsx": {"lines":{"total":107,"covered":63,"skipped":0,"pct":58.88},"functions":{"total":42,"covered":19,"skipped":0,"pct":45.24},"statements":{"total":130,"covered":81,"skipped":0,"pct":62.31},"branches":{"total":37,"covered":17,"skipped":0,"pct":45.95}} +,"/Users/hetunandu/code/appsmith/app/client/src/selectors/entitiesSelector.ts": {"lines":{"total":165,"covered":75,"skipped":0,"pct":45.45},"functions":{"total":83,"covered":16,"skipped":0,"pct":19.28},"statements":{"total":224,"covered":107,"skipped":0,"pct":47.77},"branches":{"total":72,"covered":4,"skipped":0,"pct":5.56}} +,"/Users/hetunandu/code/appsmith/app/client/src/selectors/errorSelectors.tsx": {"lines":{"total":4,"covered":2,"skipped":0,"pct":50},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":4,"skipped":0,"pct":66.67},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/selectors/formSelectors.ts": {"lines":{"total":9,"covered":3,"skipped":0,"pct":33.33},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":5,"skipped":0,"pct":45.45},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/selectors/helpSelectors.tsx": {"lines":{"total":4,"covered":2,"skipped":0,"pct":50},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":4,"skipped":0,"pct":66.67},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/selectors/organizationSelectors.tsx": {"lines":{"total":27,"covered":17,"skipped":0,"pct":62.96},"functions":{"total":19,"covered":5,"skipped":0,"pct":26.32},"statements":{"total":43,"covered":29,"skipped":0,"pct":67.44},"branches":{"total":14,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/selectors/propertyPaneSelectors.tsx": {"lines":{"total":25,"covered":24,"skipped":0,"pct":96},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":26,"covered":25,"skipped":0,"pct":96.15},"branches":{"total":17,"covered":16,"skipped":0,"pct":94.12}} +,"/Users/hetunandu/code/appsmith/app/client/src/selectors/themeSelectors.tsx": {"lines":{"total":13,"covered":12,"skipped":0,"pct":92.31},"functions":{"total":5,"covered":4,"skipped":0,"pct":80},"statements":{"total":18,"covered":17,"skipped":0,"pct":94.44},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/selectors/tourSelectors.tsx": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":6,"covered":6,"skipped":0,"pct":100},"branches":{"total":8,"covered":8,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/selectors/ui.tsx": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":6,"covered":6,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/selectors/usersSelectors.tsx": {"lines":{"total":7,"covered":6,"skipped":0,"pct":85.71},"functions":{"total":4,"covered":2,"skipped":0,"pct":50},"statements":{"total":12,"covered":10,"skipped":0,"pct":83.33},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/selectors/widgetSelectors.ts": {"lines":{"total":14,"covered":13,"skipped":0,"pct":92.86},"functions":{"total":6,"covered":5,"skipped":0,"pct":83.33},"statements":{"total":17,"covered":15,"skipped":0,"pct":88.24},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/templates/default.ts": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/transformers/CurlImportTransformer.ts": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/transformers/RestAPIDatasourceFormTransformer.ts": {"lines":{"total":66,"covered":9,"skipped":0,"pct":13.64},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":74,"covered":11,"skipped":0,"pct":14.86},"branches":{"total":85,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/transformers/RestActionTransformer.ts": {"lines":{"total":15,"covered":15,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":17,"covered":16,"skipped":0,"pct":94.12},"branches":{"total":16,"covered":13,"skipped":0,"pct":81.25}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/AnalyticsUtil.tsx": {"lines":{"total":96,"covered":28,"skipped":0,"pct":29.17},"functions":{"total":14,"covered":4,"skipped":0,"pct":28.57},"statements":{"total":100,"covered":29,"skipped":0,"pct":29},"branches":{"total":43,"covered":3,"skipped":0,"pct":6.98}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/ApiPaneUtils.tsx": {"lines":{"total":19,"covered":19,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":20,"covered":20,"skipped":0,"pct":100},"branches":{"total":19,"covered":15,"skipped":0,"pct":78.95}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/AppsmithConsole.ts": {"lines":{"total":10,"covered":8,"skipped":0,"pct":80},"functions":{"total":5,"covered":3,"skipped":0,"pct":60},"statements":{"total":10,"covered":8,"skipped":0,"pct":80},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/AppsmithUtils.tsx": {"lines":{"total":155,"covered":77,"skipped":0,"pct":49.68},"functions":{"total":37,"covered":14,"skipped":0,"pct":37.84},"statements":{"total":179,"covered":97,"skipped":0,"pct":54.19},"branches":{"total":86,"covered":23,"skipped":0,"pct":26.74}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/DynamicBindingUtils.ts": {"lines":{"total":114,"covered":101,"skipped":0,"pct":88.6},"functions":{"total":21,"covered":16,"skipped":0,"pct":76.19},"statements":{"total":131,"covered":118,"skipped":0,"pct":90.08},"branches":{"total":71,"covered":57,"skipped":0,"pct":80.28}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/EditorUtils.ts": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":9,"covered":9,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/FormControlFactory.tsx": {"lines":{"total":16,"covered":7,"skipped":0,"pct":43.75},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":16,"covered":7,"skipped":0,"pct":43.75},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/FormControlRegistry.tsx": {"lines":{"total":42,"covered":18,"skipped":0,"pct":42.86},"functions":{"total":14,"covered":1,"skipped":0,"pct":7.14},"statements":{"total":42,"covered":18,"skipped":0,"pct":42.86},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/PerformanceTracker.ts": {"lines":{"total":114,"covered":71,"skipped":0,"pct":62.28},"functions":{"total":11,"covered":8,"skipped":0,"pct":72.73},"statements":{"total":117,"covered":72,"skipped":0,"pct":61.54},"branches":{"total":79,"covered":20,"skipped":0,"pct":25.32}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/PropertyControlFactory.tsx": {"lines":{"total":19,"covered":14,"skipped":0,"pct":73.68},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":20,"covered":14,"skipped":0,"pct":70},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/PropertyControlRegistry.tsx": {"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/TypeHelpers.ts": {"lines":{"total":21,"covered":20,"skipped":0,"pct":95.24},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":30,"covered":27,"skipped":0,"pct":90},"branches":{"total":18,"covered":15,"skipped":0,"pct":83.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/WidgetFactory.tsx": {"lines":{"total":66,"covered":43,"skipped":0,"pct":65.15},"functions":{"total":12,"covered":6,"skipped":0,"pct":50},"statements":{"total":66,"covered":43,"skipped":0,"pct":65.15},"branches":{"total":19,"covered":12,"skipped":0,"pct":63.16}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/WidgetPropsUtils.tsx": {"lines":{"total":498,"covered":319,"skipped":0,"pct":64.06},"functions":{"total":81,"covered":44,"skipped":0,"pct":54.32},"statements":{"total":522,"covered":338,"skipped":0,"pct":64.75},"branches":{"total":447,"covered":262,"skipped":0,"pct":58.61}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/WidgetRegistry.tsx": {"lines":{"total":96,"covered":72,"skipped":0,"pct":75},"functions":{"total":32,"covered":8,"skipped":0,"pct":25},"statements":{"total":96,"covered":72,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/WorkerUtil.ts": {"lines":{"total":65,"covered":60,"skipped":0,"pct":92.31},"functions":{"total":7,"covered":7,"skipped":0,"pct":100},"statements":{"total":79,"covered":71,"skipped":0,"pct":89.87},"branches":{"total":34,"covered":24,"skipped":0,"pct":70.59}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/canvasStructureHelpers.ts": {"lines":{"total":16,"covered":16,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":18,"covered":18,"skipped":0,"pct":100},"branches":{"total":20,"covered":19,"skipped":0,"pct":95}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/featureFlags.ts": {"lines":{"total":31,"covered":11,"skipped":0,"pct":35.48},"functions":{"total":9,"covered":1,"skipped":0,"pct":11.11},"statements":{"total":31,"covered":11,"skipped":0,"pct":35.48},"branches":{"total":10,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/formhelpers.ts": {"lines":{"total":12,"covered":8,"skipped":0,"pct":66.67},"functions":{"total":5,"covered":1,"skipped":0,"pct":20},"statements":{"total":17,"covered":13,"skipped":0,"pct":76.47},"branches":{"total":5,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/generators.tsx": {"lines":{"total":13,"covered":13,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":21,"covered":20,"skipped":0,"pct":95.24},"branches":{"total":6,"covered":3,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/helpers.tsx": {"lines":{"total":120,"covered":57,"skipped":0,"pct":47.5},"functions":{"total":26,"covered":6,"skipped":0,"pct":23.08},"statements":{"total":153,"covered":82,"skipped":0,"pct":53.59},"branches":{"total":71,"covered":19,"skipped":0,"pct":26.76}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/history.ts": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/localStorage.tsx": {"lines":{"total":55,"covered":44,"skipped":0,"pct":80},"functions":{"total":9,"covered":9,"skipped":0,"pct":100},"statements":{"total":57,"covered":46,"skipped":0,"pct":80.7},"branches":{"total":18,"covered":9,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/storage.ts": {"lines":{"total":100,"covered":32,"skipped":0,"pct":32},"functions":{"total":30,"covered":6,"skipped":0,"pct":20},"statements":{"total":137,"covered":54,"skipped":0,"pct":39.42},"branches":{"total":22,"covered":3,"skipped":0,"pct":13.64}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/autocomplete/EntityDefinitions.ts": {"lines":{"total":15,"covered":7,"skipped":0,"pct":46.67},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":15,"covered":7,"skipped":0,"pct":46.67},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/autocomplete/TernServer.ts": {"lines":{"total":366,"covered":167,"skipped":0,"pct":45.63},"functions":{"total":58,"covered":17,"skipped":0,"pct":29.31},"statements":{"total":418,"covered":174,"skipped":0,"pct":41.63},"branches":{"total":234,"covered":60,"skipped":0,"pct":25.64}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/autocomplete/customTreeTypeDefCreator.ts": {"lines":{"total":10,"covered":3,"skipped":0,"pct":30},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":4,"skipped":0,"pct":36.36},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/autocomplete/dataTreeTypeDefCreator.ts": {"lines":{"total":52,"covered":41,"skipped":0,"pct":78.85},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":60,"covered":49,"skipped":0,"pct":81.67},"branches":{"total":28,"covered":16,"skipped":0,"pct":57.14}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/autocomplete/dataTypeSortRules.ts": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/hooks/dragResizeHooks.tsx": {"lines":{"total":37,"covered":29,"skipped":0,"pct":78.38},"functions":{"total":13,"covered":8,"skipped":0,"pct":61.54},"statements":{"total":45,"covered":36,"skipped":0,"pct":80},"branches":{"total":10,"covered":4,"skipped":0,"pct":40}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/hooks/localstorage.tsx": {"lines":{"total":17,"covered":4,"skipped":0,"pct":23.53},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":19,"covered":4,"skipped":0,"pct":21.05},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/hooks/useCanvasMinHeightUpdateHook.ts": {"lines":{"total":14,"covered":14,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":16,"covered":16,"skipped":0,"pct":100},"branches":{"total":7,"covered":6,"skipped":0,"pct":85.71}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/hooks/useClick.tsx": {"lines":{"total":20,"covered":16,"skipped":0,"pct":80},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":20,"covered":16,"skipped":0,"pct":80},"branches":{"total":14,"covered":9,"skipped":0,"pct":64.29}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/hooks/useClickOpenPropPane.tsx": {"lines":{"total":50,"covered":40,"skipped":0,"pct":80},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":53,"covered":43,"skipped":0,"pct":81.13},"branches":{"total":42,"covered":22,"skipped":0,"pct":52.38}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/hooks/useClipboard.tsx": {"lines":{"total":21,"covered":5,"skipped":0,"pct":23.81},"functions":{"total":5,"covered":1,"skipped":0,"pct":20},"statements":{"total":21,"covered":5,"skipped":0,"pct":23.81},"branches":{"total":10,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/hooks/useDynamicAppLayout.tsx": {"lines":{"total":46,"covered":43,"skipped":0,"pct":93.48},"functions":{"total":7,"covered":7,"skipped":0,"pct":100},"statements":{"total":52,"covered":49,"skipped":0,"pct":94.23},"branches":{"total":23,"covered":12,"skipped":0,"pct":52.17}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/hooks/useIsScrolledToBottom.tsx": {"lines":{"total":15,"covered":15,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":21,"covered":20,"skipped":0,"pct":95.24},"branches":{"total":24,"covered":17,"skipped":0,"pct":70.83}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/hooks/useProceedToNextTourStep.tsx": {"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":13,"covered":13,"skipped":0,"pct":100},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/hooks/useScript.tsx": {"lines":{"total":38,"covered":10,"skipped":0,"pct":26.32},"functions":{"total":7,"covered":2,"skipped":0,"pct":28.57},"statements":{"total":41,"covered":10,"skipped":0,"pct":24.39},"branches":{"total":20,"covered":4,"skipped":0,"pct":20}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/hooks/useWidgetSelection.ts": {"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":12,"covered":12,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/migrations/IncorrectDynamicBindingPathLists.ts": {"lines":{"total":18,"covered":17,"skipped":0,"pct":94.44},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":19,"covered":18,"skipped":0,"pct":94.74},"branches":{"total":8,"covered":7,"skipped":0,"pct":87.5}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/migrations/TableWidget.ts": {"lines":{"total":100,"covered":81,"skipped":0,"pct":81},"functions":{"total":14,"covered":11,"skipped":0,"pct":78.57},"statements":{"total":108,"covered":85,"skipped":0,"pct":78.7},"branches":{"total":104,"covered":66,"skipped":0,"pct":63.46}} +,"/Users/hetunandu/code/appsmith/app/client/src/utils/migrations/TextWidgetReplaceTextStyle.ts": {"lines":{"total":23,"covered":22,"skipped":0,"pct":95.65},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":24,"covered":23,"skipped":0,"pct":95.83},"branches":{"total":14,"covered":12,"skipped":0,"pct":85.71}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/BaseWidget.tsx": {"lines":{"total":113,"covered":88,"skipped":0,"pct":77.88},"functions":{"total":31,"covered":24,"skipped":0,"pct":77.42},"statements":{"total":118,"covered":93,"skipped":0,"pct":78.81},"branches":{"total":43,"covered":19,"skipped":0,"pct":44.19}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/ButtonWidget.tsx": {"lines":{"total":34,"covered":25,"skipped":0,"pct":73.53},"functions":{"total":9,"covered":5,"skipped":0,"pct":55.56},"statements":{"total":35,"covered":26,"skipped":0,"pct":74.29},"branches":{"total":12,"covered":6,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/CanvasWidget.tsx": {"lines":{"total":40,"covered":33,"skipped":0,"pct":82.5},"functions":{"total":8,"covered":6,"skipped":0,"pct":75},"statements":{"total":45,"covered":35,"skipped":0,"pct":77.78},"branches":{"total":15,"covered":8,"skipped":0,"pct":53.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/CheckboxWidget.tsx": {"lines":{"total":25,"covered":23,"skipped":0,"pct":92},"functions":{"total":8,"covered":6,"skipped":0,"pct":75},"statements":{"total":27,"covered":25,"skipped":0,"pct":92.59},"branches":{"total":3,"covered":2,"skipped":0,"pct":66.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/ContainerWidget.tsx": {"lines":{"total":50,"covered":36,"skipped":0,"pct":72},"functions":{"total":10,"covered":7,"skipped":0,"pct":70},"statements":{"total":53,"covered":37,"skipped":0,"pct":69.81},"branches":{"total":18,"covered":9,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/DatePickerWidget.tsx": {"lines":{"total":40,"covered":23,"skipped":0,"pct":57.5},"functions":{"total":9,"covered":5,"skipped":0,"pct":55.56},"statements":{"total":42,"covered":24,"skipped":0,"pct":57.14},"branches":{"total":21,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/DatePickerWidget2.tsx": {"lines":{"total":26,"covered":22,"skipped":0,"pct":84.62},"functions":{"total":8,"covered":5,"skipped":0,"pct":62.5},"statements":{"total":28,"covered":23,"skipped":0,"pct":82.14},"branches":{"total":3,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/DividerWidget.tsx": {"lines":{"total":16,"covered":14,"skipped":0,"pct":87.5},"functions":{"total":5,"covered":3,"skipped":0,"pct":60},"statements":{"total":17,"covered":15,"skipped":0,"pct":88.24},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/DropdownWidget.tsx": {"lines":{"total":55,"covered":24,"skipped":0,"pct":43.64},"functions":{"total":13,"covered":5,"skipped":0,"pct":38.46},"statements":{"total":59,"covered":25,"skipped":0,"pct":42.37},"branches":{"total":27,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/FileDataTypes.ts": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/FilepickerWidget.tsx": {"lines":{"total":90,"covered":34,"skipped":0,"pct":37.78},"functions":{"total":28,"covered":5,"skipped":0,"pct":17.86},"statements":{"total":91,"covered":35,"skipped":0,"pct":38.46},"branches":{"total":44,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/FormButtonWidget.tsx": {"lines":{"total":39,"covered":19,"skipped":0,"pct":48.72},"functions":{"total":9,"covered":3,"skipped":0,"pct":33.33},"statements":{"total":40,"covered":20,"skipped":0,"pct":50},"branches":{"total":25,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/FormWidget.tsx": {"lines":{"total":47,"covered":17,"skipped":0,"pct":36.17},"functions":{"total":13,"covered":2,"skipped":0,"pct":15.38},"statements":{"total":51,"covered":18,"skipped":0,"pct":35.29},"branches":{"total":19,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/IconWidget.tsx": {"lines":{"total":23,"covered":17,"skipped":0,"pct":73.91},"functions":{"total":6,"covered":2,"skipped":0,"pct":33.33},"statements":{"total":25,"covered":18,"skipped":0,"pct":72},"branches":{"total":7,"covered":2,"skipped":0,"pct":28.57}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/IframeWidget.tsx": {"lines":{"total":32,"covered":15,"skipped":0,"pct":46.88},"functions":{"total":6,"covered":2,"skipped":0,"pct":33.33},"statements":{"total":34,"covered":16,"skipped":0,"pct":47.06},"branches":{"total":15,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/ImageWidget.tsx": {"lines":{"total":24,"covered":16,"skipped":0,"pct":66.67},"functions":{"total":7,"covered":2,"skipped":0,"pct":28.57},"statements":{"total":28,"covered":17,"skipped":0,"pct":60.71},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/InputWidget.tsx": {"lines":{"total":51,"covered":39,"skipped":0,"pct":76.47},"functions":{"total":12,"covered":7,"skipped":0,"pct":58.33},"statements":{"total":57,"covered":40,"skipped":0,"pct":70.18},"branches":{"total":32,"covered":11,"skipped":0,"pct":34.38}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/MapWidget.tsx": {"lines":{"total":60,"covered":29,"skipped":0,"pct":48.33},"functions":{"total":17,"covered":4,"skipped":0,"pct":23.53},"statements":{"total":63,"covered":30,"skipped":0,"pct":47.62},"branches":{"total":22,"covered":2,"skipped":0,"pct":9.09}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/MetaHOC.tsx": {"lines":{"total":59,"covered":44,"skipped":0,"pct":74.58},"functions":{"total":13,"covered":12,"skipped":0,"pct":92.31},"statements":{"total":68,"covered":51,"skipped":0,"pct":75},"branches":{"total":19,"covered":9,"skipped":0,"pct":47.37}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/ModalWidget.tsx": {"lines":{"total":63,"covered":28,"skipped":0,"pct":44.44},"functions":{"total":14,"covered":2,"skipped":0,"pct":14.29},"statements":{"total":67,"covered":30,"skipped":0,"pct":44.78},"branches":{"total":21,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/RadioGroupWidget.tsx": {"lines":{"total":26,"covered":22,"skipped":0,"pct":84.62},"functions":{"total":8,"covered":5,"skipped":0,"pct":62.5},"statements":{"total":28,"covered":23,"skipped":0,"pct":82.14},"branches":{"total":3,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/RichTextEditorWidget.tsx": {"lines":{"total":37,"covered":27,"skipped":0,"pct":72.97},"functions":{"total":12,"covered":6,"skipped":0,"pct":50},"statements":{"total":39,"covered":28,"skipped":0,"pct":71.79},"branches":{"total":9,"covered":2,"skipped":0,"pct":22.22}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/SkeletonWidget.tsx": {"lines":{"total":15,"covered":13,"skipped":0,"pct":86.67},"functions":{"total":4,"covered":2,"skipped":0,"pct":50},"statements":{"total":16,"covered":14,"skipped":0,"pct":87.5},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/SwitchWidget.tsx": {"lines":{"total":25,"covered":23,"skipped":0,"pct":92},"functions":{"total":8,"covered":6,"skipped":0,"pct":75},"statements":{"total":27,"covered":25,"skipped":0,"pct":92.59},"branches":{"total":5,"covered":3,"skipped":0,"pct":60}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/TextWidget.tsx": {"lines":{"total":17,"covered":15,"skipped":0,"pct":88.24},"functions":{"total":5,"covered":3,"skipped":0,"pct":60},"statements":{"total":18,"covered":16,"skipped":0,"pct":88.89},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/VideoWidget.tsx": {"lines":{"total":37,"covered":27,"skipped":0,"pct":72.97},"functions":{"total":14,"covered":5,"skipped":0,"pct":35.71},"statements":{"total":45,"covered":28,"skipped":0,"pct":62.22},"branches":{"total":5,"covered":2,"skipped":0,"pct":40}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/ChartWidget/index.tsx": {"lines":{"total":25,"covered":19,"skipped":0,"pct":76},"functions":{"total":9,"covered":3,"skipped":0,"pct":33.33},"statements":{"total":27,"covered":20,"skipped":0,"pct":74.07},"branches":{"total":3,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/ChartWidget/propertyConfig.ts": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/ListWidget/ListComponent.tsx": {"lines":{"total":15,"covered":10,"skipped":0,"pct":66.67},"functions":{"total":6,"covered":2,"skipped":0,"pct":33.33},"statements":{"total":15,"covered":10,"skipped":0,"pct":66.67},"branches":{"total":18,"covered":11,"skipped":0,"pct":61.11}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/ListWidget/ListPagination.tsx": {"lines":{"total":9,"covered":6,"skipped":0,"pct":66.67},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":9,"covered":6,"skipped":0,"pct":66.67},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/ListWidget/ListPropertyPaneConfig.ts": {"lines":{"total":12,"covered":6,"skipped":0,"pct":50},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":12,"covered":6,"skipped":0,"pct":50},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/ListWidget/ListWidget.tsx": {"lines":{"total":228,"covered":87,"skipped":0,"pct":38.16},"functions":{"total":43,"covered":12,"skipped":0,"pct":27.91},"statements":{"total":242,"covered":94,"skipped":0,"pct":38.84},"branches":{"total":105,"covered":24,"skipped":0,"pct":22.86}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/ListWidget/derived.js": {"lines":{"total":44,"covered":27,"skipped":0,"pct":61.36},"functions":{"total":10,"covered":7,"skipped":0,"pct":70},"statements":{"total":45,"covered":28,"skipped":0,"pct":62.22},"branches":{"total":24,"covered":10,"skipped":0,"pct":41.67}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/ListWidget/parseDerivedProperties.ts": {"lines":{"total":13,"covered":5,"skipped":0,"pct":38.46},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":13,"covered":5,"skipped":0,"pct":38.46},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/RateWidget/index.tsx": {"lines":{"total":25,"covered":21,"skipped":0,"pct":84},"functions":{"total":8,"covered":5,"skipped":0,"pct":62.5},"statements":{"total":27,"covered":22,"skipped":0,"pct":81.48},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/TableWidget/TablePropertyPaneConfig.ts": {"lines":{"total":71,"covered":29,"skipped":0,"pct":40.85},"functions":{"total":13,"covered":7,"skipped":0,"pct":53.85},"statements":{"total":75,"covered":29,"skipped":0,"pct":38.67},"branches":{"total":51,"covered":7,"skipped":0,"pct":13.73}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/TableWidget/derived.js": {"lines":{"total":171,"covered":92,"skipped":0,"pct":53.8},"functions":{"total":37,"covered":14,"skipped":0,"pct":37.84},"statements":{"total":188,"covered":102,"skipped":0,"pct":54.26},"branches":{"total":144,"covered":81,"skipped":0,"pct":56.25}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/TableWidget/index.tsx": {"lines":{"total":345,"covered":34,"skipped":0,"pct":9.86},"functions":{"total":49,"covered":5,"skipped":0,"pct":10.2},"statements":{"total":380,"covered":35,"skipped":0,"pct":9.21},"branches":{"total":253,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/TableWidget/parseDerivedProperties.ts": {"lines":{"total":13,"covered":5,"skipped":0,"pct":38.46},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":13,"covered":5,"skipped":0,"pct":38.46},"branches":{"total":6,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/Tabs/TabsMigrator.tsx": {"lines":{"total":23,"covered":17,"skipped":0,"pct":73.91},"functions":{"total":5,"covered":2,"skipped":0,"pct":40},"statements":{"total":24,"covered":18,"skipped":0,"pct":75},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} +,"/Users/hetunandu/code/appsmith/app/client/src/widgets/Tabs/TabsWidget.tsx": {"lines":{"total":127,"covered":87,"skipped":0,"pct":68.5},"functions":{"total":28,"covered":17,"skipped":0,"pct":60.71},"statements":{"total":134,"covered":93,"skipped":0,"pct":69.4},"branches":{"total":93,"covered":43,"skipped":0,"pct":46.24}} +,"/Users/hetunandu/code/appsmith/app/client/src/workers/DataTreeEvaluator.ts": {"lines":{"total":450,"covered":399,"skipped":0,"pct":88.67},"functions":{"total":71,"covered":62,"skipped":0,"pct":87.32},"statements":{"total":487,"covered":431,"skipped":0,"pct":88.5},"branches":{"total":197,"covered":154,"skipped":0,"pct":78.17}} +,"/Users/hetunandu/code/appsmith/app/client/src/workers/evaluate.ts": {"lines":{"total":66,"covered":64,"skipped":0,"pct":96.97},"functions":{"total":17,"covered":16,"skipped":0,"pct":94.12},"statements":{"total":68,"covered":66,"skipped":0,"pct":97.06},"branches":{"total":16,"covered":11,"skipped":0,"pct":68.75}} +,"/Users/hetunandu/code/appsmith/app/client/src/workers/evaluationSubstitution.ts": {"lines":{"total":59,"covered":59,"skipped":0,"pct":100},"functions":{"total":10,"covered":10,"skipped":0,"pct":100},"statements":{"total":63,"covered":63,"skipped":0,"pct":100},"branches":{"total":22,"covered":21,"skipped":0,"pct":95.45}} +,"/Users/hetunandu/code/appsmith/app/client/src/workers/evaluationUtils.ts": {"lines":{"total":220,"covered":189,"skipped":0,"pct":85.91},"functions":{"total":48,"covered":41,"skipped":0,"pct":85.42},"statements":{"total":255,"covered":221,"skipped":0,"pct":86.67},"branches":{"total":127,"covered":89,"skipped":0,"pct":70.08}} +,"/Users/hetunandu/code/appsmith/app/client/src/workers/validations.ts": {"lines":{"total":367,"covered":159,"skipped":0,"pct":43.32},"functions":{"total":49,"covered":23,"skipped":0,"pct":46.94},"statements":{"total":405,"covered":176,"skipped":0,"pct":43.46},"branches":{"total":313,"covered":117,"skipped":0,"pct":37.38}} +,"/Users/hetunandu/code/appsmith/app/client/test/customQueries.js": {"lines":{"total":19,"covered":18,"skipped":0,"pct":94.74},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.67},"statements":{"total":20,"covered":19,"skipped":0,"pct":95},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/sagas.ts": {"lines":{"total":30,"covered":30,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":30,"covered":30,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/testCommon.ts": {"lines":{"total":49,"covered":49,"skipped":0,"pct":100},"functions":{"total":10,"covered":10,"skipped":0,"pct":100},"statements":{"total":60,"covered":60,"skipped":0,"pct":100},"branches":{"total":6,"covered":3,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/test/testMockedWidgets.tsx": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":8,"covered":8,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/testUtils.tsx": {"lines":{"total":37,"covered":36,"skipped":0,"pct":97.3},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":40,"covered":38,"skipped":0,"pct":95},"branches":{"total":21,"covered":18,"skipped":0,"pct":85.71}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/WidgetFactoryUtils.ts": {"lines":{"total":16,"covered":15,"skipped":0,"pct":93.75},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":18,"covered":17,"skipped":0,"pct":94.44},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/ButtonFactory.ts": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/CanvasFactory.ts": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/ChartFactory.ts": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/CheckboxFactory.ts": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/ContainerFactory.ts": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/DatepickerFactory.ts": {"lines":{"total":6,"covered":4,"skipped":0,"pct":66.67},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":4,"skipped":0,"pct":66.67},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/DividerFactory.ts": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/DropdownFactory.ts": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/FilepickerFactory.ts": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/FormButtonFactory.ts": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/FormFactory.ts": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/IconFactory.ts": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/ImageFactory.ts": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/InputFactory.ts": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/ListFactory.ts": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/MapFactory.ts": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/ModalFactory.ts": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/RadiogroupFactory.ts": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/RichTextFactory.ts": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/SkeletonFactory.ts": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/SwitchFactory.ts": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/TableFactory.ts": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/TabsFactory.ts": {"lines":{"total":6,"covered":5,"skipped":0,"pct":83.33},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":6,"covered":5,"skipped":0,"pct":83.33},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/TextFactory.ts": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/VideoFactory.ts": {"lines":{"total":4,"covered":3,"skipped":0,"pct":75},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":3,"skipped":0,"pct":75},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} +,"/Users/hetunandu/code/appsmith/app/client/test/factories/Widgets/WidgetTypeFactories.ts": {"lines":{"total":26,"covered":26,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":26,"covered":26,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} }