►
From YouTube: PWA Studio Community Meeting 07 February, 2020
Description
Review of upcoming extensibility framework with James Zetlen and the PWA Core team.
B
A
Alright,
we
things
we're
close
to
the
finish
line.
Last
week,
though,
we
don't
really
have
a
lot
of
demos
today,
but
we
do
have
a
very
exciting,
in-depth
discussion
demo
from
the
Sears
that
linear
sensibility
plugins
in
the
PWA
studio,
specifically
right
now,
there's
a
tiara
for
page
builder,
so
I
dropped
that
in
the
chat.
If
you
want
to
take
a
look
at
that
PR
to
kind
of
inform
this
discussion,
but
I
will
hand
it
over
user.
You
know
thank.
C
C
Wonderful,
pull
request
from
the
page
builder
team,
one
of
the
early
contributions
internally
from
a
totally
separate
team,
and
then
Ian
now
supports
page
builder
content,
in
that
it
downloads
the
same
file
formats
that
the
page
builder,
storefront,
stuff
and
looma
uses,
and
it
parses
it
and
then
renders
each
of
the
individual
page
builder
content
types
as
react
components.
This
is
huge
because
it's
a
dynamic
way,
rendering
actual
dynamic
and
behavior
content.
Your
tabs,
your
parallax,
your
hero,
images,
sort
of
problem
with
it,
which
is
that
it's
built
into
Vidya
and
you
can't
change
it.
C
So
that
is
to
say,
if
you
are
running
on
a
open
source
Magento,
then
there's
a
huge
pile
of
code
in
there
and
that
pile
of
code
does
get
imported
into
your
bundle
and
that
pile
of
code
is
never
used
and
I'll
show
you
why
it's
never
used
because
here's
how
what
the
rich
content
component
looks
like
in
development
today.
This
is
the
rich
content
component
that
is
used
in
CMS
pages
and
in
CMS
blocks
to
render
HTML
that
might
come
down.
You
can
see.
C
First
of
all,
that
page
builder
is
a
direct
dependency
and
it's
pulled
right
in
as
a
sibling
as
a
matter
fact
in
the
rich
content
component
here,
which
is
in
the
venue,
my
library,
you
can
see.
There's
this
sibling
called
page
builder,
the
fair
amount
of
stuff
in
there
now
to
the
team's
credit.
Most
of
those
are
in
fact
imported
dynamically
whoops
I'm,
not
I'm,
not
going
to
dive
in
there
and
find
where.
But
the
point
is
they're
important
dynamically.
So
it's
not
a
check
game
to
commit
a
dependency,
but
it's
still
some.
C
So
those
of
you
who
have
worked
with
Magento
extensions
and
expect
that
kind
of
functionality,
maybe
have
noticed
that
you
need
to
manually,
put
things
together
than
each
of
your
dependencies
and
that
involves
taking
over
a
lot
of
code.
If
you
want
to
change,
say
the
checkout
page
or
you
want
to
change
some
style
variables.
All
that
you
can
really
do
is
copy
and
paste
codes
within
a
UI
into
your
project,
not
great.
So
we
have
two
things.
C
We
know
that
page
builder
is
really
a
modular
piece
that
should
be
inserted
into
and
given
an
application
if
it's
necessary-
and
we
know
that
we
need
an
extension
mechanism
in
general.
So
in
this
pull
request,
we
decided
to
implement
the
extension
mechanism
while
building
a
useful
feature
on
top
of
it.
So
that
means
that
we
have
an
extension
pipeline.
It's
not
fully
built
because
it
only
has
enough
features
to
support
page
builder,
but
does
work
today.
So
here
take
a
look
at
how
the
rich
content
component
works.
C
Today
it
imports
this
page
builder
component,
and
then
it
uses
this
detect
page
builder
function
and
runs
it
on
the
HTML,
whatever
seized,
which
is
just
a
string
check
to
see
if
page
builder
markup
is
in
there
and
if
it
is
it'll
render
page
builder
with
that
markup.
If
not
it's
just
going
to
do
it
dangerously
set
in
rage
channel
nice
and
the
way
that
that
is
because
I'm
sorry,
the
the
way
that
we've
changed
it
in
the
poll
requests
is
something
I
can
demonstrate
for
you,
and
that
is
page
builder
has
become
its
own.
C
You
guys
see
this
ok,
I
can
page
builders
become
its
own
package,
this
packages,
folder,
is
getting
pretty
crowded
and
you
can
expect
it
to
get
more.
This
is
how
a
project
is
gonna
scale.
It's
going
to
be
great
many
a
UI.
It
doesn't
have
any
page
builder
stuff
in
it
anymore.
You
can
dive
into
this
librarian
opponents
and
into
rich
content
and
you'll
see
ain't
no
page
builder,
no
more
some
different
stuff,
though
plain
HTML
renderer,
so
rich
content,
j/s
doesn't
import
page
builder
anymore.
C
C
So
this
continues
to
support
the
dynamic
rendering
and
therefore
the
dynamic
importing
paradigm
that
we
want,
because
the
the
new
API
for
these
rich
content
renderers
implies
that
you
can
import
this
guy
separately
from
this
guy
page
builder
itself
is
static
dependency
that
can
change
in
the
future.
This
is
just
the
first
Vienna,
so
this
is
still
a
little
bit
of
looping,
but
notably
you
don't
see
that
there's
any
call
and
extension
type
of
coding
here.
C
It's
still
really
simple
so
right
now,
because
there
is
no
page
builder
mentioned
anywhere,
there's
just
this
plain
HTML
renderer,
which
always
says
that
it
can
render
and
exports
itself
as
component
you'll
notice
that
if
I
have
my
ewh
studio
instance
connected
to
Dave
Macaulay's
CI
cloud
instance,
which
has
a
bunch
of
page
builder
data
on
it
that
it
will
in
fact
the
data
it
just
won't.
Look
very
good.
Thank
you.
Other
storage
format
is
designed
so
that
it's
still
HTML.
C
So,
even
though
we
don't
know
what
to
do
with
this
content-
and
it
doesn't
look
very
good
at
all-
it's
still
sort
of
usable
it's
just
like
this-
is
not
what
page
filter
is
for,
and
this
definitely
doesn't
look
anything
like.
It
looks
in
the
UI
back-end,
where
you
are
sort
manipulating,
the
page
builder
WYSIWYG.
We
need
it
to
be
higher
fidelity
and
we
need
the
fancy
looking
behaviors
to
happen,
but
we
don't
have
page
builder.
So
do
we
need
to
edit
our
venía
directory?
C
Do
we
need
to
edit
our
venía
concepts
project?
No,
no,
sir!
We
don't
need
to
do
any
of
that,
except
for
one
little
tiny
file
and
you
you
don't
even
have
to
edit
this
file
directly.
Normally,
you
could
do
oh
say
and
PM
r2z
guard
yarn
and
attenti
page
builder.
Now
I'm
not
going
to
run
that
command
because
that's
not
published
yet
so.
It'll
look
weird
to
you.
But
let's
say
that
that
went
ahead.
It
happened
and
we
just
added
a
line
Magento
page
builder,
just
to
our
package.json.
C
C
Icing
I
didn't
go
that
far
to
like
publish
an
alpha
or
whatever,
so
you
know
so
notice
notice
again
that
the
only
thing
that's
different
is
page
builder,
also
notice.
That's
the
UI
is
a
lot
fancier
looking
there's
not
just
the
CSS
styling
that
comes
with
page
builder,
but
there's
also
a
fancy
JavaScript
behaviors,
because
these
things
are
individual
components,
they
can
do
their
own
individual
behavior
like
say,
page
builders,
on
to
the
parallax
event.
C
How
is
this
happening?
Well,
you
might
notice
that
this
file
has
been
updated
and
you
might
be
saying.
James
and
I
might
be
saying
yes
and
you
might
be
saying
and
I
thought
you
weren't
gonna,
edit
any
code
and
I
would
say
to
you.
Did
you
notice
me?
No,
because
there's
a
comment
up
here
which
explains
how
it
happened.
This
code
was
actually
edited
by
the
build
process
prior
to
being
parson
inserted
into
the
bundle.
The
way
that
that
worked.
Is
you
look
here
on
the
desk
that
hasn't
changed?
C
The
way
of
that
worked
is
we
have
a
new
concept
that
exists
and
is
implemented
down
in
our
build
mechanism
in
Bill
pack
called
built
bus
and
so
individual
packages
which
are
dependencies
direct
dependencies
of
your
project.
In
this
case,
venía
concept
can
automatically
interact
with
each
other
when
you
do
the
built.
C
What
happened
here
was
that
our
package
page
builder,
once
it
belongs
as
a
local
dependency,
was
automatically
included
in
the
build
process,
because
in
its
package
JSON,
it
declares
this
new
custom
property.
It
says
PW
a
studio
which
is
new
custom
property
that
we
may
put
other
stuff
in
targets
specifically,
which
is
the
concept
that
we're
introducing
and
for
intercept
of
targets.
C
It
links
to
a
file,
a
regular
old
JavaScript
module,
and
so
because
it
declared
this
the
build
process
will
actually
import
and
run
this
module
feeding
it
an
API
that
you
can
use
to
retrieve
and
interact
with
parts
of
the
build
process.
In
this
case,
you
can
see
that
it
is
running,
get
target
which
returns
something
that
you
can
run
tap
on.
In
this
case,
it's
getting
a
target,
that's
built
into
our
process,
that's
from
view.
C
A
go
back
and
target
seems
to
be
called
special
features
when
it
taps
in
its
first
argument,
is
always
an
identifier
for
itself.
I'm
page
builder
and
I'm
tapping
and
I
receive
something
called
features
by
module
and
in
this
case
it's
appending
that
do
the
features
by
module
object.
You
might
recognize
this
because
this
looks
a
lot
like
venía
concepts,
special.
C
C
And
then
so
it's
getting
that
target
and
tapping
that
one.
Then,
subsequently,
it
gets
a
target
from
the
menu
I
package
that
is
called
rich
content.
Renderers
tops
that
receive
some
API
called
rich
content
renders
and
then
runs
ad
on
it,
passing
it
a
component
name
and
a
package
name
which
again
is
itself.
C
How
does
this
actually
affect
the
build
process
at
all?
Well,
we've
dog.
Through
this,
the
bill
bus
is
inserted
into
the
webpack
config,
that's
automatically
generated
when
you
call
configure
web
pack.
So
again,
video
concept
didn't
need
to
add
anything.
It's
still
just
running
the
configure
web
pack
method,
but
that
appends
a
little
plug
into
the
web
pack
process
which
looks
through
and
finds
these
declarations
and
there's.
Another
declaration
been
a
UI
is
also
participating
in
this
process
and
it
declares
in
its
package
JSON
that
it
also
participates
in
pwace.
To
do
this.
C
One
has
declare
as
well
as
intercept
in
its
targets.
This
process
is
starting
to
have
a
lot
of
weird
words
in
it.
So,
let's
zoom
out
and
talk
about
what
the
clear
and
intercept
mean
in
this
case,
you
might
have
seen
a
diagram
like
this
before
this
isn't
actually
the
good
example
of
it.
Let's
find
this
one,
so
this
is
not
precisely
a
representation
of
what
we've
implemented.
C
C
Essentially,
this
is
where
it's
stating
its
API,
rather
than
making
this
a
declared
format
itself,
like
just
some
package,
JSON
stuff
we've
chosen
at
this
stage
to
make
it
regular
code,
like
the
code
is
config
mechanism
you
getting
like
just
configure,
read
pack
confited,
so
each
of
these
packages
and
say
I
have
a
declare
file
and
that
one
is
guaranteed
to
run
before
the
intercept
files.
They'll
also
run
in
dependency
resolution
order.
So,
looking
at
this
page
builder
package,
you
might
notice
the
page
builder
itself,
as
well
as
declaring
its
intercept
says.
C
The
dig
has
a
peer
dependency,
so
it
expects
the
project
that
it
belongs
to
to
also
use
any
a
UI
and
because
it
has
declared
that
dependency.
The
build
bus
knows
that
it
needs
to
run
video
UI
stuff
before
page
bill
stuff,
and
that
means
that
when
page
builder
intercepts
that
it
knows
that
these
targets
exist
by
the
time.
This
intercept
is
right,
so
the
declare
phase
runs
and.
C
Then
a
UI
declares
I'm
extensible
in
the
area
of
rich
content
renderers
and
it
creates
a
thing
called
a
sink
hook.
You're,
not
this
isn't
another
react
hook.
This
is
something
we
are
calling
a
target
instead,
even
though
in
the
underlying
library
we're
using
tab
pool,
it's
also
called
a
hook.
This
is
something
a
little
bit
more
akin
to
a
strong,
fast
bent
emitter,
but
we'll
go
into
that
a
bit
later.
Essentially,
it's
just
says:
there's
a
thing
called
rich
content
renders
and
you
can
subscribe
to
it
now.
C
What
is
rich
content
renders
do
anything
that
has
a
declare.
File
really
ought
to
have
an
intercept
file,
because
that's
where
you
would
actually
make
your
hook
do
something
significant
in
some
way.
So
in
this
intercept
file,
many
a
UI
putting
together
a
few
functions
and
then
it
in
its
intercept
phase
gets
one
of
our
built-in
targets.
You
saw
special
features
earlier.
This
is
another
target
that
built
a
case
of
itself
exposes
called
web
pack
compiler
and
web
pack
compiler
will
execute
when
a
compiler
exists.
C
So
this
is
a
place
where
you
can
add
your
own
web
pack
plugins
or
manipulate
the
compiler
as
you
see
fit,
you
might
be
familiar
if
you've
looked
at
web
pack.
Plugins
like
with
this
basic
pattern,
and
you
might
also
notice
that
the
web
pack
things
also
have
tap
on
them.
Yes,
that's
right.
We
chose
this
API
because
it
already
exists
in
our
underlying
libraries
that
we
use
the
the
web
pack.
Compilation.
Targets
are
the
main
way
that
web
pack
plugins
like
interact
with.
C
So
we
expect
the
same
echo
system
to
impossible
for
us,
because
then,
and
when
you're
writing
these
things,
you
can
tell
that
the
same
API
will
hold.
Now
you
receive
this
compilation,
and
here
I'm
changing
the
subject
back
to
what
venía
UI
does
to
make
rich
content
work
here
it
hooks
into
a
web
pack
concept.
This
is
something
you
can.
Google
is
a
again
a
common
pattern
and
this
will
run
every
time.
Web
pack
process
is
a
new
module.
Well,
we've
done
during
our
intercept.
C
C
It-
creates
a
little
API
object
with
a
single
add
method.
It
expects
you
to
add
a
component
name
and
a
package
name
optionally,
an
import
pattern,
and
then
it
calls
its
own
hook.
Rich
content
renders
its
own
targets
evening
when
it
runs
that
call
method.
It
is
invoking
anything
that
intercepted
it.
So
page,
builders
interceptor
that
runs
at
that
time.
It
receives
that
API
runs
ad
on
it
and
says
ads.
Rich
content
renders
page
builder
component
at
me,
that's
a
page
builder.
C
So
after
this
runs
and
that
other
packages
file
is
automatically
executed.
This
renderers,
as
you
can
see,
has
been
augmented
and
it
now
has
an
object
with
page
builder
in
it,
and
so
then
we
pass
that
page
builder.
We
passed
that
renderers
collection
to
a
loader,
which
is
another
implementation
detail.
This
is
what
intercepts
and
change
literally
changes
and
spices
together
the
source
code
of
that
file.
C
Now
this
might
look
a
little
brittle
to
you,
but
the
main
thing
to
understand
is
that
when
page
builder
does
its
own
intercepting,
you
might
notice
that
it
does
not
refer
to
any
file
inside.
They
may
be
why
the
idea
behind
our
extension
mechanism,
individual
packages,
like
Vinnie,
a
you
I,
don't
let
you
modify
their
files
willy-nilly
now,
if
you
super
need
to
do
that,
there
are
secret
ways,
but
we
don't
support
that.
C
C
This
file,
then
our
tests
for
our
targets
will
fail,
and
we
need
to
remember
that
we
have
to
maintain
the
public
API
of
our
target
by
going
in
here
and
changing
how
we
intercept
our
build
process
to
learn
to
add
that.
So
that's
how
you
got
the
addition
of
page
builder,
which
iterates
through
and
says
that
it
can
process
this
HTML
and
render
there's
a
lot
more
stuff
and
I'm
sure.
C
G
F
C
F
F
F
C
In
the
future,
we
would
like
the
page
builder
module
to
be
independence
of
any
lives,
maybe
use
some
common
components,
but
really
hook
into
like
I
recommend
or
something,
so
it's
not
bound
to
our
own
concept
store,
but
for
now
it's
pretty
heavily
in
2015
a
UI,
so
it
does
import
things
directly
from
it
and
not
just
in
tests.
It
imports
things
for
its
banner
like
the
classified
and
the
button
component,
and
so
you
can
see
that
they've
just
changed.
C
Those
calls
to
call
us
directly
to
the
package,
since
aged
order
is
no
longer
relative
to
life.
So
thank
you,
rebels,
bird
for
mentioning
that
and
the
reason
that
it's
okay
to
call
Magento
Benigni
live
from
here
is
again
that
page
builder
in
its
package,
JSON
does
list
that
it
has
a
pure
dependency
on
bidding
anyway.
So
that
package
is
guaranteed.
D
C
This
peer
would
have
been
larger
if
I
try
to
refactor
that,
because,
like
something
like
classify,
you
know
you
could
argue
that
really
ought
to
belong
to
a
separate
library.
Shall
we
expand
the
peregrines
go
to
include
like
non
hook
and
utilities
you
learning
tons?
Do
we
want
to
continue
that
or
do
we
want
to
create
another
library
if
we
did,
and
we
would
have
to
make
an
in
library
for
image
in
a
new
library
for
gallery
and
I
was
like
let's
keep
the
PR
reasonable
yeah
going
forward?
D
Does
this
lend
itself
to
patterns?
Besides,
like
kind
of
close
to
a
composite
like
you
defined
an
API,
you
can
add
anything
or
an
API
interface,
then
you
can
just
add
it
and
it
seems
like
once
it
hits
page
builder.
It
doesn't
continue
rendering,
but,
like
that
pattern
could
also
exist
or,
like
you
loop
through
everything
in
the
memory
yeah
you
can,
you
can
do
composition.
It's
just
kind
of
that
is
just
JavaScript.
Could
you
do
like
full
file?
Replacements
I
mean
that
is
I.
Don't
know.
D
That's
kind
of
the
the
issue
with
scaffolding
now
is
like
when
you
do
want
to
change,
behavior
or
change
a
rendering
of
the
component.
You
have
to
like
recreate
the
entire
tree
to
ease
that
like
say,
somebody
does
just
want
to
like
replace
a
file
and
could
that
still
work
as
well
like.
C
Replace
arbitrary
files
I
mean
maybe
in
some
packages,
if
you
make
like
a
little
module,
it's
like
here's,
my
like
a
two-ounce
whatever,
and
you
can
choose
as
the
author
of
that
module
to
expose
a
generalized
place
any
file
in
the
concept.
We're
not
going
to
do
that
in
Vinnie
8ui,
because
you've
read
into
the
luma
problem
where,
since
every
file
is
like,
basically
public
API,
since
you
do
fallback
anything
based
on
Luna,
we'll
expect
all
those
files
to
be
in
their
exact
location,
yeah.
So
the
maintainer
of
luma
has
this
fragile,
based
class
problem.
C
They
can't
change
anything.
We
don't
want
that
to
be
the
regular
thing,
but
totally
doable,
because
one
of
the
most
common
patterns
in
web
pack
is
basically,
you
can
use
aliasing
and,
as
you
saw
from
one
of
those
hooks
like,
we
can
expose
a
target
bird
other
packages
to
mess
with
the
web
pack
config.
But
another
thing
you
can
do
is
use
like
one
of
the
most
webpack
patterns
is
the
normal
module
replacement
plugin,
which
just
allows
you
to
add
a
little
plug
into
the
pipeline.
C
D
C
So
somebody
could
make
you
know.
I
did
the
best
optimizer
system
of
all
time,
Magento
extension
that
both
like
optimizes
and
compresses
and
jesus-like
out
refer
Magento
and
then
also
like
changes
the
PWA,
so
that
the
final
bundle
with
this
compiler
gets
autumn.
Nted
with
you
know,
new
amazing
compression
plugin.
C
D
H
D
C
A
C
Exactly
right
and
if
anyone
were
to
let's
be
optimistic,
when
people
build
third-party
modules
to
continue
this
process,
you
would
be
expected
to
publish
those
and
because
our
API
involved
like
declare,
instead
of
just
putting
stuff
like
the
way
that
web
pack
works,
is
you
just
grab
the
compiler
folks
compilation
tab?
We
do
this
little
thing,
which
is
a
little
different
so
that
you
can
have
like
a
debug
mechanism
that
sort
of
traverses
that,
like
you,
can
see.
C
C
Lastly,
I
guess
I
should
say:
none
of
this
is
happening
in
the
browser
and
a
cool
thing
with
javascript
is
that
some
of
this
stuff
could
write
like.
Even
though
this
is
node
code,
it's
still
JavaScript,
but
we're
not
doing
that
not
for
now,
because,
unlike
some
other
extension
mechanisms
that
are
out
there
on
the
marketplace,
you
don't
want
to
stuff
all
of
the
like
extension
resolution
and
management
code
into
your
device
into
your
phone,
so
that
we
do
this
all
at
Build
time.
D
C
We
may
end
up
with
a
cool
pattern
where
you
can
like
import
something
from
Vimeo
that
you
know
is
going
to
get
like
magic,
but
it's
definitely
like
always
preferable
to
magic
it
at
Build
time,
instead
of
like
create
some
event.
Emitter
or
like
you
know,
you
know
we're
at
one
word.
One
thing
we're
trying
to
avoid
is
like
a
DI
mechanism
into
react,
components
that
would
make
react.
Our
developers
like
freak
out.
You
know
it's
gotta
be
really
simple.
C
D
C
We
don't
need
to
at
least
early
on
we
dollars.
We
can
end
up
with
like
an
e
QP
style
system
where
we
go.
That
thing
is
too
intrusive
to
their
possible
stations.
Sorry,
you
can't
go
into
the
compilers
in
place
the
file
system,
but
we
we
do
want
to
urge
people
to
do
this
explicit
registration
thing
so
that,
instead
of
like
Magento,
is
powerful
in
that
all
things
can
kind
of
be
extended.
C
The
same
way
right,
but
you
can
write
a
DI
file
that
just
changes
the
way
that
the
object
management
works,
and
so
that's
because
the
assumption
is
that
all
of
these
extensions
are
going
to
use
the
same
GI
mechanism,
that's
just
part
of
being
a
good
extension,
and
this
has
some
of
that
enforcement
or
like
with
themes.
You
know
you
can
expect
anything
to
do
file
fallback.
You
can
expect
that
there's
going
to
handle
as
the
things
can
target
and
change.
E
The
quick
question
I'm
sorry,
so
we
have,
we
have
a
few
new
page
builder
adjustments
or
add-ons
additions
for
for
the
regular
agenda
page
builder.
What
is
the
way
to
to
support
it
on
the
pwe
side
as
well?
So
what
we
should
do
on
the
backend
side
and
what
we
should
do
on
the
PWA
side
create
a
new
component
well.
C
Randy
I'm
not
level
purchase
five,
but
Randy
is
we're
in
the
Marvel
marketplace
if
you
like,
but
this
PR
for
AWA
studio
itself
connects
between
installing
an
NPM
dependency
and
having
that
new
and
PM
package
integrated
to
the
PWA.
But
it
doesn't
answer
the
question
of
how
the
NPM
dependency
is
coordinated,
with
necessary
new
Magento
module
so
that
they
could
kind
of
install
together
and
that's
what
the
marketplace
team
is
working
on.
C
So
when
you
write
your
own
extension,
that's
supposed
to
support
PWA
I.
Think.
Currently,
our
assumption
would
be
that
you
do
the
PWA
UI
in
a
separate
package,
which
you
can
either
publish
yourself
where
you
can
use
one
of
NPM
as
mechanisms
for
importing
code
from
like
on
the
whole
file
system
or
whatever
at
that
still
in
process.
We
just
know
that
we're
gonna
make
it
easy
to
do
so.
I.
D
E
D
You
would
intercept
those
extension
points
from
the
page
builder
module
and
then
you
would
just
install
your
module
as
a
dependency
yeah
as
well,
so
they
would
kind
of
layer
on
top
of
each
other,
and
then
you
would
just
have
to
write
react
components
to
render
your
content
types.
That
would
be
it.
You.
C
Are
exactly
right,
I
kind
of
responded
to
your
question
that
mentioned
the
magenta
part
of
the
extension
just
because
I
thought,
maybe
one
of
your
concerns
would
be
how
to
put
all
of
that
code
in
one
accessible
place,
but
Tommy
you're,
absolutely
right.
That
probably
was
the
main
question
that
you
had
and
that's
exactly
correct.
Page
builder
itself
could
to
clear
extension
points
and
I'm
just
showing
how
that
might
work.
Api
declare
target.
C
C
C
C
We've
just
declared
that
there's
a
sink
hook
and
then
in
our
intercept
like
take
a
look
at
the
way
that
page
builders,
implementation
actually
does
what's
wrong
place.
Take
a
look
at
the
way,
the
page
holders
implantation
actually
does
this
like
it's
got
a
config
and
it
imports
all
these
content
types
like
directly,
and
then
it
has
content
config
and
then,
for
some
of
them
is
doing
a
lazy
import.
So
this
config
j/s
is
actually
exporting
that
a
function
get
content
type
config
that
returns
this
stuff.
C
So
let's
say
that
we
added
something
they
could
just
append
stuff
to
this
buttons,
config,
aggregator
or
gotta.
You
gotta
I'm,
just
gonna.
Try
to
do
it
super
dumb
super
fast
in
our
intercept.
It's
intercepting
this.
You
also
would
want
to
do
a
similar
pattern
to
what
venía
UI
has
in
its
Interceptor,
so
I'm
going
to
copy
this,
but
there
in
mind.
This
is
something
that
that
foo
man
asked
about
this
pattern
is
like
pretty
verbose,
but
we
will
want
to
abstract
this
into
a
nice
convenience
function,
but
for
now.
A
C
C
C
C
We
definitely
will
have
to
have
that
I
have
been
a
guilty
party
in
some
of
our
analysis,
paralysis,
so
I
think
we
need.
We
know
we
need
to
have
something
like
this
and
we
also
like
that's
part
of
the
reason
that
I
chose
like
a
no-good
extension
paradigm.
Today,
like
webpack,
has
had
some
like
migration
issues
when
it's
moved
to
my
pack,
three
to
one
pack
for
like
the
API
for
extensibility,
totally
changed
and
many
plugins
got
away
with
it.
They
were
able
to
migrate
successfully
and
support
two
versions.
H
H
Yeah,
and
maybe
we
go
out
in
stages
at
the
beginning.
We
we
do
the
basic
tests
of
building
okay,
great.
The
next
iteration
is:
how
do
we
test
further
and
we
don't
want
to
stop
stop
introducing
you
know
this
product
or
this
type
of
disappearing
into
the
world,
because
we
don't
have
all
the
tests
written,
but.
H
C
Merchants,
isms
sure
again
because
of
that
declarative
API
we
can
instrument
our
plug-in
process
and
you
know,
like
you,
saw
the
debug
output.
You
could
just
as
easily
push
license
structured
data
standard
error
so
that
you
can
do
some
more
complex
diagnosis.
That's
gone
yet
exciting
sure
is.
Thank
you.
Everyone.
If
you
have
more
questions,
I
am
increasingly
available
in
the
black
for
community
going
forward,
because
the
thing
is
only
valuable
if
people
are
excited
about
it
and
it
makes
sense
to
you.
C
C
But
yeah
being
totally
right,
I
mean
we
can
maybe
help
with
the
first
view
after
that,
after
it's
established,
definitely
we
will
also
will
working
on
better
like
exposure
at
about
our
current
backlog
community,
some
of
its
internal.
So
like
we
have
some
backlogs
additional
stories
for
this.
You
know
we're
going
to
be
putting
in
some
American
talent,
interceptors
and
stuff.