►
From YouTube: Magento PWA Demo, 10 September 2018 (Sprint 24)
Description
Sprint 24 demo for Magento PWA Studio.
A
A
That
zombies
done
some
great
work
on
the
account
recovery
experience
and
so
we're
gonna
talk
to
some
work
that
she's
prototypes
I've
gotten
some
feedback
there,
as
well
as
an
inventory
that
that
she
has
done
and
then
starting
to
you
know,
starting
to
take
a
look
at
closely
between
venya
and
the
UI
components.
So
we'll
start
off
with
that,
then
we'll
hand
off
to
to
mr.
A
Kaufman
and
he's
going
to
show
us
some
of
the
updates
around
documentation
based
on
user
research
that
that's
down
BIA
and
others
led,
and
so
we're
continuing
to
improve
that
a
big
part
of
our
experience,
and
so
we've
got
some
updates
to
share
there.
Then
we're
gonna
switch
gears
to
add
to
some
of
the
code
and
architecture
related
items,
and
so
Jim
is
going
to
show
us
some
of
his
work
on
testing
or
on
checkup
MVP.
So
there's
some
awesome.
A
Some
testing
there,
as
well
as
they
work
in
progress,
take
at
navigation
and
so
we're
starting
to
stitch
together.
Some
of
the
key
experiences-
the
MVP
navigation,
is
no
different
for
that
and
so
anxious
to
see
that
from
Jimmy
and
then
last
but
not
least,
of
course,
is
what
James
is
referring
to,
which
is
the
beginnings
of
this.
This
middle
tier
architecture-
and
you
know,
what's
that
forming
and
in
terms
of
the
the
test
harness
and
some
reference
implementations
a
lot
to
cover
in
an
hour.
B
Okay,
so
circling
back
from
feedback
last
time,
just
to
just
that
context.
For
everyone
we
decided
that
we
were
only
going
to
do
sign-in
from
the
footer
because
it
couldn't
contextually
be
updated.
We
create
account
and
sign
in
so
when
they
click
that
they
kind
of
get
to
the
screen
which
gives
them
the
option
to
sign
in
if
they
have
an
existing
account
or
to
create
an
account,
they
don't
have
one
so
on
the
forgot,
your
username
and
password.
B
This
is
the
flow
that
I
currently
have
and
I
still
have
open
questions
that
I
need
help
answering
and
I'll
get
to
that
at
the
end
of
the
flow.
So
the
shopper
says:
I
forgot
my
username
or
password.
This
particularly
deals
with
the
password
flow,
so
they're
asked
to
enter
an
email
to
receive
a
password
reset
link
and
they
enter
their
email
address,
hit,
submit
whoops.
B
That
was
weird:
okay,
anyway,
they
hit
submit
and
they
get
the
thing
that
says.
If
you
have
an
account
associated
with
this,
you
will
receive
a
link.
I
don't
have
the
email
screen,
but
presumably
they
would
go
into
their
emails,
they
would
click
the
links
they
would
land
here
and
then
they
would
seven
new
passwords.
Now
on
this
I
have
a
number
of
questions.
Actually,
the
backtracking
there
needs
to
be
somewhere
that
we
have
the
CAPTCHA.
C
B
Don't
know
where
exactly
we
should,
it's,
probably
in
the
second
new
password
to
clean,
I,
would
presume,
and
what
that
looks
like
I
need
some
help
figuring
out
visually.
What
we
would
like
that
to
look
like
the
other
thing.
Is
that
or
the
main
thing
is,
let's
say
that
the
shopper
is
on
Chrome
and
they're
browsing
venya
and
they
go
through
this
password
reset
slow.
C
B
B
So
I
have
comments
here.
Just
need
help
kind
of
talking
through
those
and
figuring
out
what
we
want
to
do,
I,
don't
think,
there's
any
way
to
indicate
to
them
that
or
why
or
to
detect
if
they
had
items
an
icon
if
it
with
the
new
browsers
opera.
Just
there
the
you,
you
X
sort
of
disconnect
here,
just
that
we
I
don't
know
if
we
can
address,
but
I
would
like
to
try
yeah,
no.
A
I
think
this
was
really
a
really
great
time
and
so
I
think
it's
a
good
start.
I
think
we're
gonna
mark
this
one
as
partial
I
think
we've
got
a
story
in
its
own
right
around
CAPTCHA
and
then
definitely
want
to
sync
up
with
James
on
how
this
touches
things
like
state-managed,
been
around
the
cart,
how
that
works
with
redux
and
everything
without
a
turn,
so
I
think
it's
a
good
I
think
it
I
think
it's
a
good
progress
on
that.
A
D
B
Okay,
that's
great
yeah
I
just
need
to
set
aside
some
time
so
I
can
talk
to.
Although
the
youth
scape
concerns
that
I
listed
gotcha
cool.
So
if
there
are
no
other
questions
on
that
flow,
I
carry
on
with
the
next
one,
please,
which
most
of
you
have
already
seen
and
grooming
last
week,
it's
the
edit
card
flow.
So
the
way
that
we're
dealing
with
this
is
that
there
are
two
contexts
here.
B
One
is
where
a
shocker
could
want
to
add
the
same
item
in
a
different
configuration
intentionally
and
where
they
want
to
edit
the
item
they
have
in
their
cart
already.
The
decision
right
now
has
been
to
say
if
they
click
the
products
on
nail
or
the
product
title,
they
would
be
taken
to
the
PD
page
right,
where
they
would
configure
and
add
a
new
item
to
their
car,
and
this
would
be
a
duplicate
in
the
different
car
configuration.
B
However,
if
they
hit
the
three
dog,
it
gives
them
the
option
to
edit
the
item
and
when
they
say
edit
item
it
kind
of
keeps
them
in
the
context
of
the
mini
car
and
allows
them
to
make
changes
to
that
item,
and
so
then
they're
able
to
save
changes
and
then
there
back
into
the
shopping
cart
with
an
indicator
that
the
cart
item
has
been
updated.
So
they
have
feedback
on
the
action
that
they
just
comp.
B
So
these
are
the
two
two
paths
that
we
have
I'm
meeting
with
Misha
today,
also
to
kind
of
walk
him
through
this
and
make
sure
he
said
he
has
some
other
some
other
context
in
which
something
similar
might
be
needed
from
a
workflow
standpoint.
So
I'll
know
more
this
afternoon,
but
I'll
share
what
I
have
with
him
perfect
any
questions
on
that.
B
Okay,
moving
on
to
the
last
piece
is
Erik
and
I
have
just
put
together
a
spreadsheet
of
the
various
components
that
we've
been
tracking
and
it
has
two
stages,
as
you
can
see,
one
is
design
and
the
other
development
I
mean
Jimmy
will
be
after
Wayne
on
development.
Now
the
design
portion
of
it
I've
gone
in
and
tracked
to
say,
which
ones
so
bunch
of
these
have
been
done
previously.
B
So
some
of
them
just
need
to
be
reviewed
and
I
need
to
know
what
changes
to
make
or
what
use
cases
to
account
for
going
forward,
and
you
can
see
a
few
of
them
are
ready
for
development,
and
some
of
them
are
blocked
either,
because
we
decided
we're
not
going
to
do
that
right
now
or
we
don't
have
enough
information
to
to
have
a
you
know
design
at
this
point,
and
then
there
are
some
that
we
haven't.
Oh
actually,
this
should
be
updated.
A
In
just
a
sec
context
of
this
and
for
people,
thinking,
avoidance,
we'd,
love
to
I
use
this
almost
as
the
status
right
and
so
there's
some
great
open
source
projects
out
there,
like
like
the
VMware
clarity
project,
where
you
essentially
have
a
series
of
components
that
show
its
various
status
and
so
again
just
opening
more
visibility
on.
What's
there,
we
did
a
nice
job
at
leading
by
experience
and
some
of
these
you
know
some
of
the
pages
and
flows
within
it,
but
you
know
ultimately
there's
a
series
of
reusable
components
and
to
be
done
too.
A
So
I
think
is
a
really
good
start,
but
kind
of
you
know
as
a
preview
of
what's
what's
to
come,
there
will
likely
be
a
doc
story
coming
out
of
this,
too,
to
kind
of
show
some
of
the
status
around
that,
including
the
things
that
are
completed,
things
that
are
in
progress
and
things
that
need
to
be
done
for
that
one.
So
that
is
that's
the
intended
outcome.
B
A
C
C
So
a
few
improvements
on
the
home
page,
we
updated
the
bar
up
here
to
reflect
that
there's
no
longer
release
documentation
and
the
actual
documentation,
but
it
does
reflect
the
progress
of
academic
project
that
it's
not
complete.
Yet
we
target
and
we
added
link
to
the
PWA
slack
channel
here
and
also
in
the
footer.
We
also
updated
the
label
or
the
few
I
components.
Some
developers
are
confusing.
What
Peregrine
was
it
wasn't
very
common,
so
I
changed
it
from
learning
to
learning
component
I,
updated
the
labels
on
the
links
to
github
repositories
to
the
Florida.
C
What
you
would
just
have
built
packer
and
venya,
and
people
expected
it
to
go
to
the
documentation
page
instead
of
the
source
of
that
those
are
the
improvements
or
front
page
and
the
second
set
of
improvements
were
in
the
setup.
We
have
developers
how
they
would
go
about
finding
out
how
to
set
up
vineya,
and
so
when
they
went
through
this
page,
there
was
some
feedback
that
we
got
from
them
mostly
on
before
this.
Yes,
the
title
was
set
up
and
it
confused
people.
They
expected
it
to
be
other
set
of
Magento.
C
B
B
How
would
you
do
that
and
just
kind
of
saw
where
they
went
for
information,
and
it's
become
a
little
bit
clearer
that
not
all
of
them
come
to
documentation
to
learn
a
lot
of
them,
tend
to
use
github
and
then
look
to
documentation
as
a
read
as
the
face
of
resolution
on
troubleshooting,
so
I'll
keep
working
with
with
James
here
to
kind
of
regularly
test
what
we're
writing
for
them
to
consume
and
see
how
we
can
make
this
better
and
better
over
time.
Thanks
James,
it
looks
great
yeah.
A
C
A
E
E
There
we
go,
you
guys
see
my
screen
again
hope
so
I
already
demoed
the
testing
last
time
we
did
demo
so
I'm
not
gonna,
go
through
that
today,
but
we
added
more
to
it.
So
there's
more
of
that,
so
the
the
big
thing
that
I
worked
on
was
navigation.
Samia
has
been
designing
it.
So
this
is
the
very
latest
look
at
what
it's
supposed
to
look
like
you
notice.
E
So
if
you
come
over
here
switch
to
a
different
category,
let
me
get
there,
so
this
uncovers
something
interesting
about
the
way
that
we've
designed
the
site
for
for
certain
reasons,
which
is
that
every
time
you
make
one
of
those
one
of
those
route
changes
it
actually
redownload
or
it
actually
rear,
Enders
the
entire
app
from
the
ground
up.
That
is
so
that
you
could
maximize
extensibility,
but
that's
actually
not
ideal,
because
we
really
want
to
preserve
our
navigation
state
across
across
navigations
or
at
least
be
able
to,
and
something
that's
interesting
about.
E
This
behavior
is,
if
I
go
now
to
one
of
the
categories
that
I've
already
visited
like
jackets
here
under
women,
it
does
preserve
my
state,
it
doesn't
rerun
to
the
whole
time,
so
it's
only
right.
Currently,
it's
only
the
first
time
you
go
to
a
new
category
that
it
that
it
rerender
is
the
whole
thing,
and
this
is
due
to
a
kind
of
a
fundamental
choice
we
made
early
on
about
how
components
are
matched
to
routes.
E
E
Currently,
this
is
running
off
of
mock
data,
which
we
can
see
here,
which
is
constructed
to
basically
emulate
what
you
would
get
if
you
fetched
the
route
category
which
for
me
is
default
category
and
with
a
with
an
infinite
depth.
So
every
time
you
get
this
children
beta
array
on
on
a
single
category,
if
this
has
infinite
depth,
then
you'll
get
a
fully
nested
list
of
all
the
categories.
E
We
currently
don't
have
a
categories
endpoint
in
in
graph
QL.
We
only
have
individual
categories
and
they
don't
have
children.
So
we
can't
construct
this.
This
particular
query
from
graph
QL.
Yet
there
is
a
rest
endpoint
for
it,
but
the
rest
in
point
requires
off
and
I
would
love
to
know
why
that
is
maybe
security
reasons,
but
in
any
case
basically
I
can't
make
this
query
right
now.
A
Great
yeah
nice
work,
Jimmy,
yeah,
I
think
this
gets
us
get
some
really
good
progress
on
the
experience
himself
and
you
know,
as
part
of
our
part
of
our
work,
just
exposes
some
of
the
questions
we
have
around
the
other
interfaces
themselves
and
so
I'll
probably
split
this
potential.
We
can
work
with.
Maybe
even
you
know,
Denison's
our
others
to
us
to
get
some
help
on
that
API
and
just
understanding.
Why
there's
probably
someone
who
knows?
It's
probably
good
reason
for
that.
A
D
D
Yeah,
you
can
see
that
there's
a
development
server
running
right,
there's
a
lot
of
text,
but
here
we
go
couple
things
I'd
like
you
to
notice.
First
of
all
that
was
fast
as
hell,
even
in
development
mode.
Another
thing
to
notice
is
that
it
didn't
actually
run
the
graph
QL
call
that
it
normally
runs
in
order
to
get
the
URL
resolver.
D
We
visit
the
accessories
page
for
the
tops
page.
Oh
we
got
a
day
to
fetch
err.
Oh
no,
of
course,
the
demo
business.
But
let's
see
that
was
just
a
moment.
Well
I
see
what
that
seems
to
be
busted.
Variable
ID
got
an
unexpected
value.
I
need
seven,
oh
I
see
okay,
so
we've
got
like
a
string
casting
issue.
That's
actually
something
that's
fairly
new,
but
okay,
I
will
I
suppose
go
back
to
say
the
carmina
earrings.
That
works
a
lot
better
because
there
isn't
any
integer
casting.
D
So
you
notice
that
first
of
all,
it
doesn't
really
do
the
graph
QL,
URL,
resolver
requests
and,
second
of
all
that
loads
super
fast.
Maybe
a
third
thing
to
recognize
is
that
the
critical
CSS
has
already
been
in
line,
which
means
that
the
loading
screen
immediately
shows
up
styled
without
a
font
problem
and
as
soon
as
we
have
a
strategy
for
this,
the
header
will
show
up
as
well.
D
Another
thing
to
see
is
that
the
reason
that
it
hasn't
made
that
graph
QL
requests
is
that
we
were
able
to
embed
some
server-side
logic,
not
a
lot
of
it,
but
there's
this
the
initial
request
that
was
in
series
and
holding
up
the
initial
time.
First
interaction.
We
had
alighted
that
day
by
providing
a
server
side
a
little
bit
of
server-side
rendering.
Now,
let's
talk
about
the
server
side,
rendering
a
little
bit
in
the
past.
D
Magento
themes
have
been
the
sort
of
round
hole
into
which
the
square
peg
of
PW
A's
have
been
fitting
and
that's
something
that
we
intended.
We
wanted
to
make
it
as
close
to
regular
Magento
practice
as
possible.
I
have
an
environment
file
which
might
be
familiar
with,
which
specifies
that
I
have
a
back-end
domain
here.
That
is.
D
Speak
up,
I
didn't
force
this
on
you,
man,
I,
didn't
force
this
on
you,
you
might
observe
that
I
have
an
admin
username
and
password.
Now
in
my
environment
file,
that's
temporary!
But
in
order
to
do
the
REST
API
work
that
was
pulling
together,
the
site
title,
the
the
you
know,
site-wide
variables
and
stuff
that
that
was
the
way
that
I
was
doing
off,
because
our
Watts
scheme
is
mysterious
and
there's
folks
on
the
cloud
onboarding
team,
who
are
the
perfect
few
people
to
consult?
Ok,
Thank,
You,
Rowan,
so
I'm
gonna
copy
this.
D
B
D
D
Maybe
it's
because
you've
got
the
Magento
back
into
main
graph
QL
that
that's
got
a
work
run
and
then
well
curious
press
has
gone
off
the
rails.
Now
we
have
critical
CSS.
That
could
be
it
so
I'm
going
to
switch
it
back
to
mine,
but
the
the
other
way
that
I
can
show
you
that
things
have
changed
a
bit
is
by.
D
D
D
It
way
into
an
upward
plugin,
which
they
simply
have
to
attach,
and
that
upward
plug-in
takes
a
an
address
of
this
upward
file,
and
the
upward
file
is
something
I've
talked
about
in
the
specification,
and
this
is
a
yan
will
file
which,
in
a
completely
declarative
manner,
describes
the
behavior
of
that
server.
Now
that
behavior
so
far
has
not
been
impressive,
because
it
is
super
button,
but
here's
what
it
tries
to
do.
This
is
supposed
to
be
fairly
readable.
D
It's
supposed
to
assemble
a
response
that
status
headers
and
body,
and
that
means
that
it's
going
to
depend
on
these
context
values.
So
it
looks
for
page
page
is
a
conditional
which
matches
on
the
request
to
RL,
looks
for
our
SEO
HTML
names
and
then
goes
to
the
graph
QL
router.
The
graph
QL
router
is
looking
at
the
type
of
the
resolved
URL,
which
means
that
it
looks
up
the
resolved
URL
resolver
result,
which
means
that
it
runs
a
query
to
the
Magento
graph,
QL
backend
domain
and
whoops
and
then
runs
the
query.
D
Shell
is
being
driven
by
Apps
shell
MST
and
we
provide
the
URL
resolver
and
critical
CSS
variables
to
it.
So
if
we
look
at
app
shell
been
MST,
it's
a
simple
plain:
mustache
template
that
accepts
critical
CSS
inside
a
style
tag
and
those
three
mustaches
mean
it
son
escaped
and
it
assembles
JSON
from
the
URL
resolver
value.
That's
put
in
there
and
results.
Is
you
get
this,
and
this
is
dynamically
generated?
The
critical
GSS
is
done
very
simply
by
setting
up
a
naming
convention
where
all
of
the
things
that
should
be
inlined
are
critical.
D
Dot
CSS
instead
of
just
dot
CSS,
and
so
it's
up
to
your
discretion
and
that's
why
I
took
things
like
main
header
and
footer
and
the
card
trailer
and
made
them
critical.
The
critical
CSS
does
get
in
lined
and
stuffed
in
there,
but
it
happens
to
be
in
such
a
way.
That's
the
class
names
are
consistent
throughout
so
the
the
built
the
builds
JavaScript
libraries
that
actually
incorporate
these
weird
class
names
mirror
exactly
the
generated
class
names
that
come
into
the
app
shell
upward.
J/S
is
available
now
for
consumption.
D
It
is
the
reference
implementation
of
the
upward
protocol,
which
is
detailed
in
exhaustive
detail
over
here,
whose
essential
function
again
is
to
provide
a
cross-platform
behavioral
specification.
I
can
see
very
little
obstacle
to
a
PHP
developer.
Writing
something
that
interprets
this
document
and
then
replicates
the
same
behavior
as
the
node.js
server,
maybe
with
fewer
bugs
buts.
The
nodejs
server
is
available
now
and
in
my
integration
branch
I
have
configured
this
nodejs
server
so
that
the
middleware
is
part
of
the
chain
of
the
PWA
dev
server.
So
apart
from
a
couple
of
pass,
throughs
just
to.
D
Just
to
the
media
and
the
graph
QL
and
the
rest
endpoints,
the
proxy
no
longer
goes
back
to
Magento
for
every
request.
Instead,
it
uses
the
upward
middleware
and
receives
the
upward
path
and
thereby
venÃa
describes
its
own
server-side
behavior
at
the
top
level.
That
is
the
future
of
it.
That
is
going
to
progress
into
the
repository
in
a
number
of
stages,
but
this
is
what
I
have
been
up
nights
working
on
and
and
I
think
that
it
serves
as
the
bridge
for
the
gap
that
exists
between
our
production
and
development
environments
right
now.
D
Crucially,
it
is
extensible
and
could
used
in
a
no
js'
configuration
in
maybe
docker
eyes.
De
kubernetes
is
sure
kubernetes
sized
configuration.
So
that's
you
still
have
no
js',
and
then
you
could
potentially
do
server-side
reacts
rendering,
for
instance,
the
specification
is
very
clear.
Actually
that
reacts
is
something
you
could
easily
support
just
by
adding
the
feature
to
your
own
particular
renderer,
it's
not
within
specification,
but
you
can
make
a
superset
of
the
spec
if
you
want
to
so.
The
react.
D
Really
really
good,
it's
kind
of
hard
to
tell
I
think
the
big
difference,
but
again
just
the
the
way
that
the
assets
are
coming
down
is
a
lot
cleaner
and
there's
there's
still
a
lot
of
optimization
work
to
be
done,
but
especially
in
the
area
of
loot,
components
and
stuff.
Now
we
can
do
preloads.
Potentially
we
could
reload
the
JSON.
D
So
yeah
mustache
is
the
is
the
supported
template
engine
and
graph
QL
as
the
supported
service,
resolver
and
ultimately,
I
think
we're
gonna,
add
a
resolution
strategy
that
can
do
rest
calls
and
then
turn
them
on
the
fly
into
a
virtual
graph.
Ql
schema,
and
this
achieves
the
sort
of
the
ultimate
goal
of
the
rationale
document
that
unifies
the
graph.
D
So
we
do
want
graph
QL
to
be
the
only
thing
that
the
progress
where
that
has
to
speak,
and
presently
that's
not
the
case,
but
this
is
the
beginning
of
that,
because,
ultimately,
a
resolver
could
be
designed
or
made
so
that
it's
again
creates
like
a
virtual
schema.
You
have
place
a
call.
The
IMO
file
specifies
that
the
graph
QL
resolver
will
respond
to
this
this
and
that
root
value
because
it
can
parse
graph
QL
on
the
server
side.
It
understands
it.
D
So
it
can
read
the
query
out
and
then
it
can
pass
along
values
that
are
not
supported
in
the
actual
Magento
schema
to
rests
endpoint
and
then
synthesize
the
type
as
it
comes
back.
So
you
know
that's
something
that
the
Apollo
engine
and
server
do
it's
a
proven
technique
in
production,
and
this
just
sort
of
is
a
it's
a
way
of
making
it
to
clear
it
so
that
it
can
be
done
anywhere.
D
Any
other
questions.
I
was.
F
Gonna
say
exciting:
to
see
the
sort
of
the
start
of
the
server-side
rendering
stuff
getting
in
there
and
the
critical
CSS.
Could
you
could
you
just
do
it
like
a
quick
review
of
the
roundtrip
of
let's
say
we
wanted
to
add
in
the
some
of
the
metadata
tags
into
the
page?
What
are
each
of
the
the
stages
that
we'd
be
hitting
there
to
make
that
possible
right
so.
D
First
of
all,
right
now
our
route
components
perform
their
own
queries
and
those
queries
need
to
be
more
reusable.
So
right
now
we
have
a
route
component
called
product
that
performs
a
query
that
is
actually
in
lines
now.
Babbling
webpack
do
compile
this,
so
it's
more
efficient,
but
we
could
pretty
easily
refactor
it
so
that
it's
not
this
way.
We
could
dip
it
out
and
go
down
to
this
trusty
queries.
Folder
I
made.
D
D
We
do
that
and
so
now
that
that
thing
is
a
separate
unavailable
thing.
We
were
just
going
to
our
upward
gamma
file
and
say
that
we
need
to
update
that
strategy.
So
we
have
just
matching
the
path
name
here
and
then
the
next
step
down
is
that
this
router,
currently
just
has
one
match
clause
against
the
Ottawa
solver
type.
So
these
things
are
serial
and
they
fall
and
they
don't
fall
through.
So
we
could
change
this
to
product
and
use
product
found.
What
is
product
found
I'm
about
to
describe
it
down
here?
D
I
guess
product
found
is
an
inline
resolver
that
produces
a
status
of
200
because
we
found
the
products
and
there's
no
I'm
still
not
used
to
Hamel
and
headers
of
the
usual
HTML
document
headers
which
I
stored
and
then
the
body
would
be
a
product
shell
and
the
product.
Shell
is
just
like
the
shell,
but
it.
D
D
D
It
is
the
zeroth
result
set
because,
as
you
may
or
may
not
know,
our
products
query
does
not
return
scalars.
You
just
filter
it
until
it's
just
a
an
array
of
one
product,
so
you
only
get
products.
People
lift
that
thing
out
all
like
you
just
as
easily
do
that
in
the
template,
so
we'll
just
sort
of
demonstrate
that
what
is
product
results
is
another
service
query.
So
just
like
up
here,
we
have
the
URL
resolver
result
is
craning
against
Magento
gql,
which
is
defined
there
and
uses
that
query
in
those
variables.
D
This
one
is
similar,
except
that
it
uses
the
yet
products
detail,
query
and
it's.
Why
are
you
complaining
at
me
the
bad
indentation?
It
seems
like
you
should
shut
up,
okay
and
then
the
variables
instead
of
well.
Let's
look
at
the
product
detail
graph,
dual
query
in
suit
of
demands.
It
demands
a
URL
key,
so
I
think
we're
on
the
right
track
already.
I
think
we're
gonna
be
good.
Now
this
probably
gives
us
enough,
but
a
cool
thing
that
you
could
do
is
add.
Maybe
an
argument
to
this.
D
Sorry,
I
guess
I'll
just
drink
it
because
Rowan's
face
is
in
the
way,
and
then
you
know
if
you,
if
you
don't
want
to
get
this
huge
amount
of
metadata,
you
know
like
preload
links,
I,
don't
know,
actually
what
the
what
the
schema
has
now
that
I
think
about
it.
So
it's
going
to
be
products
and
the
product
interface.
D
D
D
D
Okay,
so
now
we've
got
this
this,
this
query
that
gets
reused
in
two
places.
It's
used
on
the
front
end
and
it's
used
on
the
back
and
the
URL
key
is
still
the
request,
URL
path
name
and
it
produces
a
product
result
that
has
this
shape.
So
we
know
that
if
we're
doing
the
product-
shell,
it's
it
needs
the
product
and
the
product
is
gonna.
Have
you
name
price
description,
media
gallery,
entries
and
meta,
so
the
app
shell
may
be.
What
we
want
to
do
is
turn
the
app
shell
into
I.
D
D
D
D
D
If
I
got
that
right,
do
I
mess
up
the
deck
on
that
it's
meta
keyword
for
some
reason,
all
right
and
description,
meta,
description:
okay,
let's
see
how
much
of
that
air
coding
was
effective
and
I'm
sure
there'll
even
bugs,
but
you
see
that's
kind
of
the
process
that
we
would
go
through.
I
kind
of
think
that
this
is
really
a
lot
more
fun
than
actually
writing.
Mvc
code.
Try
to
make
it
that
way.
All
right.
We
got
invalid
arguments
to
a
service
resolver.
D
Why
is
that
variables
must
be
a
simple
object
if
please
to
context
lookups
easy
enough,
so
that
means
that
at
least
I
made
the
darn
thing
relatively
error,
conscious,
okay,
so,
and
this
this
is
where
the
thing
gets.
A
little
onion
unwieldy.
We
want
to
just
make
things
like
true
constants
in
the
space,
but
like
on
server
is
an
inline
there's
the
string
true,
and
that.
D
I
think
that
was
working
before
so
I'm
gonna
assume
there's
either
a
race
condition
which
is
actually
probably
quite
likely,
or
there
was
a
change
because
I
saved
that
product
shell
was
there
okay
and
it's
still
doing
source
queries.
Okay,
now
the
the
upward
plugin
that
I
wrote
actually
does
sort
of
a
drop
through
in
its
IO,
which
is
customizable
where
it
looks
at
web
packs
output
system
and
then
input
system
etc,
but
it
doesn't
seem
to
be
working
in
this
case.
F
F
Making
sense
to
those,
so
you,
if
you
have
a
graph
QL
query,
you
need
to
pull
it
out.
Yes,
reusable
you
make
it
available,
and
then
you
you're
also
sort
of
updating
the
templates
that
are
being
loaded
there
and
potentially
updating
the
shell,
depending
on
what
you're
trying
to
do,
and
what
you're
trying
to
render
where
yeah.
D
Potentially,
what's
what
I
think
is
key
about?
It
is
that
this
sort
of
encourages
reuse
of
things
like
queries,
which
I
mean
it's
really
nice
and
it's
good
dev
X
that
you
can
drop
them
in
in
line.
But
you
know
that's
duplication,
invariably,
and
so
now
that
this
is
in
a
separate
file,
then
we
can
use
it
on
the
client
side
on
the
server
side.
Just
by
putting
it
in
here,
but
yeah
I
mean
the
this
is
sort
of
it's
a
little
bit
like
declarative
and
functional
in
the
ordering
doesn't
matter,
I
mean
what
happens.
D
Is
that
this?
The
it
does
a
visit
kind
of
through
and
determines
context
pass
just
by
going?
Okay?
Well,
I.
All
it
cares
about.
Is
that
the
thing
as
a
status,
the
headers
and
a
body
eventually,
so
it
just
recursive
through?
So,
even
though
we
declare
a
thing
called,
you
know
product
results,
you
know
it's
not
going
to
traverse
and
actually
run
this
call
unless
the
product
result
is
there,
so
so
yeah.
D
Uh-Huh
file
resolver,
it
is
a
foul
resolver
and
then
it
tried
to
do
a
read
file
and
the
output
file
system
didn't
like
at
that
time.
I
wonder
what
changed
anyway,
maybe
even
get
rid
of
all
the
debug
statements.
Rowen.
Does
that
seem
natural
to
you
or
do
you
have
like
significant
concerns
about
it?
Because
for
a
while
I
was
coming
at
this
from
the
top
down
and
saying
look
I
know
this
thing
is
going
to
eventually
proved
itself
practically
useful,
but
failed
to
compile.
F
D
Yeah
I
mean
the
thing
about
this
is,
is
that
it's
pretty
limited
in
scope
like
and
we
can
expand
it,
but
I
deliberately
didn't
put
things
like
proxying
in
there
or
you
know,
etag
resolution.
Sorry,
yes,
I
resolution,
even
though
eeeh
sides
are
kind
of
a
nice
fit
for
this
like
they
require
that
there
be
open,
endpoints,
that's
weird,
but
yeah
we
can
put
varnish
in
front
of
it's.
The
implementation
that
I
wrote
is
not
focused
on
speed.
D
It
lazy
loads,
at
least,
but
it
does
cache
results
based
on
like
a
first
of
all,
an
assumption
of
the
file
systems
in
needham,
and
then
it's
using
Apollo
under
the
hood.
So
it's
going
to
do
cache
keys
for
the
graph.
Do
all
queries
and
stuff
so
just
like
the
basic
same
stuff
is
gonna
happen
and
then
yeah
and
then
varnish
and
CDN
sort
of
push
everything
to
the
top.
So
this
thing
is
not
so
much
performance
concerned.
Although
it's
limited
restricted
functionality
means
that
it
can't
get
too
slow
yeah.
F
D
But
in
the
meantime
you
know,
mustache
is
a
great
way
to
just
kind
of
hand,
hack
it
and
again.
If
you
know
a
lot
of
our
folks,
are
not
going
to
be
doing
this
sort
of
single
server
deployments
of
days
past,
so
they
might
just
end
up
standing
up
a
node.js
server
and
doing
that
the
full
server-side
under
they
want
to.
D
But
you
know,
I
mean
I,
anticipate
that
the
next
big
thing
we'll
do
is
have
a
gentle
module
written
by
some
enterprising
PHP
person
which
accepts
these
configurations,
and
then
you
can
run
your
store
in
poa
mode
and
Stanley.
This
also
lets
you
multicast,
or
at
least
it
should,
but
I
couldn't
connect
a
row
in
store
for
some
reason
and
you
should
be
able
to.
D
A
Up
on
time,
so
yeah
no,
this
is
great.
I
think
that
in
Rome
you
know
continue
to
appreciate
your
feedback
as
we
pull
this
together.
This
is
yeah.
This
is
worried
when
I
go.
Extensibility
is
really
a
big
theme.
Beyond
the
you
know,
the
configuration,
so
thank
you,
that's
good
stuff,
so,
and
so
in
terms
of
summary,
I
think
you
know,
we've
covered
everything
we
intended
to
do.
We
you
access
that
box.