Block-Tools - What are the conditions that should create a `_key` ?
15 replies
Last updated: Apr 17, 2020
B
Looking at your tests for `block-tools`https://github.com/sanity-io/sanity/tree/master/packages/%40sanity/block-tools/test/tests/HtmlDeserializer
What are the conditions that should create a
https://codesandbox.io/s/wizardly-dhawan-2iq4w?file=/input.html Where there are keys, but running this locally, there are no keys
What are the conditions that should create a
_key? From this source https://github.com/portabletext/portabletext#markdefs-array it sounds like it is only used with
markDefs, but in the test folder,
randomKeys are inserted everywhere!Also I created this example
https://codesandbox.io/s/wizardly-dhawan-2iq4w?file=/input.html Where there are keys, but running this locally, there are no keys
Apr 17, 2020, 7:43 AM
I believe we always place a random
_keyin all arrays with objects because of how JSONmatch work, aka it makes it possible/easier to patch values within an array in real-time settings. https://www.sanity.io/docs/json-match#arrays-v5QlpWPa
Apr 17, 2020, 7:45 AM
The portable text spec might not be completely up to par on this (we should fix that)
Apr 17, 2020, 7:46 AM
B
But why the different behaviour in Browser vs locally on my computer? The only difference is the use JSDOM locally.
Apr 17, 2020, 7:49 AM
B
output locally (with JSDOM):
output in CodeSandbox (no JSDOM):
[ { "_type": "block", "markDefs": [], "style": "h3", "children": [ { "_type": "span", "marks": [], "text": "Hello world" } ] } ]
[ { "_type": "block", "markDefs": [], "style": "h3", "children": [ { "_type": "span", "marks": [], "text": "Hello world", "_key": "07d8b8b47ba70" } ], "_key": "07d8b8b47ba7" } ]
Apr 17, 2020, 7:52 AM
Aha, gotcha. I don't actually know. I'll have to check with the team once they're up and about
Apr 17, 2020, 7:54 AM
P
user R
- try using JSDOM 12.Apr 17, 2020, 8:00 AM
P
All our tests are written with that one and everything is passing.
Apr 17, 2020, 8:00 AM
B
Hmm. Tried deleting
node_modulesand the lock files, installed jsdom 12, still different results on my computer (no
_key), for
<h3>Hello world</h3>
Apr 17, 2020, 8:05 AM
P
Hmm
Apr 17, 2020, 8:06 AM
P
That's so strange.
Apr 17, 2020, 8:07 AM
P
If you look at our tests it's doing the same https://github.com/sanity-io/sanity/blob/portable-text-editor/packages/@sanity/block-tools/test/tests/HtmlDeserializer/index.test.ts#L21
Apr 17, 2020, 8:08 AM
P
Did you import JSDOM like
import {JSDOM} from 'jsdom'?
Apr 17, 2020, 8:09 AM
P
As a last resort, you could
import {normalizeBlock}from blocktools and map the result through that.
Apr 17, 2020, 8:14 AM
B
_keys locally as well
I was looking at the wrong output file... 🤦‍♂️
Apr 17, 2020, 8:14 AM
Sanity– build remarkable experiences at scale
Sanity is a modern headless CMS that treats content as data to power your digital business. Free to get started, and pay-as-you-go on all plans.