{"componentChunkName":"component---src-pages-projects-1-brand-co-js","path":"/projects/1brand-co/","result":{"data":{"allMarkdownRemark":{"edges":[{"node":{"frontmatter":{"title":"Docker Compose Error","description":"docker-compose version discrepancies","slug":"/pensieve/docker-error","date":"2019-12-13","tags":["Docker"],"draft":false},"html":"<h2>Problem</h2>\n<p>Recently while updating Headless WP with webpack, I encountered a weird error where I wasn't able to run a simple script:</p>\n<div class=\"gatsby-code-title\">bin/composer</div>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token shebang important\">#!/bin/bash</span>\ndocker-compose <span class=\"token builtin class-name\">exec</span> -w /var/www/html/wp-content/themes/skela wordpress composer <span class=\"token string\">\"<span class=\"token variable\">$@</span>\"</span></code></pre></div>\n<p>When trying to run this script via <code class=\"language-text\">./bin/composer install</code>, I got this error in my terminal:</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">ERROR: Setting workdir <span class=\"token keyword\">for</span> <span class=\"token builtin class-name\">exec</span> is not supported <span class=\"token keyword\">in</span> API <span class=\"token operator\">&lt;</span> <span class=\"token number\">1.35</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1.30</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>The error was coming from the <code class=\"language-text\">-w</code> flag in the <code class=\"language-text\">docker-compose exec</code> command in the <code class=\"language-text\">composer</code> script.</p>\n<h2>Solution</h2>\n<p>Turns The fix was to update the version in my <code class=\"language-text\">docker-compose.yml</code> file to from version <code class=\"language-text\">3.5</code> to <code class=\"language-text\">3.6</code>. It's strange because 3.5 isn't anywhere close to the API version <code class=\"language-text\">1.35</code> from the error message 🤷‍</p>\n<div class=\"gatsby-code-title\">docker-compose.yml</div>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"gatsby-highlight-code-line\"><span class=\"token key atrule\">version</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'3.6'</span></span><span class=\"token key atrule\">services</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">wordpress</span><span class=\"token punctuation\">:</span>\n    build<span class=\"token punctuation\">:</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"Markdown Test File","description":"abc234","slug":"/pensieve/markdown-playground","date":"2019-12-07","tags":["Testing"],"draft":false},"html":"<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 700px;\"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/490343832c4705701e26598c1c374606/028c4/image.jpg\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 66.28571428571429%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'266\\'%20viewBox=\\'0%200%20400%20266\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M0%2058v59h5a324%20324%200%200110-2c-1-2%204-3%207-1h2c1-1%203-2%207-2l10-2%206-2%205-2%209-2%207-1%203-2%204-1%209-4%2010-4h2c2%201%2010-2%2013-5%202-2%203-3%203%200l4-2c2-2%203-3%204-2s8-1%208-2l2-1%203-1h3l4-1c2-1%204-2%205-1l7-3%206-1h7l6-1%205-1%204-1%204-1%204-1%204-1%205-1%207-1%202-1%202-1%2010-1%2020-2%2010-1%208-1%208-1%2012-1%2012-1%2016-2%2019-3%205-2%206-1c2-2%203-2%204%200s2%201%204-3c1-3%201-4%202-3%200%203%208%203%208%201s2-2%208-2c8%200%208%200%208-2%200-3%200-3%204-3l4-1c0-2%201-2%207-2s13-3%2015-7c2-5%202%203%202%2044v46h-8l-9-1h-5l-6%201c-3%200-12%205-12%206%200%202-3%201-4-1-1-1-2-2-5-2s-5-1-7-3c-3-4-4-4-4%200l-2%202h-7v2l1%202%201%202a3291%203291%200%200029%203c8%200%2011%201%208%202-1%201-1%201%202%201a97%2097%200%20017%201c1%200%202%201%201%202v1a302%20302%200%200018%202h3V0H0v58m165%2059l-3%202a44%2044%200%2001-24%201h-11c-8%202-16%202-19%201-2-1-4%200-6%201-5%202-7%201-5-1%202-1%202-2%201-3l-3%202c-3%203-9%204-9%201h-2l-5%201a393%20393%200%2000-15%200c0-1-6-2-11-1-9%202-18%202-27-2-5-2-13-2-16%200l-6%202-3%201v14h5c10-1%2074-3%2081-2a2554%202554%200%2000101-3c-3%200-1-2%202-2l3-1c0-2%203-3%203-1l-2%202h1a154%20154%200%200138-2c-1%201%200%201%203%201%205-1%205-2%200-3l-4-2c0-2%205-1%207%201s4%203%204%201c0-1%201-2%203-2l2%201%204%201c3%200%204%200%203-1l-2-1c0-1-8-3-18-4l-10-1h-3l-6%201-11%201c-5%201-8%202-9%201h-15l-6-1c-2-2-7-3-7-1l-3%201%201-2c2-2%202-2-1-1M41%20142l-18%202c-8%200-9%201-9%202l-3%203c-3%200-5%202-4%203l-1%201-1-2H4v1l-2%202c-2%200-3%203-1%205v1l-1%2053v53h401v-54c0-51%200-53-2-54-1-1-2-1-3%201h-5c0%202-44%200-46-2l-36-3-18-2-9-1-5-1h-11c-4%201-7%201-18-4l-12-3c-15-2-19-2-22-1h-5c-2-2-2-2-2%200-1%201-2%202-8%202l-8%201-1%201-3%201h-3c-1-1-4-1-5%201h-8a403%20403%200%200121%207c0%202%204%204%207%204l1%201-11-1c-2-1-9-3-10-2h-18v-2h-6l-4%201h-2c-1%201-2%202-3%201l-3%201-4%201-2%201-2%202-3%201-2%201-3%202c-2%201-3%201-3-1h-1l-2%201-2%201-11%205c-2%200%200-2%205-5l11-8%207-4%201-1c-2-3%205-5%2017-4%203%200%203%200%204-2l1-2h-9a2560%202560%200%2000-129%2012l9-2%2014-4%2016-5c3%200%205-1%205-2l9-1c10%201%208-1-2-2l-5-1c-2-2-13-1-21%201m253%2030l-8%202c-1%200%203%203%205%202l2%201c0%201%205%201%206-1h3l1-1%201-1%201%201%201%202%201-1%201-1%201%202c0%202%200%202%203%200h2l2%202c1%201%202%200%202-1l2-1c8%202%2010%202%2010%201s-12-5-19-5l-8-1h-9\\'%20fill=\\'%2364ffda\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Image Alt\"\n        title=\"Image Alt\"\n        src=\"/static/490343832c4705701e26598c1c374606/03346/image.jpg\"\n        srcset=\"/static/490343832c4705701e26598c1c374606/71299/image.jpg 175w,\n/static/490343832c4705701e26598c1c374606/1e9fe/image.jpg 350w,\n/static/490343832c4705701e26598c1c374606/03346/image.jpg 700w,\n/static/490343832c4705701e26598c1c374606/c3223/image.jpg 1050w,\n/static/490343832c4705701e26598c1c374606/da6ee/image.jpg 1400w,\n/static/490343832c4705701e26598c1c374606/028c4/image.jpg 4256w\"\n        sizes=\"(max-width: 700px) 100vw, 700px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\"><span class=\"gatsby-highlight-code-line\"><span class=\"token keyword\">class</span> <span class=\"token class-name\">FlavorForm</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">React<span class=\"token punctuation\">.</span>Component</span> <span class=\"token punctuation\">{</span></span>  <span class=\"token function\">constructor</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">props</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">super</span><span class=\"token punctuation\">(</span>props<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>state <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>value<span class=\"token operator\">:</span> <span class=\"token string\">'coconut'</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>handleChange <span class=\"token operator\">=</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">handleChange</span><span class=\"token punctuation\">.</span><span class=\"token function\">bind</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>handleSubmit <span class=\"token operator\">=</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">handleSubmit</span><span class=\"token punctuation\">.</span><span class=\"token function\">bind</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n\n  <span class=\"token function\">handleChange</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">event</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"gatsby-highlight-code-line\">    <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">setState</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>value<span class=\"token operator\">:</span> event<span class=\"token punctuation\">.</span>target<span class=\"token punctuation\">.</span>value<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span>  <span class=\"token punctuation\">}</span>\n\n<span class=\"gatsby-highlight-code-line\">  <span class=\"token function\">handleSubmit</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">event</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></span><span class=\"gatsby-highlight-code-line\">    <span class=\"token function\">alert</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Your favorite flavor is: '</span> <span class=\"token operator\">+</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>state<span class=\"token punctuation\">.</span>value<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span><span class=\"gatsby-highlight-code-line\">    event<span class=\"token punctuation\">.</span><span class=\"token function\">preventDefault</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span><span class=\"gatsby-highlight-code-line\">  <span class=\"token punctuation\">}</span></span>\n  <span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n<span class=\"gatsby-highlight-code-line\">      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>form</span> <span class=\"token attr-name\">onSubmit</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>handleSubmit<span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span></span><span class=\"token plain-text\">        </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>label</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span>\n<span class=\"token plain-text\">          Pick your favorite flavor:</span>\n<span class=\"gatsby-highlight-code-line\"><span class=\"token plain-text\">          </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>select</span> <span class=\"token attr-name\">value</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>state<span class=\"token punctuation\">.</span>value<span class=\"token punctuation\">}</span></span> <span class=\"token attr-name\">onChange</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>handleChange<span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span></span><span class=\"gatsby-highlight-code-line\"><span class=\"token plain-text\">            </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>option</span> <span class=\"token attr-name\">value</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>grapefruit<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Grapefruit</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>option</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span></span><span class=\"gatsby-highlight-code-line\"><span class=\"token plain-text\">            </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>option</span> <span class=\"token attr-name\">value</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>lime<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Lime</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>option</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span></span><span class=\"gatsby-highlight-code-line\"><span class=\"token plain-text\">            </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>option</span> <span class=\"token attr-name\">value</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>coconut<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Coconut</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>option</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span></span><span class=\"gatsby-highlight-code-line\"><span class=\"token plain-text\">            </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>option</span> <span class=\"token attr-name\">value</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>mango<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Mango</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>option</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span></span><span class=\"gatsby-highlight-code-line\"><span class=\"token plain-text\">          </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>select</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span></span><span class=\"token plain-text\">        </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>label</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span>\n<span class=\"token plain-text\">        </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>input</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>submit<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">value</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Submit<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token plain-text\"></span>\n<span class=\"gatsby-highlight-code-line\"><span class=\"token plain-text\">      </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>form</span><span class=\"token punctuation\">></span></span></span>    <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<div class=\"gatsby-code-title\">highlight.js</div>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token comment\">// Here is a comment</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">$initHighlight</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">block<span class=\"token punctuation\">,</span> cls</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">try</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>cls<span class=\"token punctuation\">.</span><span class=\"token function\">search</span><span class=\"token punctuation\">(</span><span class=\"token regex\">/\\bno\\-highlight\\b/</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n      <span class=\"token keyword\">return</span> <span class=\"token function\">process</span><span class=\"token punctuation\">(</span>block<span class=\"token punctuation\">,</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0F</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span>\n             <span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\"> class=\"</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>cls<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">\"</span><span class=\"token template-punctuation string\">`</span></span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span> <span class=\"token keyword\">catch</span> <span class=\"token punctuation\">(</span>e<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">/* handle exception */</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span> <span class=\"token operator\">/</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> classes<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">checkCondition</span><span class=\"token punctuation\">(</span>classes<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">===</span> <span class=\"token keyword\">undefined</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">'undefined'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span>\n\n  <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n    <span class=\"token operator\">&lt;</span>div<span class=\"token operator\">></span>\n      <span class=\"token operator\">&lt;</span>web<span class=\"token operator\">-</span>component<span class=\"token operator\">></span><span class=\"token punctuation\">{</span>block<span class=\"token punctuation\">}</span><span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>web<span class=\"token operator\">-</span>component<span class=\"token operator\">></span>\n    <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>div<span class=\"token operator\">></span>\n  <span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">export</span> $initHighlight<span class=\"token punctuation\">;</span></code></pre></div>\n<p>This is a paragraph.</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">This is a paragraph.</code></pre></div>\n<h1>Header 1</h1>\n<h2>Header 2</h2>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">Header 1\n========\n\nHeader 2\n--------</code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"css\"><pre class=\"language-css\"><code class=\"language-css\"><span class=\"token atrule\"><span class=\"token rule\">@import</span> <span class=\"token string\">'compass/reset'</span><span class=\"token punctuation\">;</span></span>\n\n// variables\n$<span class=\"token property\">colorGreen</span><span class=\"token punctuation\">:</span> #008000<span class=\"token punctuation\">;</span>\n$<span class=\"token property\">colorGreenDark</span><span class=\"token punctuation\">:</span> <span class=\"token function\">darken</span><span class=\"token punctuation\">(</span>$colorGreen<span class=\"token punctuation\">,</span> 10<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token atrule\"><span class=\"token rule\">@mixin</span> container</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">max-width</span><span class=\"token punctuation\">:</span> 980px<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n// mixins with parameters\n<span class=\"token atrule\"><span class=\"token rule\">@mixin</span> <span class=\"token function\">button</span><span class=\"token punctuation\">(</span>$<span class=\"token property\">color</span><span class=\"token punctuation\">:</span> green<span class=\"token punctuation\">)</span></span> <span class=\"token punctuation\">{</span>\n  <span class=\"token atrule\"><span class=\"token rule\">@if</span> <span class=\"token punctuation\">(</span>$color == green<span class=\"token punctuation\">)</span></span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">background-color</span><span class=\"token punctuation\">:</span> #008000<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span> <span class=\"token atrule\"><span class=\"token rule\">@else</span> if <span class=\"token punctuation\">(</span>$color == red<span class=\"token punctuation\">)</span></span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">background-color</span><span class=\"token punctuation\">:</span> #b22222<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token selector\">button</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token atrule\"><span class=\"token rule\">@include</span> <span class=\"token function\">button</span><span class=\"token punctuation\">(</span>red<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token selector\">div,\n.navbar,\n#header,\ninput[type='input']</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">font-family</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Helvetica Neue'</span><span class=\"token punctuation\">,</span> Arial<span class=\"token punctuation\">,</span> sans-serif<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">width</span><span class=\"token punctuation\">:</span> auto<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">margin</span><span class=\"token punctuation\">:</span> 0 auto<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">display</span><span class=\"token punctuation\">:</span> block<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token selector\">.row-12 > [class*='spans']</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">border-left</span><span class=\"token punctuation\">:</span> 1px solid #b5c583<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token selector\">// nested definitions\nul</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">width</span><span class=\"token punctuation\">:</span> 100%<span class=\"token selector\">;\n  padding:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">left</span><span class=\"token punctuation\">:</span> 5px<span class=\"token punctuation\">;</span>\n    <span class=\"token property\">right</span><span class=\"token punctuation\">:</span> 5px<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token selector\">li</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">float</span><span class=\"token punctuation\">:</span> left<span class=\"token punctuation\">;</span>\n    <span class=\"token property\">margin-right</span><span class=\"token punctuation\">:</span> 10px<span class=\"token selector\">;\n    .home</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">background</span><span class=\"token punctuation\">:</span> <span class=\"token url\"><span class=\"token function\">url</span><span class=\"token punctuation\">(</span>'http://placehold.it/20'<span class=\"token punctuation\">)</span></span> scroll no-repeat 0 0<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token selector\">.banner</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token atrule\"><span class=\"token rule\">@extend</span> .container<span class=\"token punctuation\">;</span></span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token selector\">a</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">color</span><span class=\"token punctuation\">:</span> $colorGreen<span class=\"token selector\">;\n  &amp;:hover</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">color</span><span class=\"token punctuation\">:</span> $colorGreenDark<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token selector\">&amp;:visited</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">color</span><span class=\"token punctuation\">:</span> #c458cb<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token atrule\"><span class=\"token rule\">@for</span> $i from 1 through 5</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token selector\">.span#</span><span class=\"token punctuation\">{</span>$i<span class=\"token punctuation\">}</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">width</span><span class=\"token punctuation\">:</span> 20px * $i<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token atrule\"><span class=\"token rule\">@mixin</span> mobile</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token atrule\"><span class=\"token rule\">@media</span> screen and <span class=\"token punctuation\">(</span><span class=\"token property\">max-width</span><span class=\"token punctuation\">:</span> 600px<span class=\"token punctuation\">)</span></span> <span class=\"token punctuation\">{</span>\n    <span class=\"token atrule\"><span class=\"token rule\">@content</span><span class=\"token punctuation\">;</span></span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"markdown\"><pre class=\"language-markdown\"><code class=\"language-markdown\"><span class=\"token title important\"><span class=\"token punctuation\">#</span> hello world</span>\n\nyou can write text <span class=\"token url\">[<span class=\"token content\">with links</span>](http://example.com)</span> inline or <span class=\"token url\">[<span class=\"token content\">link references</span>][<span class=\"token variable\">1</span>]</span>.\n\n<span class=\"token list punctuation\">-</span> one <span class=\"token italic\"><span class=\"token punctuation\">_</span><span class=\"token content\">thing</span><span class=\"token punctuation\">_</span></span> has <span class=\"token italic\"><span class=\"token punctuation\">*</span><span class=\"token content\">em</span><span class=\"token punctuation\">*</span></span>phasis\n<span class=\"token list punctuation\">-</span> two <span class=\"token bold\"><span class=\"token punctuation\">**</span><span class=\"token content\">things</span><span class=\"token punctuation\">**</span></span> are <span class=\"token bold\"><span class=\"token punctuation\">**</span><span class=\"token content\">bold</span><span class=\"token punctuation\">**</span></span>\n\n<span class=\"token url-reference url\"><span class=\"token punctuation\">[</span><span class=\"token variable\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span> http://example.com</span>\n\n<span class=\"token hr punctuation\">---</span>\n\n<span class=\"token title important\"><span class=\"token punctuation\">#</span> hello world</span>\n\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>this_is</span> <span class=\"token attr-name\">inline</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>xml<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>this_is</span><span class=\"token punctuation\">></span></span>\n\n<span class=\"token blockquote punctuation\">></span> markdown is so cool\n\n<span class=\"token code keyword\">    so are code segments</span>\n\n<span class=\"token list punctuation\">1.</span> one thing (yeah!)\n<span class=\"token list punctuation\">2.</span> two thing <span class=\"token code keyword\">`i can write code`</span>, and <span class=\"token code keyword\">`more`</span> wipee!</code></pre></div>\n<h1>Header 1</h1>\n<h2>Header 2</h2>\n<h3>Header 3</h3>\n<h4>Header 4</h4>\n<h5>Header 5</h5>\n<h6>Header 6</h6>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\"># Header 1\n## Header 2\n### Header 3\n#### Header 4\n##### Header 5\n###### Header 6</code></pre></div>\n<h1>Header 1</h1>\n<h2>Header 2</h2>\n<h3>Header 3</h3>\n<h4>Header 4</h4>\n<h5>Header 5</h5>\n<h6>Header 6</h6>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\"># Header 1 #\n## Header 2 ##\n### Header 3 ###\n#### Header 4 ####\n##### Header 5 #####\n###### Header 6 ######</code></pre></div>\n<blockquote>\n<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.</p>\n</blockquote>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">&gt; Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.</code></pre></div>\n<blockquote>\n<h2>This is a header</h2>\n<ol>\n<li>This is the first list item.</li>\n<li>This is the second list item.</li>\n</ol>\n<p>Here's some example code:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">Markdown.generate();</code></pre></div>\n</blockquote>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">&gt; ## This is a header.\n&gt; 1. This is the first list item.\n&gt; 2. This is the second list item.\n&gt;\n&gt; Here&#39;s some example code:\n&gt;\n&gt;     Markdown.generate();</code></pre></div>\n<ul>\n<li>Red</li>\n<li>Green</li>\n<li>Blue</li>\n<li>Red</li>\n<li>Green</li>\n<li>Blue</li>\n<li>Red</li>\n<li>Green</li>\n<li>Blue</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"markdown\"><pre class=\"language-markdown\"><code class=\"language-markdown\"><span class=\"token list punctuation\">-</span> Red\n<span class=\"token list punctuation\">-</span> Green\n<span class=\"token list punctuation\">-</span> Blue\n\n<span class=\"token list punctuation\">*</span> Red\n<span class=\"token list punctuation\">*</span> Green\n<span class=\"token list punctuation\">*</span> Blue\n\n<span class=\"token list punctuation\">-</span> Red\n<span class=\"token list punctuation\">-</span> Green\n<span class=\"token list punctuation\">-</span> Blue</code></pre></div>\n<ol>\n<li>Buy flour and salt</li>\n<li>Mix together with water</li>\n<li>Bake</li>\n</ol>\n<div class=\"gatsby-highlight\" data-language=\"markdown\"><pre class=\"language-markdown\"><code class=\"language-markdown\"><span class=\"token list punctuation\">1.</span> Buy flour and salt\n<span class=\"token list punctuation\">1.</span> Mix together with water\n<span class=\"token list punctuation\">1.</span> Bake</code></pre></div>\n<p>Paragraph:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">Code</code></pre></div>\n<!-- -->\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">Paragraph:\n\n    Code</code></pre></div>\n<hr>\n<hr>\n<hr>\n<hr>\n<hr>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">* * *\n\n***\n\n*****\n\n- - -\n\n---------------------------------------</code></pre></div>\n<p>This is <a href=\"http://example.com\" title=\"Example\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">an example</a> link.</p>\n<p><a href=\"http://example.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">This link</a> has no title attr.</p>\n<p>This is <a href=\"http://example.com\" title=\"Optional Title\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">an example</a> reference-style link.</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">This is [an example](http://example.com &quot;Example&quot;) link.\n\n[This link](http://example.com) has no title attr.\n\nThis is [an example] [id] reference-style link.\n\n[id]: http://example.com &quot;Optional Title&quot;</code></pre></div>\n<p><em>single asterisks</em></p>\n<p><em>single underscores</em></p>\n<p><strong>double asterisks</strong></p>\n<p><strong>double underscores</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">*single asterisks*\n\n_single underscores_\n\n**double asterisks**\n\n__double underscores__</code></pre></div>\n<p>This paragraph has some <code class=\"language-text\">code</code> in it.</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">This paragraph has some `code` in it.</code></pre></div>"}},{"node":{"frontmatter":{"title":"WordPress Publishing Error","description":"Trying to create a simple post in WordPress","slug":"/pensieve/wordpress-publish-error","date":"2019-12-03","tags":["WordPress"],"draft":false},"html":"<h2>Problem</h2>\n<p>Recently while working on a WordPress project with <a href=\"https://github.com/Upstatement/ups-dock\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Ups Dock</a>, I encountered a weird error where I wasn't able to update or publish a simple post in my local WP admin.</p>\n<p>It looked something like this:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 700px;\"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/9a7943feb3c4ee95b43801cfda486beb/8e621/draft-fail.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 32.57142857142857%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'130\\'%20viewBox=\\'0%200%20400%20130\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M340%205v6l1%205h29V4h-15l-15%201m35%200l-1%206v5h13V5l-6-1-6%201M29%2056c0%204%200%205-2%205l-1-3c1-4%200-6-2-4l-1%204c0%204%200%204%204%204s5%200%204-2l1-3c1-1%201%200%201%202%200%203%200%203%204%203h5l-1-4-2-4c-2%200-2%200-1%203l-1%204-1-3c0-3-1-4-3-4l-2-2-1-1c-1%200-2%201-1%205m55-4l-1%203c-2%200-2%202-2%204s0%203%206%203h7l-1-3c0-2%200-3%201-2l2-1c0-1-1-2-3-2-4%200-4%200-3%204l-1%203-1-5c0-3-1-5-2-5l-2%201m22%200v5c-1%204-3%205-3%201l-2-4c-3%200-5%202-3%203%201%200%201%201-1%201-3%203%200%204%207%204%203%200%206%200%205-1-2%200-1-5%201-5l1%203c0%202%200%203%202%203l1-4c0-4%200-6-2-4h-3v-1l2-1h-5\\'%20fill=\\'%2364ffda\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Draft fail\"\n        title=\"Draft fail\"\n        src=\"/static/9a7943feb3c4ee95b43801cfda486beb/39600/draft-fail.png\"\n        srcset=\"/static/9a7943feb3c4ee95b43801cfda486beb/1aaec/draft-fail.png 175w,\n/static/9a7943feb3c4ee95b43801cfda486beb/98287/draft-fail.png 350w,\n/static/9a7943feb3c4ee95b43801cfda486beb/39600/draft-fail.png 700w,\n/static/9a7943feb3c4ee95b43801cfda486beb/57cd1/draft-fail.png 1050w,\n/static/9a7943feb3c4ee95b43801cfda486beb/4af54/draft-fail.png 1400w,\n/static/9a7943feb3c4ee95b43801cfda486beb/8e621/draft-fail.png 2234w\"\n        sizes=\"(max-width: 700px) 100vw, 700px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>Sometimes the error message would be slightly more helpful: <code class=\"language-text\">Publishing failed. Error message: The response is not a valid JSON response.</code></p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 700px;\"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/c2362fe43c3b6f9628b1cc63d0bb00f9/04410/publish-error.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 12%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'47\\'%20viewBox=\\'0%200%20400%2047\\'%20preserveAspectRatio=\\'none\\'/%3e'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Publish error\"\n        title=\"Publish error\"\n        src=\"/static/c2362fe43c3b6f9628b1cc63d0bb00f9/39600/publish-error.png\"\n        srcset=\"/static/c2362fe43c3b6f9628b1cc63d0bb00f9/1aaec/publish-error.png 175w,\n/static/c2362fe43c3b6f9628b1cc63d0bb00f9/98287/publish-error.png 350w,\n/static/c2362fe43c3b6f9628b1cc63d0bb00f9/39600/publish-error.png 700w,\n/static/c2362fe43c3b6f9628b1cc63d0bb00f9/04410/publish-error.png 956w\"\n        sizes=\"(max-width: 700px) 100vw, 700px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>And if I popped open the console, I saw these errors:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 700px;\"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/0dc960ad57313c7b34df2794f8954458/fb77c/console-errors.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 20.571428571428573%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'82\\'%20viewBox=\\'0%200%20400%2082\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M0%2041v41h401V0H0v41M197%206v2l-2%202-1-1V8l-2%201-1%204v-2c0-2-1-3-2-3l-1%201v3h-1l-2-1%201-2%202-1h-2c-2%200-2%201-2%203l-2%202-2-1%202-4c0-2%200-2-4%204-1%202-3%200-1-2V7l-2%203c-1%203-3%204-3%202h-1l-1%201-1-1-1-2V9l-3-1c-4%200-4%200-4%203v3h48v-3c0-3%200-3-1-1h-1l-1-2-1%203c1%201%201%202-1%202l-1-1v-1h-1l-1%202-1-2c0-2-3-6-3-5m28%202l-2%203v2l-2-2h-1l-1%202-1-1-1-2V8l-2%201-1%204-1-2-1-3c-2%200-2%201-2%203v3h53v-3c0-2%200-3-2-3-1%200-2%201-2%203%201%202%200%202-2%202-3%200-4%200-3-3%200-2%200-2-4-2-5%200-5%201-4%203l-1%202c-2%200-2-1-1-4V7l-2%203-1%203-1-3-1-1-1-1c-1-2-1-2-1%201%200%204%200%204-2%202V9l-3-1c-4%200-4%200-4%203v2l-1-3c0-4-1-4-2-2m55-1v3l-2%203v-2c0-3%200-3-4-3l-4%201v3l-1%202h32a425%20425%200%200030-2l-1-1h-1l-1%202-1-2c0-4-3-4-4-1-1%202-1%202-1-1%200-4-2-3-2%201%200%202%200%202-1%200-1-3-5-3-5%200%200%201%201%202%203%202%202%201%202%201-1%201l-4-1v-1h-1l-1%202-1-2-1-4c-2-1-2-1-2%203%200%203%200%203-2%201V8c-2%200-2%201-2%203l-1%202-1-4-2-2-1%203c1%203%201%204-2%202v-2l1-1c-2-2-4%200-4%202%201%201%200%202-1%202l-1-4V7c-1%201-2%202-1%204%200%202%200%202-3%202s-4-1-5-4l-1-2m63%202c0%203-1%204-2%204v-1l-1-2V9l-2-1-1%201v3c-1%202%201%202%2029%202s29%200%2028-2l-1-4c0-1%200-2-1-1v1c0%202-1%205-3%205v-1l-1-1-1%201-2%201V7l-1-1-2%202%201%202v2c-2%201-2%201-4-1h-1c0%202-2%203-2%201V9c-1-2-3-4-3-2l1%201-2%205-1-2h-2l-1%202c-1%200-2-3-1-4V7l-3-1%201%202v3c-2%203-8%203-8%200l1-2%201%201%202%201%202-1c0-2-1-2-4-2-4%200-4%200-4%203%201%202%200%203-2%201v-2l1-1-3-1-3%201h-1c-1-1-1-1-1%201%201%202%201%203-1%203l-1-3-1-4v3M17%2016l-2%204%201%203h10l11-1h-1v-4l1-3c-1%200-2%201-2%203-2%203-2%203-2%201-1-3-4-3-4%200l-1%202-1-4c0-2%200-2-1-1v3l-1%201c-1%201-1%200-1-1%200-2%200-2-2-2-2%201-3%200-3-1h-2m84%200l-3%201-2%202%203%201c3-1%203-1%202%201-2%202-8%200-7-3l-1-2-1%203c1%202%201%203-1%203l-1-2v-2l-1-2c-1%200-2%202-1%203l-1%202c-1%201-1%201-1-1%200-3-1-5-2-3h-3c-3%200-3%200-3%203v3h45c41%200%2047%200%2043-3v-2l-1-2c-2%200-2%201-1%203%200%203%200%203-1%202l-2-4c0-2%200-2-1-1v3l-1%201c-1%201-1%200-1-2%200-3%200-4-3-1h-8l-2%201-2-1c-1-2-1-2-2%204h-3l-1-3%202%201h1c0-2-2-3-3-2l-1%202-1%202-1-4c0-2%200-2-1-1v3c0%201-1%202-3%201v-3c-2-2-3%200-2%203%200%202%200%202-2%201-2-2-3-3-1-3l1-1c0-2-3%200-3%202s0%202-1%200c-1-3-3-4-3-2%200%201-1%202-2%201l-1-2v-1l-2%202-2-1h-4l-1-1-2%201%201%201v2c-2%202-2%202-2-1-1-2-2-4-3-2M60%2028v4h29c24%200%2028-1%2028-2h1a301%20301%200%200047%200c-4%200-4-2%200-2%202%200%202%200%200-1l-4-1h-6c-1%200-2%200-1%202l-1%202c-2%200-2%200-1-3s0-4-1-1-3%203-2%200l-1-1h-1c0-2-2-1-2%202%200%202-1%203-2%202v-2l1-2c-1-1-3%201-3%203l-1%202-1-2-1-2-1%202-1%202-1-3c0-3%200-3-2-1l-2%203h-3c-1%202-2%201-2-1%200-3-1-4-3-2l1%202v1c-2%201-2%200-2-1l-1-2c-1-1-5%200-5%202l-1-1-1-2v2c0%203-1%204-2%202h-2c-1%201-1%201-1-1l-2-3c-2-1-2-1-2%202v4l-1-3c-2-4-3-4-3-1l-1%203-1-2c0-3-1-4-2-2v3c-3%201-5-1-3-2l1-2c-1-1-4%202-4%204%201%201%200%201-1%201-2%200-2%200%200-3v-3l-2%203c-2%204-4%204-3%200%201-3%200-4-1%200-2%204-2%204-3%202h-2l-1%201v-1l-3-4-1%203-1%202-1-3-1-2-1%203-1%202-1-3-1-2-1%203-1%202-1-2-2-3c-2-1-2-1-2%203m127-1c-1%202-1%202-2%200-1-3-4-3-4%201%200%202%200%202-1%201-1-4-2-5-4-3l-1%201c0-2-2-3-3-1l1%202v1l-2%202a2827%202827%200%2000167%200%202642%202642%200%200154-1c-4-1-5-2-1-2h4l-2-2c-1%200-2%200-1%201h-2c-2-2-4-2-4%201l-1-1-2-3v6l-2-2c-1-3-3-4-3-1-1%202-3%203-3%201l1-1v-1h-5l-2%201-2%202v-2l-1-3-1%203c1%203%200%203-3%203l-3-1c1-1%200-2-1-2l-1-1c1-2%200-2-2-1h-1l-1-1-2%201h-1c-2-2-4%200-4%203v2l-1-3c-1-3-3-4-3%200%201%203-3%204-7%202h2l4-1-2-2h-4l-2%202-1%203v-3c0-2%200-3-4-3-3%200-4%201-4%202h-1c-2-3-4-2-4%201%201%202%200%202-3%202l-4-1%201-2%201-1c0-2-2%200-3%202%200%201-1%202-2%201l-1-1%202-1c0-2-2-2-3-1h-5l-2%201-1-1v-2l-2%202-1%202v-2l-1-1-2%203-1%202-2-1%201-2%201-1-1-1c-1%200-2%201-2%203l-1%202v-1c0-2-3-5-3-3-1%201-2%200-4-1s-2-1-2%202l-1%203v-3l-1-2-1%203-1%202-1-2c0-2%200-2-1%200h-1l-1-2h-2l-1-1-2%202h-1c-1-1-7-2-8-1l-2-1h-3c-2%202-5%202-5%200l-2-1v1c2%201%200%205-3%205-2%200-2%200%200-3v-3l-2%203c-1%203-3%202-2-1l-1-1c-2%200-2%201-2%202l-1%203-2-1%201-2%201-1-1-1c-1%200-2%201-2%203s0%202-2%202l-2-1%201-1%201-2c-1-1-2-1-3%201h-2c0-2-2-3-3-1l1%202v1c-2%201-2%200-2-1%200-2%200-2-1%200l-1%202v-2c-1-2-1-2-1%200l-1%202c-2%200-2%200-1-3l1-3c-1%200-2%201-2%203-2%204-4%203-3%200%200-2%200-3-2-3v4c-2%203-3%203-2-1%200-2%200-2-1-1h-2c-1-1-1-1-1%201%201%203%201%203-1%203s-2%200-1-2l1-3-2%202c-2%203-2%203-2%201s-2-3-5-2c-1%201-2%200-3-1-2-1-2-1-3%202m102%2019v4c0%204-6%203-7-1-1-3-2-3-2%200l-2%203v-2c0-3%200-3-4-3l-4%201v3l-1%202h32c17%200%2031%200%2030-1v-1l-1-1-1%201-1%201-1-2c0-4-3-4-4-1-1%202-1%202-1%200s0-3-1-2l-1%201c0%203%200%204-4%204-3%200-4%200-3-1l-1-1-1%201-1%201-1-2-1-3c-2-1-2%200-2%202s0%203-1%202l-1-1c-2%200-2%200%200-2l2-1h-2c-2%200-2%201-2%203l-1%202-1-4-2-1v3l-1%202-1-2-2-2-1%202-2%202-1-3c1-4%201-5-1-3m85%200v4c-1%202-3%203-3%201h-2c-1%201-1%201-2-1h-3c0%202-1%202-5%202-5%200-5%200-5-2s0-3-3-3l-3%201h-1c-1-1-1-1-1%201v3l-2-2c0-2%200-2-1-1v2l-1%201-2-1v-3l-2-1-1%201v3c-1%202%201%202%2028%202h30l-1-3-2-4v1c0%202-1%205-3%205v-1l-1-1-1%201-2%201v-4c-2%200-2%200-1-1v-1l-2%202%201%201-1%202h-4c-1%202-3%200-2-3%200-2-2-4-2-2m-199%203c-1%203-3%204-3%202h-1l-1%201-1-1-1-2v-1l-3-1c-4%200-4%200-4%203v3h48v-3c0-3%200-3-1-1h-1c0-1%200-2-1-1l-1%202c1%201%200%202-1%202v-1l-1-1-1%201-1%201-1-2c0-2-1-3-2-3-2-1-2-1-1%202l-1%203-1-1v-3l-1-1-2%201-1%204v-1l-1-2v-2c-1%200-2%201-2%203s0%202-1%201l-1-1c-2%200-2%200%200-2l2-1h-2c-2%200-2%201-2%203l-2%202-2-1%201-4-3%204c-1%202-3%200-1-2v-3l-2%203m50-2c-2%201-2%202-2%203v2l-2-1h-1l-1%201-1-1-1-2v-2c-1%200-2%201-2%203l-1%202-1-2-1-3c-2%200-2%201-2%203v3h53v-3l-2-3-2%202c1%203%200%203-2%203-3%200-4%200-3-3%200-2%200-2-4-2-5%200-5%201-5%203v2c-2%200-2%200-1-3v-3l-2%202-1%202-1-2v-1h-2c-1-1-1%200-1%202%200%203%200%203-2%201v-2l-3-1c-4%200-4%200-4%203v2l-1-3c0-3-1-3-2-2M17%2056l-2%204c0%202%201%202%2011%202%208%200%2011%200%2010-1v-4l1-3c-1%200-2%201-2%203-2%203-2%203-2%201-1-3-4-3-4%201%200%203-2%201-2-3%200-2%200-2-1-1v2l-1%203c-1%201-1%201-1-1%200-3%200-3-2-3h-5m84-1l-3%201-2%202%203%201c1-1%202%200%202%201h-6v-3l-2-2-1%203c1%202%200%203-1%203v-1l-1-2v-1l-1-1-2%201-1%204v-2c0-3%200-3-4-3s-4%200-4%203v3h45c44%200%2044%200%2043-2l-1-3-1-1v5c-2%200-3-2-3-5s-1-2-2%201l-1%204v-3c0-3%200-3-2-3l-6%201-5%201h-1l-1-1c-1%200-2%201-2%203l-1%202v-2c0-3%200-3-2-3l-2%202-1%202-1-4c0-2%200-2-1-1v2l-1%203c-1%201-1%201-2-1v-3c-2-2-3%200-2%203%201%202%200%203-3%200v-3c-2%200-2%201-2%203v2l-1-2-1-3-2%201-2%201-1-2v-2l-2%201c0%202%200%202-2%200h-5l-2-1%201%202v3c-2%203-3%203-3-1%201-3-1-5-2-3M60%2067v4h29c26%200%2028%200%2028-2h1a231%20231%200%200047%200c-4%200-4-2%200-2%202%200%202%200%200-1l-3-1h-7c-1%200-2%200-1%202l-1%202c-2%200-2%200-1-3%202-4%200-4-1%200-2%203-2%203-2%200l-3-3-1%203c0%202-1%203-2%202v-2l1-2c-1-1-3%201-3%203s0%202-1%200c-1-3-4-3-3%200l-1%202-1-3c0-3%200-3-2-1l-2%203h-3c-1%202-3%200-2-3l-1-1-2%202c0%203%200%203-1%201l-1-2h-3l-2%202h-1c-1-2-1-2-1%200s-2%203-2%201h-3l-2-3c-2-2-2-2-2%201s-1%204-1%201c-1-2-2-2-3%200%200%202-2%202-2%200%200-3-1-4-2-2v3c-2%201-5-1-3-2v-1c-1-1-3%202-3%203l-3%201c-4%200-4%200-3-3%202-4%200-4-1%201-2%203-2%203-3%201h-2l-1%201v-1c0-1-2-4-3-3l-1%202-1%202-1-3-1-2-1%203-1%202c-1%200-2-1-2-3l-1-2-1%202v3l-1-2-2-3c-2-1-2-1-2%203m127-2c-1%203-1%203-3%201-1-2-3-2-3%201%200%202%200%202-1%200l-1-2h-2l-1%202v2l-1-2c0-3-1-4-3-2l1%202v1c-7%203%203%203%20101%203a1990%201990%200%2000102-2v-3l1-1c-1-2-3%200-3%202s-1%202-3%201v-1c2%200%202%200%201-2-1-1-1-1-3%201h-2c0-2-2-3-3%200h-1c-1-1-1-1-1%201v2l-1-2c-1-2-1-2-1%200s-4%203-7%201h2l4-1c0-1-1-2-3-2h-4l-1%202c0%203-2%202-2-2l-1-2-1%203c1%204%200%204-2%201-1-3-2-3-3%200%200%201-1%202-2%201v-3h-4c-2-1-3%200-3%202l-1%202-1-4-1-2v3c0%203%200%203-3%203s-4%200-3-1l-1-2-2-1v-2l-1%205-1%201-1-3-2-2v3l-1%202-2-4c-1-2-1-1-1%202l-1%201c-1%201-1%200-1-2%200-3%200-3-2-2s-3%202-4%201h-5c-3%200-3%203%201%203%202%201%202%201-1%201s-4-1-4-2l-1-3-1%202v3l-1-2-2-2-1%201c0%202-1%203-3%202v-1c2%200%202%200%201-2h-9c-1-2-3%200-3%202s0%202-1%200c-1-3-4-3-3%200%200%202-1%202-3%201v-2l1-2c-1-1-3%201-3%203l-1%202-1-3-1-3-1%201-1%205-1-2c0-3-1-4-2-2v3h-3v-1l1-2c-1-1-4%200-4%202h-1v-3l-1-1-1%203-1%203-1-1c2-2%200-4-4-3-3%200-4%200-4%202l-1%203v-3c-1-3-2-3-3%200l-1%202v-2c0-1-2-3-3-2l-1%202c0%202%200%202-1%201v-2l-1-1-2%202c0%202%200%202-1%200l-2-2-2%202c-1%202-1%202-1-1l-2-2-1%202c1%202%200%203-1%203-2%200-2%200-1-3l1-3c-1%200-2%201-2%203-2%204-4%203-3%200l-1-3-2%201%201%201v2c-2%203-3%202-3%200%201-1%200-2-1-2s-2%201-1%202c0%202%200%202-2%202s-2%200-1-2l1-3-2%202c-2%203-2%203-2%201-1-3-1-3-5-2-1%201-2%200-3-1-2-1-2-1-3%201\\'%20fill=\\'%2364ffda\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Console errors\"\n        title=\"Console errors\"\n        src=\"/static/0dc960ad57313c7b34df2794f8954458/39600/console-errors.png\"\n        srcset=\"/static/0dc960ad57313c7b34df2794f8954458/1aaec/console-errors.png 175w,\n/static/0dc960ad57313c7b34df2794f8954458/98287/console-errors.png 350w,\n/static/0dc960ad57313c7b34df2794f8954458/39600/console-errors.png 700w,\n/static/0dc960ad57313c7b34df2794f8954458/57cd1/console-errors.png 1050w,\n/static/0dc960ad57313c7b34df2794f8954458/fb77c/console-errors.png 1185w\"\n        sizes=\"(max-width: 700px) 100vw, 700px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<h2>Solution</h2>\n<p>Since the error message had to do with a JSON response, I initially thought it was a Gutenberg or ACF issue. But it turned out this was happening because I was on the https WP admin (i.e. <a href=\"https://project.ups.dock/wp-admin\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://project.ups.dock/wp-admin</a>), not the unsecure WP admin (<a href=\"http://project.ups.dock/wp-admin\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">http://project.ups.dock/wp-admin</a>).</p>\n<p>It was a CORS error!! I was trying to modify a non-https domain from a https domain. Switching to a non-https WP admin allowed me to publish posts with no problem.</p>"}},{"node":{"frontmatter":{"title":"Apollo getCacheKey() with TypeScript","description":"DEVELOPMENT","slug":"/pensieve/apollo-getcachkey-with-typescript","date":"2019-11-9","tags":["Apollo","React"],"draft":false},"html":"<h2>Problem</h2>\n<p>I’m currently working on the front end of an app that uses React + Apollo (via apollo-boost) + TypeScript. I’m to the point where I’m retrieving items from the cache in my resolvers using fragments1, which means I need to use getCacheKey() to search for the item's cache key using its ID field. (In this app, it would probably work to just assume the cache key is TypeName:UUID, but you never know, so we should probably do things properly.)</p>\n<p>Unfortunately, I have not been able to find the correct typings for getCacheKey(). When passing in cache as an argument to a resolver, one can import NormalizedCacheObject for the typings, like so:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> ApolloCache <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'apollo-cache'</span>\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> NormalizedCacheObject <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'apollo-boost'</span>\n\n<span class=\"token operator\">...</span>\n\nMutation<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n  resolveSomeStuff<span class=\"token operator\">:</span> <span class=\"token punctuation\">(</span>\n    _<span class=\"token operator\">:</span> <span class=\"token keyword\">undefined</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span> itemId<span class=\"token punctuation\">,</span> itemOptions <span class=\"token punctuation\">}</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span> itemId<span class=\"token operator\">:</span> string<span class=\"token punctuation\">;</span> itemOptions<span class=\"token operator\">:</span> Array<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>string</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"> },</span>\n<span class=\"gatsby-highlight-code-line\"><span class=\"token plain-text\">    </span><span class=\"token punctuation\">{</span> cache <span class=\"token punctuation\">}</span><span class=\"token plain-text\">: </span><span class=\"token punctuation\">{</span> cache<span class=\"token operator\">:</span> ApolloCache<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">NormalizedCacheObject</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"> }</span></span><span class=\"token plain-text\">  ) => </span><span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">/* Now we resolve everything. Global warming, world\n  hunger, over- and under-population.... */</span>\n  <span class=\"token operator\">...</span>\n  <span class=\"token punctuation\">}</span><span class=\"token plain-text\"></span>\n<span class=\"token plain-text\">}</span></code></pre></div>\n<p>Inside my resolver, the Apollo docs tell me to get an item's cacheKey like this:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\"><span class=\"token keyword\">const</span> cacheKey <span class=\"token operator\">=</span> cache<span class=\"token punctuation\">.</span><span class=\"token function\">getCacheKey</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span> __typename<span class=\"token operator\">:</span> <span class=\"token string\">'Item'</span><span class=\"token punctuation\">,</span> id<span class=\"token operator\">:</span> itemId <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Unfortunately, if I use this formulation, tslint will yell at me:</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">ERROR: <span class=\"token string\">\"Property 'getCacheKey' does not exist on type 'ApolloCache'.\"</span></code></pre></div>\n<h2>Solution</h2>\n<p>Half an hour of Googling was unhelpful. But eventually I found someone reporting a similar-sounding problem as an issue over at the <a href=\"https://github.com/apollographql/apollo-client-devtools/issues/136\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">apollo devtools repo</a>. I adopted his workaround, and it was effective for me. So here is the code inside my resolver:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\"><span class=\"token keyword\">const</span> cacheKey <span class=\"token operator\">=</span> cache<span class=\"token punctuation\">[</span><span class=\"token string\">'config'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">dataIdFromObject</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n  __typename<span class=\"token operator\">:</span> <span class=\"token string\">'Item'</span><span class=\"token punctuation\">,</span>\n  id<span class=\"token operator\">:</span> itemId<span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<blockquote>\n<p>This essentially does an end run around the problem by not calling getCacheKey() at all. I don't know enough about the inner workings of the Apollo client to understand why this works, but I kind of don't care.</p>\n</blockquote>\n<p>If you don’t know what some or all of that means, this post probably isn’t for you.</p>"}}]}},"pageContext":{}}}