Slide 1

Slide 1 text

Walking through the source code of an OSS library(ESLint) 'SPOUFOE&OHJOFFS-5#FFS#BTI @kkeeth @kuwahara_jsri @kkeeth

Slide 2

Slide 2 text

Who am I const my_info = { Name: ‘Kuwahara KEETH Kiyohito’, Company: ‘Yumemi Inc’, Position: ‘Servant Leader/Board’, Skills: ‘Riot.js/Next.js/Chit-chat’, }

Slide 3

Slide 3 text

Published

Slide 4

Slide 4 text

OQNKTDPNdLLFFUI

Slide 5

Slide 5 text

🙇 Sorry … 🙇 This slide is written in English. However, I am still learning English, and there may be some inappropriate expressions. Plz feedback for me called “Masakari” about my talk!!

Slide 6

Slide 6 text

Let’s start 😆

Slide 7

Slide 7 text

one day in development 💁

Slide 8

Slide 8 text

*NDPODFSOFEBCPVUUIFCFIBWJPS PGUIJTEFQFOEFOUMJCSBSZ🤔 *TOUUIBUBIVSEMFUPCFHJOXJUI $BOZPVSFBMMZSFBEJU me my “inner voice” -FUTSFBEUIFDPEFPGUIJTMJCSBSZ me

Slide 9

Slide 9 text

:FT CVU*EPOUVOEFSTUBOEXIBU UIJTMJCSBSZJTEPJOHBOE .BZCFZPVEPOUIBWFUIFUJNF *TUIBUFTTFOUJBMMZXIBUZPVXBOUUP TPMWF me my “inner voice” *UEFQFOETPOUIFUIJOH CVU JOUFSJNTVQQPSUDBOCFBMJBCJMJUZ MBUFSPO me

Slide 10

Slide 10 text

#VUFWFOJGZPVVOEFSTUBOEUIF TPVSDFDPEF XIBUEPZPVEPXJUI JU my “inner voice” *GJUTBCVH JUTCFTUUPDSFBUFBO JTTVFPS13 me 8IFOEPZPVUIJOLUIBUXJMMCF SFTPMWFE %PZPVUIJOLJUXJMMCF EPOFPOUJNF my “inner voice”

Slide 11

Slide 11 text

*GOPU UIFXPSTUUIBUDBOIBQQFOJT UIBUXFGPSLUIFSFQPTJUPSZBOE MPBEUIFDIBOHFT 8IPJTHPJOHUPNBJOUBJOJU 
 8IBUTUIFDPTU me my “inner voice” )NNN*HVFTTTP0LBZ MFUT KVTUBTTVNFUIBUTUIFEFTJHOJUT TVQQPTFEUPCF😅 me

Slide 12

Slide 12 text

*GOPU UIFXPSTUUIBUDBOIBQQFOJT UIBUXFGPSLUIFSFQPTJUPSZBOE MPBEUIFDIBOHFT 8IPJTHPJOHUPNBJOUBJOJU 
 8IBUTUIFDPTU me my “inner voice” )NNN*HVFTTTP0LBZ MFUT KVTUBTTVNFUIBUTUIFEFTJHOJUT TVQQPTFEUPCF😅 me none of your business ʘ(^o^)ʗ

Slide 13

Slide 13 text

I feel like I could learn more from reading codes 😆

Slide 14

Slide 14 text

Then, let's read the source code of ESLint!

Slide 15

Slide 15 text

*NBHFCZIUUQTFTMJOUPSH

Slide 16

Slide 16 text

Basically, we start from the module written in the main of package.json💁

Slide 17

Slide 17 text

Next, let’s look at “bin” dir.

Slide 18

Slide 18 text

Only 3 helper functions and an executable function here💁

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

Next, let’s look at “lib/cli.js” fi le.

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

“cli.js” depends on “ESLint” module “ESLint” module depends on “CLIEngine” module

Slide 23

Slide 23 text

I found out later that...

Slide 24

Slide 24 text

There exists a dependency map💁 *NBHFCZIUUQTHJUIVCDPNFTMJOUFTMJOUCMPCNBJOEPDTTSDEFWFMPQFSHVJEFBSDIJUFDUVSFEFQFOEFODZTWH

Slide 25

Slide 25 text

Knowledge 1: Overall design

Slide 26

Slide 26 text

Unified format for writing each module📝

Slide 27

Slide 27 text

Uni fi ed format for writing each module

Slide 28

Slide 28 text

Uni fi ed format for writing each module

Slide 29

Slide 29 text

util objects rich in methods📝

Slide 30

Slide 30 text

w /PEFKTlVUJMzPCKFDU w MJCSVMFTVUJMTBTUVUJMT w MJCTIBSFETUSJOHVUJMT w MJCTIBSFETBTUVUJMT NFUIPET SFHHFYQBUUFSOT w MJCTPVSDFDPEFUPLFOTUPSFVUJMT the number of using methods

Slide 31

Slide 31 text

Knowledge 2: Node.js’s “util” module is useful

Slide 32

Slide 32 text

w VUJMJOTQFDU w VUJMGPSNBU w VUJMJOIFSJUT w VUJMMQSPNJTJGZ ˡ8IBUTVSQSJTFENFXBTUIJT Methods used by ESLint

Slide 33

Slide 33 text

*NBHFCZIUUQTOPEFKTPSHBQJVUJMIUNM

Slide 34

Slide 34 text

Knowledge 3: Generator functions in JavaScript

Slide 35

Slide 35 text

Do you understand the following code?💁

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

Let's take a look at some sample codes💁

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

more detail, show MDN👉

Slide 42

Slide 42 text

An afterthought

Slide 43

Slide 43 text

An afterthought w /PUXSJUUFOJOUZQFTDSJQU UZQFEF fi OJUJPOTBSFXSJUUFO w "OZXBZ UIFEPDVNFOUBUJPOJTFYUFOTJWF w +4%PDJTXFMMEPDVNFOUFE BTJTNE w %PDVNFOUBUJPOJTVTJOH&MFWFOUZKT UZ w 5PPMTGPS44( w %PDVNFOUBUJPOBQQJTFBTJFSUPWJFXUIBOUIFP ff i DJBMTJUF w 5IFSFBSFBMTPDPODFQUTPGMBZPVUBOEDPNQPOFOUT

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

Thoughts💁

Slide 47

Slide 47 text

Thoughts w 8FEPOUIBWFUPVOEFSTUBOEJUUPUBMZ👍 w %FTJHOJOHGBNPVTMJCSBSJFTJTBHSFBUMFBSOJOHFYQFSJFODF👍 w 8FDBOJNQSPWFNZTLJMMTGPSTVSF👍 w *GZPV fi OEJUEJ ff i DVMU ZPVDBOSFBEJUXJUITPNFPOFFMTF👍 w *GZPVIBWFUSPVCMF JU`THPPEUPSFBEGSPNUIFUFTUDPEF👍

Slide 48

Slide 48 text

No content