{"id":37,"date":"2018-04-29T02:52:00","date_gmt":"2018-04-29T02:52:00","guid":{"rendered":"https:\/\/kdcinfo.com\/blog\/2018\/04\/29\/typeerror-undefined-redux-4\/"},"modified":"2018-04-29T02:52:00","modified_gmt":"2018-04-29T02:52:00","slug":"typeerror-undefined-redux-4","status":"publish","type":"post","link":"https:\/\/kdcinfo.com\/blog\/2018\/04\/29\/typeerror-undefined-redux-4\/","title":{"rendered":"TypeError: Undefined: Redux 4"},"content":{"rendered":"<div style=\"font-size: 11px;\">\n<h2>\nRedux 4 &gt; createStore &gt; compose<\/h2>\n<h3>\nThe Error<\/h3>\n<div>\n<pre>            <code style=\"color: #cc0000;\">TypeError: Cannot read property 'apply' of undefined<\/code>\n            [<code>node_modules\/redux\/es\/redux.js:523<\/code>]\n        <\/pre>\n<\/div>\n<h3>\nThe Problem and Solution<\/h3>\n<div>\nIf you&#8217;ve gone through a tutorial in which they suggest adding the Redux Dev Tools in your <code>store.js<\/code> like this:<\/p>\n<pre>            <code>window.__REDUX_DEVTOOLS_EXTENSION__ &amp;&amp; window.__REDUX_DEVTOOLS_EXTENSION__()<\/code>\n        <\/pre>\n<\/div>\n<div>\nBut they&#8217;re using it inside of a <code>compose()<\/code>, you could receive a <code>Type Error<\/code> for an <code>undefined<\/code> when the extension is not enabled (or present).<br \/>\n        The correct way to implement the <a href=\"https:\/\/chrome.google.com\/webstore\/detail\/redux-devtools\/lmhkpmbekcpmknklioeibfkpmmfibljd\" target=\"kdcNewWin\" rel=\"noopener\">Redux Dev Tools<\/a> within a <code>compose<\/code> is as follows:<\/p>\n<pre>            <code>window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose<\/code>\n        <\/pre>\n<\/div>\n<div>\nI learned this the hard way, and was eventually brought rescue from <a href=\"https:\/\/github.com\/zalmoxisus\/redux-devtools-extension\/issues\/320#issuecomment-285639448\" target=\"kdcNewWin\" rel=\"noopener\">GitHub user [zalmoxisus]<\/a>.<\/div>\n<div>\n<code>zalmoxisus<\/code> also references the docs for this: [<a href=\"https:\/\/github.com\/zalmoxisus\/redux-devtools-extension#12-advanced-store-setup\" target=\"kdcNewWin\" rel=\"noopener\">1.2 Advanced store setup (middleware and enhancers)<\/a>]<\/div>\n<h3>\nCode Extract from [<code>store.js<\/code>]<\/h3>\n<pre><code style=\"font-family: Consolas, Menlo, monospace;\">      compose(\n        applyMiddleware(...middleware),\n        <s>window.__REDUX_DEVTOOLS_EXTENSION__ &amp;&amp; window.__REDUX_DEVTOOLS_EXTENSION__()<\/s>\n        <span style=\"color: #00cc00;\">window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose<\/span>\n      )\n    <\/code><\/pre>\n<h3>\nA Little Error Verbosity<\/h3>\n<div style=\"display: inline-block;\">\n<div style=\"color: rgb(206 , 17 , 38); font-family: sans-serif; font-size: 1.2em; margin: 0px 2rem 0.75rem 0px; max-height: 50%; overflow: auto; white-space: pre-wrap;\">\nTypeError: Cannot read property &#8216;apply&#8217; of undefined<\/div>\n<div style=\"flex: 0 1 auto; font-size: 1em; min-height: 0px; overflow: auto;\">\n<div>\n<div>\n(anonymous function)<\/div>\n<div style=\"font-size: 0.9em; margin-bottom: 0.9em;\">\n<a href=\"https:\/\/www.blogger.com\/null\" style=\"color: rgb(135 , 142 , 145); cursor: pointer; text-decoration: none;\" tabindex=\"0\">node_modules\/redux\/es\/redux.js:523<\/a><\/div>\n<p><a href=\"https:\/\/www.blogger.com\/null\" style=\"cursor: pointer;\"><\/a><\/p>\n<pre style=\"background-color: rgba(206 , 17 , 38 , 0.05); border-radius: 0.25rem; display: block; margin-bottom: 0.5em; margin-top: 0.5em; overflow-x: auto; padding: 0.5em; white-space: pre-wrap;\"><a href=\"https:\/\/www.blogger.com\/null\" style=\"cursor: pointer;\"><code style=\"font-family: Consolas, Menlo, monospace;\"><span data-ansi-line=\"true\"> <span style=\"color: #333333;\"> 520 | <\/span><\/span>\n                \n<span data-ansi-line=\"true\"> <span style=\"color: #333333;\"> 521 | <\/span>  <span style=\"color: #c80000;\">return<\/span> funcs<span style=\"color: #881280;\">.<\/span>reduce(<span style=\"color: #c80000;\">function<\/span> (a<span style=\"color: #881280;\">,<\/span> b) {<\/span>\n                \n<span data-ansi-line=\"true\"> <span style=\"color: #333333;\"> 522 | <\/span>    <span style=\"color: #c80000;\">return<\/span> <span style=\"color: #c80000;\">function<\/span> () {<\/span>\n                \n<span data-ansi-line=\"true\" style=\"background-color: #fccfcf;\"><span style=\"color: #881280;\"><\/span><span style=\"color: #881280;\">&gt;<\/span><span style=\"color: #881280;\"><\/span><span style=\"color: #333333;\"> 523 | <\/span>      <span style=\"color: #c80000;\">return<\/span> a(b<span style=\"color: #881280;\">.<\/span>apply(undefined<span style=\"color: #881280;\">,<\/span> arguments))<span style=\"color: #881280;\">;<\/span><\/span>\n                \n<span data-ansi-line=\"true\"> <span style=\"color: #333333;\"> 524 | <\/span>    }<span style=\"color: #881280;\">;<\/span><\/span>\n                \n<span data-ansi-line=\"true\"> <span style=\"color: #333333;\"> 525 | <\/span>  })<span style=\"color: #881280;\">;<\/span><\/span>\n                \n<span data-ansi-line=\"true\"> <span style=\"color: #333333;\"> 526 | <\/span>}<\/span>\n                <\/code>\n                <\/a><\/pre>\n<p><a href=\"https:\/\/www.blogger.com\/null\" style=\"cursor: pointer;\"><br \/>\n                <\/a><\/p><\/div>\n<div>\n<div>\ncreateStore<\/div>\n<div style=\"font-size: 0.9em; margin-bottom: 0.9em;\">\n<a href=\"https:\/\/www.blogger.com\/null\" style=\"color: rgb(135 , 142 , 145); cursor: pointer; text-decoration: none;\" tabindex=\"0\">node_modules\/redux\/es\/redux.js:87<\/a><\/div>\n<p><a href=\"https:\/\/www.blogger.com\/null\" style=\"cursor: pointer;\"><\/a><\/p>\n<pre style=\"background-color: rgba(251 , 245 , 180 , 0.3); border-radius: 0.25rem; display: block; margin-bottom: 0.5em; margin-top: 0.5em; overflow-x: auto; padding: 0.5em; white-space: pre-wrap;\"><a href=\"https:\/\/www.blogger.com\/null\" style=\"cursor: pointer;\"><code style=\"font-family: Consolas, Menlo, monospace;\"><span data-ansi-line=\"true\"> <span style=\"color: #333333;\"> 84 | <\/span>    <span style=\"color: #c80000;\">throw<\/span> <span style=\"color: #c80000;\">new<\/span> <span style=\"color: #881280;\">Error<\/span>(<span style=\"color: #1155cc;\">'Expected the enhancer to be a function.'<\/span>)<span style=\"color: #881280;\">;<\/span><\/span>\n                \n<span data-ansi-line=\"true\"> <span style=\"color: #333333;\"> 85 | <\/span>  }<\/span>\n                \n<span data-ansi-line=\"true\"> <span style=\"color: #333333;\"> 86 | <\/span><\/span>\n                \n<span data-ansi-line=\"true\" style=\"background-color: #fbf5b4;\"><span style=\"color: #881280;\"><\/span><span style=\"color: #881280;\">&gt;<\/span><span style=\"color: #881280;\"><\/span><span style=\"color: #333333;\"> 87 | <\/span>  <span style=\"color: #c80000;\">return<\/span> enhancer(createStore)(reducer<span style=\"color: #881280;\">,<\/span> preloadedState)<span style=\"color: #881280;\">;<\/span><\/span>\n                \n<span data-ansi-line=\"true\"> <span style=\"color: #333333;\"> 88 | <\/span>}<\/span>\n                \n<span data-ansi-line=\"true\"> <span style=\"color: #333333;\"> 89 | <\/span><\/span>\n                \n<span data-ansi-line=\"true\"> <span style=\"color: #333333;\"> 90 | <\/span><span style=\"color: #c80000;\">if<\/span> (<span style=\"color: #c80000;\">typeof<\/span> reducer <span style=\"color: #881280;\">!==<\/span> <span style=\"color: #1155cc;\">'function'<\/span>) {<\/span>\n                <\/code>\n                <\/a><\/pre>\n<p><a href=\"https:\/\/www.blogger.com\/null\" style=\"cursor: pointer;\"><br \/>\n                <\/a><\/p><\/div>\n<div>\n<div>\n.\/src\/resources\/store.js<\/div>\n<div style=\"font-size: 0.9em; margin-bottom: 0.9em;\">\n<a href=\"https:\/\/www.blogger.com\/null\" style=\"color: rgb(135 , 142 , 145); cursor: pointer; text-decoration: none;\" tabindex=\"0\">src\/resources\/store.js:9<\/a><\/div>\n<p><a href=\"https:\/\/www.blogger.com\/null\" style=\"cursor: pointer;\"><\/a><\/p>\n<pre style=\"background-color: rgba(251 , 245 , 180 , 0.3); border-radius: 0.25rem; display: block; margin-bottom: 0.5em; margin-top: 0.5em; overflow-x: auto; padding: 0.5em; white-space: pre-wrap;\"><a href=\"https:\/\/www.blogger.com\/null\" style=\"cursor: pointer;\"><code style=\"font-family: Consolas, Menlo, monospace;\"><span data-ansi-line=\"true\"> <span style=\"color: #333333;\">  6 | <\/span><\/span>\n                \n<span data-ansi-line=\"true\"> <span style=\"color: #333333;\">  7 | <\/span><span style=\"color: #c80000;\">const<\/span> middleware <span style=\"color: #881280;\">=<\/span> [thunk]<span style=\"color: #881280;\">;<\/span><\/span>\n                \n<span data-ansi-line=\"true\"> <span style=\"color: #333333;\">  8 | <\/span><\/span>\n                \n<span data-ansi-line=\"true\" style=\"background-color: #fbf5b4;\"><span style=\"color: #881280;\"><\/span><span style=\"color: #881280;\">&gt;<\/span><span style=\"color: #881280;\"><\/span><span style=\"color: #333333;\">  9 | <\/span><span style=\"color: #c80000;\">const<\/span> ourStore <span style=\"color: #881280;\">=<\/span> createStore(<\/span>\n                \n<span data-ansi-line=\"true\"> <span style=\"color: #333333;\"> 10 | <\/span>  rootReducer<span style=\"color: #881280;\">,<\/span><\/span>\n                \n<span data-ansi-line=\"true\"> <span style=\"color: #333333;\"> 11 | <\/span>  initialState<span style=\"color: #881280;\">,<\/span><\/span>\n                \n<span data-ansi-line=\"true\"> <span style=\"color: #333333;\"> 12 | <\/span>  compose(<\/span>\n                <\/code>\n                <\/a><\/pre>\n<p><a href=\"https:\/\/www.blogger.com\/null\" style=\"cursor: pointer;\"><br \/>\n                <\/a><\/p><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div>&#8212;<br \/>\nKeith D Commiskey<br \/>\nhttps:\/\/keithdc.com<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Redux 4 &gt; createStore &gt; compose The Error TypeError: Cannot read property &#8216;apply&#8217; of undefined [node_modules\/redux\/es\/redux.js:523] The Problem and Solution If you&#8217;ve gone through a<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-37","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>TypeError: Undefined: Redux 4 - App Development: Odds and Ends<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kdcinfo.com\/blog\/2018\/04\/29\/typeerror-undefined-redux-4\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TypeError: Undefined: Redux 4 - App Development: Odds and Ends\" \/>\n<meta property=\"og:description\" content=\"Redux 4 &gt; createStore &gt; compose The Error TypeError: Cannot read property &#039;apply&#039; of undefined [node_modules\/redux\/es\/redux.js:523] The Problem and Solution If you&#8217;ve gone through a\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kdcinfo.com\/blog\/2018\/04\/29\/typeerror-undefined-redux-4\/\" \/>\n<meta property=\"og:site_name\" content=\"App Development: Odds and Ends\" \/>\n<meta property=\"article:published_time\" content=\"2018-04-29T02:52:00+00:00\" \/>\n<meta name=\"author\" content=\"Keith D Commiskey\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Keith D Commiskey\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2018\\\/04\\\/29\\\/typeerror-undefined-redux-4\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2018\\\/04\\\/29\\\/typeerror-undefined-redux-4\\\/\"},\"author\":{\"name\":\"Keith D Commiskey\",\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/#\\\/schema\\\/person\\\/87980b154db7bd0cd7c569ca09328bac\"},\"headline\":\"TypeError: Undefined: Redux 4\",\"datePublished\":\"2018-04-29T02:52:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2018\\\/04\\\/29\\\/typeerror-undefined-redux-4\\\/\"},\"wordCount\":141,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/#\\\/schema\\\/person\\\/87980b154db7bd0cd7c569ca09328bac\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2018\\\/04\\\/29\\\/typeerror-undefined-redux-4\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2018\\\/04\\\/29\\\/typeerror-undefined-redux-4\\\/\",\"url\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2018\\\/04\\\/29\\\/typeerror-undefined-redux-4\\\/\",\"name\":\"TypeError: Undefined: Redux 4 - App Development: Odds and Ends\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/#website\"},\"datePublished\":\"2018-04-29T02:52:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2018\\\/04\\\/29\\\/typeerror-undefined-redux-4\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2018\\\/04\\\/29\\\/typeerror-undefined-redux-4\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2018\\\/04\\\/29\\\/typeerror-undefined-redux-4\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TypeError: Undefined: Redux 4\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/\",\"name\":\"App Development: Odds and Ends\",\"description\":\"Providing insights into a career of apps and utilities that I&#039;ve conceptualized, designed, and developed; complemented with developmental journeys, findings, observations, and challenges encountered along the way.\",\"publisher\":{\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/#\\\/schema\\\/person\\\/87980b154db7bd0cd7c569ca09328bac\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/#\\\/schema\\\/person\\\/87980b154db7bd0cd7c569ca09328bac\",\"name\":\"Keith D Commiskey\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/keith-sac-01.jpg\",\"url\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/keith-sac-01.jpg\",\"contentUrl\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/keith-sac-01.jpg\",\"width\":113,\"height\":117,\"caption\":\"Keith D Commiskey\"},\"logo\":{\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/keith-sac-01.jpg\"},\"description\":\"Web App Creator; Former Flutter Developer; Former Front End Developer; Former Technical Graphics.\",\"sameAs\":[\"https:\\\/\\\/kdcinfo.com\\\/blog\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/commiskey\"],\"url\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/author\\\/kdc4wp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TypeError: Undefined: Redux 4 - App Development: Odds and Ends","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kdcinfo.com\/blog\/2018\/04\/29\/typeerror-undefined-redux-4\/","og_locale":"en_US","og_type":"article","og_title":"TypeError: Undefined: Redux 4 - App Development: Odds and Ends","og_description":"Redux 4 &gt; createStore &gt; compose The Error TypeError: Cannot read property 'apply' of undefined [node_modules\/redux\/es\/redux.js:523] The Problem and Solution If you&#8217;ve gone through a","og_url":"https:\/\/kdcinfo.com\/blog\/2018\/04\/29\/typeerror-undefined-redux-4\/","og_site_name":"App Development: Odds and Ends","article_published_time":"2018-04-29T02:52:00+00:00","author":"Keith D Commiskey","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Keith D Commiskey","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kdcinfo.com\/blog\/2018\/04\/29\/typeerror-undefined-redux-4\/#article","isPartOf":{"@id":"https:\/\/kdcinfo.com\/blog\/2018\/04\/29\/typeerror-undefined-redux-4\/"},"author":{"name":"Keith D Commiskey","@id":"https:\/\/kdcinfo.com\/blog\/#\/schema\/person\/87980b154db7bd0cd7c569ca09328bac"},"headline":"TypeError: Undefined: Redux 4","datePublished":"2018-04-29T02:52:00+00:00","mainEntityOfPage":{"@id":"https:\/\/kdcinfo.com\/blog\/2018\/04\/29\/typeerror-undefined-redux-4\/"},"wordCount":141,"commentCount":0,"publisher":{"@id":"https:\/\/kdcinfo.com\/blog\/#\/schema\/person\/87980b154db7bd0cd7c569ca09328bac"},"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kdcinfo.com\/blog\/2018\/04\/29\/typeerror-undefined-redux-4\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kdcinfo.com\/blog\/2018\/04\/29\/typeerror-undefined-redux-4\/","url":"https:\/\/kdcinfo.com\/blog\/2018\/04\/29\/typeerror-undefined-redux-4\/","name":"TypeError: Undefined: Redux 4 - App Development: Odds and Ends","isPartOf":{"@id":"https:\/\/kdcinfo.com\/blog\/#website"},"datePublished":"2018-04-29T02:52:00+00:00","breadcrumb":{"@id":"https:\/\/kdcinfo.com\/blog\/2018\/04\/29\/typeerror-undefined-redux-4\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kdcinfo.com\/blog\/2018\/04\/29\/typeerror-undefined-redux-4\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kdcinfo.com\/blog\/2018\/04\/29\/typeerror-undefined-redux-4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kdcinfo.com\/blog\/"},{"@type":"ListItem","position":2,"name":"TypeError: Undefined: Redux 4"}]},{"@type":"WebSite","@id":"https:\/\/kdcinfo.com\/blog\/#website","url":"https:\/\/kdcinfo.com\/blog\/","name":"App Development: Odds and Ends","description":"Providing insights into a career of apps and utilities that I&#039;ve conceptualized, designed, and developed; complemented with developmental journeys, findings, observations, and challenges encountered along the way.","publisher":{"@id":"https:\/\/kdcinfo.com\/blog\/#\/schema\/person\/87980b154db7bd0cd7c569ca09328bac"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kdcinfo.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/kdcinfo.com\/blog\/#\/schema\/person\/87980b154db7bd0cd7c569ca09328bac","name":"Keith D Commiskey","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2023\/08\/keith-sac-01.jpg","url":"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2023\/08\/keith-sac-01.jpg","contentUrl":"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2023\/08\/keith-sac-01.jpg","width":113,"height":117,"caption":"Keith D Commiskey"},"logo":{"@id":"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2023\/08\/keith-sac-01.jpg"},"description":"Web App Creator; Former Flutter Developer; Former Front End Developer; Former Technical Graphics.","sameAs":["https:\/\/kdcinfo.com\/blog","https:\/\/www.linkedin.com\/in\/commiskey"],"url":"https:\/\/kdcinfo.com\/blog\/author\/kdc4wp\/"}]}},"_links":{"self":[{"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/posts\/37","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/comments?post=37"}],"version-history":[{"count":0,"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/posts\/37\/revisions"}],"wp:attachment":[{"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/media?parent=37"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/categories?post=37"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/tags?post=37"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}