diff --git a/.all-contributorsrc b/.all-contributorsrc index 18b1d7b1b..ae1794014 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -2,7 +2,8 @@ "projectName": "Front-end-Developer-Interview-Questions", "projectOwner": "h5bp", "files": [ - "CONTRIBUTORS.md" + "CONTRIBUTORS.md", + "README.md" ], "imageSize": 120, "commit": true, @@ -17,7 +18,10 @@ "ideas", "doc", "infra", - "review" + "review", + "question", + "talk", + "maintenance" ] }, { @@ -934,7 +938,12 @@ "profile": "http://htmlcssjavascript.com/", "contributions": [ "ideas", - "review" + "doc", + "infra", + "review", + "question", + "talk", + "maintenance" ] }, { @@ -945,7 +954,8 @@ "contributions": [ "ideas", "infra", - "review" + "review", + "maintenance" ] }, { @@ -955,8 +965,248 @@ "profile": "https://www.linkedin.com/in/vvanchuk/", "contributions": [ "ideas", - "review" + "review", + "maintenance" + ] + }, + { + "login": "veronvynguyen", + "name": "Vy Nguyen", + "avatar_url": "https://avatars.githubusercontent.com/u/17018972?v=4", + "profile": "https://github.com/veronvynguyen", + "contributions": [ + "content" + ] + }, + { + "login": "PChaparro", + "name": "Pedro Chaparro", + "avatar_url": "https://avatars.githubusercontent.com/u/94259578?v=4", + "profile": "https://pchaparro.netlify.app/", + "contributions": [ + "translation" + ] + }, + { + "login": "WildxHV", + "name": "Harshvardhan Singh Sisodia", + "avatar_url": "https://avatars.githubusercontent.com/u/71403298?v=4", + "profile": "https://github.com/WildxHV", + "contributions": [ + "translation" + ] + }, + { + "login": "gabrielrbarbosa", + "name": "Gabriel R. Barbosa", + "avatar_url": "https://avatars.githubusercontent.com/u/12158575?v=4", + "profile": "https://github.com/gabrielrbarbosa", + "contributions": [ + "translation" + ] + }, + { + "login": "talhatahir", + "name": "Talha Tahir", + "avatar_url": "https://avatars.githubusercontent.com/u/8845428?v=4", + "profile": "https://github.com/talhatahir", + "contributions": [ + "content" + ] + }, + { + "login": "subashcs", + "name": "Subash Chandra Sapkota", + "avatar_url": "https://avatars.githubusercontent.com/u/29421465?v=4", + "profile": "http://www.subashcs.com.np/", + "contributions": [ + "code" + ] + }, + { + "login": "sarahesbie", + "name": "Sarah Brown", + "avatar_url": "https://avatars.githubusercontent.com/u/4270573?v=4", + "profile": "https://github.com/sarahesbie", + "contributions": [ + "content" + ] + }, + { + "login": "coliff", + "name": "Christian Oliff", + "avatar_url": "https://avatars.githubusercontent.com/u/1212885?v=4", + "profile": "https://christianoliff.com/", + "contributions": [ + "code", + "infra", + "maintenance" + ] + }, + { + "login": "andershagbard", + "name": "Anders Søgaard", + "avatar_url": "https://avatars.githubusercontent.com/u/9662430?v=4", + "profile": "https://github.com/andershagbard", + "contributions": [ + "content" + ] + }, + { + "login": "iaurg", + "name": "Italo A.", + "avatar_url": "https://avatars.githubusercontent.com/u/11761170?v=4", + "profile": "https://segredo.dev/", + "contributions": [ + "code" + ] + }, + { + "login": "cpvalente", + "name": "Carlos Valente", + "avatar_url": "https://avatars.githubusercontent.com/u/34649812?v=4", + "profile": "https://github.com/cpvalente", + "contributions": [ + "translation" + ] + }, + { + "login": "baumannzone", + "name": "Jorge Baumann", + "avatar_url": "https://avatars.githubusercontent.com/u/5422102?v=4", + "profile": "https://baumannzone.dev/", + "contributions": [ + "translation" + ] + }, + { + "login": "satyamsundaram", + "name": "Satyam Sundaram", + "avatar_url": "https://avatars.githubusercontent.com/u/54367435?v=4", + "profile": "https://satyamsundaram.tech/", + "contributions": [ + "content" + ] + }, + { + "login": "NegiAkash890", + "name": "Akash Negi", + "avatar_url": "https://avatars.githubusercontent.com/u/55234838?v=4", + "profile": "https://github.com/NegiAkash890", + "contributions": [ + "content" + ] + }, + { + "login": "tounsils", + "name": "Ilyes Tounsi", + "avatar_url": "https://avatars.githubusercontent.com/u/44228841?v=4", + "profile": "https://www.tn76.com/", + "contributions": [ + "code" + ] + }, + { + "login": "swati-gwc", + "name": "Swati Tripathi", + "avatar_url": "https://avatars.githubusercontent.com/u/63490144?v=4", + "profile": "https://swati-gwc.github.io/", + "contributions": [ + "translation" + ] + }, + { + "login": "dafaputra00", + "name": "Aziz Dafa Putra", + "avatar_url": "https://avatars.githubusercontent.com/u/62801712?v=4", + "profile": "https://github.com/dafaputra00", + "contributions": [ + "translation" + ] + }, + { + "login": "Abg4real", + "name": "Abg4real", + "avatar_url": "https://avatars.githubusercontent.com/u/55308761?v=4", + "profile": "https://github.com/Abg4real", + "contributions": [ + "content" + ] + }, + { + "login": "nataliepina", + "name": "Natalie Pina", + "avatar_url": "https://avatars.githubusercontent.com/u/34781875?v=4", + "profile": "https://github.com/nataliepina", + "contributions": [ + "content" + ] + }, + { + "login": "bt-dot", + "name": "Bruce Tang", + "avatar_url": "https://avatars.githubusercontent.com/u/55170799?v=4", + "profile": "https://github.com/bt-dot", + "contributions": [ + "content" + ] + }, + { + "login": "vltansky", + "name": "Vlad Tansky", + "avatar_url": "https://avatars.githubusercontent.com/u/5851280?v=4", + "profile": "https://github.com/vltansky", + "contributions": [ + "code", + "design" + ] + }, + { + "login": "voy", + "name": "Vojtech Jasny", + "avatar_url": "https://avatars.githubusercontent.com/u/194726?v=4", + "profile": "https://github.com/voy", + "contributions": [ + "content" + ] + }, + { + "login": "Linda-Ikechukwu", + "name": "Linda Ikechukwu", + "avatar_url": "https://avatars.githubusercontent.com/u/32891838?v=4", + "profile": "https://codewithlinda.com/", + "contributions": [ + "content" + ] + }, + { + "login": "iownthegame", + "name": "Hui-Yu Lee", + "avatar_url": "https://avatars.githubusercontent.com/u/1487369?v=4", + "profile": "https://github.com/iownthegame", + "contributions": [ + "translation" + ] + }, + { + "login": "aej11a", + "name": "Andrew Jones", + "avatar_url": "https://avatars.githubusercontent.com/u/10066422?v=4", + "profile": "https://github.com/aej11a", + "contributions": [ + "content" + ] + }, + { + "login": "Teesy99", + "name": "Teesta Koch", + "avatar_url": "https://avatars.githubusercontent.com/u/45621118?v=4", + "profile": "https://github.com/Teesy99", + "contributions": [ + "doc" ] } - ] + ], + "repoType": "github", + "commitConvention": "none" } diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index fc97723f4..92afe3eb7 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -3,6 +3,8 @@ Please take a moment to review this document in order to make the contribution process easy and effective for everyone involved. +*Please submit one PR per question* + Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue or assessing @@ -39,8 +41,8 @@ Adhering to the following process is the best way to get your work included in t 2. If you cloned a while ago, get the latest changes from upstream: ```bash - git checkout master - git pull upstream master + git checkout main + git pull upstream main ``` 3. Create a new topic branch (off the main project development branch) to @@ -53,18 +55,32 @@ Adhering to the following process is the best way to get your work included in t 4. Locally merge (or rebase) the upstream development branch into your topic branch: ```bash - git pull [--rebase] upstream master + git pull [--rebase] upstream main ``` -5. Squash your commits down to a single one (we want to keep the master branch nice and clean) +5. Set-up the website + + ```bash + # install dependencies + npm install + # run the website and watch for changes (http://localhost:9090) + npm start + ``` + +Our website is made with [Eleventy](https://11ty.io). + +* If you are looking to edit infrastructure/templating files of the website and not sure how to, [check their docs](https://11ty.io/docs). +* If you are looking to change a question/translation file, just change the markdown file you want and the website will be updated once it is deployed. + +6. Squash your commits down to a single one (we want to keep the main branch nice and clean) -5. Push your topic branch up to your fork: +7. Push your topic branch up to your fork: ```bash git push origin ``` -7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) +8. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) with a clear title and description. **IMPORTANT**: By submitting patches, you agree to allow the project owners to license your work under the terms of the [MIT License](../LICENSE.md). diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index c0a84f1c2..e29c7b150 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,5 +1,3 @@ -# Issue Template - The issue tracker is the preferred channel for feedback on the project, bugs relating to the publishing infrastructure (which is still a a work-in-progress) or other discussion points. Note: diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 0de8e3e13..df5e0e372 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,5 +1,3 @@ -# Pull Request - Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. Fixes # (issue) @@ -16,8 +14,8 @@ Please delete options that are not relevant. # Checklist: -- [ ] My prose follows the style guidelines of this project -- [ ] I have performed a self-review of my own prose +- [ ] My content follows the style guidelines of this project +- [ ] I have performed a self-review of my own content Pull requests should be thought of as a conversation. There will be some back and forth when trying to get code merged into this or any other project. With all but the simplest changes you can and should expect that the maintainers of the project will request changes to your code. Please be aware of that and check in after you open your PR in order to get your code merged in cleanly. diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..e0efc8011 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +version: 2 +updates: + - package-ecosystem: npm + directory: "/" + schedule: + interval: monthly + time: "03:00" + - package-ecosystem: github-actions + directory: "/" + schedule: + interval: monthly diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 000000000..8cd713745 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,19 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 30 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 +# Issues with these labels will never be considered stale +exemptLabels: + - pinned + - security + - help-wanted +# Label to use when marking an issue as stale +staleLabel: wontfix +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: This issue has been automatically closed because it has not had + recent activity. Thank you for your contributions. diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 000000000..56b5eb3e2 --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,38 @@ +name: "CodeQL" + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + schedule: + - cron: '34 20 * * 0' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'javascript' ] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + + - name: Autobuild + uses: github/codeql-action/autobuild@v3 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/gh-pages-build.yml b/.github/workflows/gh-pages-build.yml new file mode 100644 index 000000000..1cc32f9ac --- /dev/null +++ b/.github/workflows/gh-pages-build.yml @@ -0,0 +1,27 @@ +name: Eleventy Build +on: + # Triggers the workflow on push or pull request events but only for the main branch + push: + branches: [ main ] + +jobs: + build_deploy: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@master + - uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: "16.x" + - run: npm install + - name: Build + uses: TartanLlama/actions-eleventy@master + with: + args: --config=config/eleventy.config.js --pathprefix=Front-end-Developer-Interview-Questions + - name: Deploy + uses: peaceiris/actions-gh-pages@v4 + with: + publish_dir: ./_site + publish_branch: gh-pages + github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index fd4f2b066..7069acdbd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules .DS_Store +_site diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 4d1be78e7..e3b2b6015 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -1,30 +1,193 @@ -[![All Contributors](https://img.shields.io/badge/all_contributors-103-orange.svg?style=flat-square)](#contributors) +[![All Contributors](https://img.shields.io/badge/all_contributors-103-orange.svg?style=flat-square)](#contributors-) ## Contributors Thanks goes to these wonderful people ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)): - -| [
Darcy Clarke](http://darcyclarke.me/)
[🤔](#ideas-darcyclarke "Ideas, Planning, & Feedback") [📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=darcyclarke "Documentation") [🚇](#infra-darcyclarke "Infrastructure (Hosting, Build-Tools, etc)") [👀](#review-darcyclarke "Reviewed Pull Requests") | [
Bo-Yi Wu](http://about.me/appleboy)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=appleboy "Documentation") [👀](#review-appleboy "Reviewed Pull Requests") | [
Nikolay Kostov](http://nikolay.it)
[🌍](#translation-NikolayIT "Translation") | [
Jan Hancic](http://hancic.info)
[🌍](#translation-janhancic "Translation") | [
Rich Gilbank](http://twitter.com/richgilbank)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=richgilbank "Documentation") [👀](#review-richgilbank "Reviewed Pull Requests") | [
Mattias Wallander](https://github.com/mattiasw)
[🌍](#translation-mattiasw "Translation") | -| :---: | :---: | :---: | :---: | :---: | :---: | -| [
Songhun](http://gplus.to/songhun)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=Songhun "Documentation") [🌍](#translation-Songhun "Translation") | [
Giulia Alfonsi](http://giugee.com/portfolio)
[🌍](#translation-electricg "Translation") | [
Mike Myat Min Han](http://mmhan.net)
[🌍](#translation-mmhan "Translation") | [
SunLn](http://www.zhihu.com/people/deng-chen-hua)
[🌍](#translation-SunLn "Translation") | [
Yi, Hangehee](http://javarouka.github.com)
[🌍](#translation-javarouka "Translation") | [
shawnqiang](https://github.com/shawnqiang)
[🌍](#translation-shawnqiang "Translation") | -| [
Guilherme Pontes](http://guilhermepontes.com)
[🌍](#translation-guilhermepontes "Translation") | [
lufeihaidao](https://github.com/lufeihaidao)
[🌍](#translation-lufeihaidao "Translation") | [
Donald Zhan](http://about.me/DonaldZhan)
[🌍](#translation-dz1984 "Translation") | [
Mina Markham](http://mina.codes)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=minamarkham "Documentation") | [
Paul Irish](http://paulirish.com)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=paulirish "Documentation") | [
Mathieu Hays](https://mathieuhays.co.uk)
[🌍](#translation-mathieuhays "Translation") | -| [
Yong Yin](https://yanni4night.github.io)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=yanni4night "Documentation") | [
Dale Sande / @anotheruiguy](http://dalesande.com)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=blackfalcon "Documentation") [🚇](#infra-blackfalcon "Infrastructure (Hosting, Build-Tools, etc)") [👀](#review-blackfalcon "Reviewed Pull Requests") | [
Marco Biedermann](https://www.marcobiedermann.com)
[🚇](#infra-marcobiedermann "Infrastructure (Hosting, Build-Tools, etc)") | [
Victor Coulon](http://victorcoulon.com)
[🌍](#translation-Victa "Translation") [👀](#review-Victa "Reviewed Pull Requests") | [
Paulo Ávila](https://github.com/demoive)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=demoive "Documentation") | [
Ekrem Karaca](https://github.com/ekremkaraca)
[🌍](#translation-ekremkaraca "Translation") | -| [
Achal Varma](http://achalv.com)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=achalv "Documentation") | [
Aurelio De Rosa](https://www.audero.it)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=AurelioDeRosa "Documentation") | [
Min Zhao](https://github.com/d-i-b)
[🌍](#translation-d-i-b "Translation") | [
Cătălin Mariș](https://twitter.com/alrra)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=alrra "Documentation") [🌍](#translation-alrra "Translation") | [
Simon Owen](https://s10wen.com)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=s10wen "Documentation") | [
Maxim Khlobystov](https://github.com/MaximKhlobystov)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=MaximKhlobystov "Documentation") [👀](#review-MaximKhlobystov "Reviewed Pull Requests") | -| [
Sara](https://github.com/dermatobia)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=dermatobia "Documentation") [🌍](#translation-dermatobia "Translation") | [
Jason Hummel](https://github.com/jhummel)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=jhummel "Documentation") | [
Kunal Sachdeva](https://github.com/kunsachdeva)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=kunsachdeva "Documentation") | [
AJ Jordan](https://strugee.net)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=strugee "Documentation") | [
paulalexandru](https://github.com/paulalexandru)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=paulalexandru "Documentation") [🌍](#translation-paulalexandru "Translation") | [
dot](https://github.com/rozehan)
[🚇](#infra-rozehan "Infrastructure (Hosting, Build-Tools, etc)") [🌍](#translation-rozehan "Translation") | -| [
Everardo Medina](http://twitter.com/billowblut)
[🌍](#translation-everblut "Translation") | [
Gaurav Nanda](https://github.com/gauravmuk)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=gauravmuk "Documentation") | [
Andrii Malaman](https://github.com/malaman)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=malaman "Documentation") | [
Daniele Zanni](http://www.betterpixels.co.uk)
[🌍](#translation-syymza "Translation") | [
Fernando Freitas Alves](https://fernandofreitasalves.com)
[🌍](#translation-ffreitasalves "Translation") | [
John Wu](https://github.com/tjwudi)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=tjwudi "Documentation") | -| [
Pablo Nevares](https://github.com/pnevares)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=pnevares "Documentation") [🌍](#translation-pnevares "Translation") | [
Felipe Ramos](https://github.com/f3liperamos)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=f3liperamos "Documentation") | [
Arthur Verschaeve](http://twitter.com/arthur_versch)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=arthurvr "Documentation") [👀](#review-arthurvr "Reviewed Pull Requests") [🌍](#translation-arthurvr "Translation") | [
Richard Denton](https://github.com/isdampe)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=isdampe "Documentation") | [
Andrey Fadeyev](https://github.com/kubum)
[🌍](#translation-kubum "Translation") | [
rimager](https://github.com/rimager)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=rimager "Documentation") | -| [
Rishabh Jain](https://github.com/rjain11)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=rjain11 "Documentation") | [
Kaijun Chen](https://github.com/Kaijun)
[🌍](#translation-Kaijun "Translation") | [
Nithya](https://github.com/NkS90)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=NkS90 "Documentation") | [
Erwan Jegouzo](http://www.erwanjegouzo.com)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=erwanjegouzo "Documentation") | [
Tieme van Veen](https://www.linkedin.com/in/tiemevanveen)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=teameh "Documentation") | [
Hsun](https://github.com/linkgod)
[🌍](#translation-linkgod "Translation") | -| [
Adrien CHRETIEN](https://github.com/adrienchretien)
[🌍](#translation-adrienchretien "Translation") | [
Alan Rodríguez](https://github.com/shnere)
[🌍](#translation-shnere "Translation") | [
Adam Haris](http://harisadam.com)
[🌍](#translation-harisadam "Translation") | [
Toshimaru](http://toshimaru.net/)
[🌍](#translation-toshimaru "Translation") | [
Shankar Cabus](http://shankarcabus.com.br)
[🌍](#translation-shankarcabus "Translation") | [
Ash](https://github.com/lukasz-jakub-adamczuk)
[🌍](#translation-lukasz-jakub-adamczuk "Translation") | -| [
Hank Wang](https://github.com/hanksudo)
[🌍](#translation-hanksudo "Translation") | [
KILLHAPPY.](https://graybobo.github.io/)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=Graybobo "Documentation") | [
Marko Švaljek](http://msvaljek.blogspot.com)
[🌍](#translation-msval "Translation") | [
Antonio Laguna](https://www.funcion13.com)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=Antonio-Laguna "Documentation") [🌍](#translation-Antonio-Laguna "Translation") | [
Mithun Dhiman](http://www.mi2oon.com)
[🌍](#translation-mi2oon "Translation") | [
Kévin Rocher / @Darklg](http://darklg.me)
[🌍](#translation-Darklg "Translation") | -| [
Dmitry Pashkevich](http://dpashk.com)
[🌍](#translation-dpashkevich "Translation") | [
karmeljuk](https://github.com/karmeljuk)
[🌍](#translation-karmeljuk "Translation") | [
Dirk Schürjohann](https://decaf.de)
[🌍](#translation-schuer "Translation") | [
Björn Söderqvist](https://github.com/cybear)
[🌍](#translation-cybear "Translation") | [
Nitin Hayaran](http://www.nitinh.com)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=nitinhayaran "Documentation") | [
Peter Galiba](http://poetro.hu/)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=Poetro "Documentation") | -| [
Neil Heinrich](http://neilheinrich.com)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=nheinrich "Documentation") | [
Ohgyun Ahn](http://ohgyun.com)
[🌍](#translation-ohgyun "Translation") | [
nerdog](https://github.com/nerdog)
[🌍](#translation-nerdog "Translation") | [
Leo Picado](http://leo.cr)
[🌍](#translation-leopic "Translation") | [
Romain Dardour](http://refine.hull.io)
[🌍](#translation-unity "Translation") | [
Alex Seville](http://blog.alexanderseville.com/)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=alex-seville "Documentation") | -| [
胡尐睿丶](http://hooray.cnblogs.com)
[🌍](#translation-hooray "Translation") | [
Vitalii Petrychuk](http://petrychuk.com)
[🌍](#translation-vermilion1 "Translation") | [
Tairraos](http://tairraos.github.io)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=Tairraos "Documentation") [🌍](#translation-Tairraos "Translation") | [
Dmitrii Raev](https://github.com/draev)
[🌍](#translation-draev "Translation") | [
Bartek](https://github.com/bpu)
[🌍](#translation-bpu "Translation") | [
Vitor Balocco](https://twitter.com/vitorbal)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=vitorbal "Documentation") | -| [
Jonathan Neal](http://jonathantneal.com)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=jonathantneal "Documentation") | [
Christoffer Lans](https://github.com/Muqito)
[🌍](#translation-Muqito "Translation") | [
Felipe Fialho](http://www.felipefialho.com/)
[🌍](#translation-LFeh "Translation") | [
Piotrek Mierzejewski](http://piotrek.co)
[🌍](#translation-pim "Translation") | [
Patrik Wibron](http://patrikwibron.se/)
[🌍](#translation-wibron "Translation") | [
Dmitry Vislov](http://vdv73.ru)
[🌍](#translation-vdv73rus "Translation") | -| [
Krzysztof Romanowski](http://krzysztofromanowski.pl)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=castus "Documentation") | [
Albert Yu](http://www.very-geek.com)
[🌍](#translation-nightire "Translation") | [
Sebastian Lara Menares](https://twitter.com/slaramen)
[🌍](#translation-slara "Translation") | [
sunnylost](http://sunnylost.com/)
[🌍](#translation-sunnylost "Translation") | [
Daniel Yang](https://github.com/miniflycn)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=miniflycn "Documentation") | [
Michael P. Pfeiffer](http://contains.me/)
[🌍](#translation-frontdevde "Translation") | -| [
Tyll Weiß](http://craft-interactive.de/)
[🌍](#translation-Inkdpixels "Translation") | [
Andrei Sebastian Cîmpean](http://andreime.com)
[🌍](#translation-andreisebastianc "Translation") | [
Denis Sokolov](http://sokolov.cc/)
[📖](https://github.com/h5bp/Front-end-Developer-Interview-Questions/commits?author=denis-sokolov "Documentation") | [
Harijs Deksnis](https://github.com/arcanous)
[🌍](#translation-arcanous "Translation") | [
Rob Larsen](http://htmlcssjavascript.com/)
[🤔](#ideas-roblarsen "Ideas, Planning, & Feedback") [👀](#review-roblarsen "Reviewed Pull Requests") | [
Cezar Augusto](https://cezaraugusto.net/)
[🤔](#ideas-cezaraugusto "Ideas, Planning, & Feedback") [🚇](#infra-cezaraugusto "Infrastructure (Hosting, Build-Tools, etc)") [👀](#review-cezaraugusto "Reviewed Pull Requests") | -| [
Vasiliy Vanchuk](https://www.linkedin.com/in/vvanchuk/)
[🤔](#ideas-vvscode "Ideas, Planning, & Feedback") [👀](#review-vvscode "Reviewed Pull Requests") | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Darcy Clarke
Darcy Clarke

🤔 📖 🚇 👀 💬 📢 🚧
Bo-Yi Wu
Bo-Yi Wu

📖 👀
Nikolay Kostov
Nikolay Kostov

🌍
Jan Hancic
Jan Hancic

🌍
Rich Gilbank
Rich Gilbank

📖 👀
Mattias Wallander
Mattias Wallander

🌍
Songhun
Songhun

📖 🌍
Giulia Alfonsi
Giulia Alfonsi

🌍
Mike Myat Min Han
Mike Myat Min Han

🌍
SunLn
SunLn

🌍
Yi, Hangehee
Yi, Hangehee

🌍
shawnqiang
shawnqiang

🌍
Guilherme Pontes
Guilherme Pontes

🌍
lufeihaidao
lufeihaidao

🌍
Donald Zhan
Donald Zhan

🌍
Mina Markham
Mina Markham

📖
Paul Irish
Paul Irish

📖
Mathieu Hays
Mathieu Hays

🌍
Yong Yin
Yong Yin

📖
Dale Sande / @anotheruiguy
Dale Sande / @anotheruiguy

📖 🚇 👀
Marco Biedermann
Marco Biedermann

🚇
Victor Coulon
Victor Coulon

🌍 👀
Paulo Ávila
Paulo Ávila

📖
Ekrem Karaca
Ekrem Karaca

🌍
Achal Varma
Achal Varma

📖
Aurelio De Rosa
Aurelio De Rosa

📖
Min Zhao
Min Zhao

🌍
Cătălin Mariș
Cătălin Mariș

📖 🌍
Simon Owen
Simon Owen

📖
Maxim Khlobystov
Maxim Khlobystov

📖 👀
Sara
Sara

📖 🌍
Jason Hummel
Jason Hummel

📖
Kunal Sachdeva
Kunal Sachdeva

📖
AJ Jordan
AJ Jordan

📖
paulalexandru
paulalexandru

📖 🌍
dot
dot

🚇 🌍
Everardo Medina
Everardo Medina

🌍
Gaurav Nanda
Gaurav Nanda

📖
Andrii Malaman
Andrii Malaman

📖
Daniele Zanni
Daniele Zanni

🌍
Fernando Freitas Alves
Fernando Freitas Alves

🌍
John Wu
John Wu

📖
Pablo Nevares
Pablo Nevares

📖 🌍
Felipe Ramos
Felipe Ramos

📖
Arthur Verschaeve
Arthur Verschaeve

📖 👀 🌍
Richard Denton
Richard Denton

📖
Andrey Fadeyev
Andrey Fadeyev

🌍
rimager
rimager

📖
Rishabh Jain
Rishabh Jain

📖
Kaijun Chen
Kaijun Chen

🌍
Nithya
Nithya

📖
Erwan Jegouzo
Erwan Jegouzo

📖
Tieme van Veen
Tieme van Veen

📖
Hsun
Hsun

🌍
Adrien CHRETIEN
Adrien CHRETIEN

🌍
Alan Rodríguez
Alan Rodríguez

🌍
Adam Haris
Adam Haris

🌍
Toshimaru
Toshimaru

🌍
Shankar Cabus
Shankar Cabus

🌍
Ash
Ash

🌍
Hank Wang
Hank Wang

🌍
KILLHAPPY.
KILLHAPPY.

📖
Marko Švaljek
Marko Švaljek

🌍
Antonio Laguna
Antonio Laguna

📖 🌍
Mithun Dhiman
Mithun Dhiman

🌍
Kévin Rocher / @Darklg
Kévin Rocher / @Darklg

🌍
Dmitry Pashkevich
Dmitry Pashkevich

🌍
karmeljuk
karmeljuk

🌍
Dirk Schürjohann
Dirk Schürjohann

🌍
Björn Söderqvist
Björn Söderqvist

🌍
Nitin Hayaran
Nitin Hayaran

📖
Peter Galiba
Peter Galiba

📖
Neil Heinrich
Neil Heinrich

📖
Ohgyun Ahn
Ohgyun Ahn

🌍
nerdog
nerdog

🌍
Leo Picado
Leo Picado

🌍
Romain Dardour
Romain Dardour

🌍
Alex Seville
Alex Seville

📖
胡尐睿丶
胡尐睿丶

🌍
Vitalii Petrychuk
Vitalii Petrychuk

🌍
Tairraos
Tairraos

📖 🌍
Dmitrii Raev
Dmitrii Raev

🌍
Bartek
Bartek

🌍
Vitor Balocco
Vitor Balocco

📖
Jonathan Neal
Jonathan Neal

📖
Christoffer Lans
Christoffer Lans

🌍
Felipe Fialho
Felipe Fialho

🌍
Piotrek Mierzejewski
Piotrek Mierzejewski

🌍
Patrik Wibron
Patrik Wibron

🌍
Dmitry Vislov
Dmitry Vislov

🌍
Krzysztof Romanowski
Krzysztof Romanowski

📖
Albert Yu
Albert Yu

🌍
Sebastian Lara Menares
Sebastian Lara Menares

🌍
sunnylost
sunnylost

🌍
Daniel Yang
Daniel Yang

📖
Michael P. Pfeiffer
Michael P. Pfeiffer

🌍
Tyll Weiß
Tyll Weiß

🌍
Andrei Sebastian Cîmpean
Andrei Sebastian Cîmpean

🌍
Denis Sokolov
Denis Sokolov

📖
Harijs Deksnis
Harijs Deksnis

🌍
Rob Larsen
Rob Larsen

🤔 📖 🚇 👀 💬 📢 🚧
Cezar Augusto
Cezar Augusto

🤔 🚇 👀 🚧
Vasiliy Vanchuk
Vasiliy Vanchuk

🤔 👀 🚧
Vy Nguyen
Vy Nguyen

🖋
Pedro Chaparro
Pedro Chaparro

🌍
Harshvardhan Singh Sisodia
Harshvardhan Singh Sisodia

🌍
Gabriel R. Barbosa
Gabriel R. Barbosa

🌍
Talha Tahir
Talha Tahir

🖋
Subash Chandra Sapkota
Subash Chandra Sapkota

💻
Sarah Brown
Sarah Brown

🖋
Christian Oliff
Christian Oliff

💻 🚇 🚧
Anders Søgaard
Anders Søgaard

🖋
Italo A.
Italo A.

💻
Carlos Valente
Carlos Valente

🌍
Jorge Baumann
Jorge Baumann

🌍
Satyam Sundaram
Satyam Sundaram

🖋
Akash Negi
Akash Negi

🖋
Ilyes Tounsi
Ilyes Tounsi

💻
Swati Tripathi
Swati Tripathi

🌍
Aziz Dafa Putra
Aziz Dafa Putra

🌍
Abg4real
Abg4real

🖋
Natalie Pina
Natalie Pina

🖋
Bruce Tang
Bruce Tang

🖋
Vlad Tansky
Vlad Tansky

💻 🎨
Vojtech Jasny
Vojtech Jasny

🖋
Linda Ikechukwu
Linda Ikechukwu

🖋
Hui-Yu Lee
Hui-Yu Lee

🌍
Andrew Jones
Andrew Jones

🖋
Teesta Koch
Teesta Koch

📖
+ + + + This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome! \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md index edf470024..07211954e 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2012 - 2018 Contributors to https://github.com/h5bp/Front-end-Developer-Interview-Questions +Copyright (c) 2012 - 2023 Contributors to https://github.com/h5bp/Front-end-Developer-Interview-Questions Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/README.md b/README.md index d0bf432dd..e9e54b4dc 100755 --- a/README.md +++ b/README.md @@ -1,38 +1,225 @@ -# Front-end Job Interview Questions +# Front-end Developer Interview Questions -This file contains a number of front-end interview questions that can be used when vetting potential candidates. It is by no means recommended to use every single question here on the same candidate (that would take hours). Choosing a few items from this list should help you vet the intended skills you require. +This repository contains a number of front-end interview questions that can be used when vetting potential candidates. It is by no means recommended to use every single question here on the same candidate (that would take hours). Choosing a few items from this list should help you vet the intended skills you require. **Note:** Keep in mind that many of these questions are open-ended and could lead to interesting discussions that tell you more about the person's capabilities than a straight answer would. +You can read more about this project & its history [here](https://h5bp.org/Front-end-Developer-Interview-Questions/about/). + ## Table of Contents - 1. [General Questions](questions/general-questions.md) - 1. [HTML Questions](questions/html-questions.md) - 1. [CSS Questions](questions/css-questions.md) - 1. [JS Questions](questions/javascript-questions.md) - 1. [Accessibility Questions](https://scottaohara.github.io/accessibility_interview_questions/) (external link) - 1. [Testing Questions](questions/testing-questions.md) - 1. [Performance Questions](questions/performance-questions.md) - 1. [Network Questions](questions/network-questions.md) - 1. [Coding Questions](questions/coding-questions.md) - 1. [Fun Questions](questions/fun-questions.md) + 1. [General Questions](src/questions/general-questions.md) + 2. [HTML Questions](src/questions/html-questions.md) + 3. [CSS Questions](src/questions/css-questions.md) + 4. [JS Questions](src/questions/javascript-questions.md) + 5. [Accessibility Questions](https://scottaohara.github.io/accessibility_interview_questions/) (external link) + 6. [Testing Questions](src/questions/testing-questions.md) + 7. [Performance Questions](src/questions/performance-questions.md) + 8. [Network Questions](src/questions/network-questions.md) + 9. [Coding Questions](src/questions/coding-questions.md) + 10. [Fun Questions](src/questions/fun-questions.md) ## Getting Involved 1. [Contributors](#contributors) - 1. [How to Contribute](https://github.com/h5bp/Front-end-Developer-Interview-Questions/blob/master/.github/CONTRIBUTING.md) - 1. [License](https://github.com/h5bp/Front-end-Developer-Interview-Questions/blob/master/LICENSE.md) - -## Contributors: + 2. [How to Contribute](https://github.com/h5bp/Front-end-Developer-Interview-Questions/blob/master/.github/CONTRIBUTING.md) + 3. [License](https://github.com/h5bp/Front-end-Developer-Interview-Questions/blob/master/LICENSE.md) -This project started in 2009 as a collaboration of [@paul_irish](https://twitter.com/paul_irish) [@bentruyman](https://twitter.com/bentruyman) [@cowboy](https://twitter.com/cowboy) [@ajpiano](https://twitter.com/ajpiano) [@SlexAxton](https://twitter.com/slexaxton) [@boazsender](https://twitter.com/boazsender) [@miketaylr](https://twitter.com/miketaylr) [@vladikoff](https://twitter.com/vladikoff) [@gf3](https://twitter.com/gf3) [@jon_neal](https://twitter.com/jon_neal) [@sambreed](https://twitter.com/sambreed) and [@iansym](https://twitter.com/iansym). -This project is currently maintained by: +The project is currently maintained by: -- [roblarsen](https://github.com/roblarsen) -- [cezaraugusto](https://github.com/cezaraugusto) -- [vvscode](https://github.com/vvscode) +- [@roblarsen](https://github.com/roblarsen) -It has since been active thanks to these [incredibly wonderful people](https://github.com/h5bp/Front-end-Developer-Interview-Questions/blob/master/CONTRIBUTORS.md). +## Contributors Feeling inspired? Check our [Contributing guide](https://github.com/h5bp/Front-end-Developer-Interview-Questions/blob/master/.github/CONTRIBUTING.md) to get started! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Darcy Clarke
Darcy Clarke

🤔 📖 🚇 👀 💬 📢 🚧
Bo-Yi Wu
Bo-Yi Wu

📖 👀
Nikolay Kostov
Nikolay Kostov

🌍
Jan Hancic
Jan Hancic

🌍
Rich Gilbank
Rich Gilbank

📖 👀
Mattias Wallander
Mattias Wallander

🌍
Songhun
Songhun

📖 🌍
Giulia Alfonsi
Giulia Alfonsi

🌍
Mike Myat Min Han
Mike Myat Min Han

🌍
SunLn
SunLn

🌍
Yi, Hangehee
Yi, Hangehee

🌍
shawnqiang
shawnqiang

🌍
Guilherme Pontes
Guilherme Pontes

🌍
lufeihaidao
lufeihaidao

🌍
Donald Zhan
Donald Zhan

🌍
Mina Markham
Mina Markham

📖
Paul Irish
Paul Irish

📖
Mathieu Hays
Mathieu Hays

🌍
Yong Yin
Yong Yin

📖
Dale Sande / @anotheruiguy
Dale Sande / @anotheruiguy

📖 🚇 👀
Marco Biedermann
Marco Biedermann

🚇
Victor Coulon
Victor Coulon

🌍 👀
Paulo Ávila
Paulo Ávila

📖
Ekrem Karaca
Ekrem Karaca

🌍
Achal Varma
Achal Varma

📖
Aurelio De Rosa
Aurelio De Rosa

📖
Min Zhao
Min Zhao

🌍
Cătălin Mariș
Cătălin Mariș

📖 🌍
Simon Owen
Simon Owen

📖
Maxim Khlobystov
Maxim Khlobystov

📖 👀
Sara
Sara

📖 🌍
Jason Hummel
Jason Hummel

📖
Kunal Sachdeva
Kunal Sachdeva

📖
AJ Jordan
AJ Jordan

📖
paulalexandru
paulalexandru

📖 🌍
dot
dot

🚇 🌍
Everardo Medina
Everardo Medina

🌍
Gaurav Nanda
Gaurav Nanda

📖
Andrii Malaman
Andrii Malaman

📖
Daniele Zanni
Daniele Zanni

🌍
Fernando Freitas Alves
Fernando Freitas Alves

🌍
John Wu
John Wu

📖
Pablo Nevares
Pablo Nevares

📖 🌍
Felipe Ramos
Felipe Ramos

📖
Arthur Verschaeve
Arthur Verschaeve

📖 👀 🌍
Richard Denton
Richard Denton

📖
Andrey Fadeyev
Andrey Fadeyev

🌍
rimager
rimager

📖
Rishabh Jain
Rishabh Jain

📖
Kaijun Chen
Kaijun Chen

🌍
Nithya
Nithya

📖
Erwan Jegouzo
Erwan Jegouzo

📖
Tieme van Veen
Tieme van Veen

📖
Hsun
Hsun

🌍
Adrien CHRETIEN
Adrien CHRETIEN

🌍
Alan Rodríguez
Alan Rodríguez

🌍
Adam Haris
Adam Haris

🌍
Toshimaru
Toshimaru

🌍
Shankar Cabus
Shankar Cabus

🌍
Ash
Ash

🌍
Hank Wang
Hank Wang

🌍
KILLHAPPY.
KILLHAPPY.

📖
Marko Švaljek
Marko Švaljek

🌍
Antonio Laguna
Antonio Laguna

📖 🌍
Mithun Dhiman
Mithun Dhiman

🌍
Kévin Rocher / @Darklg
Kévin Rocher / @Darklg

🌍
Dmitry Pashkevich
Dmitry Pashkevich

🌍
karmeljuk
karmeljuk

🌍
Dirk Schürjohann
Dirk Schürjohann

🌍
Björn Söderqvist
Björn Söderqvist

🌍
Nitin Hayaran
Nitin Hayaran

📖
Peter Galiba
Peter Galiba

📖
Neil Heinrich
Neil Heinrich

📖
Ohgyun Ahn
Ohgyun Ahn

🌍
nerdog
nerdog

🌍
Leo Picado
Leo Picado

🌍
Romain Dardour
Romain Dardour

🌍
Alex Seville
Alex Seville

📖
胡尐睿丶
胡尐睿丶

🌍
Vitalii Petrychuk
Vitalii Petrychuk

🌍
Tairraos
Tairraos

📖 🌍
Dmitrii Raev
Dmitrii Raev

🌍
Bartek
Bartek

🌍
Vitor Balocco
Vitor Balocco

📖
Jonathan Neal
Jonathan Neal

📖
Christoffer Lans
Christoffer Lans

🌍
Felipe Fialho
Felipe Fialho

🌍
Piotrek Mierzejewski
Piotrek Mierzejewski

🌍
Patrik Wibron
Patrik Wibron

🌍
Dmitry Vislov
Dmitry Vislov

🌍
Krzysztof Romanowski
Krzysztof Romanowski

📖
Albert Yu
Albert Yu

🌍
Sebastian Lara Menares
Sebastian Lara Menares

🌍
sunnylost
sunnylost

🌍
Daniel Yang
Daniel Yang

📖
Michael P. Pfeiffer
Michael P. Pfeiffer

🌍
Tyll Weiß
Tyll Weiß

🌍
Andrei Sebastian Cîmpean
Andrei Sebastian Cîmpean

🌍
Denis Sokolov
Denis Sokolov

📖
Harijs Deksnis
Harijs Deksnis

🌍
Rob Larsen
Rob Larsen

🤔 📖 🚇 👀 💬 📢 🚧
Cezar Augusto
Cezar Augusto

🤔 🚇 👀 🚧
Vasiliy Vanchuk
Vasiliy Vanchuk

🤔 👀 🚧
Vy Nguyen
Vy Nguyen

🖋
Pedro Chaparro
Pedro Chaparro

🌍
Harshvardhan Singh Sisodia
Harshvardhan Singh Sisodia

🌍
Gabriel R. Barbosa
Gabriel R. Barbosa

🌍
Talha Tahir
Talha Tahir

🖋
Subash Chandra Sapkota
Subash Chandra Sapkota

💻
Sarah Brown
Sarah Brown

🖋
Christian Oliff
Christian Oliff

💻 🚇 🚧
Anders Søgaard
Anders Søgaard

🖋
Italo A.
Italo A.

💻
Carlos Valente
Carlos Valente

🌍
Jorge Baumann
Jorge Baumann

🌍
Satyam Sundaram
Satyam Sundaram

🖋
Akash Negi
Akash Negi

🖋
Ilyes Tounsi
Ilyes Tounsi

💻
Swati Tripathi
Swati Tripathi

🌍
Aziz Dafa Putra
Aziz Dafa Putra

🌍
Abg4real
Abg4real

🖋
Natalie Pina
Natalie Pina

🖋
Bruce Tang
Bruce Tang

🖋
Vlad Tansky
Vlad Tansky

💻 🎨
Vojtech Jasny
Vojtech Jasny

🖋
Linda Ikechukwu
Linda Ikechukwu

🖋
Hui-Yu Lee
Hui-Yu Lee

🌍
Andrew Jones
Andrew Jones

🖋
Teesta Koch
Teesta Koch

📖
+ + + + + + +## License + +[Copyright (c) Contributors of the Front-end Developer Interview Questions](https://github.com/h5bp/Front-end-Developer-Interview-Questions/blob/master/LICENSE.md) diff --git a/Translations/German/README.md b/Translations/German/README.md deleted file mode 100644 index 854bb9259..000000000 --- a/Translations/German/README.md +++ /dev/null @@ -1,230 +0,0 @@ -#Fragen im Bewerbungsgespräch für Frontend-Entwickler - -@version 2.0.0 - -Dieses Repo enthält einige Fragen, die zur Einschätzung von geeigneten Frontend-Entwicklern innerhalb eines Bewerbungsgesprächs verwendet werden können. Es ist auf keinen Fall ratsam, einem Bewerber jede einzelne Frage zu stellen (das würde Stunden dauern). Es mag hilfreich sein, eine handvoll passender Fragen aus dieser Liste auszuwählen, um die Fähigkeiten abzuklopfen, die für den Job wichtig sind. - -[Rebecca Murphey](http://rmurphey.com/)'s [Baseline For Front-End Developers](http://rmurphey.com/blog/2012/04/12/a-baseline-for-front-end-developers/) (Englisch) ist ebenso eine nützliche Quelle zur Vorbereitung auf ein Bewerbungsgespräch. - -**Anmerkung:** Beachte bitte, dass viele dieser Fragen so offen gehalten sind, dass sie interessante Diskussionen auslösen können, in deren Verlauf du viel mehr über die Fähigkeiten eines Bewerbers erfahren kannst, als in kurzen, direkten Antworten. - -#### Initiatoren und Mitwirkende - -Ein Großteil der Fragen wurden aus einer Diskussion bei [oksoclap](http://oksoclap.com/) entnommen, die von [Paul Irish](http://paulirish.com) ([@paul_irish](http://twitter.com/paul_irish)) angestoßen wurde, und an der später folgende Personen beteiligt waren: - -* [@bentruyman](http://twitter.com/bentruyman) - http://bentruyman.com -* [@cowboy](http://twitter.com/cowboy) - http://benalman.com -* [@ajpiano](http://ajpiano) - http://ajpiano.com -* [@SlexAxton](http://twitter.com/slexaxton) - http://alexsexton.com -* [@boazsender](http://twitter.com/boazsender) - http://boazsender.com -* [@miketaylr](http://twitter.com/miketaylr) - http://miketaylr.com -* [@vladikoff](http://twitter.com/vladikoff) - http://vladfilippov.com -* [@gf3](http://twitter.com/gf3) - http://gf3.ca -* [@jon_neal](http://twitter.com/jon_neal) - http://twitter.com/jon_neal -* [@wookiehangover](http://twitter.com/wookiehangover) - http://wookiehangover.com -* [@darcy_clarke](http://twitter.com/darcy) - http://darcyclarke.me -* [@iansym](http://twitter.com) - -### Allgemeine Fragen: - -* Welche Versionsverwaltung hast du bisher verwendet (Git, SVN, etc.)? -* Wie sieht deine bevorzugte Entwicklungsumgebung aus? (Betriebssystem, Editor, Browser, Werkzeuge, etc.) -* Beschreibe bitte deinen Arbeitsablauf, wenn du eine Website entwickelst. -* Kannst du den Unterschied zwischen Progressive Enhancement und Graceful Degradation beschreiben? - * Extra-Punkte für die Beschreibung von Feature Detection -* Beschreibe bitte, was »Semantisches HTML« bedeutet. -* In welchem Browser entwickelst du vornehmlich und welche Entwicklerwerkzeuge verwendest du dabei? -* Wie würdest du die Ressourcen einer Website im Hinblick auf Performance optimieren? - * Verschiedene Lösungsansätze könnten sein: - * Zusammenfassen von Dateien - * Minifizierung - * Nutzung von CDN - * Caching - * etc. -* Warum ist es sinnvoll, Ressourcen über mehr als eine Domain abzufragen? - * Wie viele Quellen kann ein Browser von einer Domain parallel empfangen? -* Benenne drei Umstände, die das Laden einer Seite verlangsamen können (hinsichtlich der Wahrnehmung oder der tatsächlichen Ladezeit). -* Wie verhältst du dich, wenn du in ein neues Projekt kommst, in dem Tabs verwendet werden und du aber Leerzeichen verwendest? - * Vorschlagen, dass für das Projekt sowas wie EditorConfig (http://editorconfig.org) verwendet werden soll. - * Sich an die Vorgaben des Projekts halten. - * `issue :retab! command` -* Entwickle eine simple Slideshow-Seite. - * Bonuspunkte, wenn sie kein JS verwendet. -* Welche Werkzeuge nutzt du zum Testen der Performance deines Codes? - * JSPerf (http://jsperf.com/) - * Dromaeo (http://dromaeo.com/) - * etc. -* Wenn du eine Technologie in diesem Jahr meistern könntest, welche wäre das? -* Erkläre die Bedeutung von Standards und Standardisierungsorganisationen? -* Was ist FOUC? Wie vermeidest du FOUC? - -### HTML-spezifische Fragen: - -* Was tut ein `doctype` und wie viele von ihnen kannst du benennen? -* Was ist der Unterschied zwischen Standards-Modus und Quirks-Modus? -* Welche Einschränkungen gibt es beim Ausliefern von XHTML-Seiten? - * Gibt es Probleme, wenn Seiten als `application/xhtml+xml` ausgeliefert werden? -* Wie lieferst du eine Seite mit Inhalten in verschiedenen Sprachen aus? - * Vor welchen Dingen solltest du dich hüten, wenn du mehrsprachige Websites designst oder entwickelst? -* Darf man XHTML-Syntax in HTML5 verwenden? -* Wie verwendet man XML in HTML5? -* Wofür sind `data-`-Attribute nützlich? -* Was sind die Inhaltsmodelle in HTML4 und sind sie unterschiedlich in HTML5? -* Stelle dir HTML5 als eine offene Internetplattform vor. Was sind die Basiskomponenten von HTML5? -* Beschreibe die Unterschiede zwischen Cookies, sessionStorage und localStorage. - -### JS-spezifische Fragen: - -* Erkläre Event Delegation -* Erkläre, wie `this` in JavaScript funktioniert. -* Erkläre, wie prototypische Vererbung funktioniert. -* Wie gehst du vor beim Testen von JavaScript? -* AMD vs. CommonJS? -* Welche JavaScript-Bibliotheken hast du bisher benutzt? -* Hast du jemals den Sourcecode von Bibliotheken/Frameworks angeschaut, die du benutzt? -* Was ist ein hashtable? -* Was sind `undefined` und `undeclared` Variablen? -* Was ist eine Closure und wie/warum würdest du eine verwenden? - * Dein bevorzugtes Pattern, um sie zu generieren? Argyle (Nur geeignet für IIFEs). -* Was ist ein typischer Anwendungsfall für anonymous functions? -* Erkläre das »JavaScript Module Pattern« und wann du es verwenden würdest. - * Bonuspunkte, wenn sauberes Namespacing genannt wird. - * Und wenn deine Module ohne Namespace sind? -* Wie organisierst du deinen Code? (Module Pattern, klassische Vererbung?) -* Was ist der Unterschied zwischen host objects und native objects? -* Unterschied zwischen: -```javascript -function Person(){} var person = Person() var person = new Person() -``` -* Worin unterscheiden sich `.call` und `.apply`? -* Erkläre `Function.prototype.bind`. -* Wann optimierst du deinen Code? -* Kannst du erklären, wie Vererbung in JavaScript funktioniert? -* Wann verwendet man `document.write()`? - * Die meisten Werbebanner verwenden noch `document.write()`, obwohl es verpönt ist. -* Was sind die Unterschiede zwischen Feature Detection, Feature Inference und Verwendung des UA-Strings? -* Erkläre AJAX so detailiert wie möglich. -* Erkläre wie JSONP funktioniert (und warum es nicht wirklich AJAX ist). -* Hast du schonmal JavaScript-Templating verwendet? - * Wenn ja, welche Bibliotheken hast du verwendet (Mustache, Handlebars, etc.)? -* Erkläre »Hoisting«. -* Erkläre Event Bubbling. -* Was ist der Unterschied zwischen einem »Attribut« und einer »Property«? -* Warum ist es nicht sinnvoll, JavaScript-eigene Objekte zu erweitern? -* Warum ist es sinnvoll, Kernfunktionen zu erweitern? -* Unterschied zwischen document load event und document ready event? -* Was ist der Unterschied zwischen `==` und `===`? -* Erkläre, wie du einen Query-String-Parameter aus der URL des Browserfensters abfragst. -* Erkläre die same-origin policy und in welcher Form sie JavaScript betrifft. -* Erkläre Vererbungsmuster in JavaScript. -* Bringe dies zum Laufen: -```javascript -[1,2,3,4,5].duplicate(); // [1,2,3,4,5,1,2,3,4,5] -``` -* Beschreibe eine Strategie für Memoization (Vermeidung von Berechnungsschleifen) in JavaScript. -* Warum heißt es »Ternary expression« und worauf deutet das Wort »Ternary« hin? -* Was ist die Stelligkeit (Arity) einer Funktion? -* Was ist `"use strict";`? Was sind die Vor- und Nachteile bei der Verwendung? - -### JS-Codebeispiele: - -```javascript -~~3.14 -``` -Frage: Welcher Wert wird zurückgegeben? -**Antwort: 3** - -```javascript -"Draußen nur Kännchen".split("").reverse().join(""); -``` -Frage: Welcher Wert wird zurückgegeben? -**Antwort: "nehcnnäK run neßuarD"** - -```javascript -( window.foo || ( window.foo = "bar" ) ); -``` -Frage: Welchen Wert hat window.foo? -**Antwort: "bar"** -nur wenn window.foo false war, andernfalls behält es seinen Wert. - -```javascript -var foo = "Hello"; (function() { var bar = " World"; alert(foo + bar); })(); alert(foo + bar); -``` -Frage: Was ist das Ergebnis der beiden alerts oben? -**Antwort: "Hello World" & ReferenceError: bar is not defined** - -```javascript -var foo = []; -foo.push(1); -foo.push(2); -``` -Frage: Welchen Wert hat foo.length? -**Antwort: `2` - -```javascript -var foo = {}; -foo.bar = 'hello'; -``` -Frage: Welchen Wert hat foo.length? -**Antwort: `undefined` - -### jQuery-spezifische Fragen: - -* Erkläre »Chaining«. -* Erkläre »Deferreds«. -* Was sind ein paar jQuery-spezifische Optimierungen, die man vornehmen kann? -* Was macht `.end()`? -* Wie und warum würdest du einen Namespace für einen gebundenen Event handler verwenden? -* Benenne 4 verschiedene Werte, die man einer jQuery-Methode übergeben kann. - * Selector (string), HTML (string), Callback (function), HTMLElement, object, array, element array, jQuery Object etc. -* Was ist die effects (oder fx) queue? -* Was ist der Unterschied zwischen `.get()`, `[]` und `.eq()`? -* Was ist der Unterschied zwischen `.bind()`, `.live()`, und `.delegate()`? -* Was ist der Unterschied zwischen `$` und `$.fn`? Was ist überhaupt `$.fn`? -* Optimiere diesen Selektor: -```javascript -$(".foo div#bar:eq(0)") -``` -* Unterschied zwischen 'delegate()' und 'live()'? - -### CSS-spezifische Fragen: - -* Erkläre was ein »Reset«-CSS macht und wofür es nützlich ist. -* Beschreibe Floats und wie sie funktionieren. -* Was sind die verschiedenen Clear-Methoden und welche ist geeignet für welchen Kontext? -* Erkläre CSS-Sprites und wie du sie auf einer Seite oder Website implementieren würdest. -* Was sind deine bevorzugten Image-Replacement-Techniken und wann benutzt du welche davon? -* CSS-Hacks, per conditional eingebundene .css-Ressourcen oder… was sonst? -* Wie lieferst du Seiten für funktional beschränkte Browser aus? - * Welche Techniken/Prozesse verwendest du dafür? -* Was sind die verschiedenen Möglichkeiten, um Inhalte visuell auszublenden (und für Screenreader zugänglich zu machen)? -* Hast du schonmal ein Grid-System verwendet, und wenn ja, welches bevorzugst du? -* Hast du media queries oder mobile-spezifische Layouts/CSS verwendet/entwickelt? -* Bist du mit dem Styling von SVG vertraut? -* Wie optimierst du Websites für den Druck? -* Was sind ein paar Kniffe, um effizientes CSS zu schreiben? -* Verwendest du CSS-Präprozessoren (Sass, Compass, Stylus, LESS)? - * Wenn ja, beschreibe bitte, was du an den verwendeten magst oder nicht magst. -* Wie würdest du ein Webdesign umsetzen, das Nicht-Standard-Schriften verwendet? - * Webfonts (Dienste wie Google Webfonts, Typekit, etc.) -* Erkläre wie ein Browser entscheidet, welche Elemente von einem CSS-Selektor erfasst werden. - -### Optionale Spaßfragen: - -* Was ist das großartigste, was du je entwickelt hast, und worauf bist du am meisten stolz? -* Kennst du das Zeichen der HTML5-Gang? -* Bist du gerade oder warst du jemals auf einem Boot? -* Was sind die besten Eigenschaften der Entwicklerwerkzeuge, die du benutzt? -* Hast du irgendwelche Freizeitprojekte? Welcher Art? -* Erkläre die Bedeutung von »cornify«. -* Schreibe auf einen Zettel die Buchstaben A B C D E von oben nach unten. Jetzt sortiere diese in umgekehrter Abfolge, ohne eine Zeile Code zu schreiben. - * Warte einen Moment und schaue, ob sie den Zettel umdrehen. -* Pirat oder Ninja? - * Bonuspunkt, wenn es eine Kombi ist und begründet werden kann (+2 für Zombieaffenpiratenninja). -* Wenn nicht Web-Entwicklung, was würdest du dann tun? -* Wo ist Carmen Sandiego? - * Tipp: Die Antwort ist immer falsch. -* Was ist deine Lieblingsfunktion des Internet Explorers? -* Ergänze diesen Satz: Brendan Eich und Doug Crockford sind die __________ von JavaScript. -* jQuery: Eine großartige Bibliothek oder die großartigste Bibliothek von allen? Diskutiere. -* http://www.w3schools.com/ oder http://w3fools.com/ diff --git a/Translations/Portuguese/README.md b/Translations/Portuguese/README.md deleted file mode 100644 index ee2af72ac..000000000 --- a/Translations/Portuguese/README.md +++ /dev/null @@ -1,229 +0,0 @@ -# Questões para entrevista de profissionais Front-end - -Este repositório contém uma série de perguntas para entrevista de profissionais de front-end que podem ser usadas para avaliar os candidatos. Não é recomendado de maneira alguma usar todas as perguntas aqui no mesmo candidato (que levaria horas). A escolha de alguns itens dessa lista deverá ajudar a identificar as habilidades requeridas do candidato. - -O artigo [Baseline For Front-End Developers](http://rmurphey.com/blog/2012/04/12/a-baseline-for-front-end-developers/) de [Rebecca Murphey](http://rmurphey.com/) é também uma ótima fonte para ler antes de entrevistar um candidato. - -**Note:** Tenha em mente que muitas destas questões estão em aberto e poderia levar à discussões interessantes que dizem mais sobre as capacidades do candidato do que a resposta em si. - -## Tabela de Conteúdos - - 1. [Contribuintes Originais](#contributors) - 1. [Questões Gerais](#general) - 1. [Questões de HTML](#html) - 1. [Questões de CSS](#css) - 1. [Questões de JS](#js) - 1. [Questões de jQuery](#jquery) - 1. [Questões de Código](#jscode) - 1. [Questões Divertidas](#fun) - 1. [Outras Grandes Referências](#references) - 1. [Licença](#license) - -#### [⬆](#toc) Contribuintes originais: - -A maiorida das questões foram retiradas de um _thread_da [oksoclap](http://oksoclap.com/) originalmente criada por [Paul Irish](http://paulirish.com) ([@paul_irish](http://twitter.com/paul_irish)) e com a contribuição das seguintes pessoas: [@bentruyman](http://twitter.com/bentruyman) [@cowboy](http://twitter.com/cowboy) [@ajpiano](http://ajpiano) [@SlexAxton](http://twitter.com/slexaxton) [@boazsender](http://twitter.com/boazsender) [@miketaylr](http://twitter.com/miketaylr) [@vladikoff](http://twitter.com/vladikoff) [@gf3](http://twitter.com/gf3) [@jon_neal](http://twitter.com/jon_neal) [@sambreed](http://twitter.com/sambreed) [@iansym](http://twitter.com/iansym) - -#### [⬆](#toc) Questões Gerais: - -* O que você aprendeu ontem ou esta semana? -* O que te excita ou te interessa em programação/codificação? -* Quais as suas considerações sobre UI, Segurança, Perfomance, Aplicação, Manutenibilidade ou Tecnologia quando você desenvolve uma aplicação web ou site? -* Fale sobre seu ambiente de desenvolvimento preferido. (SO, Editor, Browser, Ferramentas, etc.) -* Com quais sistemas de controle de versão você é familiar? -* Descreva seu trabalho quando cria uma página web. -* Se você tivesse 5 diferentes arquivos de folhas de estilo, qual seria a melhor forma de integrá-los no site? - * Concatenação de arquivos -* Descreva a diferença entre _progressive enhancement_ and _graceful degradation_. - * Bônus se descrever ou mencionar detecção de recursos. -* Como você pode otimizar os recursos de um site? - * À procura de uma série de soluções que possam incluir: - * Concatenação de arquivo - * "Minificação" de arquivo - * Utilização de CDN - * Caching - * etc. -* Por que é melhor servir recursos de um site de múltiplos domínios? - * Quantos recursos um navegador pode baixar, simultaneamente, a partir de um determinado domínio? - * O que são *exceptions*? - * Bônus para identificação mobile como uma possível desvantagem (http://www.mobify.com/blog/domain-sharding-bad-news-mobile-performance/) - * Bônus para identicação de HTTP2 / SPDY como uma *exception* -* Fale 3 formas de diminuir o _page load_ (tempo de carregamento real e percebido) -* Se você caísse em um projeto que as pessoas usam _tabs_ para indentação e você usa espaços, o que você faria? - * Sugerir que o projeto utilize algo como EditorConfig (http://editorconfig.org) - * Se conformar com as convenções (ficar consistente) - * `issue :retab! command` -* Escreva uma página simples de _slideshow_ - * Bônus se não usar JS. -* Quais ferramentas você usa para testar a performance do seu código? - * Profiler, JSPerf, Dromaeo -* Se você pudesse dominar uma tecnologia deste ano, qual seria? -* Quais as diferenças entre *Long-Polling*, *Websockets* and *SSE*? -* Explique a importância de normas e órgãos normativos. -* O que é FOUC? Como você evita FOUC? -* Dê a sua melhor descrição do processo do momento que você digita a URL de um website até o final do carregamento da página na sua tela. - -#### [⬆](#toc) Questões de HTML: - -* O que um `doctype` faz? -* Qual a diferença entre _standards mode_ e _quirks mode_? -* Quais as limitações quando utilizamos páginas XHTML? - * Existe algum problema em utilizar páginas como `application/xhtml+xml`? -* Como você desenvolve uma página com conteúdo em múltiplos idiomas? - * Que tipo de coisas que você deve tomar cuidado ao desenvolver um website multi-língua? -* Quais são os benefícios em utilizar o atributo `data-`? -* Considere o HTML5 como uma plataforma web aberta. Quais são os blocos de construção de HTML5? -* Descreva a diferença entre cookies, sessionStorage e localStorage. -* Você pode explicar a diferença entre `GET` e `POST`? - -#### [⬆](#toc) Questões de CSS: - -* Qual é a diferença entre classes e IDs no CSS? -* Descreva o que é o arquivo "reset" do CSS e o que ele faz e como ele é útil. - * Bônus para identicação das desvantagens de um *reset* e/ou mencionar *normalize* como uma melhor alternativa. -* Descreva o que são Floats e como eles funcionam. -* Descreva z-index e como o empilhamento do contexto é formado. -* Quais são as várias técnicas para "clearing" e quais delas são apropriadas para qual contexto? -* Explique o que são CSS Sprites, e como você implementaria eles em um website. -* Quais são suas técnicas favoritas para troca de imagens e quais dela você usa. -* CSS Hacks, arquivo condicional .css, ou... alguma outra coisa? -* Como você desenvolve sua página para browsers com recursos limitados? - * Quais técnicas/processos você usa? -* Quais são as diferentes formas de visualizar conteúdo escondido (e como fazer para deixar eles disponíveis apenas para leitores de tela?) -* Você já utilizou algum sistema de grid, se sim, qual você prefere? -* Você já utilizou ou implementou media queries ou CSSs específicos para mobile? -* Qual sua familiaridade com SVG? -* Como você optimiza suas páginas para impressão? -* Quais são algumas técnicas para escrever um eficiente CSS? -* Você já utilizou pré-processadores CSS? (SASS, Compass, Stylus, LESS) - * Se sim, descreva o que você gostou e o que não gostou com eles. -* Como você implementaria um website que não utilizaria fontes padrões nos computadores? - * Webfonts (Serviços como: Google Webfonts, Typekit, etc.) -* Explique como um browser determina quais os elementos que correspondem a um seletor CSS. -* Explique o que você entende sobre *box model* e como você poderia dizer para o navegador en CSS para renderizar seu layout em diferentes *box models*. -* O que ```* { box-sizing: border-box; }``` faz? Quais são as vantagens? -* Liste quantas propriedades *display* você puder lembrar. -* Qual a diferença entre inline e inline-block? -* Qual a diferença entre elementos posicionados de forma relativa, fixa, absoluta e estática? -* Quais frameworks CSS você tem usado localmente ou em produção? (Bootstrap, PureCSS, Foundation, etc.) - * Se sim, quais deles? Se você puder, como você mudaria/melhoraria ele(s)? -* Você já brincou com as novas especificações de CSS Flexbox e CSS Grid? -* Como o design responsivo é diferente do design adaptavel? -* Você já trabalhou com gráficos retina? Se sim, quando e quais técnicas você usou? - -#### [⬆](#toc) Questões de JS: - -* Explique o evento _delegation_. -* Explique como `this` funciona em JavaScript. -* Explique como funciona herança prototipada. -* Como você testa seu JavaScript? -* AMD vs. CommonJS? -* Explique por que a seguinte função não funciona como uma IIFE: `function foo(){ }();`. - * O que precisa ser alterado para se tornar uma IIFE? -* Qual a diferença entre uma variável que `null`, `undefined` ou `undeclared`? - * Como você verificaria esses estados? -* O que é uma _closure_, e como/por que você usaria uma? -* Qual o caso de uso típico para funções anônimas? -* Como você organiza seu código? (module pattern, herança clássica?) -* Qual a diferença entre objetos herdados e objetos nativos? - Qual a diferença entre: `function Person(){}`, `var person = Person()`, e `var person = new Person()`? -* Qual a diferença entre `.call` e `.apply`? -* Explique `Function.prototype.bind`. -* Quando você otimiza seu código? -* Você pode explicar como funciona a herença no Javascript? -* Quando você deve usar o `document.write()`? - * A maioria dos anúncios de publicidade ainda utilizam `document.write()` embora seu uso não seja recomendado. -* Qual a diferença entre feature detection, feature inference, e o uso de UA string? -* Explique o que é AJAX o mais detalhadamente possível. -* Explique como o JSONP funciona (e como ele realmente não é AJAX). -* Você já utilizou templates com Javascript? - * Se sim, quais bibliotecas foram utilizadas? (Mustache.js, Handlebars, etc.) -* Explique o que é "hoisting". -* Descreva o que é event bubbling. -* Qual a diferença entre "atributo" e "propriedade"? -* Porque a extensão de objetos nativos não é uma boa ideia? -* Qual a diferença entre o evento document load e o evento document ready? -* Qual a diferença entre `==` e `===`? -* Explique como você pega um parâmetro na URL do browser. -* Explique a política de _same-origin_ em relação a Javascript. -* Faça isso funcionar: -```javascript -[1,2,3,4,5].duplicate(); // [1,2,3,4,5,1,2,3,4,5] -``` -* O que é um operador ternário, o que a palavra "ternário" indica/significa? -* O que é o `"use strict";`? Quais a vantagens e desvantagens de sua utilização? -* Crie um loop for que itere até `100` enquanto retorna **fizz** em múltiplos de `3`, **buzz** em múltiplos de `5` e **fizzbuzz** em múltiplos de `3` e `5`. - -#### [⬆](#toc) Questões de jQuery: - -* Explique "chaining". -* Explique "deferreds". -* Quais são algumas otimizações de jQuery que você pode implementar? -* O que `.end()` faz? -* Nomeie 4 valores diferentes que você pode passar para um método jQuery. - * Seletor (string), HTML (string), Callback (function), HTMLElement, object, array, elemento de array, jQuery Object, etc. -* Qual a diferença entre `.get()`, `[]`, e `.eq()`? - -#### [⬆](#toc) Questões de código: - -*Questão: Como você faria isso funcionar?* -```javascript -add(2, 5); // 7 -add(2)(5); // 7 -``` - - -*Questão: Qual valor é retornado da seguinte declaração?* -```javascript -"sou uma lasanha".split("").reverse().join(""); -``` -**Resposta: "ahnasal amu uos"** - - -*Questão: Qual é o valor de `window.foo`?* -```javascript -( window.foo || ( window.foo = "bar" ) ); -``` -**Resposta: "bar"** *(apenas se window.foo for falso, se não ele vai retornar o seu valor próprio).* - - -*Questão: Qual o retorno dos dois alerts abaixo?* -```javascript -var foo = "Hello"; -(function() { - var bar = " World"; - alert(foo + bar); -})(); -alert(foo + bar); -``` -**Resposta: "Hello World" & ReferenceError: bar is not defined** - - -*Questão: Qual o valor de `foo.length`?* -```javascript -var foo = []; -foo.push(1); -foo.push(2); -``` -**Resposta: `2`** - -#### [⬆](#toc) Questões Divertidas: - -* Qual a coisa mais legal que você desenvolveu recentement? Qual você ficou mais orgulhoso? -* Quais suas partes favoritas sobre as ferramentas de desenvolvimento que você usa? -* Você teve algum projeto para animais de estimação? Qual tipo? -* Qual sua feature favorita do Internet Explorer? - -#### [⬆](#toc) Outras Grandes Referências: - -* http://programmers.stackexchange.com/questions/46716/what-technical-details-should-a-programmer-of-a-web-application-consider-before -* http://www.nczonline.net/blog/2010/01/05/interviewing-the-front-end-engineer/ -* http://css-tricks.com/interview-questions-css/ -* http://davidshariff.com/quiz/ -* http://blog.sourcing.io/interview-questions -* http://www.toptal.com/javascript/interview-questions -* http://www.sitepoint.com/5-typical-javascript-interview-exercises/ -* http://www.sitepoint.com/5-javascript-interview-exercises/ - -#### [⬆](#toc) Licença: - -Lançado sobre a [Licença MIT](http://opensource.org/licenses/MIT). Veja o arquivo LICENSE para detalhes. diff --git a/config/eleventy.config.js b/config/eleventy.config.js new file mode 100644 index 000000000..b77b7b5ad --- /dev/null +++ b/config/eleventy.config.js @@ -0,0 +1,92 @@ +const { DateTime } = require('luxon') +const CleanCSS = require('clean-css') +const UglifyJS = require('uglify-es') +const htmlmin = require('html-minifier') +const { EleventyI18nPlugin } = require("@11ty/eleventy"); +const syntaxHighlight = require('@11ty/eleventy-plugin-syntaxhighlight') +const markdown = require('markdown-it')({ + html: true, + breaks: true, + linkify: true, + typographer: true +}).use(require('markdown-it-anchor'), { + level: [2], + permalink: true, + permalinkBefore: true, + permalinkSymbol: '' +}) + +module.exports = eleventyConfig => { + eleventyConfig.addPlugin(syntaxHighlight) + eleventyConfig.addPlugin(EleventyI18nPlugin, { + defaultLanguage: 'en', + }); + eleventyConfig.setLibrary('md', markdown) + + eleventyConfig.addFilter('cssmin', code => { + return new CleanCSS({}).minify(code).styles + }) + + eleventyConfig.addFilter('jsmin', (code) => { + let minified = UglifyJS.minify(code) + if (minified.error) { + console.error('UglifyJS error: ', minified.error) + return code + } + return minified.code + }) + + // Minify HTML output + eleventyConfig.addTransform('htmlmin', (content, outputPath) => { + if (outputPath.indexOf('.html') > -1) { + let minified = htmlmin.minify(content, { + useShortDoctype: true, + removeComments: true, + collapseWhitespace: true + }) + return minified + } + return content + }) + + eleventyConfig.addFilter('markdownify', str => { + return markdown.render(str) + }) + + eleventyConfig.addFilter('markdownify_inline', str => + markdown.renderInline(str) + ) + + eleventyConfig.addFilter('strip_html', str => { + return str.replace(/|||<.*?>/g, '') + }) + + // https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-date-string + eleventyConfig.addFilter('html_date_string', dateObj => { + return DateTime.fromJSDate(dateObj).toFormat('yyyy-LL-dd') + }) + + eleventyConfig.addFilter('github_permalink', str => { + return str.replace(/\/index.html/g, '.md') + }) + + eleventyConfig.addFilter('permalink', str => { + return str.replace(/\.html/g, '') + }) + + eleventyConfig.addPassthroughCopy('src/assets') + + return { + templateFormats: ['njk', 'md', 'html'], + dir: { + input: 'src', + includes: '_includes', + data: '_data', + output: '_site' + }, + markdownTemplateEngine: 'njk', + htmlTemplateEngine: 'njk', + dataTemplateEngine: 'njk', + passthroughFileCopy: true + } +} diff --git a/package-lock.json b/package-lock.json index 57d6aa08e..0718b4645 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,1066 +1,3175 @@ { "name": "front-end-developer-interview-questions", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 3, "requires": true, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "all-contributors-cli": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/all-contributors-cli/-/all-contributors-cli-4.10.1.tgz", - "integrity": "sha512-3gCRCbSovqKahPMa0cyuV6/NNTgcOC6WXGP1k2F3keKyZYyJ6gaMi8MKpO7+/csO31lx3+Azqx9xatubVWNqrA==", - "dev": true, - "requires": { - "async": "2.6.0", - "chalk": "2.3.0", - "inquirer": "4.0.2", - "lodash": "4.17.4", - "pify": "3.0.0", - "request": "2.83.0", - "yargs": "10.1.1" - } - }, - "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", - "dev": true + "packages": { + "": { + "name": "front-end-developer-interview-questions", + "version": "1.0.0", + "license": "MIT", + "devDependencies": { + "@11ty/eleventy": "^2.0.1", + "@11ty/eleventy-plugin-syntaxhighlight": "^5.0.0", + "all-contributors-cli": "^6.26.1", + "clean-css": "^5.3.3", + "html-minifier": "^4.0.0", + "luxon": "^3.4.4", + "markdown-it": "^14.1.0", + "markdown-it-anchor": "^8.6.7", + "uglify-es": "^3.3.9" + } }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "node_modules/@11ty/dependency-tree": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-2.0.1.tgz", + "integrity": "sha512-5R+DsT9LJ9tXiSQ4y+KLFppCkQyXhzAm1AIuBWE/sbU0hSXY5pkhoqQYEcPJQFg/nglL+wD55iv2j+7O96UAvg==", "dev": true }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "node_modules/@11ty/eleventy": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-2.0.1.tgz", + "integrity": "sha512-t8XVUbCJByhVEa1RzO0zS2QzbL3wPY8ot1yUw9noqiSHxJWUwv6jiwm1/MZDPTYtkZH2ZHvdQIRQ5/SjG9XmLw==", "dev": true, - "requires": { - "color-convert": "1.9.1" + "dependencies": { + "@11ty/dependency-tree": "^2.0.1", + "@11ty/eleventy-dev-server": "^1.0.4", + "@11ty/eleventy-utils": "^1.0.1", + "@11ty/lodash-custom": "^4.17.21", + "@iarna/toml": "^2.2.5", + "@sindresorhus/slugify": "^1.1.2", + "bcp-47-normalize": "^1.1.1", + "chokidar": "^3.5.3", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "dependency-graph": "^0.11.0", + "ejs": "^3.1.9", + "fast-glob": "^3.2.12", + "graceful-fs": "^4.2.11", + "gray-matter": "^4.0.3", + "hamljs": "^0.6.2", + "handlebars": "^4.7.7", + "is-glob": "^4.0.3", + "iso-639-1": "^2.1.15", + "kleur": "^4.1.5", + "liquidjs": "^10.7.0", + "luxon": "^3.3.0", + "markdown-it": "^13.0.1", + "micromatch": "^4.0.5", + "minimist": "^1.2.8", + "moo": "^0.5.2", + "multimatch": "^5.0.0", + "mustache": "^4.2.0", + "normalize-path": "^3.0.0", + "nunjucks": "^3.2.3", + "path-to-regexp": "^6.2.1", + "please-upgrade-node": "^3.2.0", + "posthtml": "^0.16.6", + "posthtml-urls": "^1.0.0", + "pug": "^3.0.2", + "recursive-copy": "^2.0.14", + "semver": "^7.3.8", + "slugify": "^1.6.6" + }, + "bin": { + "eleventy": "cmd.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" } }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true + "node_modules/@11ty/eleventy-dev-server": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-dev-server/-/eleventy-dev-server-1.0.4.tgz", + "integrity": "sha512-qVBmV2G1KF/0o5B/3fITlrrDHy4bONUI2YuN3/WJ3BNw4NU1d/we8XhKrlgq13nNvHoBx5czYp3LZt8qRG53Fg==", + "dev": true, + "dependencies": { + "@11ty/eleventy-utils": "^1.0.1", + "chokidar": "^3.5.3", + "debug": "^4.3.4", + "dev-ip": "^1.0.1", + "finalhandler": "^1.2.0", + "mime": "^3.0.0", + "minimist": "^1.2.8", + "morphdom": "^2.7.0", + "please-upgrade-node": "^3.2.0", + "ssri": "^8.0.1", + "ws": "^8.13.0" + }, + "bin": { + "eleventy-dev-server": "cmd.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "node_modules/@11ty/eleventy-plugin-syntaxhighlight": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-syntaxhighlight/-/eleventy-plugin-syntaxhighlight-5.0.0.tgz", + "integrity": "sha512-y9BUmP1GofmbJgxM1+ky/UpFCpD8JSOeLeKItUs0WApgnrHk9haHziW7lS86lbArX5SiCVo4zTTw9x53gvRCaA==", + "dev": true, + "dependencies": { + "prismjs": "^1.29.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@11ty/eleventy-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-1.0.1.tgz", + "integrity": "sha512-HPpCTz4PzudcQU+i+x6GSNHVqgnvRhnVYg5dLKaAoRWLN966odAGsBxKSyhF8i1MdlOPtsytYb2AGWP7jISC5w==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@11ty/eleventy/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "node_modules/@11ty/eleventy/node_modules/linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/@11ty/eleventy/node_modules/markdown-it": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.2.tgz", + "integrity": "sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==", "dev": true, - "requires": { - "lodash": "4.17.4" + "dependencies": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" } }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "node_modules/@11ty/eleventy/node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "node_modules/@11ty/eleventy/node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", "dev": true }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "node_modules/@11ty/lodash-custom": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@11ty/lodash-custom/-/lodash-custom-4.17.21.tgz", + "integrity": "sha512-Mqt6im1xpb1Ykn3nbcCovWXK3ggywRJa+IXIdoz4wIIK+cvozADH63lexcuPpGS/gJ6/m2JxyyXDyupkMr5DHw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "node_modules/@babel/parser": { + "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.11.tgz", + "integrity": "sha512-PhuoqeHoO9fc4ffMEVk4qb/w/s2iOSWohvbHxLtxui0eBg3Lg5gN1U8wp1V1u61hOWkPQJJyJzGH6Y+grwkq8Q==", "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" } }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "node_modules/@babel/runtime": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", + "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", "dev": true, - "requires": { - "hoek": "4.2.0" + "dependencies": { + "regenerator-runtime": "^0.13.4" } }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "node_modules/@babel/types": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", + "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", "dev": true }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "requires": { - "restore-cursor": "2.0.0" + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true + "node_modules/@sindresorhus/slugify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz", + "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==", + "dev": true, + "dependencies": { + "@sindresorhus/transliterate": "^0.1.1", + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "cliui": { + "node_modules/@sindresorhus/slugify/node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", - "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sindresorhus/transliterate": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", + "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0", + "lodash.deburr": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==", + "dev": true, + "peer": true + }, + "node_modules/@types/markdown-it": { + "version": "12.2.3", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", + "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", "dev": true, - "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" + "peer": true, + "dependencies": { + "@types/linkify-it": "*", + "@types/mdurl": "*" } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "node_modules/@types/mdurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", + "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", + "dev": true, + "peer": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", "dev": true }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "node_modules/a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", "dev": true }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/all-contributors-cli": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/all-contributors-cli/-/all-contributors-cli-6.26.1.tgz", + "integrity": "sha512-Ymgo3FJACRBEd1eE653FD1J/+uD0kqpUNYfr9zNC1Qby0LgbhDBzB3EF6uvkAbYpycStkk41J+0oo37Lc02yEw==", "dev": true, - "requires": { - "color-name": "1.1.3" + "dependencies": { + "@babel/runtime": "^7.7.6", + "async": "^3.1.0", + "chalk": "^4.0.0", + "didyoumean": "^1.2.1", + "inquirer": "^7.3.3", + "json-fixer": "^1.6.8", + "lodash": "^4.11.2", + "node-fetch": "^2.6.0", + "pify": "^5.0.0", + "yargs": "^15.0.1" + }, + "bin": { + "all-contributors": "dist/cli.js" + }, + "engines": { + "node": ">=4" + }, + "optionalDependencies": { + "prettier": "^2" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "node_modules/all-contributors-cli/node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "requires": { - "delayed-stream": "1.0.0" + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "cryptiles": { + "node_modules/any-promise": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-0.1.0.tgz", + "integrity": "sha512-lqzY9o+BbeGHRCOyxQkt/Tgvz0IZhTmQiA+LxQW8wSNpcTbj8K+0cZiSEvbpNZZP9/11Gy7dnLO3GNWUXO4d1g==", + "dev": true + }, + "node_modules/anymatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, - "requires": { - "boom": "5.2.0" + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "dev": true, - "requires": { - "hoek": "4.2.0" - } - } + "sprintf-js": "~1.0.2" } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", "dev": true, - "requires": { - "assert-plus": "1.0.0" + "engines": { + "node": ">=8" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", "dev": true }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "node_modules/assert-never": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", + "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==", "dev": true }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "node_modules/async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true + }, + "node_modules/babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" + "dependencies": { + "@babel/types": "^7.9.6" + }, + "engines": { + "node": ">= 10.0.0" } }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "node_modules/bcp-47": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-1.0.8.tgz", + "integrity": "sha512-Y9y1QNBBtYtv7hcmoX0tR+tUNSFZGZ6OL6vKPObq8BbOhkCoyayF6ogfLTgAli/KuAEbsYHYUNq2AQuY6IuLag==", "dev": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "node_modules/bcp-47-match": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-1.0.3.tgz", + "integrity": "sha512-LggQ4YTdjWQSKELZF5JwchnBa1u0pIQSZf5lSdOHEdbVP55h0qICA/FUp3+W99q0xqxYa1ZQizTUH87gecII5w==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/bcp-47-normalize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bcp-47-normalize/-/bcp-47-normalize-1.1.1.tgz", + "integrity": "sha512-jWZ1Jdu3cs0EZdfCkS0UE9Gg01PtxnChjEBySeB+Zo6nkqtFfnvtoQQgP1qU1Oo4qgJgxhTI6Sf9y/pZIhPs0A==", + "dev": true, + "dependencies": { + "bcp-47": "^1.0.0", + "bcp-47-match": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", + "dev": true, + "dependencies": { + "is-regex": "^1.0.3" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, - "external-editor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", - "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, - "requires": { - "chardet": "0.4.2", - "iconv-lite": "0.4.19", - "tmp": "0.0.33" + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "node_modules/commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", "dev": true }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "node_modules/constantinople": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", + "dev": true, + "bin": { + "dev-ip": "lib/dev-ip.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.1.tgz", + "integrity": "sha1-6S7f2tplN9SE1zwBcv0eugxJdv8=", + "dev": true + }, + "node_modules/doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", + "dev": true + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dev": true, + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/hamljs": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/hamljs/-/hamljs-0.6.2.tgz", + "integrity": "sha1-e3EWz22+cnjkKz9u+HJaM+F3yOM=", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-minifier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz", + "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==", + "dev": true, + "dependencies": { + "camel-case": "^3.0.0", + "clean-css": "^4.2.1", + "commander": "^2.19.0", + "he": "^1.2.0", + "param-case": "^2.1.1", + "relateurl": "^0.2.7", + "uglify-js": "^3.5.1" + }, + "bin": { + "html-minifier": "cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/html-minifier/node_modules/clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + } + }, + "node_modules/http-equiv-refresh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-equiv-refresh/-/http-equiv-refresh-1.0.0.tgz", + "integrity": "sha512-TScO04soylRN9i/QdOdgZyhydXg9z6XdaGzEyOgDKycePeDeTT4KvigjBcI+tgfTlieLWauGORMq5F1eIDa+1w==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/inquirer/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-expression": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "object-assign": "^4.1.1" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-json": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", + "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/iso-639-1": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/iso-639-1/-/iso-639-1-2.1.15.tgz", + "integrity": "sha512-7c7mBznZu2ktfvyT582E2msM+Udc1EjOyhVRE/0ZsjD9LBtWSm23h3PtiRh2a35XoUsTQQjJXaJzuLjXsOdFDg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-fixer": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/json-fixer/-/json-fixer-1.6.8.tgz", + "integrity": "sha512-VUI3GPVLpM/nYmM1tSuvd3kh36eWvoNO1SFveVQf5k9QJI3kfaoOPVbN7WbpRfvZqa2BFySyVuqSs57laYfIDQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "chalk": "^4.1.0", + "pegjs": "^0.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", + "dev": true, + "dependencies": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "node_modules/junk": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz", + "integrity": "sha1-h75jSIZJy9ym9Tqzm+yczSNH9ZI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/liquidjs": { + "version": "10.7.1", + "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.7.1.tgz", + "integrity": "sha512-tl9nWBZrrKcC61yfih3lbtSjAn+k7e0HhwydPjQKI4+metLk927HYBfXfbf6yrCcYjnBnLzk8xMjUF83yknAQQ==", + "dev": true, + "dependencies": { + "commander": "^10.0.0" + }, + "bin": { + "liquid": "bin/liquid.js", + "liquidjs": "bin/liquid.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/liquidjs" + } + }, + "node_modules/liquidjs/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/list-to-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/list-to-array/-/list-to-array-1.1.0.tgz", + "integrity": "sha512-+dAZZ2mM+/m+vY9ezfoueVvrgnHIGi5FvgSymbIgJOFwiznWyA59mav95L+Mc6xPtL3s9gm5eNTlNtxJLbNM1g==", + "dev": true + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.deburr": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", + "integrity": "sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s=", + "dev": true + }, + "node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/luxon": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", + "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-it-anchor": { + "version": "8.6.7", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", + "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", + "dev": true, + "peerDependencies": { + "@types/markdown-it": "*", + "markdown-it": "*" + } + }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/maximatch": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", + "integrity": "sha1-hs2NawTJ8wfAWmuUGZBtA2D7E6I=", + "dev": true, + "dependencies": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/maximatch/node_modules/array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/maximatch/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/maximatch/node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/moo": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", + "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", + "dev": true + }, + "node_modules/morphdom": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/morphdom/-/morphdom-2.7.0.tgz", + "integrity": "sha512-8L8DwbdjjWwM/aNqj7BSoSn4G7SQLNiDcxCnMWbf506jojR6lNQ5YOmQqXEIE8u3C492UlkN4d0hQwz97+M1oQ==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "dev": true, + "bin": { + "mustache": "bin/mustache" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "dependencies": { + "lower-case": "^1.1.1" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nunjucks": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.3.tgz", + "integrity": "sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ==", + "dev": true, + "dependencies": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^5.1.0" + }, + "bin": { + "nunjucks-precompile": "bin/precompile" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "chokidar": "^3.3.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/nunjucks/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "dependencies": { + "no-case": "^2.2.0" + } + }, + "node_modules/parse-srcset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", + "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "dev": true + }, + "node_modules/pegjs": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz", + "integrity": "sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0=", + "dev": true, + "bin": { + "pegjs": "bin/pegjs" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "dependencies": { + "semver-compare": "^1.0.0" + } + }, + "node_modules/posthtml": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", + "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", + "dev": true, + "dependencies": { + "posthtml-parser": "^0.11.0", + "posthtml-render": "^3.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/posthtml-parser": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", + "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", + "dev": true, + "dependencies": { + "htmlparser2": "^7.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/posthtml-render": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", + "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", + "dev": true, + "dependencies": { + "is-json": "^2.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/posthtml-urls": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/posthtml-urls/-/posthtml-urls-1.0.0.tgz", + "integrity": "sha512-CMJ0L009sGQVUuYM/g6WJdscsq6ooAwhUuF6CDlYPMLxKp2rmCYVebEU+wZGxnQstGJhZPMvXsRhtqekILd5/w==", + "dev": true, + "dependencies": { + "http-equiv-refresh": "^1.0.0", + "list-to-array": "^1.1.0", + "parse-srcset": "^1.0.2", + "promise-each": "^2.2.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/promise-each": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/promise-each/-/promise-each-2.2.0.tgz", + "integrity": "sha512-67roqt1k3QDA41DZ8xi0V+rF3GoaMiX7QilbXu0vXimut+9RcKBNZ/t60xCRgcsihmNUsEjh48xLfNqOrKblUg==", + "dev": true, + "dependencies": { + "any-promise": "^0.1.0" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "node_modules/pug": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz", + "integrity": "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==", + "dev": true, + "dependencies": { + "pug-code-gen": "^3.0.3", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.1", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.1", + "pug-strip-comments": "^2.0.0" + } + }, + "node_modules/pug-attrs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", + "dev": true, + "dependencies": { + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" + } + }, + "node_modules/pug-code-gen": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.3.tgz", + "integrity": "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==", + "dev": true, + "dependencies": { + "constantinople": "^4.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.1.0", + "pug-runtime": "^3.0.1", + "void-elements": "^3.1.0", + "with": "^7.0.0" + } + }, + "node_modules/pug-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.1.0.tgz", + "integrity": "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==", + "dev": true + }, + "node_modules/pug-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", + "dev": true, + "dependencies": { + "constantinople": "^4.0.1", + "jstransformer": "1.0.0", + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" + } + }, + "node_modules/pug-lexer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", + "dev": true, + "dependencies": { + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" + } + }, + "node_modules/pug-linker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", "dev": true, - "requires": { - "escape-string-regexp": "1.0.5" + "dependencies": { + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" } }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "node_modules/pug-load": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", "dev": true, - "requires": { - "locate-path": "2.0.0" + "dependencies": { + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" } }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", - "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "node_modules/pug-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", "dev": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "dependencies": { + "pug-error": "^2.0.0", + "token-stream": "1.0.0" } }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "node_modules/pug-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", "dev": true }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "node_modules/pug-strip-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", "dev": true, - "requires": { - "assert-plus": "1.0.0" + "dependencies": { + "pug-error": "^2.0.0" } }, - "har-schema": { + "node_modules/pug-walk": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", "dev": true }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", "dev": true, - "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "engines": { + "node": ">=6" } }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.0", - "sntp": "2.1.0" + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "hoek": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", - "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", - "dev": true - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - }, - "inquirer": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-4.0.2.tgz", - "integrity": "sha512-+f3qDNeZpkhFJ61NBA9jXDrGGhoQuqfEum9A681c9oHoIbGgVqjogKynjB/vNVP+nVu9w3FbFQ35c0ibU0MaIQ==", - "dev": true, - "requires": { - "ansi-escapes": "3.0.0", - "chalk": "2.3.0", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.1.0", - "figures": "2.0.0", - "lodash": "4.17.4", - "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true + "node_modules/recursive-copy": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/recursive-copy/-/recursive-copy-2.0.14.tgz", + "integrity": "sha512-K8WNY8f8naTpfbA+RaXmkaQuD1IeW9EgNEfyGxSqqTQukpVtoOKros9jUqbpEsSw59YOmpd8nCBgtqJZy5nvog==", + "dev": true, + "dependencies": { + "errno": "^0.1.2", + "graceful-fs": "^4.1.4", + "junk": "^1.0.1", + "maximatch": "^0.1.0", + "mkdirp": "^0.5.1", + "pify": "^2.3.0", + "promise": "^7.0.1", + "rimraf": "^2.7.1", + "slash": "^1.0.0" + } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "node_modules/recursive-copy/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "node_modules/regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true, + "engines": { + "node": ">= 0.10" + } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "isexe": { + "node_modules/require-main-filename": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" } }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "requires": { - "invert-kv": "1.0.0" + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "engines": { + "node": ">=0.12.0" } }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "requires": { - "mimic-fn": "1.1.0" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" } }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", "dev": true, - "requires": { - "mime-db": "1.30.0" + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" } }, - "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", - "dev": true - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "node_modules/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", "dev": true, - "requires": { - "path-key": "2.0.1" + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", "dev": true }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "requires": { - "mimic-fn": "1.1.0" + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "engines": { + "node": ">=8" } }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, - "p-finally": { + "node_modules/slash": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "p-limit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "node_modules/slugify": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", "dev": true, - "requires": { - "p-try": "1.0.0" + "engines": { + "node": ">=8.0.0" } }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "requires": { - "p-limit": "1.2.0" + "engines": { + "node": ">=0.10.0" } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } }, - "path-key": { + "node_modules/statuses": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", - "dev": true - }, - "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", - "dev": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.1", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } }, - "restore-cursor": { + "node_modules/to-fast-properties": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true, - "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "engines": { + "node": ">=4" } }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "requires": { - "is-promise": "2.1.0" + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "node_modules/token-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=", + "dev": true + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", "dev": true }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "requires": { - "rx-lite": "4.0.8" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", "dev": true }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "node_modules/uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "deprecated": "support for ECMAScript is superseded by `uglify-js` as of v3.13.0", + "dev": true, + "dependencies": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uglify-es/node_modules/commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", "dev": true }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "node_modules/uglify-js": { + "version": "3.13.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.2.tgz", + "integrity": "sha512-SbMu4D2Vo95LMC/MetNaso1194M1htEA+JrqE9Hk+G2DhI+itfS9TRu9ZKeCahLDNa/J3n4MqUJ/fOHMzQpRWw==", "dev": true, - "requires": { - "shebang-regex": "1.0.0" + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" } }, - "shebang-regex": { + "node_modules/unpipe": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "node_modules/upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", "dev": true }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", "dev": true, - "requires": { - "hoek": "4.2.0" + "engines": { + "node": ">=0.10.0" } }, - "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", "dev": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "node_modules/with": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", "dev": true, - "requires": { - "ansi-regex": "3.0.0" + "dependencies": { + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" + }, + "engines": { + "node": ">= 10.0.0" } }, - "strip-eof": { + "node_modules/wordwrap": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, - "requires": { - "has-flag": "2.0.0" + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "node_modules/y18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", "dev": true }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, - "requires": { - "os-tmpdir": "1.0.2" + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" } }, - "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "node_modules/yargs/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, - "requires": { - "punycode": "1.4.1" + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "requires": { - "safe-buffer": "5.1.1" + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "optional": true - }, - "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "dev": true + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "node_modules/yargs/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "requires": { - "isexe": "2.0.0" + "engines": { + "node": ">=8" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "node_modules/yargs/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - } + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" } }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yargs": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.1.tgz", - "integrity": "sha512-7uRL1HZdCbc1QTP+X8mehOPuCYKC/XTaqAPj7gABLfTt6pgLyVRn3QVte4qhtilZouWCvqd1kipgMKl5tKsFiw==", - "dev": true, - "requires": { - "cliui": "4.0.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "8.1.0" - } - }, - "yargs-parser": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", - "dev": true, - "requires": { - "camelcase": "4.1.0" + "node_modules/yargs/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" } } } diff --git a/package.json b/package.json index d9cb93a22..9e7326018 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,10 @@ "version": "1.0.0", "description": "A list of helpful front-end related questions you can use to interview potential candidates, test yourself or completely ignore.", "scripts": { + "build": "eleventy --config=config/eleventy.config.js --pathprefix='Front-end-Developer-Interview-Questions/'", "contributors:add": "all-contributors add", - "contributors:generate": "all-contributors generate" + "contributors:generate": "all-contributors generate && cp .all-contributorsrc ./src/_data/contributors.json", + "start": "eleventy --config=config/eleventy.config.js --serve --port 9090 --quiet" }, "repository": { "type": "git", @@ -19,12 +21,33 @@ "questions" ], "author": "H5BP", + "contributors": [ + { + "name": "Rob Larsen", + "email": "rob@htmlcssjavascript.com" + }, + { + "name": "Darcy Clarke", + "email": "darcy@darcyclarke.me" + } + ], "license": "MIT", "bugs": { "url": "https://github.com/h5bp/Front-end-Developer-Interview-Questions/issues" }, "homepage": "https://github.com/h5bp/Front-end-Developer-Interview-Questions#readme", "devDependencies": { - "all-contributors-cli": "^4.10.1" + "@11ty/eleventy": "^2.0.1", + "@11ty/eleventy-plugin-syntaxhighlight": "^5.0.0", + "all-contributors-cli": "^6.26.1", + "clean-css": "^5.3.3", + "html-minifier": "^4.0.0", + "luxon": "^3.4.4", + "markdown-it": "^14.1.0", + "markdown-it-anchor": "^8.6.7", + "uglify-es": "^3.3.9" + }, + "resolutions": { + "axios": "0.18.1" } } diff --git a/questions/coding-questions.md b/questions/coding-questions.md deleted file mode 100644 index 2d305f42f..000000000 --- a/questions/coding-questions.md +++ /dev/null @@ -1,78 +0,0 @@ -# Coding Questions: - -*Question: What is the value of `foo`?* -```javascript -var foo = 10 + '20'; -``` - -*Question: What will be the output of the code below?* -```javascript -console.log(0.1 + 0.2 == 0.3); -``` - -*Question: How would you make this work?* -```javascript -add(2, 5); // 7 -add(2)(5); // 7 -``` - -*Question: What value is returned from the following statement?* -```javascript -"i'm a lasagna hog".split("").reverse().join(""); -``` - -*Question: What is the value of `window.foo`?* -```javascript -( window.foo || ( window.foo = "bar" ) ); -``` - -*Question: What is the outcome of the two alerts below?* -```javascript -var foo = "Hello"; -(function() { - var bar = " World"; - alert(foo + bar); -})(); -alert(foo + bar); -``` - -*Question: What is the value of `foo.length`?* -```javascript -var foo = []; -foo.push(1); -foo.push(2); -``` - -*Question: What is the value of `foo.x`?* -```javascript -var foo = {n: 1}; -var bar = foo; -foo.x = foo = {n: 2}; -``` - -*Question: What does the following code print?* -```javascript -console.log('one'); -setTimeout(function() { - console.log('two'); -}, 0); -Promise.resolve().then(function() { - console.log('three'); -}) -console.log('four'); -``` - -*Question: What is the difference between these four promises?* -```javascript -doSomething().then(function () { - return doSomethingElse(); -}); - -doSomething().then(function () { - doSomethingElse(); -}); - -doSomething().then(doSomethingElse()); - -doSomething().then(doSomethingElse); -``` diff --git a/questions/fun-questions.md b/questions/fun-questions.md deleted file mode 100644 index 85ba3671d..000000000 --- a/questions/fun-questions.md +++ /dev/null @@ -1,8 +0,0 @@ -# Fun Questions: - -* What's a cool project that you've recently worked on? -* What are some things you like about the developer tools you use? -* Who inspires you in the front-end community? -* Do you have any pet projects? What kind? -* What's your favorite feature of Internet Explorer? -* How do you like your coffee? diff --git a/src/404.njk b/src/404.njk new file mode 100644 index 000000000..6b230e3ec --- /dev/null +++ b/src/404.njk @@ -0,0 +1,16 @@ +--- +title: 404 - Page not found +description: Think this is wrong? [Open an issue](https://github.com/h5bp/Front-end-Developer-Interview-Questions/issues/new) +permalink: /404.html +excludeFromSitemap: true +--- +{% extends 'layouts/page.njk' %} + +{% set content %} +{% endset %} + +{% block main %} +
+ {{ content | markdownify | safe }} +
+{% endblock %} diff --git a/src/_data/contributors.json b/src/_data/contributors.json new file mode 100644 index 000000000..ae1794014 --- /dev/null +++ b/src/_data/contributors.json @@ -0,0 +1,1212 @@ +{ + "projectName": "Front-end-Developer-Interview-Questions", + "projectOwner": "h5bp", + "files": [ + "CONTRIBUTORS.md", + "README.md" + ], + "imageSize": 120, + "commit": true, + "contributorsPerLine": 6, + "contributors": [ + { + "login": "darcyclarke", + "name": "Darcy Clarke", + "avatar_url": "https://avatars2.githubusercontent.com/u/459713?v=4", + "profile": "http://darcyclarke.me/", + "contributions": [ + "ideas", + "doc", + "infra", + "review", + "question", + "talk", + "maintenance" + ] + }, + { + "login": "appleboy", + "name": "Bo-Yi Wu", + "avatar_url": "https://avatars0.githubusercontent.com/u/21979?v=4", + "profile": "http://about.me/appleboy", + "contributions": [ + "doc", + "review" + ] + }, + { + "login": "NikolayIT", + "name": "Nikolay Kostov", + "avatar_url": "https://avatars1.githubusercontent.com/u/3106986?v=4", + "profile": "http://nikolay.it/", + "contributions": [ + "translation" + ] + }, + { + "login": "janhancic", + "name": "Jan Hancic", + "avatar_url": "https://avatars3.githubusercontent.com/u/356488?v=4", + "profile": "http://hancic.info/", + "contributions": [ + "translation" + ] + }, + { + "login": "richgilbank", + "name": "Rich Gilbank", + "avatar_url": "https://avatars2.githubusercontent.com/u/1245284?v=4", + "profile": "http://twitter.com/richgilbank", + "contributions": [ + "doc", + "review" + ] + }, + { + "login": "mattiasw", + "name": "Mattias Wallander", + "avatar_url": "https://avatars0.githubusercontent.com/u/564615?v=4", + "profile": "https://github.com/mattiasw", + "contributions": [ + "translation" + ] + }, + { + "login": "Songhun", + "name": "Songhun", + "avatar_url": "https://avatars0.githubusercontent.com/u/760451?v=4", + "profile": "http://gplus.to/songhun", + "contributions": [ + "doc", + "translation" + ] + }, + { + "login": "electricg", + "name": "Giulia Alfonsi", + "avatar_url": "https://avatars3.githubusercontent.com/u/458523?v=4", + "profile": "http://giugee.com/portfolio", + "contributions": [ + "translation" + ] + }, + { + "login": "mmhan", + "name": "Mike Myat Min Han", + "avatar_url": "https://avatars0.githubusercontent.com/u/301672?v=4", + "profile": "http://mmhan.net/", + "contributions": [ + "translation" + ] + }, + { + "login": "SunLn", + "name": "SunLn", + "avatar_url": "https://avatars0.githubusercontent.com/u/1861976?v=4", + "profile": "http://www.zhihu.com/people/deng-chen-hua", + "contributions": [ + "translation" + ] + }, + { + "login": "javarouka", + "name": "Yi, Hangehee", + "avatar_url": "https://avatars2.githubusercontent.com/u/1438503?v=4", + "profile": "http://javarouka.github.com/", + "contributions": [ + "translation" + ] + }, + { + "login": "shawnqiang", + "name": "shawnqiang", + "avatar_url": "https://avatars1.githubusercontent.com/u/284017?v=4", + "profile": "https://github.com/shawnqiang", + "contributions": [ + "translation" + ] + }, + { + "login": "guilhermepontes", + "name": "Guilherme Pontes", + "avatar_url": "https://avatars2.githubusercontent.com/u/2065325?v=4", + "profile": "http://guilhermepontes.com/", + "contributions": [ + "translation" + ] + }, + { + "login": "lufeihaidao", + "name": "lufeihaidao", + "avatar_url": "https://avatars3.githubusercontent.com/u/1731864?v=4", + "profile": "https://github.com/lufeihaidao", + "contributions": [ + "translation" + ] + }, + { + "login": "dz1984", + "name": "Donald Zhan", + "avatar_url": "https://avatars2.githubusercontent.com/u/3182876?v=4", + "profile": "http://about.me/DonaldZhan", + "contributions": [ + "translation" + ] + }, + { + "login": "minamarkham", + "name": "Mina Markham", + "avatar_url": "https://avatars1.githubusercontent.com/u/876210?v=4", + "profile": "http://mina.codes/", + "contributions": [ + "doc" + ] + }, + { + "login": "paulirish", + "name": "Paul Irish", + "avatar_url": "https://avatars0.githubusercontent.com/u/39191?v=4", + "profile": "http://paulirish.com/", + "contributions": [ + "doc" + ] + }, + { + "login": "mathieuhays", + "name": "Mathieu Hays", + "avatar_url": "https://avatars2.githubusercontent.com/u/5703113?v=4", + "profile": "https://mathieuhays.co.uk/", + "contributions": [ + "translation" + ] + }, + { + "login": "yanni4night", + "name": "Yong Yin", + "avatar_url": "https://avatars0.githubusercontent.com/u/1710436?v=4", + "profile": "https://yanni4night.github.io/", + "contributions": [ + "doc" + ] + }, + { + "login": "blackfalcon", + "name": "Dale Sande / @anotheruiguy", + "avatar_url": "https://avatars3.githubusercontent.com/u/181089?v=4", + "profile": "http://dalesande.com/", + "contributions": [ + "doc", + "infra", + "review" + ] + }, + { + "login": "marcobiedermann", + "name": "Marco Biedermann", + "avatar_url": "https://avatars0.githubusercontent.com/u/5244986?v=4", + "profile": "https://www.marcobiedermann.com/", + "contributions": [ + "infra" + ] + }, + { + "login": "Victa", + "name": "Victor Coulon", + "avatar_url": "https://avatars2.githubusercontent.com/u/594365?v=4", + "profile": "http://victorcoulon.com/", + "contributions": [ + "translation", + "review" + ] + }, + { + "login": "demoive", + "name": "Paulo Ávila", + "avatar_url": "https://avatars0.githubusercontent.com/u/472288?v=4", + "profile": "https://github.com/demoive", + "contributions": [ + "doc" + ] + }, + { + "login": "ekremkaraca", + "name": "Ekrem Karaca", + "avatar_url": "https://avatars0.githubusercontent.com/u/690612?v=4", + "profile": "https://github.com/ekremkaraca", + "contributions": [ + "translation" + ] + }, + { + "login": "achalv", + "name": "Achal Varma", + "avatar_url": "https://avatars3.githubusercontent.com/u/1014428?v=4", + "profile": "http://achalv.com/", + "contributions": [ + "doc" + ] + }, + { + "login": "AurelioDeRosa", + "name": "Aurelio De Rosa", + "avatar_url": "https://avatars2.githubusercontent.com/u/1430979?v=4", + "profile": "https://www.audero.it/", + "contributions": [ + "doc" + ] + }, + { + "login": "d-i-b", + "name": "Min Zhao", + "avatar_url": "https://avatars2.githubusercontent.com/u/553940?v=4", + "profile": "https://github.com/d-i-b", + "contributions": [ + "translation" + ] + }, + { + "login": "alrra", + "name": "Cătălin Mariș", + "avatar_url": "https://avatars1.githubusercontent.com/u/1223565?v=4", + "profile": "https://twitter.com/alrra", + "contributions": [ + "doc", + "translation" + ] + }, + { + "login": "s10wen", + "name": "Simon Owen", + "avatar_url": "https://avatars2.githubusercontent.com/u/1136114?v=4", + "profile": "https://s10wen.com/", + "contributions": [ + "doc" + ] + }, + { + "login": "MaximKhlobystov", + "name": "Maxim Khlobystov", + "avatar_url": "https://avatars0.githubusercontent.com/u/5004762?v=4", + "profile": "https://github.com/MaximKhlobystov", + "contributions": [ + "doc", + "review" + ] + }, + { + "login": "dermatobia", + "name": "Sara", + "avatar_url": "https://avatars2.githubusercontent.com/u/4896612?v=4", + "profile": "https://github.com/dermatobia", + "contributions": [ + "doc", + "translation" + ] + }, + { + "login": "jhummel", + "name": "Jason Hummel", + "avatar_url": "https://avatars0.githubusercontent.com/u/495484?v=4", + "profile": "https://github.com/jhummel", + "contributions": [ + "doc" + ] + }, + { + "login": "kunsachdeva", + "name": "Kunal Sachdeva", + "avatar_url": "https://avatars2.githubusercontent.com/u/5383258?v=4", + "profile": "https://github.com/kunsachdeva", + "contributions": [ + "doc" + ] + }, + { + "login": "strugee", + "name": "AJ Jordan", + "avatar_url": "https://avatars0.githubusercontent.com/u/911174?v=4", + "profile": "https://strugee.net/", + "contributions": [ + "doc" + ] + }, + { + "login": "paulalexandru", + "name": "paulalexandru", + "avatar_url": "https://avatars2.githubusercontent.com/u/10955105?v=4", + "profile": "https://github.com/paulalexandru", + "contributions": [ + "doc", + "translation" + ] + }, + { + "login": "rozehan", + "name": "dot", + "avatar_url": "https://avatars0.githubusercontent.com/u/2157467?v=4", + "profile": "https://github.com/rozehan", + "contributions": [ + "infra", + "translation" + ] + }, + { + "login": "everblut", + "name": "Everardo Medina", + "avatar_url": "https://avatars3.githubusercontent.com/u/1256959?v=4", + "profile": "http://twitter.com/billowblut", + "contributions": [ + "translation" + ] + }, + { + "login": "gauravmuk", + "name": "Gaurav Nanda", + "avatar_url": "https://avatars0.githubusercontent.com/u/250947?v=4", + "profile": "https://github.com/gauravmuk", + "contributions": [ + "doc" + ] + }, + { + "login": "malaman", + "name": "Andrii Malaman", + "avatar_url": "https://avatars0.githubusercontent.com/u/6554653?v=4", + "profile": "https://github.com/malaman", + "contributions": [ + "doc" + ] + }, + { + "login": "syymza", + "name": "Daniele Zanni", + "avatar_url": "https://avatars3.githubusercontent.com/u/419147?v=4", + "profile": "http://www.betterpixels.co.uk/", + "contributions": [ + "translation" + ] + }, + { + "login": "ffreitasalves", + "name": "Fernando Freitas Alves", + "avatar_url": "https://avatars3.githubusercontent.com/u/1414472?v=4", + "profile": "https://fernandofreitasalves.com/", + "contributions": [ + "translation" + ] + }, + { + "login": "tjwudi", + "name": "John Wu", + "avatar_url": "https://avatars0.githubusercontent.com/u/5257816?v=4", + "profile": "https://github.com/tjwudi", + "contributions": [ + "doc" + ] + }, + { + "login": "pnevares", + "name": "Pablo Nevares", + "avatar_url": "https://avatars0.githubusercontent.com/u/211764?v=4", + "profile": "https://github.com/pnevares", + "contributions": [ + "doc", + "translation" + ] + }, + { + "login": "f3liperamos", + "name": "Felipe Ramos", + "avatar_url": "https://avatars3.githubusercontent.com/u/4040037?v=4", + "profile": "https://github.com/f3liperamos", + "contributions": [ + "doc" + ] + }, + { + "login": "arthurvr", + "name": "Arthur Verschaeve", + "avatar_url": "https://avatars0.githubusercontent.com/u/6025224?v=4", + "profile": "http://twitter.com/arthur_versch", + "contributions": [ + "doc", + "review", + "translation" + ] + }, + { + "login": "isdampe", + "name": "Richard Denton", + "avatar_url": "https://avatars1.githubusercontent.com/u/7271686?v=4", + "profile": "https://github.com/isdampe", + "contributions": [ + "doc" + ] + }, + { + "login": "kubum", + "name": "Andrey Fadeyev", + "avatar_url": "https://avatars3.githubusercontent.com/u/169803?v=4", + "profile": "https://github.com/kubum", + "contributions": [ + "translation" + ] + }, + { + "login": "rimager", + "name": "rimager", + "avatar_url": "https://avatars0.githubusercontent.com/u/7401367?v=4", + "profile": "https://github.com/rimager", + "contributions": [ + "doc" + ] + }, + { + "login": "rjain11", + "name": "Rishabh Jain", + "avatar_url": "https://avatars3.githubusercontent.com/u/5899771?v=4", + "profile": "https://github.com/rjain11", + "contributions": [ + "doc" + ] + }, + { + "login": "Kaijun", + "name": "Kaijun Chen", + "avatar_url": "https://avatars3.githubusercontent.com/u/1693027?v=4", + "profile": "https://github.com/Kaijun", + "contributions": [ + "translation" + ] + }, + { + "login": "NkS90", + "name": "Nithya", + "avatar_url": "https://avatars2.githubusercontent.com/u/2872399?v=4", + "profile": "https://github.com/NkS90", + "contributions": [ + "doc" + ] + }, + { + "login": "erwanjegouzo", + "name": "Erwan Jegouzo", + "avatar_url": "https://avatars3.githubusercontent.com/u/366909?v=4", + "profile": "http://www.erwanjegouzo.com/", + "contributions": [ + "doc" + ] + }, + { + "login": "teameh", + "name": "Tieme van Veen", + "avatar_url": "https://avatars3.githubusercontent.com/u/1330668?v=4", + "profile": "https://www.linkedin.com/in/tiemevanveen", + "contributions": [ + "doc" + ] + }, + { + "login": "linkgod", + "name": "Hsun", + "avatar_url": "https://avatars3.githubusercontent.com/u/1736020?v=4", + "profile": "https://github.com/linkgod", + "contributions": [ + "translation" + ] + }, + { + "login": "adrienchretien", + "name": "Adrien CHRETIEN", + "avatar_url": "https://avatars2.githubusercontent.com/u/1096295?v=4", + "profile": "https://github.com/adrienchretien", + "contributions": [ + "translation" + ] + }, + { + "login": "shnere", + "name": "Alan Rodríguez", + "avatar_url": "https://avatars1.githubusercontent.com/u/780497?v=4", + "profile": "https://github.com/shnere", + "contributions": [ + "translation" + ] + }, + { + "login": "harisadam", + "name": "Adam Haris", + "avatar_url": "https://avatars0.githubusercontent.com/u/797521?v=4", + "profile": "http://harisadam.com/", + "contributions": [ + "translation" + ] + }, + { + "login": "toshimaru", + "name": "Toshimaru", + "avatar_url": "https://avatars0.githubusercontent.com/u/803398?v=4", + "profile": "http://toshimaru.net/", + "contributions": [ + "translation" + ] + }, + { + "login": "shankarcabus", + "name": "Shankar Cabus", + "avatar_url": "https://avatars3.githubusercontent.com/u/1202421?v=4", + "profile": "http://shankarcabus.com.br/", + "contributions": [ + "translation" + ] + }, + { + "login": "lukasz-jakub-adamczuk", + "name": "Ash", + "avatar_url": "https://avatars0.githubusercontent.com/u/1239848?v=4", + "profile": "https://github.com/lukasz-jakub-adamczuk", + "contributions": [ + "translation" + ] + }, + { + "login": "hanksudo", + "name": "Hank Wang", + "avatar_url": "https://avatars2.githubusercontent.com/u/467745?v=4", + "profile": "https://github.com/hanksudo", + "contributions": [ + "translation" + ] + }, + { + "login": "Graybobo", + "name": "KILLHAPPY.", + "avatar_url": "https://avatars2.githubusercontent.com/u/790332?v=4", + "profile": "https://graybobo.github.io/", + "contributions": [ + "doc" + ] + }, + { + "login": "msval", + "name": "Marko Švaljek", + "avatar_url": "https://avatars0.githubusercontent.com/u/2877320?v=4", + "profile": "http://msvaljek.blogspot.com/", + "contributions": [ + "translation" + ] + }, + { + "login": "Antonio-Laguna", + "name": "Antonio Laguna", + "avatar_url": "https://avatars2.githubusercontent.com/u/946645?v=4", + "profile": "https://www.funcion13.com/", + "contributions": [ + "doc", + "translation" + ] + }, + { + "login": "mi2oon", + "name": "Mithun Dhiman", + "avatar_url": "https://avatars3.githubusercontent.com/u/464143?v=4", + "profile": "http://www.mi2oon.com/", + "contributions": [ + "translation" + ] + }, + { + "login": "Darklg", + "name": "Kévin Rocher / @Darklg", + "avatar_url": "https://avatars1.githubusercontent.com/u/307957?v=4", + "profile": "http://darklg.me/", + "contributions": [ + "translation" + ] + }, + { + "login": "dpashkevich", + "name": "Dmitry Pashkevich", + "avatar_url": "https://avatars3.githubusercontent.com/u/1157741?v=4", + "profile": "http://dpashk.com/", + "contributions": [ + "translation" + ] + }, + { + "login": "karmeljuk", + "name": "karmeljuk", + "avatar_url": "https://avatars0.githubusercontent.com/u/5672886?v=4", + "profile": "https://github.com/karmeljuk", + "contributions": [ + "translation" + ] + }, + { + "login": "schuer", + "name": "Dirk Schürjohann", + "avatar_url": "https://avatars2.githubusercontent.com/u/1297466?v=4", + "profile": "https://decaf.de/", + "contributions": [ + "translation" + ] + }, + { + "login": "cybear", + "name": "Björn Söderqvist", + "avatar_url": "https://avatars1.githubusercontent.com/u/73858?v=4", + "profile": "https://github.com/cybear", + "contributions": [ + "translation" + ] + }, + { + "login": "nitinhayaran", + "name": "Nitin Hayaran", + "avatar_url": "https://avatars1.githubusercontent.com/u/50523?v=4", + "profile": "http://www.nitinh.com/", + "contributions": [ + "doc" + ] + }, + { + "login": "Poetro", + "name": "Peter Galiba", + "avatar_url": "https://avatars0.githubusercontent.com/u/412052?v=4", + "profile": "http://poetro.hu/", + "contributions": [ + "doc" + ] + }, + { + "login": "nheinrich", + "name": "Neil Heinrich", + "avatar_url": "https://avatars2.githubusercontent.com/u/23180?v=4", + "profile": "http://neilheinrich.com/", + "contributions": [ + "doc" + ] + }, + { + "login": "ohgyun", + "name": "Ohgyun Ahn", + "avatar_url": "https://avatars2.githubusercontent.com/u/582314?v=4", + "profile": "http://ohgyun.com/", + "contributions": [ + "translation" + ] + }, + { + "login": "nerdog", + "name": "nerdog", + "avatar_url": "https://avatars3.githubusercontent.com/u/1648813?v=4", + "profile": "https://github.com/nerdog", + "contributions": [ + "translation" + ] + }, + { + "login": "leopic", + "name": "Leo Picado", + "avatar_url": "https://avatars2.githubusercontent.com/u/117184?v=4", + "profile": "http://leo.cr/", + "contributions": [ + "translation" + ] + }, + { + "login": "unity", + "name": "Romain Dardour", + "avatar_url": "https://avatars3.githubusercontent.com/u/9458?v=4", + "profile": "http://refine.hull.io/", + "contributions": [ + "translation" + ] + }, + { + "login": "alex-seville", + "name": "Alex Seville", + "avatar_url": "https://avatars2.githubusercontent.com/u/1172331?v=4", + "profile": "http://blog.alexanderseville.com/", + "contributions": [ + "doc" + ] + }, + { + "login": "hooray", + "name": "胡尐睿丶", + "avatar_url": "https://avatars3.githubusercontent.com/u/1574903?v=4", + "profile": "http://hooray.cnblogs.com/", + "contributions": [ + "translation" + ] + }, + { + "login": "vermilion1", + "name": "Vitalii Petrychuk", + "avatar_url": "https://avatars3.githubusercontent.com/u/744568?v=4", + "profile": "http://petrychuk.com/", + "contributions": [ + "translation" + ] + }, + { + "login": "Tairraos", + "name": "Tairraos", + "avatar_url": "https://avatars1.githubusercontent.com/u/185069?v=4", + "profile": "http://tairraos.github.io/", + "contributions": [ + "doc", + "translation" + ] + }, + { + "login": "draev", + "name": "Dmitrii Raev", + "avatar_url": "https://avatars2.githubusercontent.com/u/842729?v=4", + "profile": "https://github.com/draev", + "contributions": [ + "translation" + ] + }, + { + "login": "bpu", + "name": "Bartek", + "avatar_url": "https://avatars1.githubusercontent.com/u/3254402?v=4", + "profile": "https://github.com/bpu", + "contributions": [ + "translation" + ] + }, + { + "login": "vitorbal", + "name": "Vitor Balocco", + "avatar_url": "https://avatars2.githubusercontent.com/u/626038?v=4", + "profile": "https://twitter.com/vitorbal", + "contributions": [ + "doc" + ] + }, + { + "login": "jonathantneal", + "name": "Jonathan Neal", + "avatar_url": "https://avatars0.githubusercontent.com/u/188426?v=4", + "profile": "http://jonathantneal.com/", + "contributions": [ + "doc" + ] + }, + { + "login": "Muqito", + "name": "Christoffer Lans", + "avatar_url": "https://avatars3.githubusercontent.com/u/3002925?v=4", + "profile": "https://github.com/Muqito", + "contributions": [ + "translation" + ] + }, + { + "login": "LFeh", + "name": "Felipe Fialho", + "avatar_url": "https://avatars0.githubusercontent.com/u/3603793?v=4", + "profile": "http://www.felipefialho.com/", + "contributions": [ + "translation" + ] + }, + { + "login": "pim", + "name": "Piotrek Mierzejewski", + "avatar_url": "https://avatars3.githubusercontent.com/u/85532?v=4", + "profile": "http://piotrek.co/", + "contributions": [ + "translation" + ] + }, + { + "login": "wibron", + "name": "Patrik Wibron", + "avatar_url": "https://avatars3.githubusercontent.com/u/233347?v=4", + "profile": "http://patrikwibron.se/", + "contributions": [ + "translation" + ] + }, + { + "login": "vdv73rus", + "name": "Dmitry Vislov", + "avatar_url": "https://avatars3.githubusercontent.com/u/971061?v=4", + "profile": "http://vdv73.ru/", + "contributions": [ + "translation" + ] + }, + { + "login": "castus", + "name": "Krzysztof Romanowski", + "avatar_url": "https://avatars2.githubusercontent.com/u/522810?v=4", + "profile": "http://krzysztofromanowski.pl/", + "contributions": [ + "doc" + ] + }, + { + "login": "nightire", + "name": "Albert Yu", + "avatar_url": "https://avatars3.githubusercontent.com/u/1104018?v=4", + "profile": "http://www.very-geek.com/", + "contributions": [ + "translation" + ] + }, + { + "login": "slara", + "name": "Sebastian Lara Menares", + "avatar_url": "https://avatars3.githubusercontent.com/u/585824?v=4", + "profile": "https://twitter.com/slaramen", + "contributions": [ + "translation" + ] + }, + { + "login": "sunnylost", + "name": "sunnylost", + "avatar_url": "https://avatars3.githubusercontent.com/u/693496?v=4", + "profile": "http://sunnylost.com/", + "contributions": [ + "translation" + ] + }, + { + "login": "miniflycn", + "name": "Daniel Yang", + "avatar_url": "https://avatars3.githubusercontent.com/u/2239584?v=4", + "profile": "https://github.com/miniflycn", + "contributions": [ + "doc" + ] + }, + { + "login": "frontdevde", + "name": "Michael P. Pfeiffer", + "avatar_url": "https://avatars0.githubusercontent.com/u/1562646?v=4", + "profile": "http://contains.me/", + "contributions": [ + "translation" + ] + }, + { + "login": "Inkdpixels", + "name": "Tyll Weiß", + "avatar_url": "https://avatars1.githubusercontent.com/u/1557092?v=4", + "profile": "http://craft-interactive.de/", + "contributions": [ + "translation" + ] + }, + { + "login": "andreisebastianc", + "name": "Andrei Sebastian Cîmpean", + "avatar_url": "https://avatars2.githubusercontent.com/u/636000?v=4", + "profile": "http://andreime.com/", + "contributions": [ + "translation" + ] + }, + { + "login": "denis-sokolov", + "name": "Denis Sokolov", + "avatar_url": "https://avatars0.githubusercontent.com/u/113721?v=4", + "profile": "http://sokolov.cc/", + "contributions": [ + "doc" + ] + }, + { + "login": "arcanous", + "name": "Harijs Deksnis", + "avatar_url": "https://avatars3.githubusercontent.com/u/4963067?v=4", + "profile": "https://github.com/arcanous", + "contributions": [ + "translation" + ] + }, + { + "login": "roblarsen", + "name": "Rob Larsen", + "avatar_url": "https://avatars0.githubusercontent.com/u/361421?v=4", + "profile": "http://htmlcssjavascript.com/", + "contributions": [ + "ideas", + "doc", + "infra", + "review", + "question", + "talk", + "maintenance" + ] + }, + { + "login": "cezaraugusto", + "name": "Cezar Augusto", + "avatar_url": "https://avatars0.githubusercontent.com/u/4672033?v=4", + "profile": "https://cezaraugusto.net/", + "contributions": [ + "ideas", + "infra", + "review", + "maintenance" + ] + }, + { + "login": "vvscode", + "name": "Vasiliy Vanchuk", + "avatar_url": "https://avatars1.githubusercontent.com/u/6904368?v=4", + "profile": "https://www.linkedin.com/in/vvanchuk/", + "contributions": [ + "ideas", + "review", + "maintenance" + ] + }, + { + "login": "veronvynguyen", + "name": "Vy Nguyen", + "avatar_url": "https://avatars.githubusercontent.com/u/17018972?v=4", + "profile": "https://github.com/veronvynguyen", + "contributions": [ + "content" + ] + }, + { + "login": "PChaparro", + "name": "Pedro Chaparro", + "avatar_url": "https://avatars.githubusercontent.com/u/94259578?v=4", + "profile": "https://pchaparro.netlify.app/", + "contributions": [ + "translation" + ] + }, + { + "login": "WildxHV", + "name": "Harshvardhan Singh Sisodia", + "avatar_url": "https://avatars.githubusercontent.com/u/71403298?v=4", + "profile": "https://github.com/WildxHV", + "contributions": [ + "translation" + ] + }, + { + "login": "gabrielrbarbosa", + "name": "Gabriel R. Barbosa", + "avatar_url": "https://avatars.githubusercontent.com/u/12158575?v=4", + "profile": "https://github.com/gabrielrbarbosa", + "contributions": [ + "translation" + ] + }, + { + "login": "talhatahir", + "name": "Talha Tahir", + "avatar_url": "https://avatars.githubusercontent.com/u/8845428?v=4", + "profile": "https://github.com/talhatahir", + "contributions": [ + "content" + ] + }, + { + "login": "subashcs", + "name": "Subash Chandra Sapkota", + "avatar_url": "https://avatars.githubusercontent.com/u/29421465?v=4", + "profile": "http://www.subashcs.com.np/", + "contributions": [ + "code" + ] + }, + { + "login": "sarahesbie", + "name": "Sarah Brown", + "avatar_url": "https://avatars.githubusercontent.com/u/4270573?v=4", + "profile": "https://github.com/sarahesbie", + "contributions": [ + "content" + ] + }, + { + "login": "coliff", + "name": "Christian Oliff", + "avatar_url": "https://avatars.githubusercontent.com/u/1212885?v=4", + "profile": "https://christianoliff.com/", + "contributions": [ + "code", + "infra", + "maintenance" + ] + }, + { + "login": "andershagbard", + "name": "Anders Søgaard", + "avatar_url": "https://avatars.githubusercontent.com/u/9662430?v=4", + "profile": "https://github.com/andershagbard", + "contributions": [ + "content" + ] + }, + { + "login": "iaurg", + "name": "Italo A.", + "avatar_url": "https://avatars.githubusercontent.com/u/11761170?v=4", + "profile": "https://segredo.dev/", + "contributions": [ + "code" + ] + }, + { + "login": "cpvalente", + "name": "Carlos Valente", + "avatar_url": "https://avatars.githubusercontent.com/u/34649812?v=4", + "profile": "https://github.com/cpvalente", + "contributions": [ + "translation" + ] + }, + { + "login": "baumannzone", + "name": "Jorge Baumann", + "avatar_url": "https://avatars.githubusercontent.com/u/5422102?v=4", + "profile": "https://baumannzone.dev/", + "contributions": [ + "translation" + ] + }, + { + "login": "satyamsundaram", + "name": "Satyam Sundaram", + "avatar_url": "https://avatars.githubusercontent.com/u/54367435?v=4", + "profile": "https://satyamsundaram.tech/", + "contributions": [ + "content" + ] + }, + { + "login": "NegiAkash890", + "name": "Akash Negi", + "avatar_url": "https://avatars.githubusercontent.com/u/55234838?v=4", + "profile": "https://github.com/NegiAkash890", + "contributions": [ + "content" + ] + }, + { + "login": "tounsils", + "name": "Ilyes Tounsi", + "avatar_url": "https://avatars.githubusercontent.com/u/44228841?v=4", + "profile": "https://www.tn76.com/", + "contributions": [ + "code" + ] + }, + { + "login": "swati-gwc", + "name": "Swati Tripathi", + "avatar_url": "https://avatars.githubusercontent.com/u/63490144?v=4", + "profile": "https://swati-gwc.github.io/", + "contributions": [ + "translation" + ] + }, + { + "login": "dafaputra00", + "name": "Aziz Dafa Putra", + "avatar_url": "https://avatars.githubusercontent.com/u/62801712?v=4", + "profile": "https://github.com/dafaputra00", + "contributions": [ + "translation" + ] + }, + { + "login": "Abg4real", + "name": "Abg4real", + "avatar_url": "https://avatars.githubusercontent.com/u/55308761?v=4", + "profile": "https://github.com/Abg4real", + "contributions": [ + "content" + ] + }, + { + "login": "nataliepina", + "name": "Natalie Pina", + "avatar_url": "https://avatars.githubusercontent.com/u/34781875?v=4", + "profile": "https://github.com/nataliepina", + "contributions": [ + "content" + ] + }, + { + "login": "bt-dot", + "name": "Bruce Tang", + "avatar_url": "https://avatars.githubusercontent.com/u/55170799?v=4", + "profile": "https://github.com/bt-dot", + "contributions": [ + "content" + ] + }, + { + "login": "vltansky", + "name": "Vlad Tansky", + "avatar_url": "https://avatars.githubusercontent.com/u/5851280?v=4", + "profile": "https://github.com/vltansky", + "contributions": [ + "code", + "design" + ] + }, + { + "login": "voy", + "name": "Vojtech Jasny", + "avatar_url": "https://avatars.githubusercontent.com/u/194726?v=4", + "profile": "https://github.com/voy", + "contributions": [ + "content" + ] + }, + { + "login": "Linda-Ikechukwu", + "name": "Linda Ikechukwu", + "avatar_url": "https://avatars.githubusercontent.com/u/32891838?v=4", + "profile": "https://codewithlinda.com/", + "contributions": [ + "content" + ] + }, + { + "login": "iownthegame", + "name": "Hui-Yu Lee", + "avatar_url": "https://avatars.githubusercontent.com/u/1487369?v=4", + "profile": "https://github.com/iownthegame", + "contributions": [ + "translation" + ] + }, + { + "login": "aej11a", + "name": "Andrew Jones", + "avatar_url": "https://avatars.githubusercontent.com/u/10066422?v=4", + "profile": "https://github.com/aej11a", + "contributions": [ + "content" + ] + }, + { + "login": "Teesy99", + "name": "Teesta Koch", + "avatar_url": "https://avatars.githubusercontent.com/u/45621118?v=4", + "profile": "https://github.com/Teesy99", + "contributions": [ + "doc" + ] + } + ], + "repoType": "github", + "commitConvention": "none" +} diff --git a/src/_data/helpers.js b/src/_data/helpers.js new file mode 100644 index 000000000..e77b7f901 --- /dev/null +++ b/src/_data/helpers.js @@ -0,0 +1,6 @@ +module.exports = { + currentYear() { + const today = new Date(); + return today.getFullYear(); + }, +}; diff --git a/src/_data/maintainers.json b/src/_data/maintainers.json new file mode 100644 index 000000000..4963d57de --- /dev/null +++ b/src/_data/maintainers.json @@ -0,0 +1,49 @@ + +{ + "all": [ + { + "avatar": "https://avatars0.githubusercontent.com/u/459713?v=4", + "name": "Darcy Clarke", + "website": "https://darcyclarke.me/", + "github": "https://github.com/darcyclarke", + "twitter": "https://twitter.com/darcy" + }, + { + "avatar": "https://avatars0.githubusercontent.com/u/361421?v=4", + "name": "Rob Larsen", + "website": "http://htmlcssjavascript.com/", + "github": "https://github.com/roblarsen", + "twitter": "https://twitter.com/robreact" + }, + { + "avatar": "https://avatars1.githubusercontent.com/u/6904368?v=4", + "name": "Vasiliy Vanchuk", + "website": "https://bit.ly/vvscodeli", + "github": "https://github.com/vvscode", + "twitter": "https://twitter.com/vvscode" + } + ], + "legacy": [ + { + "avatar": "https://avatars0.githubusercontent.com/u/4672033?v=4", + "name": "Cezar Augusto", + "website": "https://cezaraugusto.net/", + "github": "https://github.com/cezaraugusto", + "twitter": "https://twitter.com/cezaraugusto" + }, + { + "avatar": "https://avatars0.githubusercontent.com/u/1245284?v=4", + "name": "Righ Gilbank", + "website": "https://richgilbank.com/", + "github": "https://github.com/richgilbank", + "twitter": "https://twitter.com/richgilbank" + }, + { + "avatar": "https://avatars0.githubusercontent.com/u/21979?v=4", + "name": "Bo-Yi Wu", + "website": "https://about.me/appleboy", + "github": "https://github.com/appleboy", + "twitter": "https://twitter.com/appleboy" + } + ] +} diff --git a/src/_data/og.json b/src/_data/og.json new file mode 100644 index 000000000..5db9ac993 --- /dev/null +++ b/src/_data/og.json @@ -0,0 +1,104 @@ + +{ + "all": [ + + { + "avatar": "https://avatars0.githubusercontent.com/u/39191?v=4", + "name": "Paul Irish", + "website": "https://www.paulirish.com/", + "github": "https://github.com/paulirish", + "twitter": "https://twitter.com/paul_irish" + }, + { + "avatar": "https://avatars0.githubusercontent.com/u/459713?v=4", + "name": "Darcy Clarke", + "website": "https://darcyclarke.me/", + "github": "https://github.com/darcyclarke", + "twitter": "https://twitter.com/darcy" + }, + { + "avatar": "https://avatars1.githubusercontent.com/u/85315?s=460&v=4", + "name": "Ben Truyman", + "website": "", + "github": "https://github.com/bentruyman", + "twitter": "https://twitter.com/bentruyman" + }, + { + "avatar": "https://avatars1.githubusercontent.com/u/54051?s=460&v=4", + "name": "Ben Alman", + "website": "http://benalman.com/", + "github": "https://github.com/cowboy", + "twitter": "https://twitter.com/cowboy" + }, + { + "avatar": "https://avatars1.githubusercontent.com/u/155599?s=460&v=4", + "name": "Adam Sontag", + "website": "http://ajpiano.com/", + "github": "https://github.com/ajpiano", + "twitter": "https://twitter.com/ajpiano" + }, + { + "avatar": "https://avatars1.githubusercontent.com/u/96554?s=460&v=4", + "name": "Alex Sexton", + "website": "https://alexsexton.com/", + "github": "https://github.com/slexaxton", + "twitter": "https://twitter.com/slexaxton" + }, + { + "avatar": "https://avatars1.githubusercontent.com/u/234160?s=460&v=4", + "name": "Roger Raymond", + "website": "http://asphyxia.com/", + "github": "https://github.com/iansym", + "twitter": "https://twitter.com/iansym" + }, + { + "avatar": "https://avatars1.githubusercontent.com/u/58987?s=460&v=4", + "name": "Rebecca Murphey", + "website": "https://rmurphey.com/", + "github": "https://github.com/rmurphey", + "twitter": "https://twitter.com/rmurphey" + }, + { + "avatar": "https://avatars1.githubusercontent.com/u/122117?s=460&v=4", + "name": "Boaz Sender", + "website": "http://boazsender.com/", + "github": "https://github.com/boazsender", + "twitter": "https://twitter.com/boazsender" + }, + { + "avatar": "https://avatars1.githubusercontent.com/u/67283?s=460&v=4", + "name": "Mike Taylor", + "website": "https://miketaylr.com/", + "github": "https://github.com/miketaylr", + "twitter": "https://twitter.com/miketaylr" + }, + { + "avatar": "https://avatars1.githubusercontent.com/u/128755?s=460&v=4", + "name": "Vlad Filippov", + "website": "https://vladfilippov.com/", + "github": "https://github.com/vladikoff", + "twitter": "https://twitter.com/vladikoff" + }, + { + "avatar": "https://avatars1.githubusercontent.com/u/18397?s=460&v=4", + "name": "Gianni Chiappetta", + "website": "http://turnt.biz/", + "github": "https://github.com/gf3", + "twitter": "https://twitter.com/gf3" + }, + { + "avatar": "https://avatars1.githubusercontent.com/u/188426?s=460&v=4", + "name": "Jonathan Neal", + "website": "https://jonneal.dev/", + "github": "https://github.com/jonathantneal", + "twitter": "https://twitter.com/jon_neal" + }, + { + "avatar": "https://avatars1.githubusercontent.com/u/84644?s=460&v=4", + "name": "Sam Breed", + "website": "https://wookiehangover.com/", + "github": "https://github.com/wookiehangover", + "twitter": "https://twitter.com/sambreed" + } + ] +} diff --git a/src/_data/questions.json b/src/_data/questions.json new file mode 100644 index 000000000..ab875dd8e --- /dev/null +++ b/src/_data/questions.json @@ -0,0 +1,65 @@ + +{ + "all": [ + { + "abbreviation": "General", + "title": "General Questions", + "url": "/questions/general-questions/", + "external": false + }, + { + "abbreviation": "HTML", + "title": "HTML Questions", + "url": "/questions/html-questions/", + "external": false + }, + { + "abbreviation": "CSS", + "title": "CSS Questions", + "url": "/questions/css-questions/", + "external": false + }, + { + "abbreviation": "JavaScript", + "title": "JavaScript Questions", + "url": "/questions/javascript-questions/", + "external": false + }, + { + "abbreviation": "A11y", + "title": "Accessibility Questions", + "url": "https://scottaohara.github.io/accessibility_interview_questions/", + "external": true + }, + { + "abbreviation": "Testing", + "title": "Testing Questions", + "url": "/questions/testing-questions/", + "external": false + }, + { + "abbreviation": "Performance", + "title": "Performance Questions", + "url": "/questions/performance-questions/", + "external": false + }, + { + "abbreviation": "Network", + "title": "Network Questions", + "url": "/questions/network-questions/", + "external": false + }, + { + "abbreviation": "Coding", + "title": "Coding Questions", + "url": "/questions/coding-questions/", + "external": false + }, + { + "abbreviation": "Fun", + "title": "Fun Questions", + "url": "/questions/fun-questions/", + "external": false + } + ] +} diff --git a/src/_data/site.json b/src/_data/site.json new file mode 100644 index 000000000..f7f61f19d --- /dev/null +++ b/src/_data/site.json @@ -0,0 +1,9 @@ + +{ + "title": "Front-end Developer Interview Questions", + "url": "https://h5bp.org/Front-end-Developer-Interview-Questions/", + "description": "A list of helpful front-end related questions you can use to interview potential candidates, test yourself or completely ignore.", + "keywords": "front-end, interview questions, css questions, js questions, html questions, performance questions, interview test", + "language": "en_US", + "twitter": "@h5bp" +} diff --git a/src/_data/translations.json b/src/_data/translations.json new file mode 100644 index 000000000..ae2eec9a2 --- /dev/null +++ b/src/_data/translations.json @@ -0,0 +1,141 @@ + +{ + "all": [ + { + "language": "Arabic", + "url": "arabic/" + }, + { + "language": "Bangla", + "url": "bengali/" + }, + { + "language": "Bulgarian", + "url": "bulgarian/" + }, + { + "language": "Burmese", + "url": "burmese/" + }, + { + "language": "Chinese", + "url": "chinese/" + }, + { + "language": "Chinese-Traditional", + "url": "chinese-traditional/" + }, + { + "language": "Croatian", + "url": "croatian/" + }, + { + "language": "Czech", + "url": "czech/" + }, + { + "language": "Danish", + "url": "danish/" + }, + { + "language": "Dutch", + "url": "dutch/" + }, + { + "language": "Farsi", + "url": "farsi/" + }, + { + "language": "French", + "url": "french/" + }, + { + "language": "German", + "url": "german/" + }, + { + "language": "Hebrew", + "url": "hebrew/" + }, + { + "language": "Greek", + "url": "greek/" + }, + { + "language": "Hindi", + "url": "hindi/" + }, + { + "language": "Hungarian", + "url": "hungarian/" + }, + { + "language": "Indonesian", + "url": "indonesian/" + }, + { + "language": "Italian", + "url": "italian/" + }, + { + "language": "Japanese", + "url": "japanese/" + }, + { + "language": "Korean", + "url": "korean/" + }, + { + "language": "Latvian", + "url": "latvian/" + }, + { + "language": "Polish", + "url": "polish/" + }, + { + "language": "Portuguese", + "url": "portuguese/" + }, + { + "language": "Romanian", + "url": "romanian/" + }, + { + "language": "Russian", + "url": "russian/" + }, + { + "language": "Serbian", + "url": "serbian/" + }, + { + "language": "Slovakian", + "url": "slovakian/" + }, + { + "language": "Slovenian", + "url": "slovenian/" + }, + { + "language": "Spanish", + "url": "spanish/" + }, + { + "language": "Swedish", + "url": "swedish/" + }, + { + "language": "Turkish", + "url": "turkish/" + }, + { + "language": "Ukrainian", + "url": "ukrainian/" + }, + { + "language": "Vietnamese", + "url": "vietnamese/" + } + ] +} diff --git a/src/_includes/assets/css/content.css b/src/_includes/assets/css/content.css new file mode 100644 index 000000000..fa9f6290a --- /dev/null +++ b/src/_includes/assets/css/content.css @@ -0,0 +1,227 @@ +body { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-family: var(--font-family-body); + font-weight: 400; + font-size: 1.2rem; + line-height: 2; + color: var(--color-text); +} + +section + section { + padding-top: 2rem; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: var(--font-family-heading); + color: var(--color-heading); + font-style: normal; + line-height: 1.2; + font-weight: 600; +} + +section + section { + padding-top: 2rem; +} + +a { + color: inherit; + text-decoration: none; + color: var(--color-secondary); + transition: color ease-out var(--transition-duration); +} + +a.current, +a:hover:not(.skip-link), +a:focus:not(.skip-link) { + color: var(--color-primary); +} + +a:not(.navigation-anchor)[rel~='external']:after { + content: ' ➚' +} + +ul:not(.navigation):not(.inline-list) { + list-style: none; +} + +ul:not(.navigation):not(.inline-list) li::before { + content: "\25A0"; + color: var(--color-primary); + font-weight: bold; + display: inline-block; + width: 1em; + margin-left: -1em; +} +.rtl ul:not(.navigation):not(.inline-list) li::before{ + margin-right: -1em; + margin-left: initial; +} + +li { + margin-bottom: 0.6rem; +} + +strong, +b { + font-weight: 600; +} + +time { + display: inline-block; + color: var(--color-gray-70); +} + +[tabindex='-1'] { + outline: 0; +} + +img, +svg { + vertical-align: middle; +} + +img { + display: block; + max-width: 100%; + border-radius: var(--border-radius-default); +} + +code { + font-family: var(--font-family-code); + color: var(--color-code); + font-style: normal; + font-size: 1rem; +} + +blockquote:not([class]) { + padding-left: 1rem; + margin-left: -1rem; + border-left: 2px solid var(--color-primary); + color: var(--color-gray-70); + font-style: italic; +} + +code[class*=language-], +pre[class*=language-] { + font-size: 0.9rem; + font-style: normal; +} + +p + pre[class*=language-] { + margin-bottom: 1.8rem; +} + +mark { + color: var(--color-highlight); + background-color: transparent; +} + +dt { + font-weight: 700; +} + +dd + dt { + padding-top: 0.5rem; +} + +abbr[title], acronym[title] { + background: var(--color-gray-opacity); + border: 1px solid var(--color-gray-opacity); + cursor: help; +} + +.container { + max-width: 66rem; + padding: 1.5rem 2rem 2rem; + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 30rem) { + .container { + padding: 3rem 4rem 4rem; + } +} + +.content li:not(:last-of-type) { + margin-bottom: 1.2rem; +} + +.content h2 { + max-width: 33rem; +} + +.content > *:not(:last-child) { + margin-bottom: 2rem; +} + +.content *:not(hr) + h2, +.content *:not(hr) + h3 { + padding-top: 1rem; +} + +.content ul:not(.inline-list), +.content ol:not(.inline-list) { + padding-left: 1.2rem; +} + +.content-simple li:not(:last-of-type) { + margin-bottom: 0.5rem; +} + +.content-edit { + text-align: right; + margin-top: 2rem; +} + +.inline-list { + padding: 0; + list-style: none; + display: flex; + flex-wrap: wrap; +} + +.inline-list li { + padding: 0 5px; + display: inline-block; + vertical-align: middle; + text-align: center; +} + +.inline-list li::before { + content: ''; + margin-left: 0; +} + +.inline-list li img { + display: block; + margin: auto; + margin-bottom: 0.6rem; +} + +.inline-list li a { + display: inline-block; + vertical-align: middle; + margin: 0 0.15rem; +} + +.inline-list-contributors li a, +.inline-list-original li a { + font-size: 1rem; +} + +.avatar { + max-width: 12rem; +} + +hr { + border: none; + bacground: none; + border-bottom: 1px solid #efefef; +} diff --git a/src/_includes/assets/css/defaults.css b/src/_includes/assets/css/defaults.css new file mode 100644 index 000000000..b1ec53598 --- /dev/null +++ b/src/_includes/assets/css/defaults.css @@ -0,0 +1,17 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + outline-color: var(--color-primary); +} + +::selection { + background: var(--color-primary); + color: var(--background-default); +} + +::-moz-selection { + background: var(--color-primary); + color: var(--background-default); +} + diff --git a/src/_includes/assets/css/footer.css b/src/_includes/assets/css/footer.css new file mode 100644 index 000000000..a22d9729e --- /dev/null +++ b/src/_includes/assets/css/footer.css @@ -0,0 +1,7 @@ +.footer { + padding-top: 3rem; +} + +.footer-text { + font-size: 0.8rem; +} diff --git a/src/_includes/assets/css/header.css b/src/_includes/assets/css/header.css new file mode 100644 index 000000000..4d8abe058 --- /dev/null +++ b/src/_includes/assets/css/header.css @@ -0,0 +1,102 @@ +.topbar { + width: 100%; + height: 0.18rem; + background: var(--color-gradient); +} + +.skip-link { + position: absolute; + top: 0; + left: 0; + padding: 0.5rem 1rem; + background-color: var(--color-primary); + color: #fff; + text-decoration: none; + transform: translateY(-100%); +} + +.skip-link:focus { + transform: none; +} + +.header { + margin-bottom: 2rem; +} + +.header-big-title { + font-size: 2.3rem; + line-height: 1.06; + margin: 1.4rem 0 0.7rem; + color: var(--color-primary); + word-break: break-word; +} + +.rtl .header-big-title{ + text-align: right; +} + +@media (min-width: 30em) { + .header-big-title { + margin: 1.4rem 0 0.7rem; + font-size: 4.6rem; + } +} + +@media (min-width: 60em) { + .header-big-title { + margin: 2.1rem 0 0.7rem; + font-size: 5.4rem; + } +} + +@supports (mix-blend-mode: lighten) { + .header-big-title { + display: inline-block; + position: relative; + color: #000; + background: #fff; + mix-blend-mode: multiply; + } + .header-big-title::before { + content: ''; + display: block; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-image: url('https://h5bp.github.io/Front-end-Developer-Interview-Questions/assets/images/gradient.svg'); + background-size: cover; + pointer-events: none; + } + .header-big-title::before { + mix-blend-mode: screen; + } +} + +.header-heading { + font-size: 2.3rem; + text-transform: uppercase; +} + +.header-big-description { + font-size: 1.2rem; + line-height: 1.4; + padding: 1rem 0; +} + +@media (min-width: 30em) { + .header-big-description { + font-size: 1.5rem; + } +} + +@media (min-width: 60em) { + .header-big-description { + font-size: 1.8rem; + } +} + +.header-description { + padding-top: 1rem; +} diff --git a/src/_includes/assets/css/navigation.css b/src/_includes/assets/css/navigation.css new file mode 100644 index 000000000..8a9a5418a --- /dev/null +++ b/src/_includes/assets/css/navigation.css @@ -0,0 +1,191 @@ +.nav { + padding: 1rem 0; + position: relative; + font-family: var(--font-family-heading); +} + +.nav li { + word-wrap: none; + white-space: nowrap; +} + +.navigation { + list-style: none; + display: flex; + flex-wrap: wrap; + font-size: 1rem; +} + +.navigation-questions-label { + margin-right: auto; +} + +@media (min-width: 60em) { + .navigation-questions-label { + margin-right: 0; + } +} + +.navigation-toggle { + display: inline-block; + appearance: none; + border: 0; + font-size: 1rem; + font-weight: 600; + cursor: pointer; + background: transparent; +} + +.navigation-toggle::after { + content: '\25BE'; + padding-left: 0.3rem; + display: inline-block; + font-size: 1.2rem; + font-weight: bold; + color: var(--color-primary); + transform-origin: center; +} + +.navigation-toggle:hover::after, +.navigation-toggle:active::after, +.navigation-toggle:focus::after { + color: var(--color-secondary); +} + +.navigation.open .navigation-toggle::after { + transform: scaleY(-1) translateY(-0.25em); +} + +@media (min-width: 60em) { + .navigation-toggle { + color: var(--color-text); + pointer-events: none; + cursor: default; + } + + .navigation-toggle::after { + display: none; + } +} + +.navigation-questions-list { + padding: 0.5rem 1rem; + display: flex; + flex-direction: column; + position: absolute; + top: calc(100% - 1rem); + left: 0; + z-index: 1; + opacity: 0; + transform: scale(0.5, 0); + transform-origin: center top; + transition: opacity .1s, transform .2s ease-out; + background-color: #fff; + box-shadow: 0 0 0 1px var(--color-secondary), 0 2px 4px -1px var(--color-text); +} + +.navigation.open .navigation-questions-list { + opacity: 1; + transform: none; +} + +.navigation.no-motion .navigation-questions-list { + transition: none; +} + +@media (min-width: 60em) { + .navigation-questions-list { + padding: 0; + flex-direction: row; + position: static; + opacity: 1; + transform: none; + transition: none; + background-color: transparent; + box-shadow: none; + } + + .navigation-questions-list li { + margin: 0; + } +} + +.navigation-questions-anchor { + visibility: hidden; +} + +.navigation.open .navigation-questions-anchor { + visibility: visible; +} + +@media (min-width: 60em) { + .navigation-questions-anchor { + visibility: visible; + } +} + +.navigation-item-emoji { + width: 100%; + font-size: 1rem; + line-height: 1rem; + padding-bottom: 1.5rem; + margin-bottom: 1.5rem; + vertical-align: top; + align-content: flex-start; + border-bottom: 1px solid #efefef; +} + +.navigation-item-home { + border-bottom: none; + padding-bottom: 0; + font-weight: 600; +} + +@media (min-width: 60em) { + .navigation-item-emoji { + width: 50%; + margin-bottom: 2rem; + border-bottom: 1px solid #efefef; + } +} + +.navigation-item-emoji em { + font-style: normal; + margin-right: 0.5rem; +} + +.navigation-item-translations { + text-align: left; +} + +@media (min-width: 60em) { + .navigation-item-translations { + text-align: right; + } +} + +.navigation-item-home em { + color: #835eff; +} + +.navigation-item-emoji a { + text-decoration: none; + display: inline-block; + vertical-align: middle; +} + +@media (min-width: 60em) { + .navigation-item:not(:last-of-type) { + margin-right: 0.8rem + } +} + +.navigation-anchor[rel~="external"]::after { + content: ' ➚'; + color: var(--color-highlight); +} + +.navigation-anchor.current { + border-bottom: 2px solid var(--color-highlight); + padding: 0 0 5px 0; +} diff --git a/src/_includes/assets/css/prism.css b/src/_includes/assets/css/prism.css new file mode 100644 index 000000000..c96a982a8 --- /dev/null +++ b/src/_includes/assets/css/prism.css @@ -0,0 +1,146 @@ +/** + * atom-dark theme for `prism.js` + * Based on Atom's `atom-dark` theme: https://github.com/atom/atom-dark-syntax + * @author Joe Gibson (@gibsjose) + */ + + code[class*="language-"], + pre[class*="language-"] { + color: #c5c8c6; + text-shadow: 0 1px rgba(0, 0, 0, 0.3); + font-family: Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace; + direction: ltr; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; + } + + /* Code blocks */ + pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; + border-radius: 0.3em; + } + + :not(pre) > code[class*="language-"], + pre[class*="language-"] { + background: #370b44; + } + + /* Inline code */ + :not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; + } + + .token.comment, + .token.prolog, + .token.doctype, + .token.cdata { + color: #7C7C7C; + } + + .token.punctuation { + color: #c5c8c6; + } + + .namespace { + opacity: .7; + } + + .token.property, + .token.keyword, + .token.tag { + color: #96CBFE; + } + + .token.class-name { + color: #FFFFB6; + text-decoration: underline; + } + + .token.boolean, + .token.constant { + color: #99CC99; + } + + .token.symbol, + .token.deleted { + color: #f92672; + } + + .token.number { + color: #FF73FD; + } + + .token.selector, + .token.attr-name, + .token.string, + .token.char, + .token.builtin, + .token.inserted { + color: #A8FF60; + } + + .token.variable { + color: #C6C5FE; + } + + .token.operator { + color: #EDEDED; + } + + .token.entity { + color: #FFFFB6; + /* text-decoration: underline; */ + } + + .token.url { + color: #96CBFE; + } + + .language-css .token.string, + .style .token.string { + color: #87C38A; + } + + .token.atrule, + .token.attr-value { + color: #F9EE98; + } + + .token.function { + color: #DAD085; + } + + .token.regex { + color: #E9C062; + } + + .token.important { + color: #fd971f; + } + + .token.important, + .token.bold { + font-weight: bold; + } + .token.italic { + font-style: italic; + } + + .token.entity { + cursor: help; + } diff --git a/src/_includes/assets/css/variables.css b/src/_includes/assets/css/variables.css new file mode 100644 index 000000000..0175943f1 --- /dev/null +++ b/src/_includes/assets/css/variables.css @@ -0,0 +1,20 @@ +:root { + --font-family-heading: sans-serif; + --font-family-body: Georgia, serif; + --font-family-code: Menlo, Monaco, 'Courier New', monospace; + --color-primary: #835EFF; + --color-secondary: #FF008D; + --color-safe: #8338EC; + --color-gradient: linear-gradient(to right, var(--color-primary), var(--color-secondary)); + --color-highlight: var(--color-primary); + --color-gray-opacity: rgba(39,39,39,0.04); + --color-heading: #23231A; + --color-text: #23231A; + --background-default: #F9F9F9; + --border-radius-default: 5px; + --box-shadow-default: 0 2rem 4rem rgba(0,0,0,.15); + --transition-duration: 0.27s; +} +body.rtl{ + --font-family-body: Arial, Helvetica, sans-serif; +} \ No newline at end of file diff --git a/src/_includes/assets/js/app.js b/src/_includes/assets/js/app.js new file mode 100644 index 000000000..be0087dc2 --- /dev/null +++ b/src/_includes/assets/js/app.js @@ -0,0 +1,24 @@ +console.log( + '%cA black belt is a white belt that didn\'t quit.', + 'color: #fff; font-size: 20px; text-shadow: 1px 1px 1px #000; font-family: serif;' +) + +var navToggle = document.getElementById('navigation-toggle') +var nav = document.getElementById('navigation') + +navToggle.addEventListener('click', function() { + nav.classList.toggle('open') +}) + +window.addEventListener('resize', function() { + if (document.width > 960) { + // Remove `active` class if viewport shows full menu + nav.classList.remove('active') + } else { + // Temporarily add class to prevent visible motion after resize + nav.classList.add('no-motion') + setTimeout(function () { + nav.classList.remove('no-motion') + }, 250); + } +}) diff --git a/src/_includes/components/footer.njk b/src/_includes/components/footer.njk new file mode 100644 index 000000000..e3975f7a5 --- /dev/null +++ b/src/_includes/components/footer.njk @@ -0,0 +1,7 @@ + diff --git a/src/_includes/components/navigation.njk b/src/_includes/components/navigation.njk new file mode 100644 index 000000000..0b41dfb11 --- /dev/null +++ b/src/_includes/components/navigation.njk @@ -0,0 +1,18 @@ + diff --git a/src/_includes/layouts/default.njk b/src/_includes/layouts/default.njk new file mode 100644 index 000000000..dd7172cea --- /dev/null +++ b/src/_includes/layouts/default.njk @@ -0,0 +1,68 @@ + + + + + + {% if title and page.fileSlug != '' %}{{ title }} ★ {% endif %}{{ site.title }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {% set css %} + {% include "assets/css/prism.css" %} + {% include "assets/css/variables.css" %} + {% include "assets/css/defaults.css" %} + {% include "assets/css/navigation.css" %} + {% include "assets/css/header.css" %} + {% include "assets/css/content.css" %} + {% include "assets/css/footer.css" %} + {% endset %} + + + +
+
+ + {% include "components/navigation.njk" %} +
+ {% block pageTop %}{% endblock %} + {% block main %}{% endblock %} +
+ {% include "components/footer.njk" %} +
+ {% set js %}{% include "assets/js/app.js" %}{% endset %} + + + diff --git a/src/_includes/layouts/page.njk b/src/_includes/layouts/page.njk new file mode 100644 index 000000000..31463c596 --- /dev/null +++ b/src/_includes/layouts/page.njk @@ -0,0 +1,25 @@ +{% extends 'layouts/default.njk' %} + +{% block pageTop %} +
+ {% if heading and heading === true %} +

{{ title }}

+ {% else %} +

{{ title }}

+ {% endif %} + {% if description %} +

{{ description | markdownify_inline | safe }}

+ {% endif %} +
+{% endblock %} + +{% block main %} +
+ {{ content | safe }} +
+ +{% endblock %} diff --git a/src/about.njk b/src/about.njk new file mode 100644 index 000000000..c45c9a551 --- /dev/null +++ b/src/about.njk @@ -0,0 +1,94 @@ +--- +title: About +permalink: /about/index.html +--- +{% extends 'layouts/page.njk' %} + +{% set content %} +## Overview 📦 + +This project started in 2009 by [Darcy Clarke](https://darcyclarke.me), releasing in [2012](http://web.archive.org/web/20120909134303/http://darcyclarke.me/development/front-end-job-interview-questions) to the public. Many of the initial questions were sourced from a shared **etherpad** document started by [Paul Irish](https://twitter.com/paul_irish). + +At its core, the project contains a number of front-end questions that can be used when vetting potential candidates, test yourself or used as a guide for concepts you may want to learn. It is by no means recommended to use these questions verbatim, nor expected that someone would know all the "answers". These questions are intentionally written to be open-ended and hopefully lead to interesting discussions that tell you more about a person's thought process then reference memory. + +#### This project was featured on [The Changelog](https://changelog.com/podcast/143) – Episode #143 (Feb 21, 2015) + + + +## Current Maintainers 🦄 + + + +
+ +## Maintainers Emeriti 🐴 + + + +
+ +## Original Contributors ✨ + + + +
+ +## All Contributors 🌏 + +
    + {% for person in contributors.contributors %} +
  • + + {{ person.name }} +
  • + {% endfor %} +
+ +Saw something wrong? Want to add a question? suggest something? Check our [contributing guidelines](https://github.com/h5bp/Front-end-Developer-Interview-Questions/blob/master/.github/CONTRIBUTING.md), open a pull-request or [fill a bug](https://github.com/h5bp/Front-end-Developer-Interview-Questions/issues/new). + +{% endset %} + +{% block main %} +
+ {{ content | markdownify | safe }} +
+{% endblock %} diff --git a/src/assets/images/apple-touch-icon.png b/src/assets/images/apple-touch-icon.png new file mode 100644 index 000000000..b243328d9 Binary files /dev/null and b/src/assets/images/apple-touch-icon.png differ diff --git a/src/assets/images/bg.png b/src/assets/images/bg.png new file mode 100644 index 000000000..b6089a132 Binary files /dev/null and b/src/assets/images/bg.png differ diff --git a/src/assets/images/favicon-32x32.png b/src/assets/images/favicon-32x32.png new file mode 100644 index 000000000..babc61c47 Binary files /dev/null and b/src/assets/images/favicon-32x32.png differ diff --git a/src/assets/images/favicon-96x96.png b/src/assets/images/favicon-96x96.png new file mode 100644 index 000000000..64893f94c Binary files /dev/null and b/src/assets/images/favicon-96x96.png differ diff --git a/src/assets/images/gradient.svg b/src/assets/images/gradient.svg new file mode 100644 index 000000000..67afce6f0 --- /dev/null +++ b/src/assets/images/gradient.svg @@ -0,0 +1 @@ + diff --git a/src/assets/images/og-image.png b/src/assets/images/og-image.png new file mode 100644 index 000000000..872ddbcb8 Binary files /dev/null and b/src/assets/images/og-image.png differ diff --git a/src/index.njk b/src/index.njk new file mode 100644 index 000000000..57a4d59f6 --- /dev/null +++ b/src/index.njk @@ -0,0 +1,20 @@ +--- +title: Front-end Developer Interview Questions +permalink: /index.html +rtl: false +--- +{% extends 'layouts/default.njk' %} + +{% block pageTop %} +
+
+

{{ title }}

+

+ A list of helpful front-end related questions you can use to interview potential candidates, test yourself or completely ignore. Read more about it here. Better in your language? See one of our translations. +

+

+ Since this project begun, thousands of questions were added by an amazing group of people, and translated to more than 30 different languages. Want to contribute? See our contribution guidelines. +

+
+{% endblock %} +{% block main %}{% endblock %} diff --git a/src/questions/coding-questions.md b/src/questions/coding-questions.md new file mode 100644 index 000000000..44c7cec85 --- /dev/null +++ b/src/questions/coding-questions.md @@ -0,0 +1,110 @@ +--- +title: Coding Questions +layout: layouts/page.njk +permalink: /questions/coding-questions/index.html +--- + +Question: What is the value of `foo`? +```javascript +var foo = 10 + '20'; +``` + +Question: What will be the output of the code below? +```javascript +console.log(0.1 + 0.2 == 0.3); +``` + +Question: How would you make this work? +```javascript +add(2, 5); // 7 +add(2)(5); // 7 +``` + +Question: What value is returned from the following statement? +```javascript +"i'm a lasagna hog".split("").reverse().join(""); +``` + +Question: What is the value of `window.foo`? +```javascript +( window.foo || ( window.foo = "bar" ) ); +``` + +Question: What is the outcome of the two alerts below? +```javascript +var foo = "Hello"; +(function() { + var bar = " World"; + alert(foo + bar); +})(); +alert(foo + bar); +``` + +Question: What is the value of `foo.length`? +```javascript +var foo = []; +foo.push(1); +foo.push(2); +``` + +Question: What is the value of `foo.x`? +```javascript +var foo = {n: 1}; +var bar = foo; +foo.x = foo = {n: 2}; +``` + +Question: What does the following code print? +```javascript +console.log('one'); +setTimeout(function() { + console.log('two'); +}, 0); +Promise.resolve().then(function() { + console.log('three'); +}) +console.log('four'); +``` + +Question: What is the difference between these four promises? +```javascript +doSomething().then(function () { + return doSomethingElse(); +}); + +doSomething().then(function () { + doSomethingElse(); +}); + +doSomething().then(doSomethingElse()); + +doSomething().then(doSomethingElse); +``` + +Question: What will the code below output to the console and why? +```javascript +(function(){ + var a = b = 3; +})(); + +console.log("a defined? " + (typeof a !== 'undefined')); +console.log("b defined? " + (typeof b !== 'undefined')); +``` + +Question: Consider the two functions below. Will they both return the same thing? Why or why not? +```javascript +function foo1() +{ + return { + bar: "hello" + }; +} + +function foo2() +{ + return + { + bar: "hello" + }; +} +``` diff --git a/questions/css-questions.md b/src/questions/css-questions.md similarity index 66% rename from questions/css-questions.md rename to src/questions/css-questions.md index 663133e57..a068b942a 100644 --- a/questions/css-questions.md +++ b/src/questions/css-questions.md @@ -1,7 +1,11 @@ -# CSS Questions: +--- +title: CSS Questions +layout: layouts/page.njk +permalink: /questions/css-questions/index.html +--- * What is CSS selector specificity and how does it work? -* What's the difference between "resetting" and "normalizing" CSS? Which would you choose, and why? +* What is the difference between "resetting" and "normalizing" CSS? Which would you choose, and why? * Describe Floats and how they work. * Describe z-index and how stacking context is formed. * Describe BFC (Block Formatting Context) and how it works. @@ -23,11 +27,17 @@ * Explain your understanding of the box model and how you would tell the browser in CSS to render your layout in different box models. * What does ```* { box-sizing: border-box; }``` do? What are its advantages? * What is the CSS `display` property and can you give a few examples of its use? -* What's the difference between inline and inline-block? -* What's the difference between the "nth-of-type()" and "nth-child()" selectors? -* What's the difference between a relative, fixed, absolute and statically positioned element? +* What is the difference between inline and inline-block? +* What is the difference between the "nth-of-type()" and "nth-child()" selectors? +* What is the difference between a relative, fixed, absolute and statically positioned element? * What existing CSS frameworks have you used locally, or in production? How would you change/improve them? -* Have you played around with the new CSS Flexbox or Grid specs? +* Have you used CSS Grid? * Can you explain the difference between coding a web site to be responsive versus using a mobile-first strategy? * Have you ever worked with retina graphics? If so, when and what techniques did you use? * Is there any reason you'd want to use `translate()` instead of *absolute positioning*, or vice-versa? And why? +* How is clearfix css property useful? +* Can you explain the difference between px, em and rem as they relate to font sizing? +* Can you give an example of a pseudo class? Can you provide an example use case for a pseudo class? +* What is the difference between a block level element and an inline element? Can you provide examples of each type of element? +* What is the difference between CSS Grid and Flexbox? When would you use one over the other? +* What is the difference between fixed, fluid and responsive layouts? diff --git a/src/questions/fun-questions.md b/src/questions/fun-questions.md new file mode 100644 index 000000000..1d8511cbd --- /dev/null +++ b/src/questions/fun-questions.md @@ -0,0 +1,11 @@ +--- +title: Fun Questions +layout: layouts/page.njk +permalink: /questions/fun-questions/index.html +--- + +* What is a cool project that you've recently worked on? +* What are some things you like about the developer tools you use? +* Who inspires you in the front-end community? +* Do you have any pet projects? What kind? + diff --git a/questions/general-questions.md b/src/questions/general-questions.md similarity index 78% rename from questions/general-questions.md rename to src/questions/general-questions.md index 86c93ff64..f202f6416 100644 --- a/questions/general-questions.md +++ b/src/questions/general-questions.md @@ -1,4 +1,8 @@ -# General Questions: +--- +title: General Questions +layout: layouts/page.njk +permalink: /questions/general-questions/index.html +--- * What did you learn yesterday/this week? * What excites or interests you about coding? @@ -25,3 +29,10 @@ * Explain some of the pros and cons for CSS animations versus JavaScript animations. * What does CORS stand for and what issue does it address? * How did you handle a disagreement with your boss or your collaborator? +* What resources do you use to learn about the latest in front end development and design? +* What skills are needed to be a good front-end developer? +* What role do you see yourself in? +* Can you explain what happens when you enter a URL into the browser? +* Describe the difference between SSR and CSR. Discuss the pros and cons. + * Are you familiar with static rendering? + * Rehydration? diff --git a/questions/html-questions.md b/src/questions/html-questions.md similarity index 72% rename from questions/html-questions.md rename to src/questions/html-questions.md index d7a792f37..d35735518 100644 --- a/questions/html-questions.md +++ b/src/questions/html-questions.md @@ -1,8 +1,12 @@ -# HTML Questions: +--- +title: HTML Questions +layout: layouts/page.njk +permalink: /questions/html-questions/index.html +--- * What does a `doctype` do? * How do you serve a page with content in multiple languages? -* What kind of things must you be wary of when design or developing for multilingual sites? +* What kind of things must you be wary of when designing or developing for multilingual sites? * What are `data-` attributes good for? * Consider HTML5 as an open web platform. What are the building blocks of HTML5? * Describe the difference between a `cookie`, `sessionStorage` and `localStorage`. @@ -11,3 +15,5 @@ * What is progressive rendering? * Why you would use a `srcset` attribute in an image tag? Explain the process the browser uses when evaluating the content of this attribute. * Have you used different HTML templating languages before? +* What is the difference between `canvas` and `svg`? +* What are empty elements in HTML? diff --git a/questions/javascript-questions.md b/src/questions/javascript-questions.md similarity index 50% rename from questions/javascript-questions.md rename to src/questions/javascript-questions.md index 2d684fff0..c1a9f7d93 100644 --- a/questions/javascript-questions.md +++ b/src/questions/javascript-questions.md @@ -1,50 +1,38 @@ -# JS Questions: +--- +title: JavaScript Questions +layout: layouts/page.njk +permalink: /questions/javascript-questions/index.html +--- -* Explain event delegation -* Explain how `this` works in JavaScript -* Explain how prototypal inheritance works -* What do you think of AMD vs CommonJS? -* Explain why the following doesn't work as an IIFE: `function foo(){ }();`. - * What needs to be changed to properly make it an IIFE? -* What's the difference between a variable that is: `null`, `undefined` or undeclared? +* Explain event delegation. +* Explain how `this` works in JavaScript. + * Can you give an example of one of the ways that working with `this` has changed in ES6? +* Explain how prototypal inheritance works. +* What is the difference between a variable that is: `null`, `undefined` or undeclared? * How would you go about checking for any of these states? * What is a closure, and how/why would you use one? -* Can you describe the main difference between a `forEach` loop and a `.map()` loop and why you would pick one versus the other? -* What's a typical use case for anonymous functions? -* How do you organize your code? (module pattern, classical inheritance?) -* What's the difference between host objects and native objects? -* Difference between: `function Person(){}`, `var person = Person()`, and `var person = new Person()`? -* What's the difference between `.call` and `.apply`? +* What language constructions do you use for iterating over object properties and array items? +* Can you describe the main difference between the `Array.forEach()` loop and `Array.map()` methods and why you would pick one versus the other? + * Сan you describe other popular methods for iterating over arrays? +* What is a typical use case for anonymous functions? +* What is the difference between host objects and native objects? +* Explain the difference between: `function Person(){}`, `var person = Person()`, and `var person = new Person()`? +* Explain the differences on the usage of `foo` between `function foo() {}` and `var foo = function() {}` +* Can you explain what `Function.call` and `Function.apply` do? What is the notable difference between the two? * Explain `Function.prototype.bind`. -* What's the difference between feature detection, feature inference, and using the UA string? -* Explain Ajax in as much detail as possible. -* What are the advantages and disadvantages of using Ajax? -* Explain how JSONP works (and how it's not really Ajax). -* Have you ever used JavaScript templating? - * If so, what libraries have you used? +* What is the difference between feature detection, feature inference, and using the UA string? * Explain "hoisting". +* What is type coercion? What are common pitfalls of relying on type coercion in JavaScript code? * Describe event bubbling. * Describe event capturing. -* What's the difference between an "attribute" and a "property"? -* Why is extending built-in JavaScript objects not a good idea? -* Difference between window load event and document DOMContentLoaded event? +* What is the difference between an "attribute" and a "property"? +* What are the pros and cons of extending built-in JavaScript objects? * What is the difference between `==` and `===`? * Explain the same-origin policy with regards to JavaScript. -* Make this work: -```javascript -duplicate([1,2,3,4,5]); // [1,2,3,4,5,1,2,3,4,5] -``` * Why is it called a Ternary operator, what does the word "Ternary" indicate? -* What is `"use strict";`? what are the advantages and disadvantages to using it? -* Create a for loop that iterates up to `100` while outputting **"fizz"** at multiples of `3`, **"buzz"** at multiples of `5` and **"fizzbuzz"** at multiples of `3` and `5` -* Why is it, in general, a good idea to leave the global scope of a website as-is and never touch it? -* Why would you use something like the `load` event? Does this event have disadvantages? Do you know any alternatives, and why would you use those? -* Explain what a single page app is and how to make one SEO-friendly. -* What is the extent of your experience with Promises and/or their polyfills? -* What are the pros and cons of using Promises instead of callbacks? +* What is strict mode? What are some of the advantages/disadvantages of using it? * What are some of the advantages/disadvantages of writing JavaScript code in a language that compiles to JavaScript? * What tools and techniques do you use debugging JavaScript code? -* What language constructions do you use for iterating over object properties and array items? * Explain the difference between mutable and immutable objects. * What is an example of an immutable object in JavaScript? * What are the pros and cons of immutability? @@ -52,15 +40,33 @@ duplicate([1,2,3,4,5]); // [1,2,3,4,5,1,2,3,4,5] * Explain the difference between synchronous and asynchronous functions. * What is event loop? * What is the difference between call stack and task queue? -* Explain the differences on the usage of `foo` between `function foo() {}` and `var foo = function() {}` * What are the differences between variables created using `let`, `var` or `const`? + * Can you change a property of an object defined via `const`? How you can change this behavior? * What are the differences between ES6 class and ES5 function constructors? * Can you offer a use case for the new arrow `=>` function syntax? How does this new syntax differ from other functions? * What advantage is there for using the arrow syntax for a method in a constructor? * What is the definition of a higher-order function? * Can you give an example for destructuring an object or an array? -* ES6 Template Literals offer a lot of flexibility in generating strings, can you give an example? +* Can you give an example of generating a string with ES6 Template Literals? * Can you give an example of a curry function and why this syntax offers an advantage? * What are the benefits of using `spread syntax` and how is it different from `rest syntax`? * How can you share code between files? * Why you might want to create static class members? +* What is the difference between `while` and `do-while` loops in JavaScript? +* What is a promise? Where and how would you use promise? +* Discuss how you might use Object Oriented Programming principles when coding with JavaScript. +* What is the difference between `event.target` and `event.currentTarget`? +* What is the difference between `event.preventDefault()` and `event.stopPropagation()`? + +## Coding questions +* Make this work: +```javascript +duplicate([1,2,3,4,5]); // [1,2,3,4,5,1,2,3,4,5] +``` +* Create a for loop that iterates up to `100` while outputting **"fizz"** at multiples of `3`, **"buzz"** at multiples of `5` and **"fizzbuzz"** at multiples of `3` and `5` +* What will be returned by each of these? +```javascript +console.log("hello" || "world") +console.log("foo" && "bar") +``` +* Write an immediately invoked function expression (IIFE) diff --git a/questions/network-questions.md b/src/questions/network-questions.md similarity index 70% rename from questions/network-questions.md rename to src/questions/network-questions.md index d7acb053b..0b319a242 100644 --- a/questions/network-questions.md +++ b/src/questions/network-questions.md @@ -1,4 +1,8 @@ -# Network Questions: +--- +title: Network Questions +layout: layouts/page.njk +permalink: /questions/network-questions/index.html +--- * Traditionally, why has it been better to serve site assets from multiple domains? * Do your best to describe the process from the time you type in a website's URL to it finishing loading on your screen. @@ -11,3 +15,5 @@ * ETag * X-Frame-Options * What are HTTP methods? List all HTTP methods that you know, and explain them. +* What is domain pre-fetching and how does it help with performance? +* What is a CDN and what is the benefit of using one? diff --git a/questions/performance-questions.md b/src/questions/performance-questions.md similarity index 64% rename from questions/performance-questions.md rename to src/questions/performance-questions.md index 6a4afa5f2..541f0a56d 100644 --- a/questions/performance-questions.md +++ b/src/questions/performance-questions.md @@ -1,4 +1,8 @@ -# Performance Questions: +--- +title: Performance Questions +layout: layouts/page.njk +permalink: /questions/performance-questions/index.html +--- * What tools would you use to find a performance bug in your code? * What are some ways you may improve your website's scrolling performance? diff --git a/questions/testing-questions.md b/src/questions/testing-questions.md similarity index 62% rename from questions/testing-questions.md rename to src/questions/testing-questions.md index 21cb8ab08..d491218d9 100644 --- a/questions/testing-questions.md +++ b/src/questions/testing-questions.md @@ -1,6 +1,11 @@ -# Testing Questions: +--- +title: Testing Questions +layout: layouts/page.njk +permalink: /questions/testing-questions/index.html +--- * What are some advantages/disadvantages to testing your code? * What tools would you use to test your code's functionality? * What is the difference between a unit test and a functional/integration test? * What is the purpose of a code style linting tool? +* What are some of the testing best practices? diff --git a/src/sitemap.xml.njk b/src/sitemap.xml.njk new file mode 100644 index 000000000..875e6a7e3 --- /dev/null +++ b/src/sitemap.xml.njk @@ -0,0 +1,16 @@ +--- +permalink: /sitemap.xml +excludeFromSitemap: true +--- + + +{%- for page in collections.all %} +{%- if not page.data.excludeFromSitemap %} + {% set absoluteUrl %}{{ site.url }}{{ page.url | url }}{% endset %} + + {{ absoluteUrl }} + {{ page.date | html_date_string }} + +{%- endif %} +{%- endfor %} + diff --git a/src/translations.njk b/src/translations.njk new file mode 100644 index 000000000..3f7e126c4 --- /dev/null +++ b/src/translations.njk @@ -0,0 +1,27 @@ +--- +title: Translations +description: Doesn't see yours or see something wrong? Open an [issue](https://github.com/h5bp/Front-end-Developer-Interview-Questions/issues). +permalink: /translations/index.html +--- +{% extends 'layouts/default.njk' %} + +{% block pageTop %} +
+

{{ title }}

+

{{ description | markdownify_inline | safe }}

+
+{% endblock %} + +{% block main %} +
+
+ +
+
+{% endblock %} diff --git a/src/translations/_template/README.md b/src/translations/_template/README.md new file mode 100644 index 000000000..6de31ceb2 --- /dev/null +++ b/src/translations/_template/README.md @@ -0,0 +1,215 @@ +--- +title: Front End Developer Interview Questions +layout: layouts/page.njk +permalink: /translations/************/index.html +--- + + +## Table of Contents + +1. [General Questions](#general) +1. [HTML Questions](#html) +1. [CSS Questions](#css) +1. [JS Questions](#js) +1. [Testing Questions](#testing) +1. [Performance Questions](#performance) +1. [Network Questions](#network) +1. [Fun Questions](#fun) + + +#### [[⬆]](#toc) General Questions: + +* What did you learn yesterday/this week? +* What excites or interests you about coding? +* What is a recent technical challenge you experienced and how did you solve it? +* When building a new web site or maintaining one, can you explain some techniques you have used to increase performance? +* Can you describe some SEO best practices or techniques you have used lately? +* Can you explain any common techniques or recent issues solved in regards to front-end security? +* What actions have you personally taken on recent projects to increase maintainability of your code? +* Talk about your preferred development environment. +* Which version control systems are you familiar with? +* Can you describe your workflow when you create a web page? +* If you have 5 different stylesheets, how would you best integrate them into the site? +* Can you describe the difference between progressive enhancement and graceful degradation? +* How would you optimize a website's assets/resources? +* How many resources will a browser download from a given domain at a time? + * What are the exceptions? +* Name 3 ways to decrease page load (perceived or actual load time). +* If you jumped on a project and they used tabs and you used spaces, what would you do? +* Describe how you would create a simple slideshow page. +* If you could master one technology this year, what would it be? +* Explain the importance of standards and standards bodies. +* What is Flash of Unstyled Content? How do you avoid FOUC? +* Explain what ARIA and screenreaders are, and how to make a website accessible. +* Explain some of the pros and cons for CSS animations versus JavaScript animations. +* What does CORS stand for and what issue does it address? +* How did you handle a disagreement with your boss or your collaborator? +* What resources do you use to learn about the latest in front end development and design? +* What skills are needed to be a good front-end developer? +* What role do you see yourself in? +* Explain the difference between cookies, session storage, and local storage? +* Can you explain what happens when you enter a URL into the browser? +* Describe the difference between SSR and CSR. Discuss the pros and cons. + * Are you familiar with static rendering? + * Rehydration? + +#### [[⬆]](#toc) HTML Questions: + +* What does a `doctype` do? +* How do you serve a page with content in multiple languages? +* What kind of things must you be wary of when designing or developing for multilingual sites? +* What are `data-` attributes good for? +* Consider HTML5 as an open web platform. What are the building blocks of HTML5? +* Describe the difference between a `cookie`, `sessionStorage` and `localStorage`. +* Describe the difference between `