{"ScriptPreparationCode":"function getByPath(o, path) {\r\n let prev = 0;\r\n let offset = 0;\r\n while (o !== undefined \u0026\u0026 o !== null \u0026\u0026 (offset = path.indexOf(\u0022.\u0022, offset)) !== -1) {\r\n o = o[path.slice(prev, offset)];\r\n prev = \u002B\u002Boffset;\r\n }\r\n\r\n return o?.[path.slice(prev)];\r\n}\r\n\r\nfunction destructuring(input) {\r\n const { contextMenu: { data: { documents = [] } = {} } = {} } = input;\r\n return documents;\r\n}\r\n\r\nfunction destructuringDynamic(input, key) {\r\n const { contextMenu: { data: { [key]: documents = [] } = {} } = {} } = input;\r\n return documents;\r\n}\r\n\r\nfunction destructuringArgument({ contextMenu: { data: { documents = [] } = {} } = {} }) {\r\n return documents;\r\n}\r\n\r\nfunction lodashGet(input) {\r\n return _.get(input, \u0027contextMenu.data.documents\u0027, []);\r\n}\r\n\r\nfunction lodashGetDynamic(input, key) {\r\n return _.get(input, \u0060contextMenu.data.${key}\u0060, []);\r\n}\r\n\r\nfunction lodashGetDynamicArray(input, key) {\r\n return _.get(input, [\u0027contextMenu\u0027, \u0027data\u0027, \u0027key\u0027], []);\r\n}\r\n\r\nconst paths = Object.create(null);\r\nfunction lodashGetDynamicCachedArray(input, key) {\r\n return _.get(input, paths[key] ??= _.toPath(\u0060contextMenu.data.${key}\u0060), []);\r\n}\r\n\r\nfunction customGet(input, path) {\r\n return getByPath(input, path);\r\n}","TestCases":[{"Name":"destructuring with defaults, empty input","Code":"destructuring({});","IsDeferred":false},{"Name":"lodash get, empty input","Code":"lodashGet({});","IsDeferred":false},{"Name":"destructuring with defaults, find item","Code":"destructuring({ contextMenu: { data: { documents: [{ id: \u0027doc\u0027 }] } } });","IsDeferred":false},{"Name":"lodash get, find item","Code":"lodashGet({ contextMenu: { data: { documents: [{ id: \u0027doc\u0027 }] } } });","IsDeferred":false},{"Name":"destructuring dynamic key","Code":"destructuringDynamic({ contextMenu: { data: { documents: [{ id: \u0027doc\u0027 }] } } }, \u0027documents\u0027);","IsDeferred":false},{"Name":"lodash dynamic key","Code":"lodashGetDynamic({ contextMenu: { data: { documents: [{ id: \u0027doc\u0027 }] } } }, \u0027documents\u0027);","IsDeferred":false},{"Name":"lodash dynamic key using array","Code":"lodashGetDynamicArray({ contextMenu: { data: { documents: [{ id: \u0027doc\u0027 }] } } }, \u0027documents\u0027);","IsDeferred":false},{"Name":"lodash dynamic key using manually cached array","Code":"lodashGetDynamicCachedArray({ contextMenu: { data: { documents: [{ id: \u0027doc\u0027 }] } } }, \u0027documents\u0027);","IsDeferred":false},{"Name":"argument destructuring","Code":"destructuringArgument({ contextMenu: { data: { documents: [{ id: \u0027doc\u0027 }] } } });","IsDeferred":false},{"Name":"customGet","Code":"customGet({ contextMenu: { data: { documents: [{ id: \u0027doc\u0027 }] } } }, \u0027contextMenu.data.documents\u0027);","IsDeferred":false}]}