►
Description
In this session we dive into polishing up a contribution to untamper-my-lockfile for Yarn2 support.
00:00 - Discussion about top-level folders
02:55 - Question about where to put "~/flash.js" or "~/alert.js"
07:04 - Question about "template" around "slot" in Vue
13:30 - Pairing on the untamper-my-lockfile MR
16:59 - Paul finally starts sharing his screen
19:42 - Let's TDD!
A
B
C
Yeah
starting
this
a
little
late,
we
were
talking
about.
How
do
you
know
when
to
put
something
in
a
top
level?
Folder
or
not,
and
ideally
the
folder
structure
will
represent
the
domain
structure
of
your
application
and
you
you
have
clearly
defined
domain
boundaries
and
relationships
between
them.
We
don't
have
that
Advocate
lab
on
the
back
end
or
the
front
end
really,
unfortunately,
but
ideally
where
you
can,
you
should
try
to
have
the
the
folder
structure
represent
what
your
domain
boundaries
are.
B
Yeah,
it
would
be
cool,
I,
almost
feel
like.
We
would
need
to
have
a.
C
A
lot
of
conversations
going
on
in
the
back
end
about
how?
How
can
we
do
this
because
our
services
layer
is,
you
know,
kind
of
a
little
bit
of
a
mess
as
is
live
and
models,
but
there's
architectures
for
this
like
hexagonal
architecture
and
stuff?
It's,
like
you
know,
here's
your
domain
core
and
then
around
that
you
have
sort
of
the
utility
port
adapter
stuff
in
and
out
inside
of
that
UI
and
there's
ways
to
approach
this.
C
C
B
B
C
It's
not
I,
don't
know
how
applicable
it
is
to
view
because
it's
all
component
based,
but
on
the
back
end,
my
goal
is
under
the
Live
directory.
I
have
just
pure
cohesive
domain
logic
and
try
to
avoid
putting
any
domain
logic
in
the
services
layer
in
the
view
in
the
controllers,
and
you
can
sort
of
do
that
same
thing
on
the
front
end
as
well.
Although
you
have
less
domain
logic
to
deal
with
it's
more
like
how
do
you
make
a
UI
work,
which
is
very
yeah.
B
Yeah,
that
would
be
really
interesting,
yeah
yeah.
What
were
you,
what
were
you
gonna
share
with
water.
A
Yeah,
it's
a
follow-up
question.
We
were
talking
about
the
sir
view
folder
and
on
a
different
Mr.
We
have
discussed
about
renaming
these
flash.js
as
alert
JS.
So
for
the
last
few
months
I
have
been
working
on.
A
A
A
B
I
would
now
put
in
view
share
the
view
share.
This
is
a
grab
bag
which
we
wrote.
That's
a
last
resort,
oh
and
yeah
I
would
I
would
not
put
in
a
view
share,
I.
Think
it's
fine
like
this
I
would
put
it
I
I
would
put
it
in
like
in
the
lib.
We
have
a
lib
folder
if
we
wanted
to
put
it
not
in
the
top
level.
B
A
view
shared
is
like
for
was
intended
to
be
view,
components
that
we're
going
to
reuse
all
over
the
place.
That,
for
some
reason,
are
not
in
gitlab
UI
and
there's
a
lot
of
conversations
of
why
these
components
are
in
gitlab,
UI,
there's
a
lot
of
abusing
of
view
shared.
We
have
very,
very
domain
specific
components
that
live
in
there
and
they
really
shouldn't
so
view.
B
Shared
is
not
really
a
safe
place
to
put
things
yeah,
I
I
would
suggest
shying
away
from
that,
and
if
we
really
don't
want
in
the
top
level
looking
at
something
under
lib,
because
this
isn't
a
component.
B
Yeah,
but
that's
I,
also
like
it
just
being
in
the
top
I
like
that
too
I
I,
like
flatter
things,
so
I
don't
like
to
Nest
things
too
much,
because
I
feel,
like
that's
so
hard
to
do
like
so
hard
to
keep
a
a
meaning.
As
you
start
nesting
things.
B
B
Yeah
I,
like
it
I
like
it
here
this
this
makes
sense
to
me,
I
yeah,
I
would
just
say
view
shared
is
like
that
would
be
the
one
place,
I
would
say:
don't
put
it
other
places,
yeah
I'm,
fine,
whatever
other
people
think,
is
the
best
place
to
put
it
if
I,
if,
if
I
really
don't
know
and
there's
a
whole
conversation
about
it,
I'll
open
up
a
thread
to
just
have
people
vote,
vote
with
Emojis
and
mention
it
on
front
end
of
like
so.
A
Okay,
good
one
more
question
about
this
and
that's
that
unrelated
yeah
yeah.
B
A
A
I
thought:
well,
why
not
to
name
here
the
slot
and
put
help
it
doesn't
work?
So
could
you
explain
how
this
works?
Yeah.
B
This
is
a
good
question,
so
the
the
template
#help.
B
C
B
B
Or
not,
sorry,
I'm,
not
I'm,
not
I'm,
not
entirely
sure
we
do
to
do
a
ref.
We
use
the
attribute
ref.
So
ref
is
a
special
word
and
but
I
don't
know.
If
I
don't
know,
if
Vue
has
a
special
shortcut
for
it,
it's
only
I
say
recently,
but
it's
probably
been
two
years.
It's
only
recently.
We
started
doing
the
hashtag
thing
because
we
used
to
have
to
say
V
buying
slot
or
whatever,
whatever
it
was
I.
B
Don't
remember,
and
that
was
more
specific,
but
that
hashtag
is
a
special
view
shortcut
for
whatever
the
slot
binding
was
yeah.
Okay,.
B
But
looking
at
it
now,
I
think
if
I
was
going
to
leave
a
comment
here
and
this,
depending
on
the
so
definitely
measuring
the
fatigue
of
the
Mr,
depending
on
as
you
already
have
of
like.
Okay,
where
am
I
gonna
leave
comments
or
not
one
thing,
I
would
look
at
here
and
think
about
would
be
like
okay.
Maybe
we
should
call
our
slot,
though
help
like.
Is
it
make
a
lot
of
sense?
B
B
Yeah,
that's
really
interesting,
thanks
for
sharing
that
and
yeah
thanks
for
thanks
for
Patiently
working
on
the
working
on
the
Mr,
because
I
think
the
the
that
mentoring,
stuff
does
go
a
long
way
and
I
know
it
could
feel
like.
Oh
man,
I,
don't
wanna
I
I
do
find.
This
is
an
exponential
investment
when,
when
the
the
comments
and
learning
that
you
shared
ideally
stick
with
the
receiver
and
hopefully
then
perpetuate
as
they
review
code,
is
that
kind
of
stuff
helps
out
a
lot
too
so
I
do
I.
B
I
am
I
am
a
bit
of
an
optimist.
Chad
Chad
can
attest
to
that
cool
yeah.
C
Well,
poly
Anna.
B
Oh
no,
this
is
like
sounds
like
it
was
destined
to
be
yeah.
Well,
I've
got
some
stuff
that
we
can.
We
can
try
to
tackle
in
the
remainder
of
time.
We
can
also
try
to
find
it.
Is
this
known
bug
and
and
just
fix
it
while
we're
on
here?
That's
one
of
my
favorite
things
to
do.
Oh,
what
is
what
do
you
all
vote
for.
B
Okay,
I've
got
I've,
got
some
stuff
I'm
working
on
for
the
web
ID
project,
and
that
could
be
interesting.
But
let
me
see
what
elpid
Mrs
I
actually
have.
B
I
need
to
jump
on
this.
Last
time
we
talked
about
this
untamper.
My
log
file
that
I
was
updating
and
I
need
to
create
some
more
tests
around
this
and
get
the
current
Test
passing
and
respond
to
IPS
comments.
So
this
would
be.
This
is
be
really
nice
for
me
to
push
forward
some
because
we
kind
of
need
it.
B
B
Let
me
make
sure
I'm
up
to
date,
yes,
I'm
up
to
date,
all
right,
so
this
project
is
our
package,
which
throws
a
fit
on
your
pipeline.
If
you,
if
it
detects
that
there
was
any
tampering
done
till
the
yarn
lock
file,
so,
for
instance,
correctly
parses
create
error
on
merge
to
create
error
file.
B
Those
exist
I'm,
trying
to
find
an
example
of
what,
like
a
tampering,
would
look
like
if
we'd
look
for
like
typo
squatting,
Squad,
yes
yeah
so
here
on
the
original
yarn
for
yarn,
V1,
lock
files
you
can
have.
B
This
is
the
package
that
may
be
referencing
in
our
package
Json
and
then
the
lock
file
has
all
this.
But
the
resolved
goes
to
some
sort
of
malicious
type
of
squatted
package
be
incredibly
difficult
thing
to
catch
from
a
reviewer
perspective.
If
a
malicious
contributor
adds
a
dependency
that
updates
the
lock
file
but
changes
this
little
bit.
So
that's
that's
why
we
have
this
security
package
in
place,
but
it
only
works
for
yarn
V1.
So
not.
B
B
That's
the
slogan:
everyone
can
try
to
contribute.
Oh
man,
that's
that's
intense,
so
this
doesn't
work
for
yarn
V2
for
the
web
ID
package.
We
use
yarn
V2
because
we
are
using
your
own
workspaces
to
have
nice
cohesive
packages,
and
so
we
haven't
been
able
to
turn
this
on
for
that
and
for
that
reason
we
also
don't
allow
merge
requests
at
the
moment.
B
So
I
pushed
this
up
was
able
to
implement
yarn
V2
support,
but
now
I'm
just
got
to
polish
it
up
a
little
bit
so
I've
got
to
update
the
end-to-end
specs
I
need
to
update
some
docs
about
it.
Then
IP
left
a
comment
and
the
one
of
the
comments
he
left
was.
Let's
see
right
here.
B
A
B
Right
thanks
for
saying
something,
so
one
of
the
weird
things
with
yarn
two
is
how
it
references
packages,
because,
rather
than
doing
this
like
here's
the
name
and
then
things
were
resolved
and
here's
a
huge
URL
to
it.
B
Yarn
two
actually
looks
like
this,
where
the
resolution
is
like
the
name
and
then
we
got
it
at
npm
and
here's
the
version.
So
the
resolution
isn't
this
long,
URL
anymore
and
so
I
have
this
helper
for
parsing.
We
need
to
have
a
function
that
just
parses
the
package
name
out
of
some
of
these
patterns
that
look
like
this
and
so
all
of
there's
a
number
of
different
there's,
a
number
of
different
examples
of
these
kind
of
resolution
things
and
what
IP
observed
was.
B
The
regex
that
we
need
to
just
get
the
name
out
of
it,
because
these
wouldn't
work
with
the
current
implementation
of
it,
because
I
was
just
looking
at
at
npm
or
something
like
that.
I
think,
because
we
were
using
there's
sometimes
sometimes
you
can
have
these
patch
things,
I
guess
I,
don't
know,
but
here's
the
cool
thing
this
whole.
This
whole
file
doesn't
really
care
about
the
right
hand,
side
of
these
kind
of
strings,
and
we
really
just
need
the
left
hand
side,
the
actual
name
of
it.
B
And
so
I
was
trying
what
I
was
trying
to
do
was
touch
as
little
of
the
pre-existing
code
as
possible.
So
this
is
me
just
doing
an
edge
case
that
can
happen
in
yarn,
V2
land
and
then
composing
the
original
functionality,
so
I
didn't
have
to
divert
from
that
too
much,
but
IP
who's.
Maintaining
this
went
ahead
and
suggested.
B
Let's
just
use
this
kind
of
regex
and
call
it
a
day
now
before
I
do
that
I
think
it'd
probably
be
nice
if
I
actually
had
just
some
unit
tests
for
this,
so
maybe
let's
set
up
with
unit
test
so
that
when
I
change
the
implementation
of
it,
we
can
know
if
we
actually
kept
things
the
same
or
not.
Does
that
sound
good.
B
All
right
to
make
matters
more,
I
have
never
used
Ava
before,
except
just
in
this
contribution
of,
and
so
this
year
does
not
use
just
it
should
be
fine.
B
But
I'm
gonna
copy
whatever
this,
this
is
doing
as
a
pattern
for
how
I
can
write
tests
for
this
thing,
all
right,
let's
go
ahead
and
require
parse
package
name
V2
price
package,
name
B2
was
required
from
ours
package
name.
B
B
Oh
yeah
I
should
just
be
like
in
this
spec
file
cool
and
it
looks
like
I
just
write.
These
tests
and
I
can
just
assert
that
things
equal
I
guess,
is
there
a
way
to
do.
Parameterized
tests
in
Ava
should
I.
Look
that
up
right
now
or
should
I
just
keep
going.
Keep.
B
Deep
equals
is
the
only
I
saw
that
that
was
one
I.
Don't
know
if
that's
really
what
I'm
wanting
to
use,
but
let's
just
leave
it
so
find
that
low
Dash,
npm
1.2.3
I
should
deep
equal
low
Dash.
A
B
B
I
have
no
I,
have
no
assertions
test
pass
now.
I'm
I'm
testing
my
code
too
yeah,
so
the
we
would
want
to
have
something
like
this
and
then
let
me
copy
over
yeah,
let's,
let's
copy
some
silly
stuff
like
this
over
I.
C
B
B
What
was
the
biggest
issue
for
us
was
that
the
biggest
issue
for
us
was
that
none
of
the
tests
were
sandboxed,
so
we
would
have
side
effects
left
over
from
one
test.
File
affect
your
test.
A
A
C
B
See
yeah
that
makes
that
makes
sense
cool
all
right,
so
we
ran
into
our
first
failure.
That's
great
and
so
IP
is
suggesting
this
regex
I'm
I'm.
B
B
Something
like
this
right,
because
it's
really
just
need
the
name,
and
let
me
so
this
is
saying
we're
capturing
a
group
called
name.
Does
it
it
might
start
with
an
at
and
then
we
do
everything.
That's
not
an
app
for
as
long
as
possible
until
the
next
ACT.
B
So
do
you
all
feel
good
about
this
with
this.
A
We
all
like
dragas
until
he
becomes
unreadable
for
yourself
or
you
read
you
return
after
one
week
and
say
what
how
did
I
write
that.
B
A
B
B
So
we
need
to
capture
that
that,
but
then,
whether
we
start
with
an
ad
or
not,
we
just
keep
going
until
until
we
find
in
that
which
I
think
we
can
actually
simplify.
This
I
think
we
can
simplify
this
now
that
we're
talking
about
it,
because
I
think
we
could
do
we're
just
going
to
capture.
B
B
B
I
forgot
how
named
groups
work
in
match
equals.
B
I
think
you
can
match
on
the
pattern
and
then
we
get
oh.
Is
this
like
some
sort
of
I'm,
not
getting
my
I
gotta
look
I
always
have
to
look
up.
How
name
group
Works
name
group
for
groups
JavaScript.
A
A
B
B
That
it's
it's
being.
B
B
The
thing
that's
happening
is
this
is
greedy,
which
means
it's
gonna
take
as
much
as
possible,
including
apps.
It's
not
gonna,
stop
at
the
first
app,
so
we
need
to
make
it
I
forgot
how
to
non-greedy
regex
Plus.
B
Good,
oh
yeah
nope
makes
non-greedy,
so
we
don't
include
extra
apps
yeah
cool
great.
So
let
me
try
some
now
that
yeah,
let
me
try
some
other.
B
Should
I
look
up
how
to
parameterize
test
in
Ava
I
really
want
to
the
other
thing.
I'm
really
curious
about
is
like
some
really
some
crazy
edge
cases.
So,
if
like
we're
here
at
the
edge
case,
what's
it
gonna
do
there
like
if
we
never
found
an
ad
at
all,.
B
B
Yeah,
maybe
maybe,
if
we're
here,
we
can
actually
actually
want
to
throw
an
error
of
saying,
like
unexpected
pattern,
for
you
learn
V
to
chin.