{{ title }}
-Like U2, we still haven't found what you're looking for.
-Please try again from the home page.
-diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 0c486d52..00000000 --- a/.editorconfig +++ /dev/null @@ -1,14 +0,0 @@ -# https://editorconfig.org - -root = true - -[*] -end_of_line = lf -indent_style = space -indent_size = 2 -insert_final_newline = true -trim_trailing_whitespace = true - -# Set default charset -[*.{js,py}] -charset = utf-8 diff --git a/.eleventy.js b/.eleventy.js deleted file mode 100644 index bb3be7a3..00000000 --- a/.eleventy.js +++ /dev/null @@ -1,140 +0,0 @@ -const fs = require('fs'); -const pluginRss = require('@11ty/eleventy-plugin-rss'); -const htmlmin = require('html-minifier'); -const sassWatch = require('./_includes/sass-watch'); -const filter = require('./_includes/filter'); -const scAvatar = require('./_includes/shortcodes/avatar'); -const scResponsiveImage = require('./_includes/shortcodes/responsive-image'); -const scSocialSvg = require('./_includes/shortcodes/social-svg'); -const scVideoPlayer = require('./_includes/shortcodes/video-player'); -const pscMeetupDetails = require('./_includes/shortcodes/meetup-details'); - -/** - * Add date properties to collections. - * - * @param {object} posts Collection to add date properties to. - * @return {object} Augmented posts collection. - */ -const addFileDates = (posts) => posts.map((post) => { - if (!(post && post.inputPath)) return post; - - const stat = fs.statSync(post.inputPath) || {}; - const newPost = post; - - newPost.dateCreated = stat.birthtime; - newPost.dateModified = stat.mtime; - - return newPost; -}); - -module.exports = (eleventyConfig) => { - // Watch Sass directory for styling changes. - // Works only in dev mode. Though it throws and error and then continues on. - if (process.env.ELEVENTY_ENV === 'dev') { - sassWatch('./_sass/_main.scss', './_site/assets/css/main.css'); - } - - // PASSTHRU: Copy the `assets` directory to the compiled site folder - eleventyConfig.addPassthroughCopy('assets'); - eleventyConfig.addPassthroughCopy('robots.txt'); - eleventyConfig.addPassthroughCopy('.well-known/atproto-did'); - eleventyConfig.addPassthroughCopy('CNAME'); - - // COLLECTION: Create meetup collection. - eleventyConfig.addCollection('meetups', (collection) => { - const posts = collection.getFilteredByGlob('./_meetups/**'); - - return addFileDates(posts); - }); - - // COLLECTION: Create post collection. - eleventyConfig.addCollection('posts', (collection) => { - const posts = collection.getFilteredByGlob(['./_meetups/**', './_posts/**']); - - return addFileDates(posts); - }); - - // FILTER: Convert page.date directly to 'YYYY/MM/DD' slug. - eleventyConfig.addLiquidFilter('dateSlug', filter.dateSlug); - - // FILTER: Reverse array without mutating original. - eleventyConfig.addFilter('flip', filter.flip); - - // FILTER: Run content thru Markdown-it. - eleventyConfig.addFilter('markdown', filter.markdown); - - // FILTER: Replace text with regex capabilities. - eleventyConfig.addFilter('regexReplace', filter.regexReplace); - - // SHORTCODE: Resize and cache images. - eleventyConfig.addLiquidShortcode('avatar', scAvatar); - - // SHORTCODE: Generate responsive image. - eleventyConfig.addLiquidShortcode('responsiveImage', scResponsiveImage); - - // SHORTCODE: Add social icon SVG block. - eleventyConfig.addLiquidShortcode('socialSvg', scSocialSvg); - - // SHORTCODE: Embed video players for event replay. - eleventyConfig.addShortcode('videoPlayer', scVideoPlayer); - - // SHORTCODE: Format meeting details message block. - eleventyConfig.addPairedShortcode('meetupDetails', pscMeetupDetails); - - // PLUGIN: RSS feed - eleventyConfig.addPlugin(pluginRss); - - // FILTER: Atom date format - eleventyConfig.addLiquidFilter('dateToRfc3339', pluginRss.dateToRfc3339); - - // TRANSFORM: minify HTML - eleventyConfig.addTransform('htmlmin', (content, outputPath) => { - if (typeof outputPath === 'string' && outputPath.endsWith('.html')) { - const minified = htmlmin.minify(content, { - useShortDoctype: true, - removeComments: true, - collapseWhitespace: true, - minifyCSS: true, - minifyJS: true, - }); - - return minified; - } - - return content; - }); - - // BROWSERSYNC: add ability to see 404.html in dev mode - eleventyConfig.setBrowserSyncConfig({ - callbacks: { - ready(err, bs) { - bs.addMiddleware('*', (req, res) => { - const content404 = fs.readFileSync('_site/404.html'); - // Provides the 404 content without redirect. - - res.write(content404); - // Add 404 http status code in request header. - // res.writeHead(404, { "Content-Type": "text/html" }); - res.writeHead(404); - res.end(); - }); - }, - }, - }); - - return { - dir: { - input: './', - output: './_site', - layouts: './_layouts', - }, - templateFormats: [ - 'liquid', - 'njk', - 'md', - 'html', - ], - htmlTemplateEngine: 'liquid', - dataTemplateEngine: 'liquid', - }; -}; diff --git a/.eleventyignore b/.eleventyignore deleted file mode 100644 index 64327911..00000000 --- a/.eleventyignore +++ /dev/null @@ -1,3 +0,0 @@ -README.md -CONTRIBUTING-POSTS.md -_drafts/ diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 6cd98cca..00000000 --- a/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -# include -!.eleventy.js diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index bd63a27f..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "root": true, - "extends": "airbnb-base", - "rules": { - // Require spaces before comments... - "lines-around-comment": [ - "error", - { - // ...except when first line of array, or... - "allowArrayStart": true, - // ...except when first line of block, or... - "allowBlockStart": true, - // ...except when first line of object. - "allowObjectStart": true - } - ], - // Visually set-off the var assignment from the rest of code. - "newline-after-var": "error", - // Visually set-off the return from the rest of code. - "newline-before-return": "error", - // Require developers to describe function purpose, arguments, and returns. - "require-jsdoc": "error", - // Require valid JSDoc. - "valid-jsdoc": [ - "error", - { - // Only require @return if there's a return statement. - "requireReturn": false - } - ] - } -} diff --git a/.github/workflows/eleventy_build.yml b/.github/workflows/eleventy_build.yml deleted file mode 100644 index 4ebaa17b..00000000 --- a/.github/workflows/eleventy_build.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Eleventy Build - -# Controls when the action will run. Triggers the workflow on push or pull request -# events but only for the master branch -on: - push: - branches: [ master ] - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - # This workflow contains a single job called "build" - build: - # The type of runner that the job will run on - runs-on: ubuntu-latest - - # Steps represent a sequence of tasks that will be executed as part of the job - steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - - - name: Setup Node.js environment - uses: actions/setup-node@v3 - - - name: Install packages - run: npm ci - - - name: Run npm build - run: npm run build - - - name: Deploy to gh-pages - uses: peaceiris/actions-gh-pages@v3 - with: - deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }} - publish_dir: ./_site diff --git a/.gitignore b/.gitignore deleted file mode 100644 index b93a8ca0..00000000 --- a/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -# OS generated # -#--------------------# -.DS_Store - -# IDE-generated -#--------------------# -.vscode - -# App-generated -#--------------------# -_site -node_modules -tmp -.cache diff --git a/.markdownlint.json b/.markdownlint.json deleted file mode 100644 index d11a3aca..00000000 --- a/.markdownlint.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "default": false, - "MD001": true, - "MD002": { - "level": 2 - }, - "MD003": { - "style": "atx" - }, - "MD004": { - "style": "asterisk" - }, - "MD005": true, - "MD006": true, - "MD007": { - "indent": 4 - }, - "MD009": false, - "MD010": true, - "MD011": true, - "MD012": { - "maximum": 2 - }, - "MD013": false, - "MD014": false, - "MD018": true, - "MD019": true, - "MD020": true, - "MD021": true, - "MD022": true, - "MD023": true, - "MD025": true, - "MD026": { - "punctuation": ".,;:!" - }, - "MD027": true, - "MD028": false, - "MD029": false, - "MD030": true, - "MD031": true, - "MD032": true, - "MD033": false, - "MD034": false, - "MD035": { - "style": "---" - }, - "MD036": true, - "MD037": true, - "MD038": true, - "MD039": true, - "MD040": false, - "MD041": false, - "MD042": true, - "MD043": false, - "MD044": false, - "MD045": false -} diff --git a/2011-austin-javascript-sxsw-party-poster/index.html b/2011-austin-javascript-sxsw-party-poster/index.html new file mode 100644 index 00000000..7836459b --- /dev/null +++ b/2011-austin-javascript-sxsw-party-poster/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}
This page been moved to /posts/2011-austin-javascript-sxsw-party-poster/.
\ No newline at end of file diff --git a/2011-austin-javascript-sxsw-party-wrapup/index.html b/2011-austin-javascript-sxsw-party-wrapup/index.html new file mode 100644 index 00000000..b96ff2fa --- /dev/null +++ b/2011-austin-javascript-sxsw-party-wrapup/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/2011-austin-javascript-sxsw-party-wrapup/.
\ No newline at end of file diff --git a/2012-austinjs-sxsw-3-year-anniversary-party/index.html b/2012-austinjs-sxsw-3-year-anniversary-party/index.html new file mode 100644 index 00000000..60a04f42 --- /dev/null +++ b/2012-austinjs-sxsw-3-year-anniversary-party/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/2012-austinjs-sxsw-3-year-anniversary-party/.
\ No newline at end of file diff --git a/2012-austinjs-sxsw-party-wrapup/index.html b/2012-austinjs-sxsw-party-wrapup/index.html new file mode 100644 index 00000000..931d7578 --- /dev/null +++ b/2012-austinjs-sxsw-party-wrapup/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/2012-austinjs-sxsw-party-wrapup/.
\ No newline at end of file diff --git a/404.html b/404.html index f5aceca3..2ca88b41 100644 --- a/404.html +++ b/404.html @@ -1,11 +1,11 @@ ---- -layout: base -title: Oops! Page not found -permalink: 404.html -eleventyExcludeFromCollections: true ---- -Like U2, we still haven't found what you're looking for.
-Please try again from the home page.
-Like U2, we still haven't found what you're looking for.
Please try again from the home page.
{{ person.name }}
-- Afterwards, the discussion carries on at - ${afterName} - (${afterOrg.location}). -
`; - } - - return ``; -}; diff --git a/_includes/shortcodes/responsive-image.js b/_includes/shortcodes/responsive-image.js deleted file mode 100644 index ed963410..00000000 --- a/_includes/shortcodes/responsive-image.js +++ /dev/null @@ -1,43 +0,0 @@ -const Image = require('@11ty/eleventy-img'); - -module.exports = async (src, alt, outputFormats = 'jpeg') => { - if (alt === undefined) { - throw new Error(`Responsive Image: missing ALT attribute from: ${src}`); - } - - const sizes = '(max-width: 400px) 400px, (max-width: 800px) 800px, 100vw'; - const formats = outputFormats.split(','); - - try { - const stats = await Image(src, { - formats, - urlPath: '/assets/img/', - outputDir: '_site/assets/img/', - widths: [400, 800, null], - }); - - const defaultSrc = stats[formats.slice(-1)][0]; - const sourceBlock = Object.values(stats).map((imageFormat) => `- Edit this page -
-Austin JavaScript is sponsored this month by {{ sponsorOrg.name }}. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community. - {%- if sponsorOrg.careerUrl -%} - Ask them about their job opportunities! - {%- endif -%} -
- {%- endif -%} - - {%- if sponsorOrg.note -%} -- {{ sponsorOrg.note | markdown }} -
- {%- endif -%} -
-
-So come and join us for **free beer**, **free food** and an all around good time at our staple pub, [The Ginger Man][1]. This is purely a social event, but your JS skills may be tested so come prepared!
-
-[1]: http://aus.gingermanpub.com/
diff --git a/_meetups/2013-01-15-meetup.md b/_meetups/2013-01-15-meetup.md
deleted file mode 100644
index 5b6a56c2..00000000
--- a/_meetups/2013-01-15-meetup.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-layout: meetup
-title: 'Mozilla: Cool New Browser Features'
-author: asexton
-when: 2013-01-15T19:30:00-06:00
-speakers:
- - name: Luke Crouch
- title:
- avatar: https://pbs.twimg.com/profile_images/1085182415453138945/2IVEXY6a_400x400.jpg
- bio: Luke Crouch has been dev'ing web for over 10 years — from web-based SCADA systems, to corporate intranet apps, to big websites like SourceForge.net and now Mozilla. He also caught the community bug and have been herding cats in Tulsa Web Devs for the last couple years.
- email:
- homepage:
- twitter: groovecoder
- github:
- linkedin:
- - name: David Walsh
- title:
- avatar: https://pbs.twimg.com/profile_images/931297372738482176/PPEGteJb_400x400.jpg
- bio: |
- David Walsh is a 29-year old web developer and software engineer from Madison, Wisconsin. In the web world, he is:
-
- * Web Developer and evangelist for Mozilla
- * Technical author of David Walsh Blog and guest poster on several other sites
- * Conference and Meetup speaker
- * Core Developer for the MooTools JavaScript Framework
- * Founder of Script &Style
- * Founder of Wynq Web Labs
- email:
- homepage:
- twitter: davidwalshblog
- github:
- linkedin:
-sponsor:
-venue: frog
-after: gingerman
-organizers:
- - asexton
----
-
-Let's ring in the new year with some new JavaScript Hotness. We've got two JavaScript pros flying in from Mozilla to go over some cool new browser features!
-
-Their talk will be about all the brand new stuff in the browser world. They describe it:
-
-> It is no secret that Mozilla has been pushing the boundaries of what the internet is capable of, and has been a fundamental force in evolving the web. This will be a whirlwind tour of exciting JavaScript API's that Mozilla is leading.
->
-> They are going to cover a variety of things; Web SMS, Web Telephony, Battery API, Web Vibrator, Touch, Camera, The future of gaming, Mouse Lock, Gamepad API, Gladius.js, Mozilla Open Web apps and Identity/Browser Id. Afterwards there will be a Q & A session covering these topics.
-
-Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle [@joemccann][1]. Alternatively you can heckle new host, [@slexaxton][2]!
-
-[1]: http://twitter.com/joemccann
-[2]: http://twitter.com/slexaxton
diff --git a/_meetups/2013-02-19-meetup.md b/_meetups/2013-02-19-meetup.md
deleted file mode 100644
index 2fd17c78..00000000
--- a/_meetups/2013-02-19-meetup.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-layout: meetup
-title: 'Reanimator: Capturing and Replaying JavaScript Applications'
-author: asexton
-when: 2013-02-19T19:30:00-06:00
-speakers:
- - name: Lon Ingram
- title: Lead Frontend Engineer at Waterfall Mobile
- avatar: https://pbs.twimg.com/profile_images/970161690233864192/rztEhZFR_400x400.jpg
- bio: Lon Ingram has been writing JavaScript for a living for over six years, and working exclusively on single-page apps for the last three. His personal and academic projects focus on the problem of building complex apps on the web stack, with a particular interest in applying results from systems research.
- email:
- homepage:
- twitter: lawnsea
- github:
- linkedin:
-sponsor:
- name: IBM
- url: https://ibm.com
- careerUrl:
- message: Thanks to our sponsor IBM. They're hiring developers! Check out the [Job Description](https://ibm.biz/BdxKRN)][4] and contact Jill (jorlich@us.ibm.com) to apply.
-venue: frog
-after: gingerman
-organizers:
- - asexton
----
-
-February has enough days dedicated to love and romance, so we're dedicating our meetup to **bugs**. We've got local JavaScript free-thinker and theorist Lon Ingram joining us for a talk about bugs and bug reproduction (ewww gross).
-
-Lon will discuss the problem of reproducing and diagnosing bugs reported from the wild, and then present Reanimator, an experimental system for capturing and replaying JavaScript applications. Reanimator captures non-deterministic input to a JavaScript application in a log that can replayed at a later date. It was originally designed for recording web application crashes for later debugging, but Lon will also cover other uses, such as usability testing and tutorials.
-
-Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle [@joemccann][1] or [@slexaxton][2]!
-
-Any questions or suggestions, please feel free to contact Alex ([@SlexAxton][5]). Also, be sure to follow us on Twitter: [@AustinJS][6].
-
-[1]: http://twitter.com/joemccann
-[2]: http://twitter.com/slexaxton
diff --git a/_meetups/2013-05-21-meetup.md b/_meetups/2013-05-21-meetup.md
deleted file mode 100644
index 1b76a3f0..00000000
--- a/_meetups/2013-05-21-meetup.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-layout: meetup
-title: D3 and Data Visualizations
-author: asexton
-when: 2013-05-21T19:30:00-05:00
-speakers:
- - name: Mark DiMarco
- title: Senior UI Engineer at Bazaarvoice
- avatar: https://media-exp1.licdn.com/dms/image/C4D03AQHLdVIJlNx0Zg/profile-displayphoto-shrink_200_200/0?e=1593043200&v=beta&t=5c1biN0jJkfc7nVsN8nxoD85cwvQchnwNDqfRI8rStQ
- bio: Mark DiMarco spends time building out data visualizations with D3 and integrating them into common front-end architectures. He also recently released [DataMaps](http://datamaps.github.io), an easy to use library for data integration with maps.
- email:
- homepage:
- twitter: markmarkoh
- github:
- linkedin:
-sponsor:
-venue: frog
-after: gingerman
-organizers:
- - asexton
- - tswicegood
----
-
-We're back from SXSW and TXJS and ready to get back into action! This month we'll have local JavaScripter, [Mark DiMarco][1] talk about [D3.js][2] and Data Visualizations.
-
-Mark will give an intro to D3.js and data visualizations as well as some real world use cases for using these tools. Using an interactive programming style, he will navigate the ins and outs of simplifying data, manipulating it, and displaying it in a way that the end user can understand. He'll compare D3 to some other popular charting libraries and note the reasons when you'd pick one style of data visualizations over another.
-
-Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle [@slexaxton][4] or this months fill-in host [@tswicegood][5]!
-
-[1]: http://twitter.com/markmarkoh
-[2]: http://d3js.org/
diff --git a/_meetups/2013-06-18-meetup.md b/_meetups/2013-06-18-meetup.md
deleted file mode 100644
index 426c8f1a..00000000
--- a/_meetups/2013-06-18-meetup.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-layout: meetup
-title: Writing Testable Code
-author: asexton
-when: 2013-06-18T19:30:00-05:00
-speakers:
- - name: Rebecca Murphey
- title:
- avatar: https://pbs.twimg.com/profile_images/1259973234398769154/uNcYGdTr_400x400.jpg
- bio: Rebecca Murphey is a JavaScript application developer and a frequent speaker on the topic of code organization and best practices at events around the world. She authored the learning site [jQuery Fundamentals](http://jqfundamentals.com/), contributed to the [jQuery Cookbook](http://shop.oreilly.com/product/9780596159788.do) from O’Reilly Media, served as a technical reviewer for David Herman’s [Effective JavaScript](http://effectivejs.com/), and created the [TXJS](http://texasjavascript.com/) conference. She has also created and contributed to several open-source projects. She was instrumental in getting [deferreds and promises](http://rmurphey.com/blog/2010/12/25/deferreds-coming-to-jquery/) introduced to jQuery 1.5; she created the [js-assessment](https://github.com/rmurphey/js-assessment) project, a test-driven tool for assessing a developer’s JavaScript skills; and she contributed key modules to the [Johnny Five](https://github.com/rwldrn/johnny-five) library for using JavaScript to interact with Arduinos.
- email:
- homepage: http://rmurphey.com
- twitter: rmurphey
- github:
- linkedin:
-sponsor:
- name: XO Group
- url: http://www.xogroupinc.com/
- logo: http://i.imgur.com/jbDSpyB.png
- message: This month's awesome sponsor is the [XO Group, Inc](http://www.xogroupinc.com/). Be sure to thank them for the drinks and pizza, or talk to them about some [job opportunities](http://www.xogroupinc.com/the-knot-careers.aspx)! You can also email [Shaun](mailto:ssims@xogrp.com) if you are interested in working there.
-venue: frog
-after: gingerman
-organizers:
- - asexton
----
-
-It's June. It's getting hot and we all need a little more JavaScript in our lives. Well, enjoy the air conditioned comfort of Austin JS on June 18th with a talk from JavaScript SuperStar Rebecca Murphey.
-
-It's one thing to write the code you need to write to get something working; it's another thing to write the code you need to write if you want to be able to prove that it works — and that it keeps working as you refactor and add new features. In this talk, we'll look at what it means to write testable JavaScript code.
-
-Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle [@slexaxton][9]!
-
-[9]: http://twitter.com/slexaxton
diff --git a/_meetups/2013-07-16-meetup.md b/_meetups/2013-07-16-meetup.md
deleted file mode 100644
index 6352dbce..00000000
--- a/_meetups/2013-07-16-meetup.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-layout: meetup
-title: Lightning Talks
-author: asexton
-when: 2013-07-16T19:30:00-05:00
-sponsor:
- name: Waterfall Mobile
- url: http://www.waterfallmobile.com/
- logo: http://f.cl.ly/items/0X2B0O0c0m0Q3x2R1k2C/waterfall.png
-venue: frog
-after: gingerman
-organizers:
- - asexton
- - lingram
----
-
-It's finally over 100 degrees with some consistency. It feels like home again. It must be July. Come celebrate our freedom at Austin JavaScript's first lightning talk meeting.
-
-Instead of having a traditional speaker, we're going to try a lightning talks meeting. We've discussed it with the a few of you and are excited to here everything you guys have to say. If it goes well, we'd like to have these 1 or 2 times a year, so please give feedback!
-
-## How it will work
-
-1. Show up to the meeting with a 5 minute (or so) demo of something that's useful to you in your work as a front-end engineer. This can be software, or patterns, or tools, or frameworks. In the past, just pulling up the website for a tool has been a totally easy way to have something to show without any slides to prep! (We encourage you to think about what you'll say though).
-2. Get up at some point during the meeting and plugin your laptop (we should have a default laptop if you don't need/have one) and give this (very informal) presentation.
-3. Watch everyone else share their best tips and tricks and tools!
-
-We anticipate everyone coming with something that they'd like to share, but if there is a lack of people who are volunteering, then multiple non-contiguous talks by the same person will be allowed. Hopefully we have too many for that to happen, though!
-
-Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle [@lawnsea][1]!
-
-[1]: http://twitter.com/lawnsea
diff --git a/_meetups/2013-10-15-meetup.md b/_meetups/2013-10-15-meetup.md
deleted file mode 100644
index d2c177b3..00000000
--- a/_meetups/2013-10-15-meetup.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-layout: meetup
-title: Tom Dale on Ember.js
-author: asexton
-when: 2013-10-15T19:30:00-05:00
-video: https://vimeo.com/77760308
-speakers:
- - name: Tom Dale
- title:
- avatar: https://2015.texasjavascript.com/pixels/speaker-tom.jpg
- bio:
- email:
- homepage: http://tomdale.net/
- twitter: tomdale
- github:
- linkedin:
-sponsor:
-venue: frog
-after: gingerman
-organizers:
- - asexton
----
-
-We hope your summers were eventful and full of fun, but it's time to get back into the groove. We're happy to partner up with the [EmberATX meetup][1] for a meetup of the centuries. [Tom Dale][2], co-creator of [Ember.js][3] will be visiting Austin to give a talk about Ember.js, the state of Ember 1.0, and the future of the framework.
-
-We're expecting a pretty full-house and only have limited space, **so we ask that you RSVP here: [Meetup.com EmberATX/AustinJS RSVP][4]** (slackers note: it should be open up 'til the moment the meetup starts, unless it fills up).
-
-AustinJS would like to thank the [@EmberATX][8] community for setting this up. We're happy to share our space with other awesome JavaScript communities in town!
-
-[1]: http://www.meetup.com/Ember-ATX
-[2]: http://tomdale.net/
-[3]: http://emberjs.com
-[4]: http://www.meetup.com/Ember-ATX/events/140780512/
-[8]: https://twitter.com/emberatx 'EmberATX on Twitter'
diff --git a/_meetups/2013-11-19-meetup.md b/_meetups/2013-11-19-meetup.md
deleted file mode 100644
index 5b605450..00000000
--- a/_meetups/2013-11-19-meetup.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-layout: meetup
-title: Kassandra Perch on Flight
-author: astacy
-when: 2013-11-19T19:30:00-05:00
-speakers:
- - name: Kassandra Perch
- title:
- avatar: https://pbs.twimg.com/profile_images/495625495812124672/DMpIV0R9_400x400.jpeg
- bio: Kassandra Perch is a developer, crafter, and gamer. She spends her days at [RetailMeNot](http://www.retailmenot.com), as a front-end dev trying to make workflows easier and more efficient. She is a completely unrepentant JavaScript addict, and is especially interested in hardware hacking and Node.JS.
- email:
- homepage:
- twitter: kassandra_perch
- github:
- linkedin:
-sponsor:
- name: PayPal
- url: https://www.paypal.com
- careerUrl: http://jobs.ebaycareers.com/austin/user-experience/jobid4144667-mts-1-user-interface-engineer-paypal-jobs?ss=paid&&utm_source=JobSearchWidget&utm_medium=CareerSite&utm_campaign=TBWidgets
- logo: https://www.paypalobjects.com/webstatic/mktg/logo/pp_cc_mark_111x69.jpg
- note: You can also e-mail [Hudson Carlton](mailto:hcarlton@paypal.com) if you are interested in working there.
-venue: frog
-after: gingerman
-organizers:
- - astacy
----
-
-Glad tidings, Austin JavaScripters, we bring you good news of our meetup this month! We're happy to welcome Kassandra Perch to throw down some knowledge on Twitter's framework, [Flight][1].
-
-Her talk is titled "Flight: a Framework done right,” and we'll talk about how the framework is event-driven, component-based, and leverages the DOM to form a cohesive code structure. The concept of functional mixins will also be introduced, and how it is unique from other forms of class composition. Finally, we'll cover how all of these create a testable, scalable, friendly front-end code base.
-
-[1]: http://twitter.github.io/flight/
diff --git a/_meetups/2014-01-21-meetup.md b/_meetups/2014-01-21-meetup.md
deleted file mode 100644
index 9732ac72..00000000
--- a/_meetups/2014-01-21-meetup.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-layout: meetup
-title: 'Release the Kraken: A Story of Node.js in the Enterprise'
-author: astacy
-when: 2014-01-21T19:30:00-06:00
-speakers:
- - name: Jeff Harrell
- title: Director of Engineering at PayPal
- avatar: https://pbs.twimg.com/profile_images/1740791116/Headshot_400x400.jpg
- bio:
- email:
- homepage:
- twitter: juxtajeff
- github:
- linkedin:
- - name: Erik Toth
- title: Principal Software Engineer AT PayPal
- avatar: https://pbs.twimg.com/profile_images/1444382597/astro-cat-200x200_400x400.png
- bio:
- email:
- homepage:
- twitter: eriktoth
- github:
- linkedin:
-sponsor: retailmenot
-venue: frog
-after: gingerman
-organizers:
- - astacy
----
-
-Happy New Year, Austin JavaScriptorians! Hopefully you're enjoying your 2014 SO MUCH you've already broken those pesky resolutions you made a couple of weeks ago.
-
-We're kicking the new year off with an exciting talk from our friends at PayPal called "Release the Kraken: A Story of Node.js in the Enterprise." Jeff Harrell and Erik Toth will tell us how PayPal revitalized its tech stack by moving from Java, JSP, and proprietary solutions to a Node.js web application stack with [dust.js][1] templating. Developer agility was the primary motivation, but along the way they had to take on enterprise culture and teach people that JavaScript is no longer a "toy," but a powerful tool to wield. We'll also take a look at PayPal's web app framework, [Kraken][2].
-
-[1]: http://akdubya.github.io/dustjs/
-[2]: https://github.com/paypal/kraken-js
diff --git a/_meetups/2014-02-18-meetup.md b/_meetups/2014-02-18-meetup.md
deleted file mode 100644
index 1a733fd4..00000000
--- a/_meetups/2014-02-18-meetup.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-layout: meetup
-title: Refactoring Big Apps
-author: astacy
-when: 2015-08-18T19:30:00-05:00
-speakers:
- - name: Garann Means
- title:
- avatar: https://pbs.twimg.com/profile_images/901849231098601472/F13h9cit_400x400.jpg
- bio: Garann is a JavaScript and front-end developer. She writes about web technologies and communities on [her own blog](http://garann.com) as well as contributing articles to other technical publications, and is the author of "Node for Front-End Developers" from O'Reilly. She's taught classes on many of the same topics she writes about, and sometimes organizes events for other developers.
- email:
- homepage: http://garann.com
- twitter: garannm
- github:
- linkedin:
-sponsor:
- name: Mass Relevance
- url: http://www.massrelevance.com
- careerUrl: http://www.massrelevance.com/about/careers
- logo: https://cldup.com/hiDy3BLvwp-3000x3000.png
- message: AustinJS is sponsored this month by [Mass Relevance](http://www.massrelevance.com/), so if you enjoy a slice of pizza or a drink at the meetup then be sure to thank them. Better yet, if you're a developer looking for a job, check out [careers at Mass Relevance](http://www.massrelevance.com/about/careers) or chat with one of their engineers at the meetup.
-venue: massrelevance
-after: gingerman
-organizers:
- - astacy
----
-
-This month we'll be hearing from [Garann Means][1] about refactoring big apps!
-
-It would be nice if developers could download a JavaScript framework, plug in the custom logic required for their particular problem, and have a functional, scalable, and reliable application. As any who's tried can probably tell you, however, it doesn't work like that. It doesn't matter if your application has 5000 "pages" or less than 50 — it will eventually become a large application in terms of code, because size of code is not just a measure of the complexity of the app itself, but of its maturity. If you've tried taking an app from a minimal set of functionality to something complex enough to cover all the edge cases, you've probably done some rewriting.
-
-If you haven't, it's your lucky day! We'll talk about several of the ways you can almost guarantee a rewrite in your app's future. If, on the other hand, rewrites don't sound like that much fun to you, we'll also talk about how to avoid them or at least minimise the risk they present
-
-> IMPORTANT: Location changed to Mass Relevance at 8th and Brazos, just up the street.
-
-[1]: https://twitter.com/garannm
diff --git a/_meetups/2014-04-15-meetup.md b/_meetups/2014-04-15-meetup.md
deleted file mode 100644
index 9842a375..00000000
--- a/_meetups/2014-04-15-meetup.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-layout: meetup
-title: The Power of M + Web Components
-author: astacy
-when: 2014-04-15T19:30:00-05:00
-speakers:
- - name: Charles Lowell
- title:
- avatar: https://pbs.twimg.com/profile_images/1272369014/skull_guns_400x400.jpg
- bio: Charles has been delivering bullet-proof software for over 18 years. An avid contributor to open source, he founded [the Frontside](http://frontside.io) in 2005 to help businesses deliver game-changing user interfaces to their customers. Also, he really, really, really, really likes to code. Really.
- email:
- homepage:
- twitter: cowboyd
- github:
- linkedin:
- - name: Rob Dodson
- title:
- avatar: https://pbs.twimg.com/profile_images/1031947699019427840/xl6p8ZBu_400x400.jpg
- bio:
- email:
- homepage:
- twitter: rob_dodson
- github:
- linkedin:
-sponsor:
- name: Four Kitchens
- url: http://fourkitchens.com/
- careerUrl: http://fourkitchens.com/careers
- logo: http://austinjavascript.com/wp-content/uploads/2014/04/four-kitchens-logo.png
- message: AustinJS is sponsored this month by the web chefs over at [Four Kitchens](http://fourkitchens.com/). Be sure to let them know you appreciate their support, and if you’re a developer looking for a job, check out [careers at Four Kitchens](http://fourkitchens.com/careers) or chat with one of their engineers at the meetup.
-venue: frog
-after: gingerman
-organizers:
- - astacy
----
-
-[Hold on to your butts][1], it's AustinJS time. Not only will we hear from local hero Charles Lowell ([@cowboyd][2]) about "The Power of M," but we're also hosting a special guest from Google that will tell us about the future of the web platform, web components!
-
-Whether you're using a full fledged MVC framework. or just spicing up your UX with a single special interaction, it's the "M" and only the "M" that is the key creating powerful user experiences. To demonstrate this principle in action, we'll first create an in-memory model of what a color is, and then use it to build an interactive 3D color chooser. Sound hard? Not when we harness the Power of M. In this talk, we'll track the building of an interactive, 3D color chooser that contains interactive visualizations of both the RGB Space (a cube), and the HSL Space (a cylinder).
-
-**BUT WAIT THERE'S MORE!** Web components are an important part of the future of the web, so when we heard that Rob Dodson ([@rob_dodson][4]) was going to be in town, we invited him to come tell us more about them. Rob is a Google developer advocate that specializes in this area, so we're looking forward to learning from him about web components and Google's polyfill/framework [Polymer][5].
-
-[1]: http://butts.ytmnd.com/
-[2]: https://twitter.com/cowboyd
-[3]: http://frontside.io
-[4]: https://twitter.com/rob_dodson
-[5]: http://www.polymer-project.org
diff --git a/_meetups/2014-05-20-meetup.md b/_meetups/2014-05-20-meetup.md
deleted file mode 100644
index b2c6ce4a..00000000
--- a/_meetups/2014-05-20-meetup.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-layout: meetup
-title: LESS + X11 Colors
-author: astacy
-when: 2014-05-20T19:30:00-05:00
-speakers:
- - name: Steve Stedman
- title: Lead Software Engineer at PayPal
- avatar: https://avatars2.githubusercontent.com/u/183122?s=400&v=4
- bio:
- email:
- homepage:
- twitter: stedman
- github: stedman
- linkedin: sstedman
- - name: Alex Sexton
- title:
- avatar: https://web.archive.org/web/20161027003022im_/https://avatars1.githubusercontent.com/u/96554?v=3&s=400
- bio:
- email:
- homepage:
- twitter: SlexAxton
- github:
- linkedin:
-sponsor:
- name: Hudl
- url: http://www.hudl.com/
- careerUrl: http://www.hudl.com/jobs/
- logo: http://i.imgur.com/eMle6Je.png
- message: Our sponsor this month is [Hudl](http://www.hudl.com/). Come tell them thanks for buying the pizza and drinks, and if you happen to be looking for a job, let them know in person or checkout their [open positions](http://www.hudl.com/jobs/)!
-venue: frog
-after: gingerman
-organizers:
- - astacy
----
-
-We're back with another AustinJS! We'll be hearing a couple of talks again this month. First up, Steve Stedman ([@stedman][1]) will be doling out some knowledge on [LESS][2], a popular CSS preprocessor implemented in Javascript. Next Alex Sexton ([@SlexAxton][3]) will teach us about X11 colors (wha?!!??) and how they've impacted the web.
-
-[1]: https://twitter.com/stedman
-[2]: http://lesscss.org
-[3]: https://twitter.com/slexaxton
diff --git a/_meetups/2014-06-17-meetup.md b/_meetups/2014-06-17-meetup.md
deleted file mode 100644
index b1a2de46..00000000
--- a/_meetups/2014-06-17-meetup.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-layout: meetup
-title: Complexity Metrics and You
-author: astacy
-when: 2014-06-17T19:30:00-05:00
-speakers:
- - name: Jared Stilwell
- title:
- avatar: https://pbs.twimg.com/profile_images/1142232911569195014/rvWvOpFB_400x400.jpg
- bio:
- email:
- homepage:
- twitter: meany_face
- github:
- linkedin:
-sponsor:
- name: HuBoard
- url: https://huboard.com
- careerUrl:
- logo: http://i.imgur.com/0ldfRFe.png
- message: Tonight our sponsor is an awesome startup from right here in Austin. [HuBoard](https://huboard.com) gives you instant project management built right on top of what you're already using for your project, GitHub. Check out their app online, and make sure to tell them thanks for covering the pizza and drinks this month!
-venue: spredfast
-after: gingerman
-organizers:
- - astacy
----
-
-What up Austonians, it's Austin JS time again! Come join us at Spredfast (formerly Mass Relevance, **_note the location change_**) for another meetup. We'll hear from local web builder [Jared Stilwell][1] about "Complexity Metrics and You." What are complexity metrics? Great question!
-
-The code works. Your linter and test cases are happy. But, you feel the code could be cleaner. Where do you start? Complexity metrics can lead the way. Using a combination of measurement techniques, the process of finding rough edges in your codebase and tracking improvements becomes much easier. We'll cover several common metrics, the landscape of existing tools for JavaScript, and how they can be used to guide refactoring.
-
-[1]: https://twitter.com/meany_face
diff --git a/_meetups/2014-07-15-meetup.md b/_meetups/2014-07-15-meetup.md
deleted file mode 100644
index f6534f8b..00000000
--- a/_meetups/2014-07-15-meetup.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-layout: meetup
-title: Lightning Talks
-author: astacy
-when: 2014-07-15T19:30:00-05:00
-speakers:
- - name: Lon Ingram
- avatar: https://pbs.twimg.com/profile_images/970161690233864192/rztEhZFR_400x400.jpg
- twitter: lawnsea
- - name: Kassandra Perch
- avatar: https://pbs.twimg.com/profile_images/495625495812124672/DMpIV0R9_400x400.jpeg
- twitter: kassandra_perch
- - name: Elben Shira
- avatar: https://pbs.twimg.com/profile_images/489409808479436800/Hv3ZWGDz_400x400.jpeg
- twitter: ElbenShira
- - name: Michael Mullins
- avatar: https://pbs.twimg.com/profile_images/1149415245158453248/qbZBqz9c_400x400.png
- twitter: WebDesserts
- - name: Ashley Price
- avatar: https://web.archive.org/web/20150802002243im_/http://0.gravatar.com/avatar/3402552c7e6b9e4237b22f5155c48ebd?s=70&d=identicon&r=G
- twitter: ClassicallyGeek
- - name: Patty Cifra
- avatar: https://media-exp1.licdn.com/dms/image/C5603AQEXrNS3u-1Etw/profile-displayphoto-shrink_800_800/0?e=1593043200&v=beta&t=fKXKig9xuXWRXwMS8kR8qf5R-5nm4FeeRAnZPuJi1iI
- twitter: pncifra
- - name: Aaron Stacy
- avatar: https://pbs.twimg.com/profile_images/3281266042/5069b845017701c465760d25ba54b83c_400x400.jpeg
- twitter: aaronj1335
-sponsor:
- name: The Bidding Network
- url: http://www.thebiddingnetwork.com
- careerUrl: mailto:mhc@texas.net
- logo:
- message: Big thanks to our sponsors this month, [The Bidding Network](http://www.thebiddingnetwork.com), a top-flight staffing firm based right here in Austin. If you enjoy the pizza and drinks, make sure to tell them thanks. And of course, if you're looking for a job you should [talk to them](mailto:mhc@texas.net). You won't find a better recruiter in Austin!
-venue: frog
-after: gingerman
-organizers:
- - astacy
----
-
-Hey Austin Javascripters, this month's meetup is gonna bring that `~*~* variety *~*~`. Here are a few talks that we've got lined up already:
-
-* [@lawnsea][1]: TCP Trix
-* [@kassandra_perch][2]: NodeBots
-* [@elbenshira][3]: ClojureScript and Om
-* [@WebDesserts][4]: chroma.js and color manipulation
-* [@ClassicallyGeek][5] and [@pncifra][6]: Google Polymer and Web Components
-* maybe [@aaronj1335][7] if there's time: If Underscore Was Written in ES6
-
-We've still got some time though, so feel free to come with an idea, and we'll work everyone in!
-
-[1]: http://twitter.com/lawnsea
-[2]: http://twitter.com/kassandra_perch
-[3]: http://twitter.com/elbenshira
-[4]: http://twitter.com/WebDesserts
-[5]: http://twitter.com/ClassicallyGeek
-[6]: http://twitter.com/pncifra
-[7]: http://twitter.com/aaronj1335
diff --git a/_meetups/2014-08-26-meetup.md b/_meetups/2014-08-26-meetup.md
deleted file mode 100644
index 49482ad6..00000000
--- a/_meetups/2014-08-26-meetup.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-layout: meetup
-title: Yield! How ES6 Generators and Monocle-js Can Bring Async Into Line, Literally
-author: astacy
-when: 2014-08-26T19:30:00-05:00
-speakers:
- - name: Jonathan Lipps
- title:
- avatar: https://pbs.twimg.com/profile_images/1068010472333434880/9kSStezw_400x400.jpg
- bio: Jonathan has been making things out of code as long as he can remember. He currently works as Director of Ecosystem and Integrations at Sauce Labs, leading a team of open source developers to improve the web and mobile testing ecosystem. Jonathan is the architect and project lead for Appium, the open-source, cross-platform mobile automation framework (written in Node). He has worked as a programmer in tech startups for over a decade, but is also passionate about academic discussion.
- email:
- homepage:
- twitter: jlipps
- github:
- linkedin:
-sponsor:
- name: Joust
- url: https://joust.com
- careerUrl: mailto:philip@joust.com
- logo: https://s3-us-west-1.amazonaws.com/static.joust.com/images/joust-logo-large-f3207597.png
- message: We've got a lot of good folks to thank this month. Thanks to [Sauce Labs](https://saucelabs.com) for flying Jonathan out to do the talk. As always, thanks to [Frog](http://www.frogdesign.com/contact/austin.html) for hosting us. And last but not least thanks to our main sponsor, [Joust](https://joust.com), for drinks and food. Joust is a startup with a lot of momentum and several major customers like ESPN, ABC, and MTV. They're building a core team of engineers, so if you're interested, contact [Philip](mailto:philip@joust.com).
-venue: frog
-after: gingerman
-organizers:
- - astacy
----
-
-Whatup jorbascrupmers. As promised we're going to be hearing about a shiny new feature coming in the next version of JavaScript — generators.
-
-[Jonathan Lipps][1] will give a talk titled _Yield! How ES6 Generators and Monocle-js Can Bring Async Into Line, Literally_, and will teach us how generators can save our souls from callback hell.
-
-[1]: https://twitter.com/jlipps
diff --git a/_meetups/2014-09-16-meetup.md b/_meetups/2014-09-16-meetup.md
deleted file mode 100644
index 888259c5..00000000
--- a/_meetups/2014-09-16-meetup.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-layout: meetup
-title: Testing JavaScript
-author: astacy
-when: 2014-09-16T19:30:00-05:00
-speakers:
- - name: Dan Heberden
- title:
- avatar: https://pbs.twimg.com/profile_images/378800000040548639/75fb2d7b479691700780c20aceeeb3f6_400x400.jpeg
- bio:
- email:
- homepage:
- twitter: danheberden
- github:
- linkedin:
-sponsor:
- name: Help.com
- url: http://help.com/
- careerUrl: http://help.com/jobs
- logo: https://i.cloudup.com/Djt2NTL8eo-3000x3000.jpeg
- message: |
- Thanks to sponsors this month, [Help.com](http://help.com/), whose team of customer service and technology experts is setting out to build the next generation of customer service software. Their goal is to give companies the tools they need to delight their customers at enterprise scale.
-
- Help.com is a SaaS startup based in downtown Austin. They recently closed a $6 million seed round and growing their team is a top priority. Their team of experienced customer service and technology experts is excited to change the landscape of the industry and become one of the best places to work in Austin. If you're interested in joining them, talk to them at the meetup or take a look at [their job postings](http://help.com/jobs).
-venue: frog
-after: gingerman
-organizers:
- - astacy
----
-
-Get ready for a blowout Austin JavaScripters, cause this month's meetup is going to be a choreography-fueled rager:
-
-
-
-This month's speaker is [Dan "JazzHands" Heberden][1]:
-
-Dan's going to take you to school on testing Javascript. Get ready to be _SHOCKED AND AWED_.
-
-[1]: https://twitter.com/danheberden
diff --git a/_meetups/2014-10-21-meetup.md b/_meetups/2014-10-21-meetup.md
deleted file mode 100644
index 9ec72270..00000000
--- a/_meetups/2014-10-21-meetup.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-layout: meetup
-title: Building Mobile Apps with Cordova
-author: astacy
-when: 2014-10-21T19:30:00-05:00
-speakers:
- - name: Dan DeFelippi
- title:
- avatar: https://pbs.twimg.com/profile_images/698980570265595906/twgFYIHA_400x400.jpg
- bio:
- email:
- homepage:
- twitter: expertdan
- github:
- linkedin:
-sponsor:
- name: Bazaar Voice
- url: http://www.bazaarvoice.com/
- careerUrl: http://www.bazaarvoice.com/careers/
- logo:
-venue: frog
-after: gingerman
-organizers:
- - astacy
----
-
-We've got another `~*super rad*~` meetup next Tuesday, October 21st. Local favorite [Dan DeFelippi][1] ([@expertdan][2]) is going to educate us on building mobile apps with [Cordova][3] (the open-source engine behind [PhoneGap][4]). Aside from being a proper geek and hacker, Dan is a co-founder of local bike rental and bike share app [Spokefly][5].
-
-[1]: http://driverdan.com
-[2]: https://twitter.com/expertdan
-[3]: http://cordova.apache.org
-[4]: http://phonegap.com
-[5]: https://twitter.com/Spokefly
diff --git a/_meetups/2015-01-20-meetup.md b/_meetups/2015-01-20-meetup.md
deleted file mode 100644
index 4c1f17a9..00000000
--- a/_meetups/2015-01-20-meetup.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-layout: meetup
-title: Harrowing tales of running code on other people's sites
-author: astacy
-when: 2015-01-21T00:30:00.1Z
-speakers:
- - name: Rebecca Murphey
- title: Staff Software Engineer at [Bazaarvoice](http://bazaarvoice.com)
- avatar: https://pbs.twimg.com/profile_images/1259973234398769154/uNcYGdTr_400x400.jpg
- bio: |
- Rebecca Murphey leads a team that shepherds third-party JavaScript application development across the organization. She is a frequent speaker on the topic of code organization and best practices at various JavaScript conferences, including Front-End Ops Conf, the 2014 jQuery Conference in San Diego, JSConf US 2013, JSConf US 2011, JSConf EU 2010, Full Frontal 2012, Fronteers 2012, and many others.
-
- She lives in Austin, TX, with her partner, their son, and their dog. She blogs at [rmurphey.com](http://rmurphey.com).
- email:
- homepage: http://rmurphey.com
- twitter: rmurphey
- github:
- linkedin:
-sponsor:
- name: Amazon
- url: http://www.amazon.com/
- message: You may have heard of this Seattle based e-retailer, but you may *not* have heard that they're hiring for positions at their Austin office! If the idea of working on [the world's 6th largest website](http://www.alexa.com/siteinfo/amazon.com) is interesting to you, come talk to one of the Amazon folks at the meetup. You can also [apply online](http://www.amazon.com/gp/jobs/ref=j_sq_btn?jobSearchKeywords=&category=*&location=US,+TX,+Austin&x=28&y=11).
-venue: frog
-after: gingerman
-organizers:
- - lingram
- - astacy
----
-
-Hey happy New Year Austin! Let's celebrate by getting together and talking about 3rd party JavaScript.
-
-![aw snap third party js party][1]
-
-So who's gonna emcee this rager? None other than the venerable [Rebecca Murphey][2] ([@rmurphey][3]). Get ready to hear some harrowing-ass tales of running code on other people's sites, from one of the largest 3rd party JavaScript deployments out there.
-
-[1]: https://cldup.com/nWqk2nPq1S.gif
-[2]: http://rmurphey.com
-[3]: https://twitter.com/rmurphey
diff --git a/_meetups/2015-04-21-meetup.md b/_meetups/2015-04-21-meetup.md
deleted file mode 100644
index df674571..00000000
--- a/_meetups/2015-04-21-meetup.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-layout: meetup
-title: JavaScript Crypto
-author: lingram
-speakers:
- - name: Tara Vancil
- title:
- avatar: https://pbs.twimg.com/profile_images/1192286962369146880/_kMgpzL3_400x400.jpg
- bio: Tara is an independent front end developer who cares a lot about Internet freedom and building free and open-source tools that help users secure their online communications. She thinks the Axolotl ratchet protocol (used by TextSecure, Signal, and WhatsApp) is especially neat, and will gladly chat your ear off about it.
- email:
- homepage:
- twitter: taravancil
- github:
- linkedin:
-sponsor:
- name: Bocoup
- url: http://bocoup.com/
- logo: https://cldup.com/wN5OOPk9HR-3000x3000.png
-venue: frog
-after: gingerman
-organizers:
- - lingram
- - astacy
----
-
-Are you finally recovered from SXSW and ready. for. some. JavaScript?! Well, you're in luck: this Tuesday, Austin local [Tara Vancil](https://twitter.com/tbvancil) is giving us a clinic on JavaScript crypto. Please don't tell the NSA.
-
-
-
-The web hosts a large portion of the world's new cryptographic tools, and the debate about whether JavaScript is up to the challenge carries on. Tara will discuss how JavaScript plays an important role in developing some of the best crypto tools out there, explain some situations in which it just doesn't cut it, and show some examples of both.
diff --git a/_meetups/2015-05-19-meetup.md b/_meetups/2015-05-19-meetup.md
deleted file mode 100644
index 680505ef..00000000
--- a/_meetups/2015-05-19-meetup.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-layout: meetup
-title: "on('input'): Dealing With Data From Your User In Real-time"
-author: astacy
-when: 2015-05-19T19:30:00.1-05:00
-speakers:
- - name: Charles Lowell
- title:
- avatar: https://pbs.twimg.com/profile_images/1272369014/skull_guns_400x400.jpg
- bio: Charles has been delivering bullet-proof software for over 18 years. An avid contributor to open source, he founded [the Frontside](http://frontside.io) in 2005 to help businesses deliver game-changing user interfaces to their customers. Also, he really, really, really, really likes to code. Really.
- email:
- homepage:
- twitter: cowboyd
- github:
- linkedin:
-sponsor:
- name: uShip
- url: https://www.uship.com
- logo: https://cldup.com/azYVnOOyFP-3000x3000.png
-venue: frog
-after: gingerman
-organizers:
- - lingram
- - astacy
----
-
-As the saying goes, "April showers bring May showers." They also bring you another JavaScript meetup! Local markup slinger [Charles Lowell][1] will be giving a talk titled "`on('input')`: dealing with data from your user in real-time… as in like forms, actually."
-
-![animated gif of what appears to be a honey badger dancing][2]
-
-Dealing with forms in a stateful UI can be a nightmare. While most of the major frameworks focus on their hot new rendering hotness, they uniformly pass the buck when it comes to handling user input. More often than not, you’re on your own, armed with nothing but callbacks when it comes to the complexities of wrangling networks of textfields, checkboxes and other custom components into robust, valid data structures that the rest of your app can use. In this talk, we’ll explore how to bring just a little more sanity to our forms by looking for help in an unlikely place: those same advances in rendering that have pushed the state of the art so far forward these past few years.
-
-[1]: https://twitter.com/cowboyd
-[2]: https://cldup.com/uJyOXkshJR.gif 'awww yisss'
diff --git a/_meetups/2015-06-16-meetup.md b/_meetups/2015-06-16-meetup.md
deleted file mode 100644
index a912b867..00000000
--- a/_meetups/2015-06-16-meetup.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-layout: meetup
-title: Wrangling Transpilations
-author: astacy
-when: 2015-06-16T19:30:00-05:00
-speakers:
- - name: Kyle Simpson
- title:
- avatar: https://avatars0.githubusercontent.com/u/150330?v=3&s=460
- bio: Kyle Simpson is an Open Web Evangelist from Austin, TX, who's passionate about all things JavaScript. He's an author, workshop trainer, tech speaker, and OSS contributor/leader.
- email:
- homepage:
- twitter: getify
- github:
- linkedin:
-sponsor:
- name: Microsoft
- url: https://microsoft.com
- logo: http://mscorpnews.blob.core.windows.net/ncmedia/2014/10/MSFT_logo_rgb_C-Gray.png
- message: "Microsoft BizSpark: supporting your startup as you grow"
-venue: frog
-after: gingerman
-organizers:
- - lingram
- - astacy
----
-
-Howdy, Texas. We're looking forward to seeing all of you fine vaqueras and vaqueros this Tuesday {{ when | date: '%B %e, %Y' }} as Kyle Simpson ([@getify][]) rustles up some knowledge on transpiling JavaScript.
-
-The new reality of JavaScript is that the features will evolve even quicker than the specification, and much quicker than your "supported" browsers. So we're going to have to come to grips with transpilers being a standard part of our build processes. But what can we do to wrangle at least two versions of every file? What does that mean for server-side coding (node/iojs) and what does it mean for browser-delivered files? Should we use the transpiled code everywhere, or should we have split delivery?
-
-[@getify]: https://twitter.com/getify
diff --git a/_meetups/2015-07-21-meetup.md b/_meetups/2015-07-21-meetup.md
deleted file mode 100644
index 7974ddff..00000000
--- a/_meetups/2015-07-21-meetup.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-layout: meetup
-title: JerseyScript.tx
-author: lingram
-when: 2015-07-21T19:30:00-05:00
-speakers:
- - name: Jenn Schiffer
- title:
- avatar: https://cldup.com/KES3wVuWGB-3000x3000.png
- bio: Jenn Schiffer entails sensual lizard feminist 69x engineer [@bocoup](https://twitter.com/bocoup), artist-in-residence [@nymediacenter](https://twitter.com/nymediacenter), tech satirist, git blame [http://vart.institute](http://vart.institute) & [http://make8bitart.com](http://make8bitart.com).
- email:
- homepage:
- twitter: jennschiffer
- github:
- linkedin:
- - name: Adam J. Sontag
- title:
- avatar: https://pbs.twimg.com/profile_images/3744028125/60fbc0df81a37742d851916c79003a0b.jpeg
- bio: Adam J. Sontag is director of community [@bocoup](https://twitter.com/bocoup), dev rel lead [@jquery](https://twitter.com/jquery) foundation, jokes range from below lemon to sublime.
- email:
- homepage:
- twitter: ajpiano
- github:
- linkedin:
-sponsor:
- name: Advisory Board
- url: https://www.advisory.com/
- careerUrl: https://www.advisory.com/careers
- logo: http://i.imgur.com/2HNye7a.png
-venue: frog
-after: gingerman
-organizers:
- - lingram
- - astacy
----
-
-Sup, y'all. We've got something special planned for our July meetup and we are _shore_ you're gonna think it's fresh to death.
-
-Here's [the Situation][the-situation]: AustinJS is going down the Shore! Jenn Schiffer is staging a blowout [JerseyScript][jerseyscript] bo-coup on {{ when | date: '%B %e, %Y' }}. Jenn has convinced New York's own Adam J. Sontag to come rap with us about a speech recognition game he is working on.
-
-[the-situation]: https://en.wikipedia.org/wiki/Michael_Sorrentino
-[jerseyscript]: http://jerseyscript.github.io/
diff --git a/_meetups/2015-08-18-meetup.md b/_meetups/2015-08-18-meetup.md
deleted file mode 100644
index bb45961c..00000000
--- a/_meetups/2015-08-18-meetup.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-layout: meetup
-title: Ember.js and Ember-CLI
-author: astacy
-when: 2015-08-18T19:30:00-05:00
-speakers:
- - name: Iheanyi Ekechukwu
- title:
- avatar: https://avatars2.githubusercontent.com/u/956631?v=3&s=300
- bio: Iheanyi Ekechukwu is a Notre Dame alum, software engineer [@IBMWatson](https://twitter.com/ibmwatson), designer, EmberJS and Rails user, advocate for Blacks & Latinos in tech, and half of [@TwoBlackNerds](https://twitter.com/twoblacknerds).
- email:
- homepage:
- twitter: kwuchu
- github:
- linkedin:
-sponsor: retailmenot
-venue: spredfast
-after: gingerman
-organizers:
- - lingram
- - astacy
----
-
-
-
-
-
-In other big news, Spredfast is now the official location for AustinJS! The Spredfast team has always been kind to share their `~*luxurious*~` downtown space with us, so we look forward to making more memories going forward. Thanks Spredfast!
diff --git a/_meetups/2017-02-21-meetup.md b/_meetups/2017-02-21-meetup.md
deleted file mode 100644
index ecd0ac34..00000000
--- a/_meetups/2017-02-21-meetup.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-layout: meetup
-title: Anton Astashov on immutability
-author: astacy
-when: 2017-02-21T19:30:00-06:00
-speakers:
- - name: Anton Astashov
- title:
- avatar: https://avatars3.githubusercontent.com/u/12795?v=3&s=400
- bio: Anton is [a real-deal code slinger](https://github.com/anton_astashov) based in Austin and currently working at [Mixbook.com](http://www.mixbook.com).
- email:
- homepage:
- twitter: anton_astashov
- github: astashov
- linkedin:
-sponsor: mozilla
-venue: cloudflare
-after: gingerman
-organizers:
- - lingram
- - astacy
----
-
-What are immutable data structures? Why would you want to prevent objects from changing? Why not just `Object.freeze()`?
-
-These are great questions for smart people, so you should come listen to Anton talk about what he'd like to see change in the world of immutable JavaScript (you… you see what I did there?).
diff --git a/_meetups/2017-03-21-meetup.md b/_meetups/2017-03-21-meetup.md
deleted file mode 100644
index fb8dfd7e..00000000
--- a/_meetups/2017-03-21-meetup.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-layout: meetup
-title: Intro to WebAssembly
-author: astacy
-when: 2017-03-21T19:30:00-05:00
-speakers:
- - name: Lin Clark
- title:
- avatar: https://pbs.twimg.com/profile_images/497876628651782146/hrCHz_ym.jpeg
- bio: Lin is a code cartoonist. She takes software concepts and architectures and turns them into stick figure cartoons. She also works in Mozilla's Emerging Technologies group, where she gets to tinker with new browser technologies like WebAssembly. In previous lives, she worked at npm, was a core contributor to open source projects like Firefox's developer tools, and contributed to HTML data standards.
- email:
- homepage:
- twitter: linclark
- github:
- linkedin:
- - name: Luke Wagner
- title:
- avatar: https://pbs.twimg.com/profile_images/610538287346769921/Htfyxvxg.png
- bio: Luke is a software engineer working on SpiderMonkey, Firefox's JavaScript — and now WebAssembly! — engine.
- email:
- homepage:
- twitter: luke_wagner
- github:
- linkedin:
-sponsor: retailmenot
-venue: spredfast
-after: gingerman
-organizers:
- - lingram
- - astacy
----
-
-WebAssembly is fast. It’s being called “the future of the web”. Its speed and potential have major browser vendors working together to make it a reality. And it’s on its way — the MVP hit multiple browsers in October of last year.
-
-But what makes it fast? Starting from the basics, this talk will walk you through what WebAssembly is, and then why it’s fast.
-
-Get your burning questions ready! We'll have some super special swag for the best questions.
-
-- Make sure to do Mozilla a solid and [RSVP at their meetup page](https://www.meetup.com/Mozilla-Developer-Roadshow/events/237760047/)! -
diff --git a/_meetups/2017-04-18-meetup.md b/_meetups/2017-04-18-meetup.md deleted file mode 100644 index 888c0c87..00000000 --- a/_meetups/2017-04-18-meetup.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: meetup -title: Chuck always wins -author: astacy -when: 2017-04-18T19:30:00-05:00 -speakers: - - name: Mark Sims - title: Architect at [@projekt202](https://twitter.com/projekt202) - avatar: https://pbs.twimg.com/profile_images/677995731974656001/Jzi_AbRc.jpg - bio: Mark hails from Irving, Texas. He's an architect at [@projekt202](https://twitter.com/projekt202), and when he's not judiciously driving for a high level of quality in his JavaScript based applications, you might find him dad'ing, playing guitar, or woodworking. - email: - homepage: - twitter: markedwardsims - github: - linkedin: -sponsor: -venue: spredfast -after: gingerman -organizers: - - lingram - - astacy ---- - -What up team we got a meetup tonight! Tonight we're going to talk about testing your code. We figured it's been [almost 6 years](/june-meetup-details-announced/) since we last talked about TDD, which means the ecosystem has been through ~11 different testing frameworks, so we might as well get back into the subject since QUALITY IS EVERYONE'S JOB ZERO. - -[Mark Sims](https://twitter.com/markedwardsims) is coming to town to tell us about his experiences with testing and walk us through testing an app called Deathmatch that needs to be sure _Chuck always wins_. diff --git a/_meetups/2017-06-20-meetup.md b/_meetups/2017-06-20-meetup.md deleted file mode 100644 index 84ff04f9..00000000 --- a/_meetups/2017-06-20-meetup.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: meetup -title: Meep! AustinJS is BACK! Meep Meep! -author: lingram -when: 2017-06-20T19:30:00-05:00 -speakers: - - name: Tara Vancil - title: - avatar: https://pbs.twimg.com/profile_images/1192286962369146880/_kMgpzL3_400x400.jpg - bio: Tara helps build [Beaker](https://beakerbrowser.com/), a browser for the peer-to-peer Web. She’s enthusiastic about decentralizing the Web, and thinks that peer-to-peer protocols will reinvigorate the creativity of the Web’s early days. - email: - homepage: - twitter: taravancil - github: - linkedin: - - name: Paul Frazee - title: - avatar: https://pbs.twimg.com/profile_images/1234611810281689089/Yz3W7Ur5_400x400.jpg - bio: Paul works on [Beaker](https://beakerbrowser.com/), and is also very enthusiastic about a decentralized Web. He lives in Austin, TX. - email: - homepage: - twitter: pfrazee - github: - linkedin: -sponsor: -venue: spredfast -after: gingerman -organizers: - - lingram - - astacy ---- - -Here come dat beaker! - -
-
-Hey friends! AustinJS is back with an exciting dual talk from Austin's own [Tara Vancil](https://twitter.com/taravancil) and [Paul Frazee](https://twitter.com/pfrazee) about their project, [Beaker Browser][beaker], an experimental web browser with builtin hosting and p2p web protocols.
diff --git a/_meetups/2017-07-18-meetup.md b/_meetups/2017-07-18-meetup.md
deleted file mode 100644
index c75664eb..00000000
--- a/_meetups/2017-07-18-meetup.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-layout: meetup
-title: Perfecting Perf
-author: astacy
-when: 2017-07-18T19:30:00-05:00
-speakers:
- - name: Lon Ingram
- title:
- avatar: https://pbs.twimg.com/profile_images/970161690233864192/rztEhZFR_400x400.jpg
- bio: Lon is a purveyor of dubious programming language meetups (both the languages and the meetups themselves being of a dubious nature).
- email:
- homepage:
- twitter: lawnsea
- github:
- linkedin:
-sponsor:
-venue: spredfast
-after: gingerman
-organizers:
- - lingram
- - rmurphey
- - astacy
----
-
-It's too hot for hair out there, so we've asked Lon Ingram to come talk to us about making websites fast as ⚡ (kung fu fighting, etc). Join us Tuesday {{ when | date: '%B %e, %Y' }} and learn what it takes to appease our search engine overlords!
-
-## Talk summary
-
-With the rise of the mobile web, speed has become crucial to success. Users won't wait around for slow-loading pages and search engines are now punishing sluggish sites. There's a wealth of ideas out there for cranking up performance, but how do you know where to start? What if you work for days to ship an optimization that doesn't really pay off? In this talk, you'll learn how to experiment and fail fast. You'll find out how to quickly and rigorously assess your optimization ideas with open source tools, and how to share your results so that others can replicate your findings.
diff --git a/_meetups/2017-08-15-meetup.md b/_meetups/2017-08-15-meetup.md
deleted file mode 100644
index c459391a..00000000
--- a/_meetups/2017-08-15-meetup.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-layout: meetup
-title: Babble? Baebull?
-author: lingram
-when: 2017-08-15T19:30:00-05:00
-speakers:
- - name: Andrew Levine
- title: Frontend Architect at Magento
- avatar: https://pbs.twimg.com/profile_images/950842904771284992/pZwj7Nim_400x400.jpg
- bio: Andrew writes a lot of JavaScript, and sometimes it's not completely awful. He's a Frontend Architect @magento & core team member @BabelJS. He ❤️ OSS.
- email:
- homepage:
- twitter: drewml
- github:
- linkedin:
-sponsor:
-venue: spredfast
-after: gingerman
-organizers:
- - lingram
- - rmurphey
- - astacy
----
-
-Ever wonder how to pronounce Babel? Join us Tuesday {{ when | date: '%B %e, %Y' }} to find out! Austin's own Andrew Levine will teach us how to write Babel plugins.
-
-## Talk summary
-
-Andrew is going to give an intro to writing Babel plugins. He'll start with a very high level summary of how Babel works, and then dive into the Plugin APIs and several examples of real world plugins to write.
diff --git a/_meetups/2017-09-19-meetup.md b/_meetups/2017-09-19-meetup.md
deleted file mode 100644
index 7dd7eb7e..00000000
--- a/_meetups/2017-09-19-meetup.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-layout: meetup
-title: Not so locally sourced JavaScript
-author: lingram
-when: 2017-09-19T19:30:00-05:00
-video: https://youtu.be/b9aJ3lc4acQ
-speakers:
- - name: Ben Vinegar
- title: VP Engineering at @getsentry
- avatar: https://avatars2.githubusercontent.com/u/2153?v=4&s=460
- bio: Ben is a co-author of Third-party JavaScript. People respected him in 2013.
- email:
- homepage:
- twitter: bentlegen
- github:
- linkedin:
-sponsor: spredfast
-venue: spredfast
-after: gingerman
-organizers:
- - lingram
- - rmurphey
- - astacy
----
-
-Source maps, huh, yeah. What are they good for? Absolutely... some things.
-
-We have an extra special treat this month thanks to our gracious hosts and good friends at Spredfast: Ben Vinegar is coming all the way from "San Francisco" to tell us everything about how source maps work. Join us Tuesday {{ when | date: '%B %e, %Y' }} for a special Bae Area AustinJS!
-
-## Talk summary
-
-You may already be familiar with source maps. They let you debug your original, unminified, and untranspiled code in the browser. But have you ever wondered how they actually work? Ben will take a deep dive into the source map format to see what’s under the hood, exploring source map generation tools, parsers, and how to manipulate source maps directly for fun and profit.
diff --git a/_meetups/2017-10-17-meetup.md b/_meetups/2017-10-17-meetup.md
deleted file mode 100644
index ae8a51cb..00000000
--- a/_meetups/2017-10-17-meetup.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-layout: meetup
-title: How to Start a JavaScript Synthpop Band
-author: lingram
-when: 2017-10-17T19:30:00-05:00
-video: https://youtu.be/EGKq5Qemlek
-speakers:
- - name: J. Kyle Fagan
- title:
- avatar: https://avatars1.githubusercontent.com/u/100188?v=4&s=460
- bio: J. Kyle Fagan is an Austin local and writes javascript for [Eduphoria](https://www.eduphoria.net). He's an aspirational artist, aspirational musician, and aspirational cool dad.
- email:
- homepage:
- twitter: jkyle
- github:
- linkedin:
-sponsor:
- name: eRelevance
- url: http://www.erelevancecorp.com/
- careerUrl: http://www.erelevancecorp.com/careers/
-venue: spredfast
-after: gingerman
-organizers:
- - lingram
- - rmurphey
- - astacy
----
-
-Synthesizers! JavaScript! Aleatoricism?? Using an actual analog synthesizer as a guide, Kyle will build a feature-for-feature replica in the browser with the Web Audio API and show how to use JavaScript to overcome a lack of musical training. You'll learn the capabilities and limitations of the Web Audio API, and how it can be used for applications like gaming, WebVR, and 80s retro synthwave. With live coding, live synth playing, and a touch of music theory, *what could go wrong?*
diff --git a/_meetups/2017-11-21-meetup.md b/_meetups/2017-11-21-meetup.md
deleted file mode 100644
index ea2e43ee..00000000
--- a/_meetups/2017-11-21-meetup.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-layout: meetup
-title: We can't contain our excitement!!!
-author: astacy
-when: 2017-11-21T20:30:00-05:00
-video: https://youtu.be/D2CGoNfcJYY
-speakers:
- - name: Mando Escamilla
- title:
- avatar: https://avatars1.githubusercontent.com/u/467?s=400&v=4
- bio: Literally owns *his first name* dot org. Don't fucking get him started on llamas.
- email:
- homepage:
- twitter: mandoescamilla
- github:
- linkedin:
-sponsor:
- name: PayPal
- url: https://www.paypal.com/
- careerUrl: https://www.paypal.com/us/webapps/mpp/jobs
- location: 7700 W. Parmer Lane, Austin, TX 78729
-venue: spredfast
-after: gingerman
-organizers:
- - lingram
- - rmurphey
- - astacy
----
-
-We've got [Mando Escamilla](http://mando.org) coming this month to **_deploy_** some knowledge on us. Here's some relevant prior art:
-
-
-
-In his own words…
-
-## DOCKER! CONTAINERS! KUBERNETES! GAAAAH
-
-If all that stuff is confusing or intimidating, don’t panic - we’re here to help. We’ll help you develop a mental model of a kubernetes cluster and what it does, then jump into a demo of how you’d build and deploy a simple javascript application inside a kubernetes cluster. Don’t worry - if we were able to figure this out, you can too.
diff --git a/_meetups/2018-01-16-meetup.md b/_meetups/2018-01-16-meetup.md
deleted file mode 100644
index 6b0e07ff..00000000
--- a/_meetups/2018-01-16-meetup.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-layout: meetup
-title: Can we please find some commonjs ground on modules??
-author: lingram
-when: 2018-01-16T20:30:00-05:00
-organizers:
- - lingram
- - rmurphey
- - astacy
----
-
-> **The January meetup is cancelled due to expected hazardous weather. See y'all in February!**
-
-Let's kick off the new year with [Bradley Farias](https://github.com/bmeck), who will deliver a meditation on the seven stages of ~~grief~~ standards development:
-
-## From Language Design to TC39 (The JS Language Standards Group)
-
-This talk is a reflection on a lot of discussions that come up when talking about language design and what it means to design for a future that is always bigger than the past. Topics from the past present and future such as ASI, ESM, decorators, and private fields are things that are important to get right if we are stuck with them forever. We can use discussion examples of each of these topics to get a better understanding of why it is so difficult to make things "just work". I will discuss ongoing themes of discussion within TC39 and efforts that are changing how TC39 is viewed.
-
-
diff --git a/_meetups/2018-02-20-meetup.md b/_meetups/2018-02-20-meetup.md
deleted file mode 100644
index b2e6c3de..00000000
--- a/_meetups/2018-02-20-meetup.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-layout: meetup
-title: Can we please find some commonjs ground on modules??
-author: lingram
-when: 2018-02-20T20:30:00-05:00
-speakers:
- - name: Bradley Farias
- title: Developer Advocate at GoDaddy
- avatar: https://avatars1.githubusercontent.com/u/234659?s=400&v=4
- bio: Bradley is a GoDaddy developer advocate working as a TC39 member with a focus on developer tooling. He implemented and specified Node.js integration with ES Modules; and is currently expanding experiences for the REPL, package distribution, and devtools.
- email:
- homepage:
- twitter: bradleymeck
- github: bmeck
- linkedin:
-sponsor: indeed
-venue: spredfast
-after: lavaca
-organizers:
- - lingram
- - rmurphey
- - astacy
----
-
-Let's kick off the new year with [Bradley Farias](https://github.com/bmeck), who will deliver a meditation on the seven stages of ~~grief~~ standards development:
-
-## From Language Design to TC39 (The JS Language Standards Group)
-
-This talk is a reflection on a lot of discussions that come up when talking about language design and what it means to design for a future that is always bigger than the past. Topics from the past present and future such as ASI, ESM, decorators, and private fields are things that are important to get right if we are stuck with them forever. We can use discussion examples of each of these topics to get a better understanding of why it is so difficult to make things "just work". I will discuss ongoing themes of discussion within TC39 and efforts that are changing how TC39 is viewed.
diff --git a/_meetups/2018-05-15-meetup.md b/_meetups/2018-05-15-meetup.md
deleted file mode 100644
index dd88e04c..00000000
--- a/_meetups/2018-05-15-meetup.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-layout: meetup
-title: 🥤🍾🍷🍻🍹🍼 bevera.js at Gingerman ☕️🥛🥃🍸🍺🍶
-author: astacy
-when: 2018-05-15T19:30:00-05:00
-speakers:
-sponsor:
-venue: gingerman
-after: gingerman
-organizers:
- - lingram
- - astacy
----
-
-Come out tomorrow {{ when | date: '%B %e, %Y' }}, for some `bevera.js` at the Gingerman! Topics of discussion may include:
-
-* The open web
-* [JorbaScrump](https://twitter.com/davatron5000/status/369187413291065344)
-* What drink you and or your conversation partner are currently imbibing upon
-* "Oh hey how have you been?"
-* Giving Lawn a hard time
-* Movies watched recently
-* Funny tweets
-* Ridiculous things your kid did or said
-* Ridiculous things your dog did or said
-* Dank memes
-* And many more!
-
-Topics of discussion will of course **not** include violations of our [code of conduct](https://austinjavascript.com/austinjs-code-of-conduct/). If you see anyone fall short of being excellent to one another, please let them or an organizer know!
diff --git a/_meetups/2018-06-19-meetup.md b/_meetups/2018-06-19-meetup.md
deleted file mode 100644
index dd70235e..00000000
--- a/_meetups/2018-06-19-meetup.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-layout: meetup
-title: Lessons learned optimizing performance on Mixbook.com
-author: lingram
-when: 2018-06-19T19:30:00-05:00
-video: https://youtu.be/HZ6PBe9rwe0
-speakers:
- - name: Anton Astashov
- title:
- avatar: https://avatars3.githubusercontent.com/u/12795?v=3&s=400
- bio: Anton is [a real-deal code slinger](https://github.com/astashov) based in Austin and currently working at [Mixbook.com](http://www.mixbook.com).
- email:
- homepage:
- twitter: anton_astashov
- github: astashov
- linkedin:
-sponsor: magento
-venue: spredfast
-after: lavaca
-organizers:
- - lingram
- - astacy
----
-
-Who is ready to optimize your user's spa experience? Anton is going to tell us the secrets to making your visitors feel pampered in no time flat! Anton will share all the tricks of the trade, from how to improve time to first relaxation to HTTP/2 aromatherapy tips.
-
-Anton has recently been working on optimizing performance for mixbook.com, and he’d like to tell y'all about their experience: what worked and what didn't.
-
-Topics include,
-
-* how they got rid of all external CSS to avoid blocking network calls
-* how they started inlining some server-side data right into JS bundles and rebuilt/redeployed the app automatically when that data changes
-* how we used webpack with custom loaders to automate all that stuff
-* and more and more :)
diff --git a/_meetups/2018-07-17-meetup.md b/_meetups/2018-07-17-meetup.md
deleted file mode 100644
index 78958613..00000000
--- a/_meetups/2018-07-17-meetup.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-layout: meetup
-title: Zelda + a11y?
-author: lingram
-when: 2018-07-17T19:30:00-05:00
-video: https://youtu.be/QdACzHt_pQI
-speakers:
- - name: Dave Rupert
- title: Lead developer at Paravel
- avatar: https://avatars1.githubusercontent.com/u/42218?s=460&v=4
- bio: Purveyor of tiny jQueries.
- email:
- homepage:
- twitter: davatron5000
- github: davatron5000
- linkedin:
-sponsor:
-venue: spredfast
-after: lavaca
-organizers:
- - lingram
- - astacy
----
-
-Accessibility is hard. Oftentimes, it’s difficult to understand what users and assistive technology expect from your markup and designs. Can accessibility be easier to learn? Can it be…fun? In this talk, Dave will approach accessibility the way we might tackle a video game—looking at a handful of common UI patterns like popup, tabs, accordions, and modals; how to test them; and how to defeat them while leveling up your skillset along the way.
diff --git a/_meetups/2018-08-21-meetup.md b/_meetups/2018-08-21-meetup.md
deleted file mode 100644
index 7947f464..00000000
--- a/_meetups/2018-08-21-meetup.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-layout: meetup
-title: What if the simulation is powered by JavaScript? This explains a lot.
-author: lingram
-when: 2018-08-21T19:30:00-05:00
-speakers:
- - name: Simon Swain
- title: Cloud Architect at Silicon Labs
- avatar: https://avatars3.githubusercontent.com/u/2321421?s=460&v=4
- bio: |
- Javascript, IoT, Simulations, Music, 詠春, JSConf Speaker.
-
- * https://www.coldwar.io
- * https://ratsofthemaze.com
- * https://simonswain.com
- email:
- homepage:
- twitter: simon_swain
- github: simonswain
- linkedin:
-sponsor: indeed
-venue: spredfast
-after: lavaca
-organizers:
- - lingram
- - astacy
----
-
-Simon has been building browser based simulations such as [coldwar.io](https://coldwar.io) and [ratsofthemaze.com](https://ratsofthemaze.com) over the past few years, showcasing them at numerous JS Confs and our own TXJS. Since he's in town this week, he's going to give us a casual retrospective on this work and a dive into some of the code.
-
-## Special Guest Host
-
-Lon and Andrew are off to JSConf US and Aaron is taking a sabbatical to finish his upcoming definitive book on `ConcreteAbstractFactoryAdapterImplementations`, so [Rebecca Murphey](https://twitter.com/rmurphey) has graciously offered to come out of retirement and host this month's event.
diff --git a/_meetups/2018-09-18-meetup.md b/_meetups/2018-09-18-meetup.md
deleted file mode 100644
index 728dd8ea..00000000
--- a/_meetups/2018-09-18-meetup.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-layout: meetup
-title: Bring me a higher function, whoa-oh
-author: lingram
-when: 2018-09-18T19:30:00-05:00
-video: https://youtu.be/Q0MFQm133CQ
-speakers:
- - name: Adam Giese
- title: Software Engineer at Under Armour, Connected Fitness
- avatar: https://pbs.twimg.com/profile_images/1021738628249251840/nQZVwfFg_400x400.jpg
- bio: Adam loves to learn and teach all things web dev.
- email:
- homepage: https://adamgiese.github.io/
- twitter: AdamGieseDev
- github: adamgiese
- linkedin:
-sponsor: cloudflare
-venue: spredfast
-after: lavaca
-organizers:
- - lingram
- - astacy
----
-
-List manipulation is a foundation of programming, and filtering is one of the pillars. Use cases are widespread, from removing outliers from a dataset to applying filters from user interactions. When a list of criteria gets large, however, the code used for these filters can get unruly.
-
-By using and writing higher-order functions, you can write, combine, and manipulate criteria while keeping your JavaScript readable, maintainable, and DRY.
diff --git a/_meetups/2018-10-16-meetup.md b/_meetups/2018-10-16-meetup.md
deleted file mode 100644
index 3cd0df08..00000000
--- a/_meetups/2018-10-16-meetup.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-layout: meetup
-title: An Event-ful Evening with JavaScript
-author: lingram
-when: 2018-10-16T19:30:00-05:00
-video: https://youtu.be/7fEVFgWGnCE
-speakers:
- - name: Marie Chatfield
- title: Software engineer at [Pingboard](https://pingboard.com/)
- avatar: https://pbs.twimg.com/profile_images/900229466852655104/TeYmhngm_400x400.jpg
- bio: Marie is a native Houstonian, Marie has recently returned to the homeland after a three-year stint in San Francisco, where she consistently got into arguments by insisting that tacos are superior in every way to burritos. Marie is passionate about creating inclusive spaces, building empathetic and elegant software, learning new things, and turning herself into emojis and cardboard cutouts.
- email:
- homepage:
- twitter: mariechatfield
- github: mariechatfield
- linkedin:
-sponsor: indeed
-venue: spredfast
-after: lavaca
-organizers:
- - lingram
- - astacy
----
-
-Handling events like clicks and keypresses as users interact with your content is essential for any web app. Learn the fundamentals of how events work in JavaScript, including:
-
-* an introduction to the DOM Event specification
-* how to attach event listeners (there's so many ways!)
-* how event propagation works, what "bubbling" and "capturing" mean, and why you should care
-* the differences between preventDefault, stopPropagation, and return false (and when you should use each one!)
-
-Whether you're just learning JavaScript or are an experienced front-end developer, you'll walk away with a deeper familiarity with events. You'll be able to implement event listeners with confidence and debug with clarity!
-
-This talk is adapted from an Ember.js-specific talk, [Deep Dive on Ember Events](http://mariechatfield.com/talks/#deep-dive-on-ember-events).
diff --git a/_meetups/2019-01-15-meetup.md b/_meetups/2019-01-15-meetup.md
deleted file mode 100644
index 77ed3b86..00000000
--- a/_meetups/2019-01-15-meetup.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-layout: meetup
-title: Saving CSS Grid Headaches with JavaScript
-author: alevine
-when: 2019-01-15T19:30:00-06:00
-video: https://youtu.be/XOTsvU93OCk
-speakers:
- - name: James Y Rauhut
- title:
- avatar: https://pbs.twimg.com/profile_images/767017197097000960/o46faNuz_400x400.jpg
- bio: James is a front-end dev and UX designer that loves fusing both roles. He enjoys talking about design systems, progressive web apps, and that horrid CSS-in-JS. Serious contributions to the web dev community include CSS Gridish and Create React App DevOps. Not-so-serious contributions include [IsTexasBackYet.com](https://IsTexasBackYet.com).
- email:
- homepage:
- twitter: seejamescode
- github: seejamescode
- linkedin:
-sponsor: magento
-venue: spredfast
-after: lavaca
-organizers:
- - lingram
- - astacy
----
-
-Grid frameworks in CSS help keep a product, department, or even a whole company visually aligned. However, they can be a struggle to maintain while satisfying different experiences’ needs. Thankfully, scripting languages have a knack for keeping everything sane. By creating a new open-source package that generates grid frameworks, we will cover:
-
-* Abstracting design specs for reusable code
-* Performance vs CSS browser support
-* The flexibility of isomorphic JavaScript packages
diff --git a/_meetups/2019-02-19-meetup.md b/_meetups/2019-02-19-meetup.md
deleted file mode 100644
index 837fe60c..00000000
--- a/_meetups/2019-02-19-meetup.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-layout: meetup
-title: Why people hate Javascript
-author: lingram
-when: 2019-02-19T19:30:00-06:00
-speakers:
- - name: John Fawcett
- title: Full-stack Engineer at [Cloudflare](https://www.cloudflare.com/)
- avatar: https://pbs.twimg.com/profile_images/567799871210401792/JHcg7zYh_400x400.jpeg
- bio: John loves JavaScript.
- email:
- homepage:
- twitter: johndotawesome
- github: jrf0110
- linkedin:
-sponsor: indeed
-venue: spredfast
-after: lavaca
-organizers:
- - lingram
- - astacy
----
-
-Why do some people hate JavaScript while others bask in its glory? In [Stack Overflow's 2018 Survey](https://insights.stackoverflow.com/survey/2018/) of over 100,000 developers; JavaScript, HTML, and CSS rank as the _top three_ most used technologies, with 70% of developers stating that they use JavaScript. Next in the list is SQL with 57%.
-
-Not everyone is an expert front-end developer, but it seems that most people at least have to dip their toes.
-
-If you hate JavaScript, I'm going to _finally_ articulate why you _know in your heart_ that this is such a terrible language. For you JavaScript lovers out there, hopefully this sheds some light on why your language of choice is such a steaming pile of 💩.
-
-Let's talk about what we can do about it.
diff --git a/_meetups/2019-04-16-meetup.md b/_meetups/2019-04-16-meetup.md
deleted file mode 100644
index 4bcecd6c..00000000
--- a/_meetups/2019-04-16-meetup.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-layout: meetup
-title: JavaScript on Microcontrollers
-author: lingram
-when: 2019-04-16T19:30:00-05:00
-speakers:
- - name: Tim Caswell
- title: Principal Architect at Magic Leap
- avatar: https://pbs.twimg.com/profile_images/2636020456/d447953a1f656bc20420859e667da59f_400x400.jpeg
- bio: Tim is a lover of all things good in life, including Family, Friends, Food, and Functional Programs.
- email:
- homepage:
- twitter: creationix
- github: creationix
- linkedin:
-sponsor: magento
-venue: khoros
-after: lavaca
-organizers:
- - lingram
- - astacy
----
-
-Sometimes it's the little things that count - in 2s complement. Come hear about how to program the [ESP8266](https://en.wikipedia.org/wiki/ESP8266) microcontroller using [Espruino](https://www.espruino.com/) and see some fancy rainbow animations on strips of [NeoPixels](https://www.adafruit.com/category/168).
diff --git a/_meetups/2019-05-21-meetup.md b/_meetups/2019-05-21-meetup.md
deleted file mode 100644
index a146499c..00000000
--- a/_meetups/2019-05-21-meetup.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-layout: meetup
-title: Taking the non- out of non-standard.
-author: alevine
-when: 2019-05-21T19:30:00-05:00
-speakers:
- - name: Mike Taylor
- title: Engineering Manager at Mozilla
- avatar: https://pbs.twimg.com/profile_images/1042621997/mikeyyyy_400x400.png
- bio: Mike Taylor, who has been called the Carson Daly of Javascript, is an Engineering Manager on the Web Compatibility Team at Mozilla. Come learn more about him, as the author of this blog post does not know that much!
- email:
- homepage:
- twitter: miketaylr
- github: miketaylr
- linkedin:
-sponsor:
- name: H-E-B Digital
- url: https://digital.heb.com/
- careerUrl: https://digital.heb.com/join-us/
- location: 2416 East Sixth Street, Austin, TX 78702
-venue: indeed
-after: lavaca
-organizers:
- - lingram
- - astacy
----
-
-Come learn about the weird history of the IE event model, what it took to ship `window.event` (and associated garbage) in Firefox 66, and why we're still talking about this in 2019.
diff --git a/_meetups/2019-07-16-meetup.md b/_meetups/2019-07-16-meetup.md
deleted file mode 100644
index 40d404cb..00000000
--- a/_meetups/2019-07-16-meetup.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-layout: meetup
-title: 'Web Assembly: What it Is, Why you should care, and what it means for JS'
-author: lingram
-when: 2019-07-16T19:30:00-05:00
-speakers:
- - name: Kas Perch
- title: Dev 🥑@cloudflare
- avatar: https://pbs.twimg.com/profile_images/1206989160038445056/RR1YU361_400x400.jpg
- bio: Gamer. Catparent. They/them. NodeBots author/addict. Punster. EE Dropout/Self-Study. a.k.a @ATX-Sabine
- email:
- homepage:
- twitter: nodebotanist
- github: nodebotanist
- linkedin:
-sponsor: cloudflare
-venue: cloudflare
-after: lavaca
-organizers:
- - lingram
- - astacy
----
-
-Let's talk about a five-year-old tech like it's brand new; which is really what WebAssembly is; it's been around for years but we're only just starting to discover what it can do and how to use it. Kas can say with no hyperbole that this is the next Ajax in terms of importance to browser applications, and in this talk they'll explain why a multi-language web doesn't spell the end of JavaScript but rather a Renaissance for the web.
diff --git a/_meetups/2019-08-20-meetup.md b/_meetups/2019-08-20-meetup.md
deleted file mode 100644
index 6c188831..00000000
--- a/_meetups/2019-08-20-meetup.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-layout: meetup
-title: "Let's Go on a console.log() Safari 🦏"
-author: lingram
-when: 2019-08-20T19:30:00-05:00
-speakers:
- - name: Tyler Lane
- title:
- avatar: https://pbs.twimg.com/profile_images/1201201405551247360/qpjhqDXq_400x400.jpg
- bio: |
- Tyler Lane graduated with a degree in Computer Science from Eckerd College. They have worked as a professional web developer for over six years and have taught software engineering at both Austin Coding Academy and General Assembly. They also produce the annual Out of Bounds Comedy Festival, which starts next week!
-
- Tyler is non-binary and uses they/them pronouns 😊
- email:
- homepage:
- twitter: tylerlanecodes
- github: underwaterr
- linkedin:
-sponsor: cloudflare
-venue: cloudflare
-after: lavaca
-organizers:
- - lingram
- - astacy
----
-
-One of the first things we learn in JavaScript is `console.log()`. Yet this belies the true complexity of its behavior. What exactly does `console.log()` do, anyways? (The short answer: it depends!) Adorn your pith and get in the jeep because we're about to explore `console.log()` and maybe learn a few things about streams, browsers and JavaScript engines along the way!
diff --git a/_meetups/2019-10-15-meetup.md b/_meetups/2019-10-15-meetup.md
deleted file mode 100644
index 60c91ffc..00000000
--- a/_meetups/2019-10-15-meetup.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-layout: meetup
-title: "Mosaic: a Platform for Micro-Frontends at Indeed"
-author: lingram
-when: 2019-10-15T19:30:00-05:00
-speakers:
- - name: Ben Cripps
- title: Full Stack Software Engineer at Indeed
- avatar: https://pbs.twimg.com/profile_images/814946887161638912/o2JC7WQ2_400x400.jpg
- bio: |
- Born in Washington D.C., Ben now lives in Austin, Texas via Baltimore MD. He enjoys lifting weights, hiking with his wife and dog, the Orioles, ping pong, and reading.
-
- He is a full stack developer with a passion for the front-end. He enjoys writing JavaScript, with a focus on functional paradigms. Although he prefers React, he pride himself on being framework agnostic. Apart from client-side code and Node, he likes to write python and doesn't mind the occasional C# or Java.
-
- He also enjoys open source, and spends a good deal of time contributing to personal and public open source projects.
- email:
- homepage:
- twitter: itsbencripps
- github: bencripps
- linkedin:
-sponsor: cloudflare
-venue: cloudflare
-after: lavaca
-organizers:
- - lingram
- - astacy
----
-
-Indeed is one of the largest Job Search websites in the world. In order to maintain developer velocity and quality, we’re in the process of dramatically shifting how we build web applications. Historically, we’ve built large monolith applications that have upwards of a hundred contributors, but we’ve found that this approach has limited our ability to iterate, and innovate as quickly as we’d like.
-
-Today, we’re focusing on splitting our monolith applications into smaller, more manageable components. In this talk, I’ll cover in detail how we developed a platform that enables building decoupled, distributed systems that perform and feel like a single application.
-
-We’ve developed a platform that enables the independent deployability of units of user interface units across products and pages. In this talk I’ll describe:
-
-* The types of problems a decoupled, and distributed frontend solve
-* The individual subsystems of the platform and how those systems fit together
-* How we built, and monitor the system, especially as it grows
-* The tradeoffs, and problems we’ve run into, and how we’ve solved them thus far
-* How to practically, and incrementally adopt this kind of system in your ecosystem
diff --git a/_meetups/2019-11-19-meetup.md b/_meetups/2019-11-19-meetup.md
deleted file mode 100644
index b35a8c7b..00000000
--- a/_meetups/2019-11-19-meetup.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-layout: meetup
-title: DevLaunchers - world's most FUN experiment to help teenagers learn game development!
-author: kkipp
-when: 2019-11-19T19:30:00-06:00
-speakers:
- - name: Chung-Ting Huang
- title: Systems Engineer at Cloudflare
- avatar: https://avatars1.githubusercontent.com/u/7826979?s=460&v=4
- bio: At Cloudflare, Chung-Ting is building tunnels to securely expose webservers on the internet.
- email:
- homepage:
- twitter:
- github: chungthuang
- linkedin:
- - name: Kris Gano
- title:
- avatar: https://avatars1.githubusercontent.com/u/46331884?s=460&v=4
- bio: Kris is an entrepreneur who has built two game companies and is an adviser for several non-profits. His bio is also available on [pyxld.com](https://pyxld.com/#/about).
- email:
- homepage:
- twitter:
- github: pyxld-kris
- linkedin:
-sponsor: cloudflare
-venue: cloudflare
-after: lavaca
-organizers:
- - lingram
- - astacy
----
-
-Join us for an introduction to [DevLaunchers](https://devlaunchers.com/), an initiative to teach high school students in under-served communities about game development. We'll dive into how we build the website, activities, internal tools and slack event handlers on Cloudflare Workers, CodeSandbox, GitHub Pages and Travis CI.
diff --git a/_meetups/2020-02-18-meetup.md b/_meetups/2020-02-18-meetup.md
deleted file mode 100644
index e28230d8..00000000
--- a/_meetups/2020-02-18-meetup.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-layout: meetup
-title: Absolute Unit Tests with Jest and Enzyme
-speakers:
- - name: Nick Gottschlich
- title: Software Engineer at Procore Technologies
- avatar: https://pbs.twimg.com/profile_images/1029847332781740032/Gp54dk3Z_400x400.jpg
- bio:
- email:
- homepage: http://nickpgott.com
- twitter: NickGottschlich
- github: nick-gottschlich
- linkedin:
-sponsor: cloudflare
-venue: cloudflare
-after: lavaca
-organizers:
- - lingram
- - astacy
----
-
-Everything you wanted to know about testing React components with [Jest](https://jestjs.io/) and [Enzyme](https://enzymejs.github.io/enzyme/) Learn what a unit test is, why its useful, and how to test things like: existence of react components, simulated clicks and other events, mocking data, snapshots and more!
diff --git a/_meetups/2023-06-20-meetup.md b/_meetups/2023-06-20-meetup.md
deleted file mode 100644
index c1ecae41..00000000
--- a/_meetups/2023-06-20-meetup.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-layout: meetup
-title: Building Semi-hosted SaaS
-speakers:
- - name: Jeff Lindsay
- avatar: https://pbs.twimg.com/profile_images/1489753408961748992/u4f-zHr3_400x400.jpg
- homepage: https://progrium.xyz
- twitter: progrium
- github: progrium
- linkedin: progrium
-sponsor: cloudflare
-venue: cloudflare
-after: zilker-brewing
-organizers:
- - fguest
- - pcostanzo
----
-
-Hosted software as a service is great, but can give the provider too much leverage over your data and the software itself. Meanwhile, self-hosted software, like many open source solutions, takes away the key value proposition of SaaS. Luckily, "semi-hosted" is a model that provides the best of both worlds and enables customization and extensibility not usually possible. I want to talk about this pattern and show what you can do with it by demonstrating a semi-hosted personal organizer I've been building with Deno and Mithril.js called Treestar.
-
diff --git a/_meetups/2023-07-18-meetup.md b/_meetups/2023-07-18-meetup.md
deleted file mode 100644
index d9602119..00000000
--- a/_meetups/2023-07-18-meetup.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-layout: meetup
-title: "HTML with Superpowers: An introduction to Web Components"
-slides:
-video:
-speakers:
- - name: Dave Rupert
- title:
- avatar: https://pbs.twimg.com/profile_images/477460555981025280/JUGkf8zv_400x400.jpeg
- bio: Dave Rupert is lead developer and 1/3rd of [Paravel](http://paravelinc.com). He is also the host of the [ATX Web Show](http://atxwebshow.com), a not-so-weekly podcast all about the local web design and development scene here in Austin, TX.
- email:
- homepage:
- twitter: davatron5000
- github:
- linkedin:
-sponsor: cloudflare
-venue: cloudflare
-after: lazarus
-organizers:
- - fguest
- - pcostanzo
----
-
-A short dive into web components taking a look at what they are, how they work, what problems they solve, what problems they have, and why you may want to use them on your next project.
-
-Dave Rupert is co-founder of Luro, a tool for tracking component usage and insights. He also co-hosts Shoptalk, a web design and development podcast with Chris Coyier from CSS-Tricks.
-
diff --git a/_meetups/2023-08-15-meetup.md b/_meetups/2023-08-15-meetup.md
deleted file mode 100644
index df164e48..00000000
--- a/_meetups/2023-08-15-meetup.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-layout: meetup
-title: 4 or more package managers, what's the worst that could happen?
-slides:
-video:
-speakers:
- - name: Bradley Farias
- title:
- avatar: https://pbs.twimg.com/profile_images/282339703/Photo_7_400x400.jpg
- bio:
- email:
- homepage:
- twitter: bradleymeck
- github: bradleymeck
- linkedin:
-sponsor: cloudflare
-venue: cloudflare
-after: lazarus
-organizers:
- - fguest
- - pcostanzo
----
-
-JavaScript has a horribly rich history of writing package managers with none fully reigning as the final winner in a perpetual war for popularity and utility. Let's cover some of their differences, that actually end up with some fun surprises about nuances in how they work along the way!
diff --git a/_meetups/2023-09-19-meetup.md b/_meetups/2023-09-19-meetup.md
deleted file mode 100644
index 53e9d0bc..00000000
--- a/_meetups/2023-09-19-meetup.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-layout: meetup
-title: The Rise of Structured Concurrency
-slides: https://www.icloud.com/keynote/0ef5Py0MLQcXZAeH8OTS_O8Xw#The_Rise_of_Structured_Concurrency
-speakers:
- - name: Charles Lowell
- title:
- avatar: https://pbs.twimg.com/profile_images/1272369014/skull_guns_400x400.jpg
- bio: Charles has been delivering bullet-proof software for over 18 years. An avid contributor to open source, he founded [the Frontside](http://frontside.io) in 2005 to help businesses deliver game-changing user interfaces to their customers. Also, he really, really, really, really likes to code. Really.
- email:
- homepage:
- twitter: cowboyd
- github:
- linkedin:
-sponsor: cloudflare
-venue: cloudflare
-after: lazarus
-organizers:
- - fguest
- - pcostanzo
----
-
-Rule 1. Highly concurrent programs are hard.
-
-Rule 2. Every non-trivial program is highly concurrent.
-
-JavaScript gives us some primitives to express asynchrony like promises, and async functions, but unfortunately they do not guarantee correctness. In fact far from it. Most async code is full of edge-cases and foot guns that never reveal themselves until you’re at scale. In this talk, we’ll put names to all these edge-cases and footguns so that you can recognize them instantly when they happen to you. After showing the ills, we’ll talk about the the cure: an exciting new way of thinking about our programs called Structured Concurrency. Language communities from Go, and Rust to Swift and Java, are all ablaze with talk of it, so whether you’ve explored this topic before or this is the first you’ve heard of it, you won’t want to miss this talk, because in ten years time, it will be the norm and we’ll all wonder how we ever did without it.
-
diff --git a/_meetups/2023-10-17-meetup.md b/_meetups/2023-10-17-meetup.md
deleted file mode 100644
index f2a59ff2..00000000
--- a/_meetups/2023-10-17-meetup.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-layout: meetup
-title: Native Mobile Apps with Vanilla JavaScript
-slides:
-video:
-speakers:
- - name: Anton Astashov
- title:
- avatar: https://avatars3.githubusercontent.com/u/12795?v=3&s=400
- bio: Anton is [a real-deal code slinger](https://github.com/astashov) based in Austin and currently working at [Mixbook.com](http://www.mixbook.com).
- email:
- homepage:
- twitter: anton_astashov
- github: astashov
- linkedin:
-sponsor: cloudflare
-venue: cloudflare
-after: lazarus
-organizers:
- - fguest
- - pcostanzo
----
-
-Build native mobile apps in JavaScript! Just regular JavaScript without any mobile frameworks.
-
-This can be a great solution if you’re a web developer and JavaScript is your bread and butter. Apps built this way work fast, are quick to deploy, and don’t have to pass App Store reviews every time! So come and learn about the pros and cons of this approach, and what it takes to build a JS native mobile app.
-
diff --git a/_meetups/2024-01-16-meetup.md b/_meetups/2024-01-16-meetup.md
deleted file mode 100644
index 30dd41b4..00000000
--- a/_meetups/2024-01-16-meetup.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-layout: meetup
-title: "Remix: Teaching Young Dogs new Tricks"
-slides:
-video:
-speakers:
- - name: Brooks Lybrand
- title:
- avatar: https://avatars.githubusercontent.com/u/12396812?v=4
- bio:
- email:
- homepage:
- twitter: BrooksLybrand
- github: brookslybrand
- linkedin: brooks-lybrand
-sponsor: cloudflare
-venue: cloudflare
-after: lazarus
-organizers:
- - fguest
- - pcostanzo
- - joahg
----
-
-Remix is a full stack web framework that lets you focus on the user interface and work back through web standards to deliver a fast, slick, and resilient user experience. In this talk Brooks will show you how Remix makes it easy to iteratively build solid, engaging, and user-centric experiences using the basic building blocks of the web.
diff --git a/_meetups/2024-02-20-meetup.md b/_meetups/2024-02-20-meetup.md
deleted file mode 100644
index 0652c077..00000000
--- a/_meetups/2024-02-20-meetup.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-layout: meetup
-title: "Programmable OS Command Palettes"
-slides: https://programmable-os-command-palettes.kevinkipp.com/
-video:
-speakers:
- - name: Kevin Kipp
- title:
- avatar: https://avatars.githubusercontent.com/u/8732191?v=4
- bio:
- email:
- homepage: https://kevinkipp.com
- twitter: kevin_kipp
- github: third774
- linkedin: kevin-kipp
-sponsor: cloudflare
-venue: cloudflare
-after: lazarus
-organizers:
- - pcostanzo
- - joahg
----
-
-Command palettes in applications are great — they spare us from reaching for the mouse to go spelunking through menus. Raycast and Script Kit are two delightful tools that are akin to command palettes, accessible from within any application, and programmable with JavaScript! Come, see what's possible, and feel empowered to start building out your own OS command palette!
diff --git a/_meetups/2024-03-19-meetup.md b/_meetups/2024-03-19-meetup.md
deleted file mode 100644
index 58462d8d..00000000
--- a/_meetups/2024-03-19-meetup.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-layout: meetup
-title: "Universal React with Expo Router"
-slides:
-video:
-speakers:
- - name: Evan Bacon
- title:
- avatar: https://avatars.githubusercontent.com/u/9664363?v=4
- bio:
- email:
- homepage: https://evanbacon.dev/
- twitter: baconbrix
- github: evanbacon
- linkedin:
-sponsor: cloudflare
-venue: cloudflare
-after: lazarus
-organizers:
- - pcostanzo
- - joahg
----
-
-We’ve all heard of the React motto “write once, run everywhere” but what does this look like in reality? Learn how Expo Router––the universal React framework––is making it possible to reuse complex app development patterns like routing, data fetching, and rendering, across web and native platforms.
-
-I’m the creator of Expo Router, and manage the dev tools/web team at Expo. Bring your most complicated React/React Native questions and I’ll try my best to answer them all.
diff --git a/_meetups/2024-04-16-meetup.md b/_meetups/2024-04-16-meetup.md
deleted file mode 100644
index 3a36b1fe..00000000
--- a/_meetups/2024-04-16-meetup.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-layout: meetup
-title: "Lightning Talks"
-slides:
-video:
-speakers:
- - name: Multiple
- title:
- avatar: https://gravatar.com/avatar/undefined
- bio:
- email:
- homepage:
- twitter:
- github:
- linkedin:
-sponsor: cloudflare
-venue: cloudflare
-after: lazarus
-organizers:
- - pcostanzo
- - joahg
----
-
-This month, we are opening the podium to the community, inviting all to take the microphone for a few minutes to show off something that you have learned or discovered recently that has made your life as a JS dev easier! All who are brave enough to present will be rewarded with newly minted AustinJS stickers.
-
-Lightning talks:
-
- - **The Ongoing War Between CJS & ESM: A Presentation on Insecurity & Security** by [Nathan Bornstein](https://www.linkedin.com/in/nathangbornstein/)
- - **Kill It with Fire: A Flaky Spec Story, Or "How I fixed 2000 flaky specs and learned how to love the build"** by [Nicholas Mullen](https://www.linkedin.com/in/nwmullen/)
- - **Docker** by [Dylan Briar](https://www.linkedin.com/in/dylanbriar/)
- - **dynohot** by [marcel laverdet](https://www.linkedin.com/in/laverdet/)
- - **Running web apps on native mobile devices with Capacitor** by [Ryan Hopper-Lowe](https://www.linkedin.com/in/ryan-hopper-lowe-33ba95135/)
- - **Pattern for conditional rendering using We are a JavaScript community that meets regularly in Austin, Texas, to discuss a wide range of topics, including:
-The group started back in 2009 and has been going strong ever since. For a taste of our rich history, take a peak at the meetup archives—they're full of videos and fascinating characters.
- -We typically meet on the 3rd Tuesday of each month somewhere deep in the heart of Austin, Texas — typically downtown. We’ll have a speaker or two, open things up for questions and discussion, and then head to a nearby watering hole to continue the networking and the conversations.
- -We work hard to build a community of good natured and helpful people that treat each other with excellence. We’ve formalized what this means into our Code of Conduct.
- -Austin JavaScript is powered by <surprise> JavaScript! This website is kept humming by a great many spectacular moving parts. Here are but a few:
-Austin JavaScript is made possible by the goodwill and hard work of a great many people. Please reach out to the following folks if you have any questions or want to get more involved.
-These past leaders helped make Austin JavaScript what it is today.
-We are a JavaScript community that meets regularly in Austin, Texas, to discuss a wide range of topics, including:
The group started back in 2009 and has been going strong ever since. For a taste of our rich history, take a peak at the meetup archives—they're full of videos and fascinating characters.
We typically meet on the 3rd Tuesday of each month somewhere deep in the heart of Austin, Texas — typically downtown. We’ll have a speaker or two, open things up for questions and discussion, and then head to a nearby watering hole to continue the networking and the conversations.
We work hard to build a community of good natured and helpful people that treat each other with excellence. We’ve formalized what this means into our Code of Conduct.
Austin JavaScript is powered by <surprise> JavaScript! This website is kept humming by a great many spectacular moving parts. Here are but a few:
Austin JavaScript is made possible by the goodwill and hard work of a great many people. Please reach out to the following folks if you have any questions or want to get more involved.
This page been moved to /posts/meetups/2014/04/15/.
\ No newline at end of file diff --git a/april-2012-meetup-details-announced/index.html b/april-2012-meetup-details-announced/index.html new file mode 100644 index 00000000..2860693b --- /dev/null +++ b/april-2012-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2012/04/17/.
\ No newline at end of file diff --git a/april-21st-meetup-730-pm-tara-vancil/index.html b/april-21st-meetup-730-pm-tara-vancil/index.html new file mode 100644 index 00000000..2a0fc989 --- /dev/null +++ b/april-21st-meetup-730-pm-tara-vancil/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2015/04/21/.
\ No newline at end of file diff --git a/april-meetup-announced-building-desktop-applications-using-adobe-air-and-javascript/index.html b/april-meetup-announced-building-desktop-applications-using-adobe-air-and-javascript/index.html new file mode 100644 index 00000000..7ba18087 --- /dev/null +++ b/april-meetup-announced-building-desktop-applications-using-adobe-air-and-javascript/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2010/04/20/.
\ No newline at end of file diff --git a/april-meetup-details-announced/index.html b/april-meetup-details-announced/index.html new file mode 100644 index 00000000..847ac955 --- /dev/null +++ b/april-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2011/04/19/.
\ No newline at end of file diff --git a/archive/index.html b/archive/index.html new file mode 100644 index 00000000..7b1da990 --- /dev/null +++ b/archive/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/.
\ No newline at end of file diff --git a/assets/avatar/0HEORfagWR-96.jpeg b/assets/avatar/0HEORfagWR-96.jpeg new file mode 100644 index 00000000..7c7dc481 Binary files /dev/null and b/assets/avatar/0HEORfagWR-96.jpeg differ diff --git a/assets/avatar/0zbd7yyCNw-96.jpeg b/assets/avatar/0zbd7yyCNw-96.jpeg new file mode 100644 index 00000000..9e1e48ba Binary files /dev/null and b/assets/avatar/0zbd7yyCNw-96.jpeg differ diff --git a/assets/avatar/11wbiELrak-96.jpeg b/assets/avatar/11wbiELrak-96.jpeg new file mode 100644 index 00000000..b57120e5 Binary files /dev/null and b/assets/avatar/11wbiELrak-96.jpeg differ diff --git a/assets/avatar/148u8dxev7-96.jpeg b/assets/avatar/148u8dxev7-96.jpeg new file mode 100644 index 00000000..93eab732 Binary files /dev/null and b/assets/avatar/148u8dxev7-96.jpeg differ diff --git a/assets/avatar/2a0uBDk8i8-96.jpeg b/assets/avatar/2a0uBDk8i8-96.jpeg new file mode 100644 index 00000000..008bce61 Binary files /dev/null and b/assets/avatar/2a0uBDk8i8-96.jpeg differ diff --git a/assets/avatar/49m_o7b0o2-73.jpeg b/assets/avatar/49m_o7b0o2-73.jpeg new file mode 100644 index 00000000..ffa1f194 Binary files /dev/null and b/assets/avatar/49m_o7b0o2-73.jpeg differ diff --git a/assets/avatar/4L3BdnUQW9-96.jpeg b/assets/avatar/4L3BdnUQW9-96.jpeg new file mode 100644 index 00000000..bd7fd50d Binary files /dev/null and b/assets/avatar/4L3BdnUQW9-96.jpeg differ diff --git a/assets/avatar/4mmn7n00Bq-96.jpeg b/assets/avatar/4mmn7n00Bq-96.jpeg new file mode 100644 index 00000000..27190118 Binary files /dev/null and b/assets/avatar/4mmn7n00Bq-96.jpeg differ diff --git a/assets/avatar/5SkO0PDf73-96.jpeg b/assets/avatar/5SkO0PDf73-96.jpeg new file mode 100644 index 00000000..e3ac2cab Binary files /dev/null and b/assets/avatar/5SkO0PDf73-96.jpeg differ diff --git a/assets/avatar/5em9DGoA56-70.jpeg b/assets/avatar/5em9DGoA56-70.jpeg new file mode 100644 index 00000000..862ddfd8 Binary files /dev/null and b/assets/avatar/5em9DGoA56-70.jpeg differ diff --git a/assets/avatar/5hczD9uc8g-96.jpeg b/assets/avatar/5hczD9uc8g-96.jpeg new file mode 100644 index 00000000..5ac515d0 Binary files /dev/null and b/assets/avatar/5hczD9uc8g-96.jpeg differ diff --git a/assets/avatar/5iZ9jq-yiJ-96.jpeg b/assets/avatar/5iZ9jq-yiJ-96.jpeg new file mode 100644 index 00000000..953192a6 Binary files /dev/null and b/assets/avatar/5iZ9jq-yiJ-96.jpeg differ diff --git a/assets/avatar/6G2QPRP5o9-96.jpeg b/assets/avatar/6G2QPRP5o9-96.jpeg new file mode 100644 index 00000000..971aacf8 Binary files /dev/null and b/assets/avatar/6G2QPRP5o9-96.jpeg differ diff --git a/assets/avatar/6nHgXXPpF1-96.jpeg b/assets/avatar/6nHgXXPpF1-96.jpeg new file mode 100644 index 00000000..9a5bdab7 Binary files /dev/null and b/assets/avatar/6nHgXXPpF1-96.jpeg differ diff --git a/assets/avatar/8EhHT8kUQC-96.jpeg b/assets/avatar/8EhHT8kUQC-96.jpeg new file mode 100644 index 00000000..4cc59f8f Binary files /dev/null and b/assets/avatar/8EhHT8kUQC-96.jpeg differ diff --git a/assets/avatar/8defADA9K5-73.jpeg b/assets/avatar/8defADA9K5-73.jpeg new file mode 100644 index 00000000..44e5afad Binary files /dev/null and b/assets/avatar/8defADA9K5-73.jpeg differ diff --git a/assets/avatar/8j-BECUuwp-96.jpeg b/assets/avatar/8j-BECUuwp-96.jpeg new file mode 100644 index 00000000..daeea796 Binary files /dev/null and b/assets/avatar/8j-BECUuwp-96.jpeg differ diff --git a/assets/avatar/9iesTyE0hm-73.jpeg b/assets/avatar/9iesTyE0hm-73.jpeg new file mode 100644 index 00000000..e8ba31e0 Binary files /dev/null and b/assets/avatar/9iesTyE0hm-73.jpeg differ diff --git a/assets/avatar/AVahlHl-EN-96.jpeg b/assets/avatar/AVahlHl-EN-96.jpeg new file mode 100644 index 00000000..9960e799 Binary files /dev/null and b/assets/avatar/AVahlHl-EN-96.jpeg differ diff --git a/assets/avatar/AgfAWNWVd_-73.jpeg b/assets/avatar/AgfAWNWVd_-73.jpeg new file mode 100644 index 00000000..9cc99b5e Binary files /dev/null and b/assets/avatar/AgfAWNWVd_-73.jpeg differ diff --git a/assets/avatar/B4dq02xM5p-96.jpeg b/assets/avatar/B4dq02xM5p-96.jpeg new file mode 100644 index 00000000..0efb8f12 Binary files /dev/null and b/assets/avatar/B4dq02xM5p-96.jpeg differ diff --git a/assets/avatar/BFaQ0qp7HM-96.jpeg b/assets/avatar/BFaQ0qp7HM-96.jpeg new file mode 100644 index 00000000..9cb52868 Binary files /dev/null and b/assets/avatar/BFaQ0qp7HM-96.jpeg differ diff --git a/assets/avatar/BUU595vaDY-96.jpeg b/assets/avatar/BUU595vaDY-96.jpeg new file mode 100644 index 00000000..28974adf Binary files /dev/null and b/assets/avatar/BUU595vaDY-96.jpeg differ diff --git a/assets/avatar/BaTuuHB1oB-96.jpeg b/assets/avatar/BaTuuHB1oB-96.jpeg new file mode 100644 index 00000000..3a849293 Binary files /dev/null and b/assets/avatar/BaTuuHB1oB-96.jpeg differ diff --git a/assets/avatar/CjSeODVPXP-96.jpeg b/assets/avatar/CjSeODVPXP-96.jpeg new file mode 100644 index 00000000..5e020c29 Binary files /dev/null and b/assets/avatar/CjSeODVPXP-96.jpeg differ diff --git a/assets/avatar/Cm0yhSnJW--96.jpeg b/assets/avatar/Cm0yhSnJW--96.jpeg new file mode 100644 index 00000000..407a546f Binary files /dev/null and b/assets/avatar/Cm0yhSnJW--96.jpeg differ diff --git a/assets/avatar/CqnH0n_o3O-96.jpeg b/assets/avatar/CqnH0n_o3O-96.jpeg new file mode 100644 index 00000000..507fe3ac Binary files /dev/null and b/assets/avatar/CqnH0n_o3O-96.jpeg differ diff --git a/assets/avatar/EJcSvGwoFg-96.jpeg b/assets/avatar/EJcSvGwoFg-96.jpeg new file mode 100644 index 00000000..79e1febf Binary files /dev/null and b/assets/avatar/EJcSvGwoFg-96.jpeg differ diff --git a/assets/avatar/FZgr7vsBWt-96.jpeg b/assets/avatar/FZgr7vsBWt-96.jpeg new file mode 100644 index 00000000..60f14abd Binary files /dev/null and b/assets/avatar/FZgr7vsBWt-96.jpeg differ diff --git a/assets/avatar/GrzI2r14rm-96.jpeg b/assets/avatar/GrzI2r14rm-96.jpeg new file mode 100644 index 00000000..2bfe9506 Binary files /dev/null and b/assets/avatar/GrzI2r14rm-96.jpeg differ diff --git a/assets/avatar/I7ujQtgPaC-96.jpeg b/assets/avatar/I7ujQtgPaC-96.jpeg new file mode 100644 index 00000000..13308042 Binary files /dev/null and b/assets/avatar/I7ujQtgPaC-96.jpeg differ diff --git a/assets/avatar/IHSBoCXGUS-96.jpeg b/assets/avatar/IHSBoCXGUS-96.jpeg new file mode 100644 index 00000000..81520735 Binary files /dev/null and b/assets/avatar/IHSBoCXGUS-96.jpeg differ diff --git a/assets/avatar/IbLY5omIuX-96.jpeg b/assets/avatar/IbLY5omIuX-96.jpeg new file mode 100644 index 00000000..9d390eb1 Binary files /dev/null and b/assets/avatar/IbLY5omIuX-96.jpeg differ diff --git a/assets/avatar/K6mrQ_90G7-73.jpeg b/assets/avatar/K6mrQ_90G7-73.jpeg new file mode 100644 index 00000000..146beea0 Binary files /dev/null and b/assets/avatar/K6mrQ_90G7-73.jpeg differ diff --git a/assets/avatar/KbPmxpu8vw-96.jpeg b/assets/avatar/KbPmxpu8vw-96.jpeg new file mode 100644 index 00000000..0d9c6cfa Binary files /dev/null and b/assets/avatar/KbPmxpu8vw-96.jpeg differ diff --git a/assets/avatar/LfQAUjBTXh-96.jpeg b/assets/avatar/LfQAUjBTXh-96.jpeg new file mode 100644 index 00000000..3d54276a Binary files /dev/null and b/assets/avatar/LfQAUjBTXh-96.jpeg differ diff --git a/assets/avatar/Mb8LHQi_iN-96.jpeg b/assets/avatar/Mb8LHQi_iN-96.jpeg new file mode 100644 index 00000000..2f7119f4 Binary files /dev/null and b/assets/avatar/Mb8LHQi_iN-96.jpeg differ diff --git a/assets/avatar/O2x7_UOUKY-73.jpeg b/assets/avatar/O2x7_UOUKY-73.jpeg new file mode 100644 index 00000000..baa0478e Binary files /dev/null and b/assets/avatar/O2x7_UOUKY-73.jpeg differ diff --git a/assets/avatar/OglBQ8jiR5-96.jpeg b/assets/avatar/OglBQ8jiR5-96.jpeg new file mode 100644 index 00000000..78c7d64e Binary files /dev/null and b/assets/avatar/OglBQ8jiR5-96.jpeg differ diff --git a/assets/avatar/PN87jbxgy5-96.jpeg b/assets/avatar/PN87jbxgy5-96.jpeg new file mode 100644 index 00000000..78f18db3 Binary files /dev/null and b/assets/avatar/PN87jbxgy5-96.jpeg differ diff --git a/assets/avatar/Q8ilUqi-cC-96.jpeg b/assets/avatar/Q8ilUqi-cC-96.jpeg new file mode 100644 index 00000000..19c6ffe1 Binary files /dev/null and b/assets/avatar/Q8ilUqi-cC-96.jpeg differ diff --git a/assets/avatar/QKfGOaiLy6-96.jpeg b/assets/avatar/QKfGOaiLy6-96.jpeg new file mode 100644 index 00000000..4eafb3b6 Binary files /dev/null and b/assets/avatar/QKfGOaiLy6-96.jpeg differ diff --git a/assets/avatar/RCLqvwmep2-96.jpeg b/assets/avatar/RCLqvwmep2-96.jpeg new file mode 100644 index 00000000..11cbcaf0 Binary files /dev/null and b/assets/avatar/RCLqvwmep2-96.jpeg differ diff --git a/assets/avatar/RfdR554cb_-96.jpeg b/assets/avatar/RfdR554cb_-96.jpeg new file mode 100644 index 00000000..d491372f Binary files /dev/null and b/assets/avatar/RfdR554cb_-96.jpeg differ diff --git a/assets/avatar/S4UabaT2SM-96.jpeg b/assets/avatar/S4UabaT2SM-96.jpeg new file mode 100644 index 00000000..7d4d11be Binary files /dev/null and b/assets/avatar/S4UabaT2SM-96.jpeg differ diff --git a/assets/avatar/SSss6RHOn0-96.jpeg b/assets/avatar/SSss6RHOn0-96.jpeg new file mode 100644 index 00000000..d6a9ff88 Binary files /dev/null and b/assets/avatar/SSss6RHOn0-96.jpeg differ diff --git a/assets/avatar/TZIEyXbaZn-96.jpeg b/assets/avatar/TZIEyXbaZn-96.jpeg new file mode 100644 index 00000000..f9d1a5dd Binary files /dev/null and b/assets/avatar/TZIEyXbaZn-96.jpeg differ diff --git a/assets/avatar/WMxBWtWw3M-96.jpeg b/assets/avatar/WMxBWtWw3M-96.jpeg new file mode 100644 index 00000000..99b5719b Binary files /dev/null and b/assets/avatar/WMxBWtWw3M-96.jpeg differ diff --git a/assets/avatar/WplNp_YSSi-96.jpeg b/assets/avatar/WplNp_YSSi-96.jpeg new file mode 100644 index 00000000..e5bb682b Binary files /dev/null and b/assets/avatar/WplNp_YSSi-96.jpeg differ diff --git a/assets/avatar/WwL4eMOPsk-96.jpeg b/assets/avatar/WwL4eMOPsk-96.jpeg new file mode 100644 index 00000000..f484221c Binary files /dev/null and b/assets/avatar/WwL4eMOPsk-96.jpeg differ diff --git a/assets/avatar/X52cll8TZa-96.jpeg b/assets/avatar/X52cll8TZa-96.jpeg new file mode 100644 index 00000000..7d3e8ac1 Binary files /dev/null and b/assets/avatar/X52cll8TZa-96.jpeg differ diff --git a/assets/avatar/XJL7nwtNoY-73.jpeg b/assets/avatar/XJL7nwtNoY-73.jpeg new file mode 100644 index 00000000..81a0892f Binary files /dev/null and b/assets/avatar/XJL7nwtNoY-73.jpeg differ diff --git a/assets/avatar/Xk2WKVqIUG-96.jpeg b/assets/avatar/Xk2WKVqIUG-96.jpeg new file mode 100644 index 00000000..3f6de6a3 Binary files /dev/null and b/assets/avatar/Xk2WKVqIUG-96.jpeg differ diff --git a/assets/avatar/XlUJQ0Xl_7-96.jpeg b/assets/avatar/XlUJQ0Xl_7-96.jpeg new file mode 100644 index 00000000..54188712 Binary files /dev/null and b/assets/avatar/XlUJQ0Xl_7-96.jpeg differ diff --git a/assets/avatar/Y_CzrWLX7z-96.jpeg b/assets/avatar/Y_CzrWLX7z-96.jpeg new file mode 100644 index 00000000..fa8ae5a0 Binary files /dev/null and b/assets/avatar/Y_CzrWLX7z-96.jpeg differ diff --git a/assets/avatar/Yycgv8ZbIc-80.jpeg b/assets/avatar/Yycgv8ZbIc-80.jpeg new file mode 100644 index 00000000..673c7e3d Binary files /dev/null and b/assets/avatar/Yycgv8ZbIc-80.jpeg differ diff --git a/assets/avatar/Z0eIqq56qa-80.jpeg b/assets/avatar/Z0eIqq56qa-80.jpeg new file mode 100644 index 00000000..68e5d656 Binary files /dev/null and b/assets/avatar/Z0eIqq56qa-80.jpeg differ diff --git a/assets/avatar/ZCzXZtjaKS-96.jpeg b/assets/avatar/ZCzXZtjaKS-96.jpeg new file mode 100644 index 00000000..20055e52 Binary files /dev/null and b/assets/avatar/ZCzXZtjaKS-96.jpeg differ diff --git a/assets/avatar/ZJ6epYGX-Y-96.jpeg b/assets/avatar/ZJ6epYGX-Y-96.jpeg new file mode 100644 index 00000000..71185f12 Binary files /dev/null and b/assets/avatar/ZJ6epYGX-Y-96.jpeg differ diff --git a/assets/avatar/ZYUpY_0brX-96.jpeg b/assets/avatar/ZYUpY_0brX-96.jpeg new file mode 100644 index 00000000..7424531e Binary files /dev/null and b/assets/avatar/ZYUpY_0brX-96.jpeg differ diff --git a/assets/avatar/_CQLBT9TR0-96.jpeg b/assets/avatar/_CQLBT9TR0-96.jpeg new file mode 100644 index 00000000..1bbdfe28 Binary files /dev/null and b/assets/avatar/_CQLBT9TR0-96.jpeg differ diff --git a/assets/avatar/awEg4nYM8F-96.jpeg b/assets/avatar/awEg4nYM8F-96.jpeg new file mode 100644 index 00000000..c6ba43d4 Binary files /dev/null and b/assets/avatar/awEg4nYM8F-96.jpeg differ diff --git a/assets/avatar/cQiic9Vqjv-96.jpeg b/assets/avatar/cQiic9Vqjv-96.jpeg new file mode 100644 index 00000000..c51e0832 Binary files /dev/null and b/assets/avatar/cQiic9Vqjv-96.jpeg differ diff --git a/assets/avatar/cfCOdQqiAL-96.jpeg b/assets/avatar/cfCOdQqiAL-96.jpeg new file mode 100644 index 00000000..5f57c215 Binary files /dev/null and b/assets/avatar/cfCOdQqiAL-96.jpeg differ diff --git a/assets/avatar/coePTJfrDM-96.jpeg b/assets/avatar/coePTJfrDM-96.jpeg new file mode 100644 index 00000000..588e49c9 Binary files /dev/null and b/assets/avatar/coePTJfrDM-96.jpeg differ diff --git a/assets/avatar/d7acUhfVwZ-96.jpeg b/assets/avatar/d7acUhfVwZ-96.jpeg new file mode 100644 index 00000000..c0749410 Binary files /dev/null and b/assets/avatar/d7acUhfVwZ-96.jpeg differ diff --git a/assets/avatar/dFOe06E16T-96.jpeg b/assets/avatar/dFOe06E16T-96.jpeg new file mode 100644 index 00000000..ce9bba6d Binary files /dev/null and b/assets/avatar/dFOe06E16T-96.jpeg differ diff --git a/assets/avatar/dN2ymodJYg-96.jpeg b/assets/avatar/dN2ymodJYg-96.jpeg new file mode 100644 index 00000000..4ee063a1 Binary files /dev/null and b/assets/avatar/dN2ymodJYg-96.jpeg differ diff --git a/assets/avatar/e1sNXHYhxA-96.jpeg b/assets/avatar/e1sNXHYhxA-96.jpeg new file mode 100644 index 00000000..6f592332 Binary files /dev/null and b/assets/avatar/e1sNXHYhxA-96.jpeg differ diff --git a/assets/avatar/eBfu-6JNRD-96.jpeg b/assets/avatar/eBfu-6JNRD-96.jpeg new file mode 100644 index 00000000..a79deaa1 Binary files /dev/null and b/assets/avatar/eBfu-6JNRD-96.jpeg differ diff --git a/assets/avatar/f-TOq5jExM-96.jpeg b/assets/avatar/f-TOq5jExM-96.jpeg new file mode 100644 index 00000000..6e78cee6 Binary files /dev/null and b/assets/avatar/f-TOq5jExM-96.jpeg differ diff --git a/assets/avatar/fW8OkYWpPt-96.jpeg b/assets/avatar/fW8OkYWpPt-96.jpeg new file mode 100644 index 00000000..a3cd80ed Binary files /dev/null and b/assets/avatar/fW8OkYWpPt-96.jpeg differ diff --git a/assets/avatar/g1sX0d4aO1-96.jpeg b/assets/avatar/g1sX0d4aO1-96.jpeg new file mode 100644 index 00000000..070674dc Binary files /dev/null and b/assets/avatar/g1sX0d4aO1-96.jpeg differ diff --git a/assets/avatar/gPMZfPmTkz-96.jpeg b/assets/avatar/gPMZfPmTkz-96.jpeg new file mode 100644 index 00000000..5a7a3ef1 Binary files /dev/null and b/assets/avatar/gPMZfPmTkz-96.jpeg differ diff --git a/assets/avatar/gdDsk7cT6s-96.jpeg b/assets/avatar/gdDsk7cT6s-96.jpeg new file mode 100644 index 00000000..f366555f Binary files /dev/null and b/assets/avatar/gdDsk7cT6s-96.jpeg differ diff --git a/assets/avatar/gdXjcuTIVJ-96.jpeg b/assets/avatar/gdXjcuTIVJ-96.jpeg new file mode 100644 index 00000000..d9508946 Binary files /dev/null and b/assets/avatar/gdXjcuTIVJ-96.jpeg differ diff --git a/assets/avatar/gvcwdjku6d-96.jpeg b/assets/avatar/gvcwdjku6d-96.jpeg new file mode 100644 index 00000000..603d1416 Binary files /dev/null and b/assets/avatar/gvcwdjku6d-96.jpeg differ diff --git a/assets/avatar/hicxgfMPhG-96.jpeg b/assets/avatar/hicxgfMPhG-96.jpeg new file mode 100644 index 00000000..08f66843 Binary files /dev/null and b/assets/avatar/hicxgfMPhG-96.jpeg differ diff --git a/assets/avatar/itFsgAg9Pz-96.jpeg b/assets/avatar/itFsgAg9Pz-96.jpeg new file mode 100644 index 00000000..6bfe3160 Binary files /dev/null and b/assets/avatar/itFsgAg9Pz-96.jpeg differ diff --git a/assets/avatar/jm0j_53nE3-96.jpeg b/assets/avatar/jm0j_53nE3-96.jpeg new file mode 100644 index 00000000..5466cc14 Binary files /dev/null and b/assets/avatar/jm0j_53nE3-96.jpeg differ diff --git a/assets/avatar/kXTtin9Nud-96.jpeg b/assets/avatar/kXTtin9Nud-96.jpeg new file mode 100644 index 00000000..8416476c Binary files /dev/null and b/assets/avatar/kXTtin9Nud-96.jpeg differ diff --git a/assets/avatar/kzFB2i1jsx-96.jpeg b/assets/avatar/kzFB2i1jsx-96.jpeg new file mode 100644 index 00000000..424e8e26 Binary files /dev/null and b/assets/avatar/kzFB2i1jsx-96.jpeg differ diff --git a/assets/avatar/n6qZBtLT34-96.jpeg b/assets/avatar/n6qZBtLT34-96.jpeg new file mode 100644 index 00000000..f098194d Binary files /dev/null and b/assets/avatar/n6qZBtLT34-96.jpeg differ diff --git a/assets/avatar/p-HGClkEQL-96.jpeg b/assets/avatar/p-HGClkEQL-96.jpeg new file mode 100644 index 00000000..7049a01d Binary files /dev/null and b/assets/avatar/p-HGClkEQL-96.jpeg differ diff --git a/assets/avatar/p5r76YVWyR-96.jpeg b/assets/avatar/p5r76YVWyR-96.jpeg new file mode 100644 index 00000000..7ac28f19 Binary files /dev/null and b/assets/avatar/p5r76YVWyR-96.jpeg differ diff --git a/assets/avatar/pAVFDfLTVJ-96.jpeg b/assets/avatar/pAVFDfLTVJ-96.jpeg new file mode 100644 index 00000000..62abcf77 Binary files /dev/null and b/assets/avatar/pAVFDfLTVJ-96.jpeg differ diff --git a/assets/avatar/pP9-X8dBwx-96.jpeg b/assets/avatar/pP9-X8dBwx-96.jpeg new file mode 100644 index 00000000..1da531c9 Binary files /dev/null and b/assets/avatar/pP9-X8dBwx-96.jpeg differ diff --git a/assets/avatar/qnix2sgysx-96.jpeg b/assets/avatar/qnix2sgysx-96.jpeg new file mode 100644 index 00000000..9201685c Binary files /dev/null and b/assets/avatar/qnix2sgysx-96.jpeg differ diff --git a/assets/avatar/r9W3WKEKie-96.jpeg b/assets/avatar/r9W3WKEKie-96.jpeg new file mode 100644 index 00000000..94290162 Binary files /dev/null and b/assets/avatar/r9W3WKEKie-96.jpeg differ diff --git a/assets/avatar/rFdpD8FzEV-96.jpeg b/assets/avatar/rFdpD8FzEV-96.jpeg new file mode 100644 index 00000000..d760b05e Binary files /dev/null and b/assets/avatar/rFdpD8FzEV-96.jpeg differ diff --git a/assets/avatar/rmL7KhIT7k-96.jpeg b/assets/avatar/rmL7KhIT7k-96.jpeg new file mode 100644 index 00000000..47140e9f Binary files /dev/null and b/assets/avatar/rmL7KhIT7k-96.jpeg differ diff --git a/assets/avatar/t6bKGNeZTk-96.jpeg b/assets/avatar/t6bKGNeZTk-96.jpeg new file mode 100644 index 00000000..dae11c95 Binary files /dev/null and b/assets/avatar/t6bKGNeZTk-96.jpeg differ diff --git a/assets/avatar/tLt4q35m51-96.jpeg b/assets/avatar/tLt4q35m51-96.jpeg new file mode 100644 index 00000000..fcb92f69 Binary files /dev/null and b/assets/avatar/tLt4q35m51-96.jpeg differ diff --git a/assets/avatar/ulOZ1WIAFv-96.jpeg b/assets/avatar/ulOZ1WIAFv-96.jpeg new file mode 100644 index 00000000..7954b2af Binary files /dev/null and b/assets/avatar/ulOZ1WIAFv-96.jpeg differ diff --git a/assets/avatar/vCrrAUJq-1-73.jpeg b/assets/avatar/vCrrAUJq-1-73.jpeg new file mode 100644 index 00000000..0a79a6d4 Binary files /dev/null and b/assets/avatar/vCrrAUJq-1-73.jpeg differ diff --git a/assets/avatar/vJvNNt5uZP-96.jpeg b/assets/avatar/vJvNNt5uZP-96.jpeg new file mode 100644 index 00000000..0d31c2cc Binary files /dev/null and b/assets/avatar/vJvNNt5uZP-96.jpeg differ diff --git a/assets/avatar/vRvbubwp7W-96.jpeg b/assets/avatar/vRvbubwp7W-96.jpeg new file mode 100644 index 00000000..39f43561 Binary files /dev/null and b/assets/avatar/vRvbubwp7W-96.jpeg differ diff --git a/assets/avatar/vZg3KRCNuJ-96.jpeg b/assets/avatar/vZg3KRCNuJ-96.jpeg new file mode 100644 index 00000000..d5e7def5 Binary files /dev/null and b/assets/avatar/vZg3KRCNuJ-96.jpeg differ diff --git a/assets/avatar/wOIAYJ30sg-96.jpeg b/assets/avatar/wOIAYJ30sg-96.jpeg new file mode 100644 index 00000000..f102fe36 Binary files /dev/null and b/assets/avatar/wOIAYJ30sg-96.jpeg differ diff --git a/assets/avatar/wsuwokyPVV-96.jpeg b/assets/avatar/wsuwokyPVV-96.jpeg new file mode 100644 index 00000000..44758b82 Binary files /dev/null and b/assets/avatar/wsuwokyPVV-96.jpeg differ diff --git a/assets/avatar/x-fTwfFRSB-73.jpeg b/assets/avatar/x-fTwfFRSB-73.jpeg new file mode 100644 index 00000000..d4e959b8 Binary files /dev/null and b/assets/avatar/x-fTwfFRSB-73.jpeg differ diff --git a/assets/avatar/x7Bj2vAWHw-96.jpeg b/assets/avatar/x7Bj2vAWHw-96.jpeg new file mode 100644 index 00000000..9f9523a0 Binary files /dev/null and b/assets/avatar/x7Bj2vAWHw-96.jpeg differ diff --git a/assets/avatar/y0oY28VOtD-96.jpeg b/assets/avatar/y0oY28VOtD-96.jpeg new file mode 100644 index 00000000..df62f965 Binary files /dev/null and b/assets/avatar/y0oY28VOtD-96.jpeg differ diff --git a/assets/avatar/yN5y_e_tkn-96.jpeg b/assets/avatar/yN5y_e_tkn-96.jpeg new file mode 100644 index 00000000..9add3b2f Binary files /dev/null and b/assets/avatar/yN5y_e_tkn-96.jpeg differ diff --git a/assets/avatar/z43SIS-0WX-96.jpeg b/assets/avatar/z43SIS-0WX-96.jpeg new file mode 100644 index 00000000..26a7348f Binary files /dev/null and b/assets/avatar/z43SIS-0WX-96.jpeg differ diff --git a/assets/avatar/zgf1g3vn77-96.jpeg b/assets/avatar/zgf1g3vn77-96.jpeg new file mode 100644 index 00000000..4cb93253 Binary files /dev/null and b/assets/avatar/zgf1g3vn77-96.jpeg differ diff --git a/assets/avatar/zkix-ogTkY-96.jpeg b/assets/avatar/zkix-ogTkY-96.jpeg new file mode 100644 index 00000000..2f424d17 Binary files /dev/null and b/assets/avatar/zkix-ogTkY-96.jpeg differ diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 00000000..832fedbd --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1 @@ +.message:not(:last-child),.level:not(:last-child),.title:not(:last-child),.subtitle:not(:last-child),.content:not(:last-child),.box:not(:last-child){margin-bottom:1.5rem}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ul,li,figure,iframe,h1,h2,h3{margin:0;padding:0}h1,h2,h3{font-size:100%;font-weight:normal}ul{list-style:none}input{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}html{background-color:hsl(0,0%,96%);font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}figure,footer,header,section{display:block}body,input{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue","Helvetica","Arial",sans-serif}code{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:monospace}body{color:hsl(0,0%,29%);font-size:1em;font-weight:400;line-height:1.5}a{color:hsl(229,53%,50%);cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:hsl(0,0%,21%)}code{background-color:hsl(0,0%,96%);color:hsl(348,86%,46%);font-size:.875em;font-weight:normal;padding:.25em .5em .25em}img{height:auto;max-width:100%}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:hsl(0,0%,21%);font-weight:700}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:hsl(0,0%,90%) !important}.has-background-white{background-color:#fff !important}.has-text-primary{color:hsl(333,85%,45%) !important}a.has-text-primary:hover,a.has-text-primary:focus{color:hsl(333,85%,35%) !important}.has-text-grey-dark{color:hsl(0,0%,29%) !important}.has-background-grey-lighter{background-color:hsl(0,0%,86%) !important}.is-paddingless{padding:0 !important}.mt-4{margin-top:1rem !important}.mt-5{margin-top:1.5rem !important}.mt-6{margin-top:3rem !important}.pt-4{padding-top:1rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}}.has-text-right{text-align:right !important}@media screen and (min-width: 1024px){.has-text-right-desktop{text-align:right !important}}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:.01em !important}@media screen and (min-width: 1024px){.is-hidden-desktop{display:none !important}}.box{background-color:hsl(0,0%,96%);border-radius:6px;box-shadow:0 .5em 1em -0.125em hsla(0,0%,4%,.1),0 0px 0 1px hsla(0,0%,4%,.02);color:hsl(0,0%,29%);display:block;padding:1.25rem}a.box:hover,a.box:focus{box-shadow:0 .5em 1em -0.125em hsla(0,0%,4%,.1),0 0 0 1px hsl(229,53%,50%)}a.box:active{box-shadow:inset 0 1px 2px hsla(0,0%,4%,.2),0 0 0 1px hsl(229,53%,50%)}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}@media screen and (min-width: 1024px){.container{max-width:960px}}@media screen and (min-width: 1216px){.container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){.container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.content li+li{margin-top:.25em}.content p:not(:last-child),.content ul:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3{color:hsl(0,0%,21%);font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:.5em}.content ul ul ul{list-style-type:square}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content sup{font-size:75%}.content.is-medium{font-size:1.25rem}.icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-medium{height:2rem;width:2rem}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:9999px}.image.is-64x64{height:64px;width:64px}.image.is-96x96{height:96px;width:96px}.title,.subtitle{word-break:break-word}.title em,.title span,.subtitle em,.subtitle span{font-weight:inherit}.title sup,.subtitle sup{font-size:.75em}.title{color:hsl(0,0%,21%);font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-6{font-size:1rem}.subtitle{color:hsl(0,0%,29%);font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:hsl(0,0%,21%);font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-6{font-size:1rem}.card{background-color:hsl(0,0%,96%);border-radius:.25rem;box-shadow:0 .5em 1em -0.125em hsla(0,0%,4%,.1),0 0px 0 1px hsla(0,0%,4%,.02);color:hsl(0,0%,29%);max-width:100%;position:relative}.card-content:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-content:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-content{background-color:rgba(0,0,0,0);padding:1.5rem}.card .media:not(:last-child){margin-bottom:1.5rem}.level{align-items:center;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}@media screen and (min-width: 769px),print{.level{display:flex}}.media{align-items:flex-start;display:flex;text-align:inherit}.media .content:not(:last-child){margin-bottom:.75rem}.media .media{border-top:1px solid hsla(0,0%,86%,.5);display:flex;padding-top:.75rem}.media .media .content:not(:last-child){margin-bottom:.5rem}.media .media .media{padding-top:.5rem}.media .media .media+.media{margin-top:.5rem}.media+.media{border-top:1px solid hsla(0,0%,86%,.5);margin-top:1rem;padding-top:1rem}.media-left{flex-basis:auto;flex-grow:0;flex-shrink:0}.media-left{margin-right:1rem}.media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){.media-content{overflow-x:auto}}.message{background-color:hsl(0,0%,96%);border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-medium{font-size:1.25rem}.message.is-primary{background-color:hsl(333,85%,96%)}.message.is-primary .message-header{background-color:hsl(333,85%,45%);color:#fff}.message.is-primary .message-body{border-color:hsl(333,85%,45%);color:hsl(333,85%,48%)}.message-header{align-items:center;background-color:hsl(0,0%,29%);border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:.75em 1em;position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:hsl(0,0%,86%);border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:hsl(0,0%,29%);padding:1.25em 1.5em}.message-body code{background-color:hsl(0,0%,96%)}.navbar{background-color:hsl(0,0%,96%);min-height:3.25rem;position:relative;z-index:30}.navbar.is-primary{background-color:hsl(333,85%,45%);color:#fff}.navbar.is-primary .navbar-brand>.navbar-item{color:#fff}.navbar.is-primary .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active{background-color:hsl(333,85%,40%);color:#fff}@media screen and (min-width: 1024px){.navbar.is-primary .navbar-start>.navbar-item,.navbar.is-primary .navbar-end>.navbar-item{color:#fff}.navbar.is-primary .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active{background-color:hsl(333,85%,40%);color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar-brand{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:rgba(0,0,0,0)}.navbar-menu{display:none}.navbar-item{color:hsl(0,0%,29%);display:block;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}a.navbar-item{cursor:pointer}a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover,a.navbar-item.is-active{background-color:hsl(0,0%,98%);color:hsl(229,53%,50%)}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}@media screen and (max-width: 1023px){.navbar>.container{display:block}.navbar-brand .navbar-item{align-items:center;display:flex}.navbar-menu{background-color:hsl(0,0%,96%);box-shadow:0 8px 16px hsla(0,0%,4%,.1);padding:.5rem 0}.navbar-menu.is-active{display:block}}@media screen and (min-width: 1024px){.navbar,.navbar-menu,.navbar-start,.navbar-end{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar-item{align-items:center;display:flex}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar>.container .navbar-brand,.container>.navbar .navbar-brand{margin-left:-0.75rem}.navbar>.container .navbar-menu,.container>.navbar .navbar-menu{margin-right:-0.75rem}a.navbar-item.is-active{color:hsl(0,0%,4%)}a.navbar-item.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}@media screen and (min-width: 769px),print{.column.is-two-thirds{flex:none;width:66.6666%}.column.is-6{flex:none;width:50%}.column.is-8{flex:none;width:66.66666674%}}@media screen and (min-width: 1024px){.column.is-8-desktop{flex:none;width:66.66666674%}}.columns{margin-left:-0.75rem;margin-right:-0.75rem;margin-top:-0.75rem}.columns:last-child{margin-bottom:-0.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - 0.75rem)}@media screen and (min-width: 769px),print{.columns:not(.is-desktop){display:flex}}.columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1*var(--columnGap));margin-right:calc(-1*var(--columnGap))}.columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-6{--columnGap: 1.5rem}.columns.is-variable.is-8{--columnGap: 2rem}@media screen and (min-width: 1024px){.columns.is-variable.is-8-desktop{--columnGap: 2rem}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}.tile.is-ancestor{margin-left:-0.75rem;margin-right:-0.75rem;margin-top:-0.75rem}.tile.is-ancestor:last-child{margin-bottom:-0.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0 !important}.tile.is-parent{padding:.75rem}@media screen and (min-width: 769px),print{.tile:not(.is-child){display:flex}.tile.is-6{flex:none;width:50%}.tile.is-8{flex:none;width:66.66666674%}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:none}.hero.is-primary{background-color:hsl(333,85%,45%);color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong{color:inherit}.hero.is-primary .title{color:#fff}.hero.is-primary .subtitle{color:hsla(0,0%,100%,.9)}.hero.is-primary .subtitle a:not(.button),.hero.is-primary .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-primary .navbar-menu{background-color:hsl(333,85%,45%)}}.hero.is-primary .navbar-item{color:hsla(0,0%,100%,.7)}.hero.is-primary a.navbar-item:hover,.hero.is-primary a.navbar-item.is-active{background-color:hsl(333,85%,40%);color:#fff}@media screen and (min-width: 769px),print{.hero.is-medium .hero-body{padding:9rem 4.5rem}}.hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{.hero-body{padding:3rem 3rem}}.section{padding:3rem 1.5rem}@media screen and (min-width: 1024px){.section{padding:3rem 3rem}.section.is-medium{padding:9rem 4.5rem}}.footer{background-color:hsl(0,0%,96%);padding:3rem 1.5rem 6rem}.hero-body.is-primary{background-color:hsl(333,85%,45%)}.hero-body.is-primary .navbar-item{color:rgba(255,255,255,.8)}.hero-body.is-primary .navbar-item:hover,.hero-body.is-primary .navbar-item:focus{background-color:hsl(333,85%,40%)}.content li+li{margin-top:.5em}.icon{vertical-align:bottom}.card .icon{margin-top:2px;width:2em}@media screen and (min-width: 1024px){.navbar-item .icon{margin-bottom:-6px}}.icon-item{fill:currentColor;width:84%}.message-body .icon-item{width:71%}.page-main a{text-decoration:underline;text-decoration-color:hsla(229,53%,50%,.4)}.card .image,.footer .image{border-radius:.25em;overflow:hidden}@media screen and (min-width: 1024px){.is-sr-only-desktop{border:none !important;clip:rect(0, 0, 0, 0) !important;height:.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:.01em !important}.section{padding-inline:1.5rem}}.has-text-tetradic1{color:hsl(213,85%,45%) !important}.has-text-tetradic2{color:hsl(153,85%,40%) !important}.has-text-tetradic3{color:hsl(33,85%,50%) !important}.is-marginless-bottom{margin-bottom:0 !important}.bricks-flex{display:flex;flex-wrap:wrap;justify-content:flex-start;margin:-0.15em}.bricks-flex .brick{flex:1 1 18em;margin:.15em;max-width:25em}.brick{margin-bottom:1em}@media screen and (max-width: 769px){.flex-container{display:flex;flex-wrap:wrap}.flex-item{flex:0 0 100%}.flex-item-0{margin-bottom:2em;order:-1}}.pic{display:inline-block;font-size:1rem;height:50px;margin:-2px 4px 0 1px !important;width:50px}.pic img{border-radius:5px}.logo{transform:scale(0.9) translateY(0.25em)}.sponsor-logo{max-width:17vw;min-width:10em}.edit-page{font-size:.875rem;margin-bottom:-2rem}.arrow-left:before{content:"← "}.arrow-right:after{content:" →"}.tooltip[aria-label]{position:relative}.pic .tooltip[aria-label]{display:inline-block}.tooltip[aria-label]:before,.tooltip[aria-label]:after{bottom:100%;left:50%;opacity:0;pointer-events:none;position:absolute;transition:.5s opacity;visibility:hidden;z-index:100}.tooltip[aria-label]:before{background-color:rgba(51,51,51,.95);border-radius:3px;color:#fff;content:attr(aria-label);font-size:14px;line-height:1.2;margin-bottom:5px;margin-left:-80px;padding:7px;text-align:center;width:160px}.tooltip[aria-label]:after{border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid rgba(51,51,51,.95);content:" ";font-size:0;line-height:0;margin-left:-5px;width:0}.tooltip[aria-label]:hover:before,.tooltip[aria-label]:hover:after{opacity:1;visibility:visible} diff --git a/assets/img/y2zgwUX3_0-1600.jpeg b/assets/img/y2zgwUX3_0-1600.jpeg new file mode 100644 index 00000000..f0bf49ad Binary files /dev/null and b/assets/img/y2zgwUX3_0-1600.jpeg differ diff --git a/assets/img/y2zgwUX3_0-400.jpeg b/assets/img/y2zgwUX3_0-400.jpeg new file mode 100644 index 00000000..cc5e5ced Binary files /dev/null and b/assets/img/y2zgwUX3_0-400.jpeg differ diff --git a/assets/img/y2zgwUX3_0-800.jpeg b/assets/img/y2zgwUX3_0-800.jpeg new file mode 100644 index 00000000..7f7c2cb8 Binary files /dev/null and b/assets/img/y2zgwUX3_0-800.jpeg differ diff --git a/august-2012-austin-javascript-meetup-details-announced/index.html b/august-2012-austin-javascript-meetup-details-announced/index.html new file mode 100644 index 00000000..7ea35fe0 --- /dev/null +++ b/august-2012-austin-javascript-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2012/08/21/.
\ No newline at end of file diff --git a/august-26th-meetup-730-pm-jonathan-lipps/index.html b/august-26th-meetup-730-pm-jonathan-lipps/index.html new file mode 100644 index 00000000..70974095 --- /dev/null +++ b/august-26th-meetup-730-pm-jonathan-lipps/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2014/08/26/.
\ No newline at end of file diff --git a/august-meetup-details-announced/index.html b/august-meetup-details-announced/index.html new file mode 100644 index 00000000..4d223c7e --- /dev/null +++ b/august-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2010/08/17/.
\ No newline at end of file diff --git a/august-meetup-details/index.html b/august-meetup-details/index.html new file mode 100644 index 00000000..2c6910f0 --- /dev/null +++ b/august-meetup-details/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2011/08/16/.
\ No newline at end of file diff --git a/austin-javascript-2011-sxsw-party/index.html b/austin-javascript-2011-sxsw-party/index.html new file mode 100644 index 00000000..393097ef --- /dev/null +++ b/austin-javascript-2011-sxsw-party/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/austin-javascript-2011-sxsw-party/.
\ No newline at end of file diff --git a/austin-javascript-email-list/index.html b/austin-javascript-email-list/index.html new file mode 100644 index 00000000..083481cd --- /dev/null +++ b/austin-javascript-email-list/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/austin-javascript-email-list/.
\ No newline at end of file diff --git a/austin-javascript-sxswi-happy-hour-free-beer-free-food-free-prizes/index.html b/austin-javascript-sxswi-happy-hour-free-beer-free-food-free-prizes/index.html new file mode 100644 index 00000000..1d98258f --- /dev/null +++ b/austin-javascript-sxswi-happy-hour-free-beer-free-food-free-prizes/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/austin-javascript-sxswi-happy-hour-free-beer-free-food-free-prizes/.
\ No newline at end of file diff --git a/austin-javascript-thanksgiving-js-2012/index.html b/austin-javascript-thanksgiving-js-2012/index.html new file mode 100644 index 00000000..9daec3e2 --- /dev/null +++ b/austin-javascript-thanksgiving-js-2012/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2012/11/19/.
\ No newline at end of file diff --git a/austin-js-sxsw-party-and-devunplugged/index.html b/austin-js-sxsw-party-and-devunplugged/index.html new file mode 100644 index 00000000..16294996 --- /dev/null +++ b/austin-js-sxsw-party-and-devunplugged/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/austin-js-sxsw-party-and-devunplugged/.
\ No newline at end of file diff --git a/austin-web-bash-2011/index.html b/austin-web-bash-2011/index.html new file mode 100644 index 00000000..8d8a3382 --- /dev/null +++ b/austin-web-bash-2011/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/austin-web-bash-2011/.
\ No newline at end of file diff --git a/austin-web-bash-2014/index.html b/austin-web-bash-2014/index.html new file mode 100644 index 00000000..aad474fb --- /dev/null +++ b/austin-web-bash-2014/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/austin-web-bash-2014/.
\ No newline at end of file diff --git a/austin-web-community-holiday-bash/index.html b/austin-web-community-holiday-bash/index.html new file mode 100644 index 00000000..8e8b08f6 --- /dev/null +++ b/austin-web-community-holiday-bash/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/austin-web-community-holiday-bash/.
\ No newline at end of file diff --git a/austinjs-code-of-conduct/index.html b/austinjs-code-of-conduct/index.html new file mode 100644 index 00000000..41dd815a --- /dev/null +++ b/austinjs-code-of-conduct/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /code-of-conduct/.
\ No newline at end of file diff --git a/code-of-conduct.html b/code-of-conduct.html deleted file mode 100755 index 1ac61534..00000000 --- a/code-of-conduct.html +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: base -title: Code of Conduct -meta: - description: Our meetup is dedicated to providing a harassment-free meetup experience for everyone, regardless of gender, sexual orientation, disability, physical appearance, body size, race, or religion. ---- -All attendees, speakers, sponsors and volunteers at our meetup are required to agree with the following code of conduct. Organizers will enforce this code throughout the event. We expect cooperation from all participants to help ensure a safe, constructive environment for everybody.
-TL;DR: Be excellent with each other.
- -Our meetup is dedicated to providing a harassment-free meetup experience for everyone, regardless of gender, sexual orientation, disability, physical appearance, body size, race, or religion. We do not tolerate harassment of meetup participants in any form. Sexual language and imagery is not appropriate for any meetup venue, including talks, workshops, parties, Twitter and other online media. Meetup participants violating these rules may be sanctioned or expelled from the meetup without a refund at the discretion of the meetup organizers.
- -Harassment includes offensive verbal comments related to gender, sexual orientation, disability, physical appearance, body size, race, religion, sexual images in public spaces, deliberate intimidation, stalking, following, harassing photography or recording, sustained disruption of talks or other events, inappropriate physical contact, and unwelcome sexual attention.
-Participants asked to stop any harassing behavior are expected to comply immediately.
-Sponsors are also subject to the anti-harassment policy. In particular, sponsors should not use sexualized images, activities, or other material.
-If a participant engages in harassing behavior, the meetup organizers may take any action they deem appropriate, including warning the offender or expulsion from the meetup.
-If you are being harassed, notice that someone else is being harassed, or have any other concerns, please contact an organizer immediately.
-Organizers will be happy to help participants contact venue security or local law enforcement, provide escorts, or otherwise assist those experiencing harassment to feel safe for the duration of the meetup. We value your attendance.
-We expect participants to follow these rules at the meetup itself as well as meetup-related social events.
- -Please help by translating or improving: http://github.com/leftlogic/confcodeofconduct.com
-This work is licensed under a Creative Commons Attribution 3.0 Unported License
-Contact an organizer in person or via e-mail:
-All attendees, speakers, sponsors and volunteers at our meetup are required to agree with the following code of conduct. Organizers will enforce this code throughout the event. We expect cooperation from all participants to help ensure a safe, constructive environment for everybody.
TL;DR: Be excellent with each other.
Our meetup is dedicated to providing a harassment-free meetup experience for everyone, regardless of gender, sexual orientation, disability, physical appearance, body size, race, or religion. We do not tolerate harassment of meetup participants in any form. Sexual language and imagery is not appropriate for any meetup venue, including talks, workshops, parties, Twitter and other online media. Meetup participants violating these rules may be sanctioned or expelled from the meetup without a refund at the discretion of the meetup organizers.
Harassment includes offensive verbal comments related to gender, sexual orientation, disability, physical appearance, body size, race, religion, sexual images in public spaces, deliberate intimidation, stalking, following, harassing photography or recording, sustained disruption of talks or other events, inappropriate physical contact, and unwelcome sexual attention.
Participants asked to stop any harassing behavior are expected to comply immediately.
Sponsors are also subject to the anti-harassment policy. In particular, sponsors should not use sexualized images, activities, or other material.
If a participant engages in harassing behavior, the meetup organizers may take any action they deem appropriate, including warning the offender or expulsion from the meetup.
If you are being harassed, notice that someone else is being harassed, or have any other concerns, please contact an organizer immediately.
Organizers will be happy to help participants contact venue security or local law enforcement, provide escorts, or otherwise assist those experiencing harassment to feel safe for the duration of the meetup. We value your attendance.
We expect participants to follow these rules at the meetup itself as well as meetup-related social events.
Please help by translating or improving: http://github.com/leftlogic/confcodeofconduct.com
This work is licensed under a Creative Commons Attribution 3.0 Unported License
Contact an organizer in person or via e-mail:
This page been moved to /posts/compasslearning-is-hiring/.
\ No newline at end of file diff --git a/contributing.html b/contributing.html deleted file mode 100644 index 2965d356..00000000 --- a/contributing.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -layout: base -title: Contributing -meta: - description: There are plenty of ways to get involved in your Austin JavaScript community. Here are a few that we could think of. ---- -There are plenty of ways to get involved in your Austin JavaScript community.
-Drop some knowledge on your peeps or brush up on your speaking skills. Presentations typically run 30-50 minutes, with a Q&A session at the end.
-Can you do that? Sure you can! Let us know if you need help.
-Keep the masses happy with pizza and drinks!
-As Sponsor, you get to promote your organization's job openings for what usually amounts to a trivial $300 recruiting line item expense.
-Show off your amazing workspace at the next event! Here's what makes a great venue:
-Join the peeps keeping this ship afloat! Here are a few things we usually need help on:
-If you are interested in contributing, please contact one of our friendly Organizers:
-There are plenty of ways to get involved in your Austin JavaScript community.
Drop some knowledge on your peeps or brush up on your speaking skills. Presentations typically run 30-50 minutes, with a Q&A session at the end.
Can you do that? Sure you can! Let us know if you need help.
Keep the masses happy with pizza and drinks!
As Sponsor, you get to promote your organization's job openings for what usually amounts to a trivial $300 recruiting line item expense.
Show off your amazing workspace at the next event! Here's what makes a great venue:
Join the peeps keeping this ship afloat! Here are a few things we usually need help on:
This page been moved to /posts/december-open-bar-happy-hour-sponsored-by-teksystems/.
\ No newline at end of file diff --git a/favicon.ico b/favicon.ico deleted file mode 100644 index 6f3bbdd2..00000000 Binary files a/favicon.ico and /dev/null differ diff --git a/february-18th-meetup-730-pm-garann-means/index.html b/february-18th-meetup-730-pm-garann-means/index.html new file mode 100644 index 00000000..90fbb51f --- /dev/null +++ b/february-18th-meetup-730-pm-garann-means/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2014/02/18/.
\ No newline at end of file diff --git a/february-2012-meetup-details-announced/index.html b/february-2012-meetup-details-announced/index.html new file mode 100644 index 00000000..27d2c430 --- /dev/null +++ b/february-2012-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2012/02/21/.
\ No newline at end of file diff --git a/february-2013-austin-javascript-details-announced/index.html b/february-2013-austin-javascript-details-announced/index.html new file mode 100644 index 00000000..4d2a7110 --- /dev/null +++ b/february-2013-austin-javascript-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2013/02/19/.
\ No newline at end of file diff --git a/february-meetup-announced/index.html b/february-meetup-announced/index.html new file mode 100644 index 00000000..774a11f5 --- /dev/null +++ b/february-meetup-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2010/02/16/.
\ No newline at end of file diff --git a/february-meetup-details-announced/index.html b/february-meetup-details-announced/index.html new file mode 100644 index 00000000..e510f4c7 --- /dev/null +++ b/february-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2011/02/15/.
\ No newline at end of file diff --git a/feed.njk b/feed.njk deleted file mode 100644 index 6f56af9e..00000000 --- a/feed.njk +++ /dev/null @@ -1,27 +0,0 @@ ---- -permalink: feed.xml -eleventyExcludeFromCollections: true ---- - -Welcome! Would you happen to be...
-You found the perfect place.
-We are a community-driven group that meets to discuss JavaScript and the open web. Find out more about us or the many ways you can contribute.
-To see everything for yourself, check out our Meetup page.
-We work hard to build a community that treats people with excellence. We've formalized this in the Austin JavaScript Code of Conduct.
-Welcome! Would you happen to be...
You found the perfect place.
We are a community-driven group that meets to discuss JavaScript and the open web. Find out more about us or the many ways you can contribute.
To see everything for yourself, check out our Meetup page.
We work hard to build a community that treats people with excellence. We've formalized this in the Austin JavaScript Code of Conduct.































































































































This page been moved to /posts/meetups/2012/01/17/.
\ No newline at end of file diff --git a/january-20th-meetup-730-pm-rebecca-murphey/index.html b/january-20th-meetup-730-pm-rebecca-murphey/index.html new file mode 100644 index 00000000..1552f1f3 --- /dev/null +++ b/january-20th-meetup-730-pm-rebecca-murphey/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2015/01/21/.
\ No newline at end of file diff --git a/january-21st-meetup-730-pm-paypal-on-node-js/index.html b/january-21st-meetup-730-pm-paypal-on-node-js/index.html new file mode 100644 index 00000000..59701b6f --- /dev/null +++ b/january-21st-meetup-730-pm-paypal-on-node-js/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2014/01/21/.
\ No newline at end of file diff --git a/january-meetup-details-announced/index.html b/january-meetup-details-announced/index.html new file mode 100644 index 00000000..36b8495a --- /dev/null +++ b/january-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2011/01/18/.
\ No newline at end of file diff --git a/january2013/index.html b/january2013/index.html new file mode 100644 index 00000000..458b798b --- /dev/null +++ b/january2013/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2013/01/15/.
\ No newline at end of file diff --git a/july-15th-meetup-730-pm-lightning-talks/index.html b/july-15th-meetup-730-pm-lightning-talks/index.html new file mode 100644 index 00000000..12abfed5 --- /dev/null +++ b/july-15th-meetup-730-pm-lightning-talks/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2014/07/15/.
\ No newline at end of file diff --git a/july-2012-austin-javascript-meetup-details-announced/index.html b/july-2012-austin-javascript-meetup-details-announced/index.html new file mode 100644 index 00000000..32fd8a92 --- /dev/null +++ b/july-2012-austin-javascript-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2012/07/17/.
\ No newline at end of file diff --git a/july-2013/index.html b/july-2013/index.html new file mode 100644 index 00000000..dc5f81ff --- /dev/null +++ b/july-2013/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2013/07/16/.
\ No newline at end of file diff --git a/july-meetup-details-announced-finally/index.html b/july-meetup-details-announced-finally/index.html new file mode 100644 index 00000000..67476c1c --- /dev/null +++ b/july-meetup-details-announced-finally/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2011/07/19/.
\ No newline at end of file diff --git a/july-meetup-details-announced/index.html b/july-meetup-details-announced/index.html new file mode 100644 index 00000000..aac7f299 --- /dev/null +++ b/july-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2010/07/20/.
\ No newline at end of file diff --git a/june-17th-meetup-730-pm-jared-stilwell/index.html b/june-17th-meetup-730-pm-jared-stilwell/index.html new file mode 100644 index 00000000..7e3f4773 --- /dev/null +++ b/june-17th-meetup-730-pm-jared-stilwell/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2014/06/17/.
\ No newline at end of file diff --git a/june-2012-meetup-details-announced/index.html b/june-2012-meetup-details-announced/index.html new file mode 100644 index 00000000..f233239d --- /dev/null +++ b/june-2012-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2012/06/19/.
\ No newline at end of file diff --git a/june-2013/index.html b/june-2013/index.html new file mode 100644 index 00000000..23973d0d --- /dev/null +++ b/june-2013/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2013/06/18/.
\ No newline at end of file diff --git a/june-meetup-details-announced/index.html b/june-meetup-details-announced/index.html new file mode 100644 index 00000000..e75e9376 --- /dev/null +++ b/june-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2011/06/21/.
\ No newline at end of file diff --git a/june-meetup-details-xui-and-cross-domain-hacking/index.html b/june-meetup-details-xui-and-cross-domain-hacking/index.html new file mode 100644 index 00000000..b43ef2a9 --- /dev/null +++ b/june-meetup-details-xui-and-cross-domain-hacking/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2010/06/15/.
\ No newline at end of file diff --git a/may-19th-meetup-730-pm-charles-lowell/index.html b/may-19th-meetup-730-pm-charles-lowell/index.html new file mode 100644 index 00000000..3309ec65 --- /dev/null +++ b/may-19th-meetup-730-pm-charles-lowell/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2015/05/19/.
\ No newline at end of file diff --git a/may-2012-meetup-details-announced/index.html b/may-2012-meetup-details-announced/index.html new file mode 100644 index 00000000..e0469385 --- /dev/null +++ b/may-2012-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2012/05/15/.
\ No newline at end of file diff --git a/may-2013-austin-javascript-details-announced/index.html b/may-2013-austin-javascript-details-announced/index.html new file mode 100644 index 00000000..e3397d56 --- /dev/null +++ b/may-2013-austin-javascript-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2013/05/21/.
\ No newline at end of file diff --git a/may-20th-meetup-730-pm-steve-stedman-and-alex-sexton/index.html b/may-20th-meetup-730-pm-steve-stedman-and-alex-sexton/index.html new file mode 100644 index 00000000..8db862cd --- /dev/null +++ b/may-20th-meetup-730-pm-steve-stedman-and-alex-sexton/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2014/05/20/.
\ No newline at end of file diff --git a/may-meetup-details-announced/index.html b/may-meetup-details-announced/index.html new file mode 100644 index 00000000..25846179 --- /dev/null +++ b/may-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2011/05/17/.
\ No newline at end of file diff --git a/new-location-for-the-austin-javascript-meetup/index.html b/new-location-for-the-austin-javascript-meetup/index.html new file mode 100644 index 00000000..f11dc605 --- /dev/null +++ b/new-location-for-the-austin-javascript-meetup/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/new-location-for-the-austin-javascript-meetup/.
\ No newline at end of file diff --git a/no-october-meetup/index.html b/no-october-meetup/index.html new file mode 100644 index 00000000..f64d4f78 --- /dev/null +++ b/no-october-meetup/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/no-october-meetup/.
\ No newline at end of file diff --git a/november-19th-meetup-730-pm-kassandra-perch-on-flight/index.html b/november-19th-meetup-730-pm-kassandra-perch-on-flight/index.html new file mode 100644 index 00000000..aac13904 --- /dev/null +++ b/november-19th-meetup-730-pm-kassandra-perch-on-flight/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2013/11/19/.
\ No newline at end of file diff --git a/november-details-announced/index.html b/november-details-announced/index.html new file mode 100644 index 00000000..26a421f3 --- /dev/null +++ b/november-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2011/11/15/.
\ No newline at end of file diff --git a/november-meetup-details-announced/index.html b/november-meetup-details-announced/index.html new file mode 100644 index 00000000..b51ba555 --- /dev/null +++ b/november-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2010/11/16/.
\ No newline at end of file diff --git a/october-2012-austin-javascript-meetup-details-announced/index.html b/october-2012-austin-javascript-meetup-details-announced/index.html new file mode 100644 index 00000000..328d11e7 --- /dev/null +++ b/october-2012-austin-javascript-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2012/10/16/.
\ No newline at end of file diff --git a/october-2013/index.html b/october-2013/index.html new file mode 100644 index 00000000..fd2d8fc2 --- /dev/null +++ b/october-2013/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2013/10/15/.
\ No newline at end of file diff --git a/october-21st-meetup-730-pm-dan-defelippi/index.html b/october-21st-meetup-730-pm-dan-defelippi/index.html new file mode 100644 index 00000000..e699beaf --- /dev/null +++ b/october-21st-meetup-730-pm-dan-defelippi/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2014/10/21/.
\ No newline at end of file diff --git a/october-meetup-details-announced/index.html b/october-meetup-details-announced/index.html new file mode 100644 index 00000000..fec1b8b1 --- /dev/null +++ b/october-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2010/10/19/.
\ No newline at end of file diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index f19b16b4..00000000 --- a/package-lock.json +++ /dev/null @@ -1,10689 +0,0 @@ -{ - "name": "AustinJavaScript.com", - "version": "3.2.1", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "AustinJavaScript.com", - "version": "3.2.1", - "license": "MIT", - "dependencies": { - "@11ty/eleventy": "^1.0.2", - "@11ty/eleventy-img": "^2.0.1", - "@11ty/eleventy-plugin-rss": "^1.2.0", - "bulma": "^0.9.4", - "html-minifier": "^4.0.0", - "markdown-it": "^13.0.1", - "purgecss": "^5.0.0", - "sass": "^1.81.0" - }, - "devDependencies": { - "eslint": "^8.27.0", - "eslint-config-airbnb-base": "^15.0.0", - "eslint-plugin-import": "^2.26.0", - "markdownlint": "^0.26.2", - "markdownlint-cli": "^0.32.2" - } - }, - "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==" - }, - "node_modules/@11ty/eleventy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-1.0.2.tgz", - "integrity": "sha512-03ER4zukR6BgwppI5DHRE11lc+8B0fWsBrqacVWo3o49QkdEFXnEWjhyI9qd9LrPlgQHK2/MYyxuOvNwecyCLQ==", - "dependencies": { - "@11ty/dependency-tree": "^2.0.1", - "@11ty/eleventy-utils": "^1.0.1", - "@iarna/toml": "^2.2.5", - "@sindresorhus/slugify": "^1.1.2", - "browser-sync": "^2.27.10", - "chokidar": "^3.5.3", - "cross-spawn": "^7.0.3", - "debug": "^4.3.4", - "dependency-graph": "^0.11.0", - "ejs": "^3.1.8", - "fast-glob": "^3.2.11", - "graceful-fs": "^4.2.10", - "gray-matter": "^4.0.3", - "hamljs": "^0.6.2", - "handlebars": "^4.7.7", - "is-glob": "^4.0.3", - "kleur": "^4.1.5", - "liquidjs": "^9.40.0", - "lodash": "^4.17.21", - "luxon": "^2.5.0", - "markdown-it": "^12.3.2", - "minimist": "^1.2.6", - "moo": "^0.5.1", - "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", - "pretty": "^2.0.0", - "pug": "^3.0.2", - "recursive-copy": "^2.0.14", - "semver": "^7.3.7", - "slugify": "^1.6.5" - }, - "bin": { - "eleventy": "cmd.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, - "node_modules/@11ty/eleventy-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-fetch/-/eleventy-fetch-3.0.0.tgz", - "integrity": "sha512-qJvfb331rYQAmlCS71Ygg0/XHUdB4/qXBOLsG0DJ1m61WL5JNha52OtKVeQq34u2J2Nfzim+X4TIL/+QyesB7Q==", - "dependencies": { - "debug": "^4.3.3", - "flat-cache": "^3.0.4", - "node-fetch": "^2.6.7", - "p-queue": "^6.6.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, - "node_modules/@11ty/eleventy-img": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-img/-/eleventy-img-2.0.1.tgz", - "integrity": "sha512-l30E+TszoovF/NK0WRc1oQoI42VxmYyM3O9cPiS20alSBHucX92RFdwl9HMDyRoh1g+App3+PomFIa5FKkb1Dw==", - "dependencies": { - "@11ty/eleventy-fetch": "^3.0.0", - "debug": "^4.3.3", - "image-size": "^1.0.1", - "p-queue": "^6.6.2", - "sharp": "^0.30.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, - "node_modules/@11ty/eleventy-plugin-rss": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-rss/-/eleventy-plugin-rss-1.2.0.tgz", - "integrity": "sha512-YzFnSH/5pObcFnqZ2sAQ782WmpOZHj1+xB9ydY/0j7BZ2jUNahn53VmwCB/sBRwXA/Fbwwj90q1MLo01Ru0UaQ==", - "dependencies": { - "debug": "^4.3.4", - "posthtml": "^0.16.6", - "posthtml-urls": "1.0.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==", - "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==" - }, - "node_modules/@11ty/eleventy/node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/@11ty/eleventy/node_modules/linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/@11ty/eleventy/node_modules/markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", - "dependencies": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/@babel/parser": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", - "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types/node_modules/@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/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/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "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==" - }, - "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==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "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==", - "engines": { - "node": ">= 8" - } - }, - "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==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@parcel/watcher": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", - "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.0", - "@parcel/watcher-darwin-arm64": "2.5.0", - "@parcel/watcher-darwin-x64": "2.5.0", - "@parcel/watcher-freebsd-x64": "2.5.0", - "@parcel/watcher-linux-arm-glibc": "2.5.0", - "@parcel/watcher-linux-arm-musl": "2.5.0", - "@parcel/watcher-linux-arm64-glibc": "2.5.0", - "@parcel/watcher-linux-arm64-musl": "2.5.0", - "@parcel/watcher-linux-x64-glibc": "2.5.0", - "@parcel/watcher-linux-x64-musl": "2.5.0", - "@parcel/watcher-win32-arm64": "2.5.0", - "@parcel/watcher-win32-ia32": "2.5.0", - "@parcel/watcher-win32-x64": "2.5.0" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", - "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", - "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", - "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", - "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", - "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", - "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", - "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", - "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", - "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", - "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", - "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", - "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", - "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher/node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/@parcel/watcher/node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "optional": 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==", - "dependencies": { - "@sindresorhus/transliterate": "^0.1.1", - "escape-string-regexp": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sindresorhus/slugify/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "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==", - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" - }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" - }, - "node_modules/@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": 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==" - }, - "node_modules/@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" - }, - "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==" - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/any-promise": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-0.1.0.tgz", - "integrity": "sha1-gwtoCqflbzNFHUsEnzvYBESY7ic=" - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "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==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "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": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "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=" - }, - "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==" - }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "node_modules/async-each-series": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", - "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "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==", - "dependencies": { - "@babel/types": "^7.9.6" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "engines": { - "node": "^4.5.0 || >= 5.9" - } - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" - }, - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "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==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-sync": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.10.tgz", - "integrity": "sha512-xKm+6KJmJu6RuMWWbFkKwOCSqQOxYe3nOrFkKI5Tr/ZzjPxyU3pFShKK3tWnazBo/3lYQzN7fzjixG8fwJh1Xw==", - "dependencies": { - "browser-sync-client": "^2.27.10", - "browser-sync-ui": "^2.27.10", - "bs-recipes": "1.3.4", - "bs-snippet-injector": "^2.0.1", - "chokidar": "^3.5.1", - "connect": "3.6.6", - "connect-history-api-fallback": "^1", - "dev-ip": "^1.0.1", - "easy-extender": "^2.3.4", - "eazy-logger": "3.1.0", - "etag": "^1.8.1", - "fresh": "^0.5.2", - "fs-extra": "3.0.1", - "http-proxy": "^1.18.1", - "immutable": "^3", - "localtunnel": "^2.0.1", - "micromatch": "^4.0.2", - "opn": "5.3.0", - "portscanner": "2.2.0", - "qs": "6.2.3", - "raw-body": "^2.3.2", - "resp-modifier": "6.0.2", - "rx": "4.1.0", - "send": "0.16.2", - "serve-index": "1.9.1", - "serve-static": "1.13.2", - "server-destroy": "1.0.1", - "socket.io": "^4.4.1", - "ua-parser-js": "1.0.2", - "yargs": "^17.3.1" - }, - "bin": { - "browser-sync": "dist/bin.js" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/browser-sync-client": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.10.tgz", - "integrity": "sha512-KCFKA1YDj6cNul0VsA28apohtBsdk5Wv8T82ClOZPZMZWxPj4Ny5AUbrj9UlAb/k6pdxE5HABrWDhP9+cjt4HQ==", - "dependencies": { - "etag": "1.8.1", - "fresh": "0.5.2", - "mitt": "^1.1.3", - "rxjs": "^5.5.6", - "typescript": "^4.6.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/browser-sync-ui": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.10.tgz", - "integrity": "sha512-elbJILq4Uo6OQv6gsvS3Y9vRAJlWu+h8j0JDkF0X/ua+3S6SVbbiWnZc8sNOFlG7yvVGIwBED3eaYQ0iBo1Dtw==", - "dependencies": { - "async-each-series": "0.1.1", - "connect-history-api-fallback": "^1", - "immutable": "^3", - "server-destroy": "1.0.1", - "socket.io-client": "^4.4.1", - "stream-throttle": "^0.1.3" - } - }, - "node_modules/bs-recipes": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==" - }, - "node_modules/bs-snippet-injector": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", - "integrity": "sha512-4u8IgB+L9L+S5hknOj3ddNSb42436gsnGm1AuM15B7CdbkpQTyVWgIM5/JUBiKiRwGOR86uo0Lu/OsX+SAlJmw==" - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "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": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/bulma": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.4.tgz", - "integrity": "sha512-86FlT5+1GrsgKbPLRRY7cGDg8fsJiP/jzTqXXVqiUZZ2aZT8uemEOHlU1CDU+TxklPEZ11HZNNWclRBBecP4CQ==" - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.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==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "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=", - "dependencies": { - "is-regex": "^1.0.3" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "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/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "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==", - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/color/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color/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==" - }, - "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==", - "engines": { - "node": ">= 6" - } - }, - "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=" - }, - "node_modules/condense-newlines": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", - "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-whitespace": "^0.3.0", - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/condense-newlines/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "node_modules/connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/constantinople": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", - "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", - "dependencies": { - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.1" - } - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "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==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-spawn/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==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-spawn/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "engines": { - "node": ">= 0.6" - } - }, - "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==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" - }, - "node_modules/detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "engines": { - "node": ">=8" - } - }, - "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==", - "bin": { - "dev-ip": "lib/dev-ip.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/doctypes": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" - }, - "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==", - "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==", - "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==", - "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==", - "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==", - "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/easy-extender": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", - "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", - "dependencies": { - "lodash": "^4.17.10" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/eazy-logger": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.1.0.tgz", - "integrity": "sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ==", - "dependencies": { - "tfunk": "^4.0.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", - "dependencies": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - }, - "bin": { - "editorconfig": "bin/editorconfig" - } - }, - "node_modules/editorconfig/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/editorconfig/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "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==" - }, - "node_modules/ejs": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", - "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==" - }, - "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==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, - "peer": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "optional": true, - "peer": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/engine.io": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", - "dependencies": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/engine.io-client": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.3.tgz", - "integrity": "sha512-aXPtgF1JS3RuuKcpSrBtimSjYvrbhKW9froICH4s0F3XQWLxsKNxqzG39nnvQZQnva4CMvUK63T7shevxRyYHw==", - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3", - "xmlhttprequest-ssl": "~2.0.0" - } - }, - "node_modules/engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "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==", - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/es-abstract": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "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==" - }, - "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=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", - "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "dependencies": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.2" - } - }, - "node_modules/eslint-config-airbnb-base/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", - "dev": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/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/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/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/eslint-plugin-import/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/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/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, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/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/eslint/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/eslint/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" - } - }, - "node_modules/eslint/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 - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "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/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/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/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "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==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "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==", - "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/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.12.0.tgz", - "integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "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==", - "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==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.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==", - "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==" - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^3.0.0", - "universalify": "^0.1.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "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==" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "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==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globals/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "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==", - "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=" - }, - "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==", - "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==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "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==", - "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==", - "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/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "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": "sha1-jsU4hmBCvl8/evpzfRmNlL6xsHs=", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-errors/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "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==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/image-size": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", - "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", - "dependencies": { - "queue": "6.0.2" - }, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "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==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dependencies": { - "acorn": "^7.1.1", - "object-assign": "^4.1.1" - } - }, - "node_modules/is-expression/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "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=", - "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=", - "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==", - "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==", - "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==" - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", - "dependencies": { - "lodash.isfinite": "^3.3.2" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==" - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-whitespace": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", - "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "node_modules/jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", - "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/jake/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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jake/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jake/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==" - }, - "node_modules/js-beautify": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.0.tgz", - "integrity": "sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ==", - "dependencies": { - "config-chain": "^1.1.12", - "editorconfig": "^0.15.3", - "glob": "^7.1.3", - "nopt": "^5.0.0" - }, - "bin": { - "css-beautify": "js/bin/css-beautify.js", - "html-beautify": "js/bin/html-beautify.js", - "js-beautify": "js/bin/js-beautify.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/js-sdsl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", - "dev": true - }, - "node_modules/js-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" - }, - "node_modules/js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jstransformer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", - "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": "sha512-3KF80UaaSSxo8jVnRYtMKNGFOoVPBdkkVPsw+Ad0y4oxKXPduS6G6iHkrf69yJVff/VAaYXkV42rtZ7daJxU3w==", - "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==", - "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==", - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" - }, - "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==", - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/liquidjs": { - "version": "9.42.1", - "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-9.42.1.tgz", - "integrity": "sha512-7Dbxs2M7W0EwemTWkBNCLR7YZJ6Bm5FYJ+djMgAj4znqquSoex314JncMSxFsU5CkOC/4LZxecMq3LNgXrVYoQ==", - "bin": { - "liquid": "bin/liquid.js", - "liquidjs": "bin/liquid.js" - }, - "engines": { - "node": ">=4.8.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/liquidjs" - } - }, - "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": "sha1-yn3/ZAYGQzysdcvoRGrNhksVv28=" - }, - "node_modules/localtunnel": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", - "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", - "dependencies": { - "axios": "0.21.4", - "debug": "4.3.2", - "openurl": "1.1.1", - "yargs": "17.1.1" - }, - "bin": { - "lt": "bin/lt.js" - }, - "engines": { - "node": ">=8.3.0" - } - }, - "node_modules/localtunnel/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/localtunnel/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/localtunnel/node_modules/yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.deburr": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", - "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==" - }, - "node_modules/lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "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=" - }, - "node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/luxon": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", - "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/markdown-it": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", - "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", - "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" - } - }, - "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==" - }, - "node_modules/markdownlint": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.26.2.tgz", - "integrity": "sha512-2Am42YX2Ex5SQhRq35HxYWDfz1NLEOZWWN25nqd2h3AHRKsGRE+Qg1gt1++exW792eXTrR4jCNHfShfWk9Nz8w==", - "dev": true, - "dependencies": { - "markdown-it": "13.0.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/markdownlint-cli": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.32.2.tgz", - "integrity": "sha512-xmJT1rGueUgT4yGNwk6D0oqQr90UJ7nMyakXtqjgswAkEhYYqjHew9RY8wDbOmh2R270IWjuKSeZzHDEGPAUkQ==", - "dev": true, - "dependencies": { - "commander": "~9.4.0", - "get-stdin": "~9.0.0", - "glob": "~8.0.3", - "ignore": "~5.2.0", - "js-yaml": "^4.1.0", - "jsonc-parser": "~3.1.0", - "markdownlint": "~0.26.2", - "markdownlint-rule-helpers": "~0.17.2", - "minimatch": "~5.1.0", - "run-con": "~1.2.11" - }, - "bin": { - "markdownlint": "markdownlint.js" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/markdownlint-cli/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/markdownlint-cli/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/markdownlint-cli/node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "dev": true, - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/markdownlint-cli/node_modules/get-stdin": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", - "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/markdownlint-cli/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/markdownlint-cli/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/markdownlint-cli/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/markdownlint-rule-helpers": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.17.2.tgz", - "integrity": "sha512-XaeoW2NYSlWxMCZM2B3H7YTG6nlaLfkEZWMBhr4hSPlq9MuY2sy83+Xr89jXOqZMZYjvi5nBCGoFh7hHoPKZmA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/maximatch": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", - "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==", - "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": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", - "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": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "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": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "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==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "bin": { - "mime": "cli.js" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==" - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/moo": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", - "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==" - }, - "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==" - }, - "node_modules/multimatch": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", - "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", - "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==", - "bin": { - "mustache": "bin/mustache" - } - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "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==" - }, - "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==", - "dependencies": { - "lower-case": "^1.1.1" - } - }, - "node_modules/node-abi": { - "version": "3.28.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.28.0.tgz", - "integrity": "sha512-fRlDb4I0eLcQeUvGq7IY3xHrSb0c9ummdvDSYWfT9+LKP+3jCKw/tKoqaM7r1BAoiAC6GtwyjaGnOz6B3OtF+A==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-addon-api": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", - "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==" - }, - "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==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "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==", - "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==", - "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/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "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=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/openurl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==" - }, - "node_modules/opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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=", - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-srcset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", - "integrity": "sha1-8r0iH2zJcKk42IVWq8WJyqqiveE=" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "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, - "engines": { - "node": ">=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=", - "engines": { - "node": ">=0.10.0" - } - }, - "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==" - }, - "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==" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "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": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "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==", - "dependencies": { - "semver-compare": "^1.0.0" - } - }, - "node_modules/portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", - "dependencies": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" - }, - "engines": { - "node": ">=0.4", - "npm": ">=1.0.0" - } - }, - "node_modules/portscanner/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/postcss": { - "version": "8.4.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", - "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/posthtml": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", - "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", - "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==", - "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==", - "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==", - "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/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/pretty": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", - "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", - "dependencies": { - "condense-newlines": "^0.2.1", - "extend-shallow": "^2.0.1", - "js-beautify": "^1.6.12" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "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": "sha1-M1MXTv8mlEgQN+BOAfd6oPttG2A=", - "dependencies": { - "any-promise": "^0.1.0" - } - }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "node_modules/pug": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", - "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", - "dependencies": { - "pug-code-gen": "^3.0.2", - "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==", - "dependencies": { - "constantinople": "^4.0.1", - "js-stringify": "^1.0.2", - "pug-runtime": "^3.0.0" - } - }, - "node_modules/pug-code-gen": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", - "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", - "dependencies": { - "constantinople": "^4.0.1", - "doctypes": "^1.1.0", - "js-stringify": "^1.0.2", - "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", - "void-elements": "^3.1.0", - "with": "^7.0.0" - } - }, - "node_modules/pug-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", - "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==" - }, - "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==", - "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==", - "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==", - "dependencies": { - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0" - } - }, - "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==", - "dependencies": { - "object-assign": "^4.1.1", - "pug-walk": "^2.0.0" - } - }, - "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==", - "dependencies": { - "pug-error": "^2.0.0", - "token-stream": "1.0.0" - } - }, - "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==" - }, - "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==", - "dependencies": { - "pug-error": "^2.0.0" - } - }, - "node_modules/pug-walk": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", - "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/purgecss": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-5.0.0.tgz", - "integrity": "sha512-RAnuxrGuVyLLTr8uMbKaxDRGWMgK5CCYDfRyUNNcaz5P3kGgD2b7ymQGYEyo2ST7Tl/ScwFgf5l3slKMxHSbrw==", - "dependencies": { - "commander": "^9.0.0", - "glob": "^8.0.3", - "postcss": "^8.4.4", - "postcss-selector-parser": "^6.0.7" - }, - "bin": { - "purgecss": "bin/purgecss.js" - } - }, - "node_modules/purgecss/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==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/purgecss/node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/purgecss/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/purgecss/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/qs": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", - "integrity": "sha512-AY4g8t3LMboim0t6XWFdz6J5OuJ1ZNYu54SXihS/OMpgyCqYmcAJnWqkNSOjSjWmq3xxy+GF9uWQI2lI/7tKIA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/queue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - "dependencies": { - "inherits": "~2.0.3" - } - }, - "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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "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==", - "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" - } - }, - "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==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/recursive-copy/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "engines": { - "node": ">= 0.10" - } - }, - "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=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resp-modifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", - "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", - "dependencies": { - "debug": "^2.2.0", - "minimatch": "^3.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/resp-modifier/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/resp-modifier/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-con": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.2.11.tgz", - "integrity": "sha512-NEMGsUT+cglWkzEr4IFK21P4Jca45HqiAbIIZIBdX5+UZTB24Mb/21iNGgz9xZa8tL6vbW7CXmq7MFN42+VjNQ==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~3.0.0", - "minimist": "^1.2.6", - "strip-json-comments": "~3.1.1" - }, - "bin": { - "run-con": "cli.js" - } - }, - "node_modules/run-con/node_modules/ini": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", - "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/run-con/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "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" - } - }, - "node_modules/rx": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==" - }, - "node_modules/rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", - "dependencies": { - "symbol-observable": "1.0.1" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sass": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.81.0.tgz", - "integrity": "sha512-Q4fOxRfhmv3sqCLoGfvrC9pRV8btc0UtqL9mN6Yrv6Qi9ScL55CVH1vlPP863ISLEEMNLLuu9P+enCeGHlnzhA==", - "dependencies": { - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" - } - }, - "node_modules/sass/node_modules/chokidar": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", - "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/sass/node_modules/immutable": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.2.tgz", - "integrity": "sha512-1NU7hWZDkV7hJ4PJ9dur9gTNQ4ePNPN4k9/0YhwjzykTi/+3Q5pF93YU5QoVj8BuOnhLgaY8gs0U2pj4kSYVcw==" - }, - "node_modules/sass/node_modules/readdirp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", - "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "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=" - }, - "node_modules/semver/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==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, - "node_modules/send/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, - "node_modules/send/node_modules/statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/server-destroy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==" - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/sharp": { - "version": "0.30.7", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz", - "integrity": "sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==", - "hasInstallScript": true, - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.1", - "node-addon-api": "^5.0.0", - "prebuild-install": "^7.1.1", - "semver": "^7.3.7", - "simple-get": "^4.0.1", - "tar-fs": "^2.1.1", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=12.13.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "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": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/slugify": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz", - "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/socket.io": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", - "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", - "dependencies": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" - }, - "node_modules/socket.io-client": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.3.tgz", - "integrity": "sha512-I/hqDYpQ6JKwtJOf5ikM+Qz+YujZPMEl6qBLhxiP0nX+TfXKhW4KZZG8lamrD6Y5ngjmYHreESVasVCgi5Kl3A==", - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.2.3", - "socket.io-parser": "~4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "node_modules/statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stream-throttle": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", - "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", - "dependencies": { - "commander": "^2.2.0", - "limiter": "^1.0.5" - }, - "bin": { - "throttleproxy": "bin/throttleproxy.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/stream-throttle/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "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==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/tfunk": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-4.0.0.tgz", - "integrity": "sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ==", - "dependencies": { - "chalk": "^1.1.3", - "dlv": "^1.1.3" - } - }, - "node_modules/tfunk/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tfunk/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tfunk/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tfunk/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tfunk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "engines": { - "node": ">=4" - } - }, - "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==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "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=" - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/ua-parser-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz", - "integrity": "sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "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==" - }, - "node_modules/uglify-js": { - "version": "3.10.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.2.tgz", - "integrity": "sha512-GXCYNwqoo0MbLARghYjxVBxDCnU0tLqN7IPLdHHbibCb1NI5zBkU2EPcy/GaVxc0BtTjqyGXJCINe6JMR2Dpow==", - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/void-elements": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", - "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/with": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", - "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", - "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" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/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==" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "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 - } - } - }, - "node_modules/xmlhttprequest-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "node_modules/yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@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==" - }, - "@11ty/eleventy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-1.0.2.tgz", - "integrity": "sha512-03ER4zukR6BgwppI5DHRE11lc+8B0fWsBrqacVWo3o49QkdEFXnEWjhyI9qd9LrPlgQHK2/MYyxuOvNwecyCLQ==", - "requires": { - "@11ty/dependency-tree": "^2.0.1", - "@11ty/eleventy-utils": "^1.0.1", - "@iarna/toml": "^2.2.5", - "@sindresorhus/slugify": "^1.1.2", - "browser-sync": "^2.27.10", - "chokidar": "^3.5.3", - "cross-spawn": "^7.0.3", - "debug": "^4.3.4", - "dependency-graph": "^0.11.0", - "ejs": "^3.1.8", - "fast-glob": "^3.2.11", - "graceful-fs": "^4.2.10", - "gray-matter": "^4.0.3", - "hamljs": "^0.6.2", - "handlebars": "^4.7.7", - "is-glob": "^4.0.3", - "kleur": "^4.1.5", - "liquidjs": "^9.40.0", - "lodash": "^4.17.21", - "luxon": "^2.5.0", - "markdown-it": "^12.3.2", - "minimist": "^1.2.6", - "moo": "^0.5.1", - "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", - "pretty": "^2.0.0", - "pug": "^3.0.2", - "recursive-copy": "^2.0.14", - "semver": "^7.3.7", - "slugify": "^1.6.5" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" - }, - "linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "requires": { - "uc.micro": "^1.0.1" - } - }, - "markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", - "requires": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - } - } - } - }, - "@11ty/eleventy-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-fetch/-/eleventy-fetch-3.0.0.tgz", - "integrity": "sha512-qJvfb331rYQAmlCS71Ygg0/XHUdB4/qXBOLsG0DJ1m61WL5JNha52OtKVeQq34u2J2Nfzim+X4TIL/+QyesB7Q==", - "requires": { - "debug": "^4.3.3", - "flat-cache": "^3.0.4", - "node-fetch": "^2.6.7", - "p-queue": "^6.6.2" - } - }, - "@11ty/eleventy-img": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-img/-/eleventy-img-2.0.1.tgz", - "integrity": "sha512-l30E+TszoovF/NK0WRc1oQoI42VxmYyM3O9cPiS20alSBHucX92RFdwl9HMDyRoh1g+App3+PomFIa5FKkb1Dw==", - "requires": { - "@11ty/eleventy-fetch": "^3.0.0", - "debug": "^4.3.3", - "image-size": "^1.0.1", - "p-queue": "^6.6.2", - "sharp": "^0.30.3" - } - }, - "@11ty/eleventy-plugin-rss": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-rss/-/eleventy-plugin-rss-1.2.0.tgz", - "integrity": "sha512-YzFnSH/5pObcFnqZ2sAQ782WmpOZHj1+xB9ydY/0j7BZ2jUNahn53VmwCB/sBRwXA/Fbwwj90q1MLo01Ru0UaQ==", - "requires": { - "debug": "^4.3.4", - "posthtml": "^0.16.6", - "posthtml-urls": "1.0.0" - } - }, - "@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==", - "requires": { - "normalize-path": "^3.0.0" - } - }, - "@babel/parser": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", - "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" - }, - "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", - "requires": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==" - } - } - }, - "@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "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 - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - } - } - }, - "@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "dependencies": { - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@iarna/toml": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==" - }, - "@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==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@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==" - }, - "@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==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@parcel/watcher": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", - "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", - "optional": true, - "requires": { - "@parcel/watcher-android-arm64": "2.5.0", - "@parcel/watcher-darwin-arm64": "2.5.0", - "@parcel/watcher-darwin-x64": "2.5.0", - "@parcel/watcher-freebsd-x64": "2.5.0", - "@parcel/watcher-linux-arm-glibc": "2.5.0", - "@parcel/watcher-linux-arm-musl": "2.5.0", - "@parcel/watcher-linux-arm64-glibc": "2.5.0", - "@parcel/watcher-linux-arm64-musl": "2.5.0", - "@parcel/watcher-linux-x64-glibc": "2.5.0", - "@parcel/watcher-linux-x64-musl": "2.5.0", - "@parcel/watcher-win32-arm64": "2.5.0", - "@parcel/watcher-win32-ia32": "2.5.0", - "@parcel/watcher-win32-x64": "2.5.0", - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, - "dependencies": { - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "optional": true - }, - "node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "optional": true - } - } - }, - "@parcel/watcher-android-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", - "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", - "optional": true - }, - "@parcel/watcher-darwin-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", - "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", - "optional": true - }, - "@parcel/watcher-darwin-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", - "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", - "optional": true - }, - "@parcel/watcher-freebsd-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", - "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", - "optional": true - }, - "@parcel/watcher-linux-arm-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", - "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", - "optional": true - }, - "@parcel/watcher-linux-arm-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", - "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", - "optional": true - }, - "@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", - "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", - "optional": true - }, - "@parcel/watcher-linux-arm64-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", - "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", - "optional": true - }, - "@parcel/watcher-linux-x64-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", - "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", - "optional": true - }, - "@parcel/watcher-linux-x64-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", - "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", - "optional": true - }, - "@parcel/watcher-win32-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", - "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", - "optional": true - }, - "@parcel/watcher-win32-ia32": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", - "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", - "optional": true - }, - "@parcel/watcher-win32-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", - "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", - "optional": true - }, - "@sindresorhus/slugify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz", - "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==", - "requires": { - "@sindresorhus/transliterate": "^0.1.1", - "escape-string-regexp": "^4.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - } - } - }, - "@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==", - "requires": { - "escape-string-regexp": "^2.0.0", - "lodash.deburr": "^4.1.0" - }, - "dependencies": { - "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==" - } - } - }, - "@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" - }, - "@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" - }, - "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" - }, - "@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" - }, - "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==" - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "any-promise": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-0.1.0.tgz", - "integrity": "sha1-gwtoCqflbzNFHUsEnzvYBESY7ic=" - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==" - }, - "array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - } - }, - "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==" - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==" - }, - "array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - } - }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "assert-never": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", - "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==" - }, - "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "async-each-series": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", - "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==" - }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "requires": { - "follow-redirects": "^1.14.0" - } - }, - "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==", - "requires": { - "@babel/types": "^7.9.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-sync": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.10.tgz", - "integrity": "sha512-xKm+6KJmJu6RuMWWbFkKwOCSqQOxYe3nOrFkKI5Tr/ZzjPxyU3pFShKK3tWnazBo/3lYQzN7fzjixG8fwJh1Xw==", - "requires": { - "browser-sync-client": "^2.27.10", - "browser-sync-ui": "^2.27.10", - "bs-recipes": "1.3.4", - "bs-snippet-injector": "^2.0.1", - "chokidar": "^3.5.1", - "connect": "3.6.6", - "connect-history-api-fallback": "^1", - "dev-ip": "^1.0.1", - "easy-extender": "^2.3.4", - "eazy-logger": "3.1.0", - "etag": "^1.8.1", - "fresh": "^0.5.2", - "fs-extra": "3.0.1", - "http-proxy": "^1.18.1", - "immutable": "^3", - "localtunnel": "^2.0.1", - "micromatch": "^4.0.2", - "opn": "5.3.0", - "portscanner": "2.2.0", - "qs": "6.2.3", - "raw-body": "^2.3.2", - "resp-modifier": "6.0.2", - "rx": "4.1.0", - "send": "0.16.2", - "serve-index": "1.9.1", - "serve-static": "1.13.2", - "server-destroy": "1.0.1", - "socket.io": "^4.4.1", - "ua-parser-js": "1.0.2", - "yargs": "^17.3.1" - } - }, - "browser-sync-client": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.10.tgz", - "integrity": "sha512-KCFKA1YDj6cNul0VsA28apohtBsdk5Wv8T82ClOZPZMZWxPj4Ny5AUbrj9UlAb/k6pdxE5HABrWDhP9+cjt4HQ==", - "requires": { - "etag": "1.8.1", - "fresh": "0.5.2", - "mitt": "^1.1.3", - "rxjs": "^5.5.6", - "typescript": "^4.6.2" - } - }, - "browser-sync-ui": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.10.tgz", - "integrity": "sha512-elbJILq4Uo6OQv6gsvS3Y9vRAJlWu+h8j0JDkF0X/ua+3S6SVbbiWnZc8sNOFlG7yvVGIwBED3eaYQ0iBo1Dtw==", - "requires": { - "async-each-series": "0.1.1", - "connect-history-api-fallback": "^1", - "immutable": "^3", - "server-destroy": "1.0.1", - "socket.io-client": "^4.4.1", - "stream-throttle": "^0.1.3" - } - }, - "bs-recipes": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==" - }, - "bs-snippet-injector": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", - "integrity": "sha512-4u8IgB+L9L+S5hknOj3ddNSb42436gsnGm1AuM15B7CdbkpQTyVWgIM5/JUBiKiRwGOR86uo0Lu/OsX+SAlJmw==" - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "bulma": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.4.tgz", - "integrity": "sha512-86FlT5+1GrsgKbPLRRY7cGDg8fsJiP/jzTqXXVqiUZZ2aZT8uemEOHlU1CDU+TxklPEZ11HZNNWclRBBecP4CQ==" - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "character-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", - "requires": { - "is-regex": "^1.0.3" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.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" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "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==", - "requires": { - "source-map": "~0.6.0" - } - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "requires": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "dependencies": { - "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==", - "requires": { - "color-name": "~1.1.4" - } - }, - "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==" - } - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "condense-newlines": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", - "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", - "requires": { - "extend-shallow": "^2.0.1", - "is-whitespace": "^0.3.0", - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" - }, - "constantinople": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", - "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", - "requires": { - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.1" - } - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "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==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "requires": { - "mimic-response": "^3.1.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" - }, - "detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" - }, - "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==" - }, - "dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "doctypes": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "dependencies": { - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - } - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "easy-extender": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", - "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", - "requires": { - "lodash": "^4.17.10" - } - }, - "eazy-logger": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.1.0.tgz", - "integrity": "sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ==", - "requires": { - "tfunk": "^4.0.0" - } - }, - "editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", - "requires": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "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==" - }, - "ejs": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", - "requires": { - "jake": "^10.8.5" - } - }, - "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==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, - "peer": true, - "requires": { - "iconv-lite": "^0.6.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "optional": true, - "peer": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "engine.io": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", - "requires": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" - } - }, - "engine.io-client": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.3.tgz", - "integrity": "sha512-aXPtgF1JS3RuuKcpSrBtimSjYvrbhKW9froICH4s0F3XQWLxsKNxqzG39nnvQZQnva4CMvUK63T7shevxRyYHw==", - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3", - "xmlhttprequest-ssl": "~2.0.0" - } - }, - "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==" - }, - "entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "requires": { - "prr": "~1.0.1" - } - }, - "es-abstract": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - } - }, - "es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "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==" - }, - "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=" - }, - "eslint": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", - "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "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": { - "color-convert": "^2.0.1" - } - }, - "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 - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "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, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - } - } - }, - "eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "requires": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", - "dev": true, - "requires": { - "debug": "^3.2.7" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", - "dev": true, - "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "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==", - "requires": { - "@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" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.12.0.tgz", - "integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==", - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "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==", - "requires": { - "minimatch": "^5.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^3.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, - "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==" - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "requires": { - "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" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - }, - "dependencies": { - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "requires": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - } - }, - "hamljs": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/hamljs/-/hamljs-0.6.2.tgz", - "integrity": "sha1-e3EWz22+cnjkKz9u+HJaM+F3yOM=" - }, - "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==", - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" - } - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "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==", - "requires": { - "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" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - } - } - }, - "htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "http-equiv-refresh": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/http-equiv-refresh/-/http-equiv-refresh-1.0.0.tgz", - "integrity": "sha1-jsU4hmBCvl8/evpzfRmNlL6xsHs=" - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "dependencies": { - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - } - } - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "image-size": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", - "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", - "requires": { - "queue": "6.0.2" - } - }, - "immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==" - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "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==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-expression": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", - "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", - "requires": { - "acorn": "^7.1.1", - "object-assign": "^4.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "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==" - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "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==" - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", - "requires": { - "lodash.isfinite": "^3.3.2" - } - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "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==" - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-whitespace": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", - "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=" - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", - "requires": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "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==", - "requires": { - "color-name": "~1.1.4" - } - }, - "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==" - } - } - }, - "js-beautify": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.0.tgz", - "integrity": "sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ==", - "requires": { - "config-chain": "^1.1.12", - "editorconfig": "^0.15.3", - "glob": "^7.1.3", - "nopt": "^5.0.0" - } - }, - "js-sdsl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", - "dev": true - }, - "js-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" - }, - "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", - "dev": true - }, - "jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jstransformer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", - "requires": { - "is-promise": "^2.0.0", - "promise": "^7.0.1" - } - }, - "junk": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz", - "integrity": "sha512-3KF80UaaSSxo8jVnRYtMKNGFOoVPBdkkVPsw+Ad0y4oxKXPduS6G6iHkrf69yJVff/VAaYXkV42rtZ7daJxU3w==" - }, - "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==" - }, - "kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==" - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" - }, - "linkify-it": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", - "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", - "requires": { - "uc.micro": "^1.0.1" - } - }, - "liquidjs": { - "version": "9.42.1", - "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-9.42.1.tgz", - "integrity": "sha512-7Dbxs2M7W0EwemTWkBNCLR7YZJ6Bm5FYJ+djMgAj4znqquSoex314JncMSxFsU5CkOC/4LZxecMq3LNgXrVYoQ==" - }, - "list-to-array": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/list-to-array/-/list-to-array-1.1.0.tgz", - "integrity": "sha1-yn3/ZAYGQzysdcvoRGrNhksVv28=" - }, - "localtunnel": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", - "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", - "requires": { - "axios": "0.21.4", - "debug": "4.3.2", - "openurl": "1.1.1", - "yargs": "17.1.1" - }, - "dependencies": { - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - } - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.deburr": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", - "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==" - }, - "lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "luxon": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", - "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==" - }, - "markdown-it": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", - "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", - "requires": { - "argparse": "^2.0.1", - "entities": "~3.0.1", - "linkify-it": "^4.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - } - } - }, - "markdownlint": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.26.2.tgz", - "integrity": "sha512-2Am42YX2Ex5SQhRq35HxYWDfz1NLEOZWWN25nqd2h3AHRKsGRE+Qg1gt1++exW792eXTrR4jCNHfShfWk9Nz8w==", - "dev": true, - "requires": { - "markdown-it": "13.0.1" - } - }, - "markdownlint-cli": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.32.2.tgz", - "integrity": "sha512-xmJT1rGueUgT4yGNwk6D0oqQr90UJ7nMyakXtqjgswAkEhYYqjHew9RY8wDbOmh2R270IWjuKSeZzHDEGPAUkQ==", - "dev": true, - "requires": { - "commander": "~9.4.0", - "get-stdin": "~9.0.0", - "glob": "~8.0.3", - "ignore": "~5.2.0", - "js-yaml": "^4.1.0", - "jsonc-parser": "~3.1.0", - "markdownlint": "~0.26.2", - "markdownlint-rule-helpers": "~0.17.2", - "minimatch": "~5.1.0", - "run-con": "~1.2.11" - }, - "dependencies": { - "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 - }, - "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, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "dev": true - }, - "get-stdin": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", - "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", - "dev": true - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "markdownlint-rule-helpers": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.17.2.tgz", - "integrity": "sha512-XaeoW2NYSlWxMCZM2B3H7YTG6nlaLfkEZWMBhr4hSPlq9MuY2sy83+Xr89jXOqZMZYjvi5nBCGoFh7hHoPKZmA==", - "dev": true - }, - "maximatch": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", - "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==", - "requires": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" - }, - "dependencies": { - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==" - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "requires": { - "array-uniq": "^1.0.1" - } - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" - } - } - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" - }, - "minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" - }, - "mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==" - }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "moo": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", - "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "multimatch": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", - "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", - "requires": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" - } - }, - "mustache": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==" - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - }, - "napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "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==" - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "requires": { - "lower-case": "^1.1.1" - } - }, - "node-abi": { - "version": "3.28.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.28.0.tgz", - "integrity": "sha512-fRlDb4I0eLcQeUvGq7IY3xHrSb0c9ummdvDSYWfT9+LKP+3jCKw/tKoqaM7r1BAoiAC6GtwyjaGnOz6B3OtF+A==", - "requires": { - "semver": "^7.3.5" - } - }, - "node-addon-api": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", - "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==" - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "requires": { - "abbrev": "1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "nunjucks": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.3.tgz", - "integrity": "sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ==", - "requires": { - "a-sync-waterfall": "^1.0.0", - "asap": "^2.0.3", - "commander": "^5.1.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "openurl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==" - }, - "opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" - }, - "p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "requires": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - } - }, - "p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "requires": { - "p-finally": "^1.0.0" - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "requires": { - "no-case": "^2.2.0" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-srcset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", - "integrity": "sha1-8r0iH2zJcKk42IVWq8WJyqqiveE=" - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "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 - }, - "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=" - }, - "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==" - }, - "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==" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" - }, - "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==", - "requires": { - "semver-compare": "^1.0.0" - } - }, - "portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", - "requires": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" - }, - "dependencies": { - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "requires": { - "lodash": "^4.17.14" - } - } - } - }, - "postcss": { - "version": "8.4.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", - "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "posthtml": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", - "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", - "requires": { - "posthtml-parser": "^0.11.0", - "posthtml-render": "^3.0.0" - } - }, - "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==", - "requires": { - "htmlparser2": "^7.1.1" - } - }, - "posthtml-render": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", - "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", - "requires": { - "is-json": "^2.0.1" - } - }, - "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==", - "requires": { - "http-equiv-refresh": "^1.0.0", - "list-to-array": "^1.1.0", - "parse-srcset": "^1.0.2", - "promise-each": "^2.2.0" - } - }, - "prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "requires": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "pretty": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", - "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", - "requires": { - "condense-newlines": "^0.2.1", - "extend-shallow": "^2.0.1", - "js-beautify": "^1.6.12" - } - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { - "asap": "~2.0.3" - } - }, - "promise-each": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/promise-each/-/promise-each-2.2.0.tgz", - "integrity": "sha1-M1MXTv8mlEgQN+BOAfd6oPttG2A=", - "requires": { - "any-promise": "^0.1.0" - } - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "pug": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", - "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", - "requires": { - "pug-code-gen": "^3.0.2", - "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" - } - }, - "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==", - "requires": { - "constantinople": "^4.0.1", - "js-stringify": "^1.0.2", - "pug-runtime": "^3.0.0" - } - }, - "pug-code-gen": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", - "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", - "requires": { - "constantinople": "^4.0.1", - "doctypes": "^1.1.0", - "js-stringify": "^1.0.2", - "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", - "void-elements": "^3.1.0", - "with": "^7.0.0" - } - }, - "pug-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", - "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==" - }, - "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==", - "requires": { - "constantinople": "^4.0.1", - "jstransformer": "1.0.0", - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0", - "resolve": "^1.15.1" - } - }, - "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==", - "requires": { - "character-parser": "^2.2.0", - "is-expression": "^4.0.0", - "pug-error": "^2.0.0" - } - }, - "pug-linker": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", - "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", - "requires": { - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0" - } - }, - "pug-load": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", - "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", - "requires": { - "object-assign": "^4.1.1", - "pug-walk": "^2.0.0" - } - }, - "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==", - "requires": { - "pug-error": "^2.0.0", - "token-stream": "1.0.0" - } - }, - "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==" - }, - "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==", - "requires": { - "pug-error": "^2.0.0" - } - }, - "pug-walk": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", - "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "purgecss": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-5.0.0.tgz", - "integrity": "sha512-RAnuxrGuVyLLTr8uMbKaxDRGWMgK5CCYDfRyUNNcaz5P3kGgD2b7ymQGYEyo2ST7Tl/ScwFgf5l3slKMxHSbrw==", - "requires": { - "commander": "^9.0.0", - "glob": "^8.0.3", - "postcss": "^8.4.4", - "postcss-selector-parser": "^6.0.7" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==" - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "qs": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", - "integrity": "sha512-AY4g8t3LMboim0t6XWFdz6J5OuJ1ZNYu54SXihS/OMpgyCqYmcAJnWqkNSOjSjWmq3xxy+GF9uWQI2lI/7tKIA==" - }, - "queue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - "requires": { - "inherits": "~2.0.3" - } - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "recursive-copy": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/recursive-copy/-/recursive-copy-2.0.14.tgz", - "integrity": "sha512-K8WNY8f8naTpfbA+RaXmkaQuD1IeW9EgNEfyGxSqqTQukpVtoOKros9jUqbpEsSw59YOmpd8nCBgtqJZy5nvog==", - "requires": { - "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" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resp-modifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", - "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", - "requires": { - "debug": "^2.2.0", - "minimatch": "^3.0.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "run-con": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.2.11.tgz", - "integrity": "sha512-NEMGsUT+cglWkzEr4IFK21P4Jca45HqiAbIIZIBdX5+UZTB24Mb/21iNGgz9xZa8tL6vbW7CXmq7MFN42+VjNQ==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~3.0.0", - "minimist": "^1.2.6", - "strip-json-comments": "~3.1.1" - }, - "dependencies": { - "ini": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", - "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - } - } - }, - "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==", - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rx": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==" - }, - "rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", - "requires": { - "symbol-observable": "1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sass": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.81.0.tgz", - "integrity": "sha512-Q4fOxRfhmv3sqCLoGfvrC9pRV8btc0UtqL9mN6Yrv6Qi9ScL55CVH1vlPP863ISLEEMNLLuu9P+enCeGHlnzhA==", - "requires": { - "@parcel/watcher": "^2.4.1", - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "dependencies": { - "chokidar": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", - "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", - "requires": { - "readdirp": "^4.0.1" - } - }, - "immutable": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.2.tgz", - "integrity": "sha512-1NU7hWZDkV7hJ4PJ9dur9gTNQ4ePNPN4k9/0YhwjzykTi/+3Q5pF93YU5QoVj8BuOnhLgaY8gs0U2pj4kSYVcw==" - }, - "readdirp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", - "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==" - } - } - }, - "section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "requires": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - } - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "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==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=" - }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" - } - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" - } - } - }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } - }, - "server-destroy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==" - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "sharp": { - "version": "0.30.7", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz", - "integrity": "sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==", - "requires": { - "color": "^4.2.3", - "detect-libc": "^2.0.1", - "node-addon-api": "^5.0.0", - "prebuild-install": "^7.1.1", - "semver": "^7.3.7", - "simple-get": "^4.0.1", - "tar-fs": "^2.1.1", - "tunnel-agent": "^0.6.0" - } - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" - }, - "simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "requires": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "requires": { - "is-arrayish": "^0.3.1" - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==" - }, - "slugify": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz", - "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==" - }, - "socket.io": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", - "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.2.0" - } - }, - "socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" - }, - "socket.io-client": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.3.tgz", - "integrity": "sha512-I/hqDYpQ6JKwtJOf5ikM+Qz+YujZPMEl6qBLhxiP0nX+TfXKhW4KZZG8lamrD6Y5ngjmYHreESVasVCgi5Kl3A==", - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.2.3", - "socket.io-parser": "~4.2.0" - } - }, - "socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==" - }, - "stream-throttle": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", - "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", - "requires": { - "commander": "^2.2.0", - "limiter": "^1.0.5" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - } - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "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==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true - }, - "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=" - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" - }, - "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==", - "requires": { - "has-flag": "^4.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - } - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==" - }, - "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "tfunk": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-4.0.0.tgz", - "integrity": "sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ==", - "requires": { - "chalk": "^1.1.3", - "dlv": "^1.1.3" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==" - } - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" - }, - "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==", - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "token-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", - "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=" - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==" - }, - "ua-parser-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz", - "integrity": "sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==" - }, - "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==" - }, - "uglify-js": { - "version": "3.10.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.2.tgz", - "integrity": "sha512-GXCYNwqoo0MbLARghYjxVBxDCnU0tLqN7IPLdHHbibCb1NI5zBkU2EPcy/GaVxc0BtTjqyGXJCINe6JMR2Dpow==" - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - }, - "void-elements": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", - "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=" - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "with": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", - "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", - "requires": { - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "assert-never": "^1.2.1", - "babel-walk": "3.0.0-canary-5" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "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==", - "requires": { - "color-name": "~1.1.4" - } - }, - "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==" - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "requires": {} - }, - "xmlhttprequest-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==" - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "dependencies": { - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" - } - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 1a74f3a1..00000000 --- a/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "AustinJavaScript.com", - "version": "3.2.1", - "description": "Austin JavaScript site", - "scripts": { - "build:css": "sass _sass/_main.scss:_site/assets/css/main.css --style=compressed --no-source-map", - "build": "npm run clean && eleventy && npm run build:css && npm run purgecss", - "clean": "rm -rf ./_site", - "debug": "DEBUG=Eleventy* eleventy", - "lint:js": "eslint --fix .eleventy.js ./_includes/*.js", - "lint:md": "markdownlint --fix ./_posts/*.md ./_meetups/*.md", - "lint": "npm run lint:js && npm run lint:md", - "purgecss": "npx purgecss --config ./purgecss.config.js", - "start": "ELEVENTY_ENV=dev eleventy --serve --watch", - "test": "npm run lint" - }, - "keywords": [ - "Austin", - "JavaScript", - "AustinJS" - ], - "author": "@AustinJS", - "license": "MIT", - "dependencies": { - "@11ty/eleventy": "^1.0.2", - "@11ty/eleventy-img": "^2.0.1", - "@11ty/eleventy-plugin-rss": "^1.2.0", - "bulma": "^0.9.4", - "html-minifier": "^4.0.0", - "markdown-it": "^13.0.1", - "purgecss": "^5.0.0", - "sass": "^1.81.0" - }, - "devDependencies": { - "eslint": "^8.27.0", - "eslint-config-airbnb-base": "^15.0.0", - "eslint-plugin-import": "^2.26.0", - "markdownlint": "^0.26.2", - "markdownlint-cli": "^0.32.2" - } -} diff --git a/posts.html b/posts.html deleted file mode 100644 index 881d4867..00000000 --- a/posts.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: base -title: Posts archive -meta: - description: An archive of past Austin JavaScript posts and meetups. ---- - - -{{ meta.description }}
- -Now that SXSW has wound down, Austin JavaScript would like to cordially reach out and thank everyone who attended the Austin JavaScript SXSW party. It was a massive success! Over 1,000 people attended, we ran out of food in 45 minutes (500 tacos) and all of the beer was consumed within 3 hours.
The door prizes were a big hit, from VIP tickets to Microsoft’s IE9 party to a Motorola Xoom, but the clear object of desire was the iPad 2 which was given away last. As if it were written in a script for a suspenseful movie, @joemccann had to reach into the ticket bowl 11 times to draw the winning ticket number. Bribes were offerred, deals were attempted to be made, but, alas, after the eleventh draw, this lucky guy won the iPad 2 (everyone else went to the bar to drown their sorrows).
From the humanitarian side of the event Austin JavaScript raised a whopping 683 pounds of food for the Capital Area Food Bank (CAFB)! The folks at the CAFB were overjoyed with our donation and wanted to extend their gratitude to all parties involved. And due to it being such a large donation, they’re featuring Austin JavaScript in their newsletter this month!
An extra big thanks to our very generous sponsors, Microsoft and the IE9 Team, subPrint Interactive, Mozilla, Solvate, TEKsystems, Cultivate PR and Kung Fu Saloon. We couldn’t have thrown this party without you.
Until next year!
It's that time of year again where Austin gets turned upside down and inside out. That's right, it's the AustinJS SXSW Party and this year, we are going all out.
We are celebrating over 3 years of community driven content, presentations and discussions at AustinJS from not only local members of the JavaScript community, but from members as far away as Canada, New York, and North Carolina. AustinJS is a group where anyone at any skill level can come and learn new things, talk shop with other members or provide a new perspective on seemingly anything from JavaScript, the front-end, the back-end, mobile or simply software engineering as a whole. This year, the event embraces the culture that is our community by providing an atmosphere where folks can close their laptops and crack open a few beers with their peers.
To honor our thriving community, we have have chartered a boat, but not just any boat, an electric, carbon-neutral, double-decker paddle-wheeled riverboat to be exact!
Since the beginning of 2012 AustinJS curator, Joe McCann, has been opening up invitations to the event online and most importantly at the actual meetups themselves. Emailing or @replying on twitter was all it took and now, 150 community leaders and enthusiasts (the maximum legal capacity for the boat!) will be attending what will surely be an unforgettable event.
Attendees can expect a fully catered experience including plenty of authentic Texas beer, hand made margaritas (with real lime juice, not that crappy sweet and sour mix), and the best Tex-Mex cuisine Austin has to offer, including for dessert, bacon chocolate chip cookies from Frank! Plus, we will have DJ Johnny Bravvo spinning quality music (no autotune tracks guaranteed) on the top deck the entire time while local photographer extraordinaire, Annie Ray, will be capturing the experience as well.
But wait, there's more.
We will also have VIP, front row seats for the viewing of the infamous "Austin bats" underneath the Congress bridge. What? You didn't know that Austin is home to the world's largest urban bat colony? Nearly 1.5 million bats fly out every night and it is quite a spectacle to see. We will be front and center!
Yes, there is still more.
Charlie Sheen isn't the only person who prefers to be winning, so we have curated a handful of awesome door prizes to be given away throughout the evening. No strings attached. Seriously. We don't even want your email address! To gauge what these prizes could be like, take last year's prizes as as benchmark:and then triple it. Just like Moms and Dads around the world we think everyone is a winner so if you don't score a door prize, don't fret, no one will go home empty handed.
Finally, it is of great privilege to call out those members of the community who are making this event a reality: our sponsors. This year we have many repeat sponsors from last year's epic event and some new faces as well. Support this year comes from the likes of:
All sponsors have played pivotal roles in making this event possible, so please, thank them on the boat when you see them!
So here's to our ever-growing community, may we all continue to build it up!

Now that SXSW is officially over, we had to share the great experience our community provided and shared in at the AustinJS SXSW Party for 2012. The party, which was aboard the Lonestar Riverboat, was a historic event as we cruised along Lady Bird Lake basking in the incredible weather of which Mother Nature graced us.
You could feel the excitement as everyone patiently waited to board the riverboat, anchor tokens in hand.

The security measures were so strict that it made the TSA look like school crossing guards.


When it was time, the onboarding began.

Our guests made their way to the dock where they were greeted by our hosts and given a raffle ticket.

As music blasted from the top deck, we embarked on our 3 hour tour.

It wasn’t long before everyone was diving into Maudie’s tex-mex tacos and enjoying Fireman’s 4 and authentic margaritas from the bar.




And then the raffle began!

First up: an 11” Macbook Air, courtesy of Appcelerator.

Next up: Samsung Galaxy Note, courtesy of Nodejitsu.

We ate, drank, cruised and socialized to our heart’s content.




And then gave away more cool stuff. Samsung Galaxy Tab, courtesy of Mozilla.



13” MacBook Air, courtesy of Adobe.



Oh, and there were bats. 1.5 million of them.


And of course, Pork Militia Bacon Cookies from Frank.


They were a huge hit. EVEN WITH @andrewdupont #dupontCAPS.



Did we mention that we gave away an autographed, framed pic of Phil Collins courtesy of Microsoft?


The excitement behind Phil warranted an animated gif.







And before we knew it, we were back at the dock.


But we had one last surprise: loaded swag bags that included jars of Mom’s Family Kitchen salsa, large bags of tortilla chips, koozies and cans of Lone Star beer, mini bottles of Tito’s vodka, Microsoft t-shirts and posters, Adobe sharpies, Nodejitsu t-shirts, Appcelerator stickers, Mozilla flashlight pens, KendoUI gum from Telerik, TEKsystems pens and highlighters, Geekli.st invite code cards and stickers, and gift certificates from Cultivate PR to Uchi, Uchiko, Limbo Jewelry, Away Spa and Trace.



This entire event would not have been possible without our INCREDIBLE community sponsors:
Also, we couldn’t have put our plan into action without our outstanding staff:
Captain Ric and Katy from Lonestar Riverboat Photographer: Annie Ray Music: DJ Johnny Bravvo Visual Designer: Joon Shin
Skippers: Bonnie Varner and Katherine McCaslin Bartender: Stacy Matthews
Event Lead: Mandy Lauderdale Event Host: Joe McCann
We’ve already begun to plan the party for next year. There’s a rumor that Burt Reynolds’ moustache might make an appearance.

Want to view all 280 pics from the party? Click below:
























































































































































































































































































That time of year is here again, where we in the Austin JavaScript community close our laptops and instead have a few beers together. After such a successful event last year at Kung Fu Saloon, we decided to do the same thing this year, but with more reasons to come out and support the community.
First, this year, we will be requiring attendees to either have an official SXSW badge or two cans of food to donate to the Capital Area Food Bank. With such a huge turnout last year, why wouldn't we use this as an opportunity to raise awareness and help stamp out hunger in the greater Austin area. A party with a cause! Party details are as follows:
Of course none of this would be possible without the unwavering support of our gracious sponsors: Microsoft (IE Team), Solvate, Mozilla (Developer Engagement), TekSystems and Cultivate PR.
Microsoft will actually be out engaging and entertaining all who attend to check out the latest version of IE9 and to assist developers preparing their sites and apps now. You do know that IE9 is at release candidate state, right?
Stay tuned as even more details are announced. We have a few tricks up our sleeve:
Follow us on Twitter here: @austinjs
Thanks to Logan Lindquist's work, the Austin JavaScript group now has a list you can subscribe to via email:
Just activate this link to go straight to the email address entry form. Enter your email address, then verify it in your inbox (a verification email will be sent automatically).
Thanks Logan!
For the month of March, instead of discussing closures and anonymous functions, the Austin JavaScript meetup group will be holding a party during SXSWi at Kung Fu Saloon sponsored by Appcelerator. We will have FREE BEER, FREE FOOD, AND FREE GAMES! Yes, you read that right:FREE! No strings attached! Escape the mayhem on East 6th by foot or pedicab and end up at Kung Fu Saloon, West 6th's newest hangout, and play a round of Street Fighter II or skeeball while downing free, QUALITY (non-domestic) beer.
The event details are as follows:
From Kung Fu Saloon's website:
Kung Fu Saloon is a West 6th Street area watering hole featuring a relaxed atmosphere in downtown Austin. To satisfy your thirst we offer a full bar including 24 beers on tap, with a selection ranging from the everyman’s Miller Light to the Belgian man’s Chimay. Oh yeah, we almost forgot to mention the specialty Sake bomb menu! Entertainment includes 14 vintage arcade games like Ms. Pacman, NBA Jam, Street Fighter II, Galaga, Golden Tee, Space Invaders & more. The fun continues with Shuffleboard, three original Skee Ball machines, and board games available for checkout at your table including Jenga, Boggle, Dominoes, & Giant Checkers. Reclaimed Chicago brick & 100 year old Texas barn wood keep it comfortable. Random accents like Space Invaders with glowing candle lit eyes invading down the masonry and pixelated images of Chuck Norris and Bruce Lee keep it amusing. Come check us out!
The Austin JavaScript SXSWi Happy Hour is graciously sponsored by none other than the huge supporter and innovator in the JavaScript world, Appcelerator. Appcelerator will be on site showcasing their premier development kit, Titanium, which allows you to write native desktop and mobile (iPhone and Android with Blackberry right around the corner) applications using HTML, CSS and JavaScript (and even Python, Ruby, and PHP). The Appcelerator team will also be giving away loads of free swag including free t-shirts for the first 500 people!
And of course we'll have some food to wash all that beer down. Austin's premier hot dog vendor, Man Bites Dog, will be providing us with a "build-your-own-dog" gourmet hot dog buffet!
Additional sponsors and support provided by subPrint Interactive and Virtue Group.
Any questions or concerns, feel free to contact Joe McCann via Twitter: @joemccann.
As an added bonus this year to all of the other fun and festivities, Austin JavaScript will be proudly promoting the IE team's {Dev:unplugged} event at our SXSW party. Don't know what you {Dev:unplugged}? Don't worry, the IE team will be out promoting the event at the party!
Here's a bit more information about {Dev:unplugged}:
Today, we are announcing the launch of Dev Unplugged, a contest that challenges web developers to push the limits of a modern browser without the use of plug-ins. We believe that HTML5 and related technologies, in conjunction with faster and faster browsers, finally give developers the tools they need to create experiences that are as vivid, interactive and compelling as anything you have seen in native applications. We hope that Dev Unplugged becomes a forum where developers around the world showcase their talents and what’s possible and inspires all of us to see where the web is going.The Challenge
As we look around and see the amazing things that people are creating using these new technologies, we decided that two categories really stood out to us: Gaming and Music. Developers can choose to submit an app in either category.
For the gaming category, we hope developers will push the limits of a modern browser and create games that are fun and addictive. In order to help developers get started and give them some inspiration, we worked with Mike Mignola, the creator of Hellboy, to license his characters exclusively for the developers to use to create their HTML5 game.
In the music category, we want developers to help us discover new ways to experience music online. In order to give them some material to get started, we’ve teamed-up with two hot bands provide them with tracks to get started: “Boy” by Ra Ra Riot and “Sail” by AWOLNATION.
The Judges
To help us judge the submissions we have assembled an amazing panel of judges that feature experts in HTML5, design and user experience on the web, including the likes of: Dion Almaer, Ben Galbraith, Remy Sharp, Grant Skinner, Rob Ford and Robert Nyman. The panel will be asked to judge the top-40 finalists according to creativity, quality of implementation and fit with the contest theme.
The Prizes
In order to really capture the attention of cutting-edge web developers, we have put together a set of 9featured prizes and 9honorable mentions. The prizes include:
- $40,000 in total prizes including $9,000 for the Grand Prize.
- Front page exposure on theFWA.com and beautyoftheweb.com
- Cool hardware: laptops and slates from Alienware, HP and ASUS
- An all-expense paid trip to the Future of Web Apps Las Vegas with “golden ticket” VIP access
Developers, Start Your Engines!
Below are the dates for the contest. We will have a private submission process for 5 weeks, at which point we will open up the submissions to the public so that they can check-out the submissions and vote on their favorites. Once submissions close, we will announce the 40 finalists who the judging panel will review in order to find out who our winners are.
- 3/1 – Contest Opens (submit early, don’t miss a chance to get voted-up!)
- 4/5 – Submission gallery opens to the public and voting begins!
- 5/9 – Submission deadline
- 5/12 – Top-40 Finalists are announced
- 5/23 – Winners are announced!
It's that time of year again where the various Austin meetup groups all get together and celebrate the Holidays with song and dance, err maybe it's just some beers and food, yeah, beer and food!
That's right on Tuesday, December 13th from 7pm to 9pm the greater Austin web community will have its annual holiday gala while also supporting a good cause: The Capitol Area Food Bank.
There will be mingling and possibly mistletoe depending on the weather (naturally) and of course free food and beer provided by our gracious sponsors:
Austin JavaScript is proud to be a part of not only such a great event but a member of an incredibly strong web, dev and design community that is in Austin. Just look at who else is involved.
See you there!
Our good friends at Refresh are hosting the Austin Web Bash Tuesday December 9th. This is an opportunity for folks from across different meetups in Austin to hang out. Even better, proceeds from the event go towards the Keep Austin Beautiful organization!
Come join us next Tuesday!
On Tuesday, come join the conglomerate of the web community meetups here in Austin to have a few cocktails and support a great organization The Capitol Area Food Bank. Austin JavaScript along with some of the other great meetup groups including WordPress Austin, Austin on Rails, IxDA-Austin, Austin UPA, Austin Lean Startup Circle, the Web Design Meetup, Bootstrap Austin Interactive, Austin Drupal Newbie Meetup, Austin PHP Meetup and of course, Refresh Austin will all be hanging out for a good time and good cause.
A giant thanks goes out to the good folks at Rackspace for sponsoring drinks and BuildASign for sponsoring the bartenders who will make them!
When: 7 — 9pm, Tuesday, December 14th, 2010
Where: Buffalo Billiards (6th and Brazos)
Admission: One canned food item for the Capital Area Food Bank.
On the verge of this month's meeting we'd like to let you know about an opportunity from last month's sponsor: CompassLearning.
We're looking for a highly skilled front-end developer who lives and breathes standards. You will have strong experience with standards compliant, semantic HTML and CSS, solid knowledge of JavasScript, DOM-scripting and familiarity with JavaScript frameworks like Sencha, MooTools, JQuery etc. You'll also be proficient with server-side programming using a server-side scripting language like PHP, Python or Ruby and know how to run queries with MySQL, or SQL Server.
You'll be tackling big and little projects that are fun, challenging and span the spectrum of front-end development. Sometimes the deadlines are tight, but that's why we're looking for people with great personalities who are team players. When a project is done we'll celebrate, enjoy the view and look forward to the next project wiser and stronger than before.
We're a casual dress, fun, thriving software company with a great work environment and plenty of growth in our future, so if we've sparked your interest drop us an email with your resume and a nice portfolio of sites developed and we'll talk. ![]()
Responsibilities include but are not limited to:
Required Skills:
Bonus:
Experience building complicated workflows
Relevant experience includes self-started personal projects
Knowledge of web accessibility standards
Please provide a portfolio of sites developed, either online or with attached files.
CompassLearning is a recognized leader in the K-12 educational software industry. In our Learning Studio in Austin, TX, our team of educational experts, graphic artists, writers, and developers create award-winning K-12 curriculum and assessment solutions that motivate today’s students to engage, think & learn.
K–12 schools use our Odyssey system to personalize instruction, improve test scores, and increase graduation rates. Odyssey influences student success because it is based on current and confirmed research on the way today’s 21st century students acquire knowledge. And teachers and administrators benefit from our custom implementations, excellent customer support, and strong professional development. We have a singular passion for student achievement.
CompassLearning is an Equal Opportunity Employer.
Since so many of us were devastated to find out that there was no meetup scheduled for December, TEKsystems decided to step up and allows us to drown our sorrows in a few pints of beer!
TEKsystems would like to invite The Austin JavaScript User Group to our Christmas Cheer and Beer Happy Hour at The Ginger Man on December 21st. We will have an open tab from 6 PM to 8 PM. Please feel free to invite friends, colleagues, family (sorry no children). Happy Holidays!!
So do your part and represent our strong and ever growing community (42 people at last month's meetup!) at The Ginger Man on December 21st.
Happy Holidays!
An archive of past Austin JavaScript posts and meetups.
{{ meta.description }}
- -2010 is off to a ridiculous start for the JavaScript community and this month, we have TWO incredible topics and two renowned and respected speakers: Alex Sexton and Kyle Simpson.
Superclassy Inheritance with JavaScript is a quick look at the benefits and consequences of several inheritance patterns in JavaScript. Code reuse plays a major role in the DRY development pattern and leveraging the inheritance patterns built into JavaScript or manipulating them can change the way you build and organize large applications. Unfortunately, JavaScript's reputation and odd naming scheme have stopped people from using all the features that it has to offer. First, we'll discuss the array of options that exist and then go through a real-world example while using our newly honed inheritance-foo to make it play nice.
Kyle will cover a couple of recent endeavors of mine into improving page- load performance on web sites. One is a set of experiments in various ways to deliver JavaScript code to the browser but to defer its execution until later. Such techniques are particularly well suited to mobile applications, but have some benefit to traditional browser apps as well. The other endeavor is a new site/service just launched at http://2static.it -- a service to provide free sub-domain aliases to create a cookie-free URL to load your static page assets (JS, CSS, images, SWFs, etc).
As time permits, Kyle will also give an intro/preview to both my upcoming talk at Developer-Day Austin and my upcoming talk at SXSW Interactive, on JavaScript UI Architecture. We'll cover a new theory/approach to UI architecture I'm calling CVC (Client-View-Controller), which is a deconstructed variation on the more common MVC pattern. It involves a simple template engine (written in JavaScript) which can run either on the server or in the browser, as well as several JavaScript based "controller" modules.
Austin JavaScript is sponsored this month by WhoLinksToMe. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
Speaker: YOU. Yes, that's right, you will be participating, okay, only if you want to, but it is highly encouraged.
Recently, Juriy Zaytsev, otherwise known as "kangax" and core developer for Prototype, released a quiz with some rather challenging questions related to some of the unique underpinnings and nuances of the JavaScript language.
We will take the quiz, collectively, and even go through the answers, collectively! Group participation is key here as the more people contribute, the more people learn.
Kyle Simpson will continue the discussions from the JavaScript quizzes and zero in on a few powerful but often-confused JavaScript operators: new, delete, and instanceof. To illustrate the use of these operators, we'll look at a pattern for custom error handling.
Armed with a new found confidence in some of JavaScript's nitty gritty details, we'll take a look at a new templating engine (HandlebarJS) which can run either browser-side or server-side. Coverage will include both the templating syntax as well as a code review of the engine's internals.
Afterwards, the discussion carries on one block away at The Draught House, where it just happens to be pint night so you can get your beer fix here.
Austin JavaScript is sponsored this month by WhoLinksToMe. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
After a massively successful SXSWi party last month, we are back on schedule for our monthly meetup. This month, we have a presentation on how to use Adobe AIR to build desktop applications by Aaron Forsander.
As a JavaScript developer you don't have to limit yourself to the web. Adobe AIR allows web developers to create desktop applications with technologies they are familiar with including Flash, Flex and JavaScript. This talk demonstrates the basics on how to create desktop applications entirely in JavaScript. I addition, I will also talk about helpful libraries and frameworks that allow you to develop rapidly, organize your code and unit test. You can do more with Adobe AIR than just build Twitter clients, I promise!
Right on heels of TXJS, this month's edition of the Austin JavaScript Meetup includes two speakers from TXJS, Joe McCann and Alex Sexton.
Joe will be discussing the slick mobile micro-framework, XUI, which you can use to build out mobile websites or even mobile webapps where the targeted device is running a reasonable build of Webkit (namely iPhone, Android, and WebOS). Popular libraries like jQuery are a bit large in size and contain loads of cross-browser code that is irrelevant in most mobile devices. XUI is only 3kb and can provide you with a large enough toolkit to get almost any job done. Joe will introduce the library and how you can start using it right now.
If you had to rank the best and worst moments of your JavaScript life, you'd probably rank reading "The Good Parts" up towards the top, and deep down at the bottom of the list would be the day that you found out that you couldn't make cross-domain requests in the browser. This talk covers the hacks, tips, and tricks to leave the Same Origin Policy in the dust. So grab a cookie, pad your json, and learn how to communicate properly.
The July meetup details consist of some client side and server side JavaScript discussions. Joe McCann will be providing some info on the ultra hot web server and web app framework Node.js while Andrew Dupont educates us on the latest and greatest features of scripty2.
Joe will be introducing Node.js, an evented I/O framework for the V8 JavaScript engine. Node.js is intended to be used to write scalable network programs such as web servers. However, Node can also be used as a web app framework in addition to its use as a web server. Joe will be showing some very high level uses of Node (Hello World), but also some more practical uses including the use of the Express framework and even an example of using WebSockets with Node.
The long alpha period of scripty2, the successor to script.aculo.us, is nearing a close. Andrew will give a tour of the new scripty2 effects engine — complete with support for CSS transitions and hardware-accelerated animation — and show you the new UI components which boast full compatibility with jQuery UI themes.
After a huge turnout last month (nearly 40 attendees), we are expecting even bigger and better things this coming month in our August meetup. We are changing the format a bit with one presentation, by Mike McNally on web application design and coding strategies, followed by an open forum of topics.
Mike will talk about web application design and coding strategies, and how the domains of "active" page design, unobtrusive Javascript coding, and user experience architecture all collide to give us a great big headache. He'll talk about a small jQuery plugin as an example of harnessing the power of your favorite framework for more than just rounded corners.
After some great discussions during our last meetup (and even afterwards at The Gingerman), we decided to have an open forum discussing various topics at this month's meetup. Topics will be chosen at random, but please come to the meetup with some ideas or better yet, leave them in the comments or @ reply to @austinjs on twitter.
After another huge turnout in August, we are expecting yet another great meetup for September. We have an Austin JavaScript veteran, Kyle Simpson, giving a special presentation and we will follow it up with the open forum of topics. So come prepared with ideas for discussion!
Kyle's discussion will be diving deep into the internals of how objects, constructors, and prototypes work. He will also cover many of the important upcoming ES5 changes which are starting to be implemented by the bleeding edge browsers.
Coming off last month's meetup, we now have the first in our guest speakers series at Austin JavaScript plus another local giving his presentation from JSConf EU in Berlin.
Brian Leroux, Lead at Nitobi, co-author of Phonegap, and creator of projects like XUI and Lawnchair and wtfjs.com will be flying in from Vancouver, British Columbia, Canada to talk to us about Phonegap, an open source development framework for building cross-platform mobile apps. Phonegap allows you to build apps in HTML and JavaScript and still take advantage of core features in iPhone/iTouch, iPad, Google Android, Palm, Symbian and Blackberry SDKs. Brian will be giving a talk on Phonegap, when you should and should not use it and also showcase the brand new app packaging in the cloud service at build.phonegap.com.
Joe McCann, Senior Technologist at frog design and Principal at subPrint Interactive will be giving his presentation on Rapid Prototyping with JavaScript for Multiple Platforms that he gave in Berlin at JSConf.Eu. Read the comprehensive description of his talk here and go check out the source code for the apps for the demos on github.


After last month's large turnout for the first in our guest speaker's series, you may want to consider getting to this month's meetup early. Not only are we bringing back the roundtable discussion of various JavaScript topics, but we have the Reverend Pete Higgins flying in from Tennessee!
Every time you sniff a browser a baby kitten dies. Never fear as Pete will be discussing the usage of has.js so many more kittens can live happy lives. Also, Pete will be chatting up the Dojo Foundation and a brand new CommonJSBrowser Initiative (details at the meetup!). Follow Pete on twitter at @phiggins and be sure to have a look at his campaign at http://higginsforpresident.net.
For the second half of the meetup we will carry on with our new tradition of the open forum where you, yes you and everyone else will have an opportunity to ask a question, bring up a topic or heckle @joemccann. Our latest polls indicate many people enjoy the roundtable discussion so be sure to have some fresh ideas!
After a nice break and great happy hour sponsored by Tek Systems over December, Austin JavaScript is back in action with a great talk by the local node.js and JavaScript gaming phenom, Bradley Meck.
JavaScript gaming is becoming an even hotter topic as many game developers are moving away from Flash and more towards and "HTML5" framework for implementing games. Bradley will be discussing the state of game creation in JavaScript, some problems and solutions for developers wanting to create games and finally how to interact with Flash in order to obtain some valuable fallbacks. His presentation will also touch on some of the roadblocks and issues with multi-player games.
Of course we will followup his presentation with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle @joemccann.
This month's meetup we take a step away from the traditionally hardcore, engineering-focused styles talks and presentations and decide to focus back on the user interface and beautifying the web, specifically typography. Neighborhood superstar, Rails aficionado and iOS contemporary Dave Rupert will be discussing and showcasing, Lettering.js.
Web type is exploding all over the web but CSS currently doesn't offer complete down-to-the-letter control. While working on the Lost World's Fairs project for Microsoft and the launch of IE9 Beta, Dave Rupert and team needed that level of control. Thus was born, Lettering.js, a jQuery plugin for radical web typography.
We'll be walking through this simple jQuery plugin line-by-line, talking about the art of releasing a jQuery plugin, and peeking at some real-world use cases.
Of course we will followup his presentation with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle @joemccann.
After a massively successful SXSW Party last month, we are back on track with our regular scheduled monthly meetup. For April, we have a brief yet insightful presentation by a local, Howard Rauscher on developing 3rd party JavaScript widgets and we'll talk more about the IE9 Developer contest, Dev Unplugged.
Recently he started working at a new startup called Mass Relevance which provides social media curation and visualizations to media companies such MTV, New York Times, Washington Post, and CNN . One of his primary roles has been to ensure that their JavaScript widgets don't break across majors browsers on customer websites. Howard's presentation will consist of walking through a simple jQuery plugin (line-by-line), talking about the art of releasing a jQuery plugin and peeking at some real-world use cases. Noobs and experts will both benefit!
We will also discuss the IE9 developer contest, Dev Unplugged, which was announced at the Austin JS SXSW Party last month. Dev Unplugged is not a just a contest where you can win thousands of dollars in prizes, but it also a way for developers to really explore what is possible with HTML5 and modern web browsers. As if you needed a reason to be trying out the latest and greatest, Dev Unplugged will reward you for doing so!
Since Austin is the Live Music Capital of the World, the IE9 team has enticed us to do something cool with the HTML5 Music capabilities. Here are some ideas to get you going:
http://gskinner.com/blog/archives/2011/03/music-visualizer-in-html5-js-with-source-code.html
http://9elements.com/io/projects/html5/canvas/
http://always-beautiful.bigspaceship.com
Dev Unplugged has a music category for the best “music experience”. Developers may use their own legally licensed music or the the IE9 Team has provided two tracks for you to experiment with: “Sail” by AWOLNATION and “Boy” by RaRaRiot. Read more about it here:
http://www.beautyoftheweb.com/#/unplugged/categories/music
Last minute special guests are always welcome at the Austin JavaScript Meetup and this month, we have an extra special guest from the Mozilla team: David Herman.
David's a member of Ecma TC39, the committee designing future versions of the JavaScript language standard. The Ecma committee is hard at work on the design of the next version of JavaScript. David will present some highlights of the cool features we can expect in the future of JavaScript.
Of course we still have everything in store for you as previously planned, but now with some lagniappe!
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle @joemccann.
On the heels of the epic conference week that was JSConfand Nodeconf, the Austin JS meetup is finally set for the the month of May. We will be going over some of the highlights of JSConf and local JavaScript hacker and semi-pro videographer, Alex Sexton, will be giving a talk on what to expect out of Modernizr 2.0. We will also be giving away a ticket to TXJS. Seriously.
Modernizr was one of the first libraries on the scene in the 'new-world feature testing religion.' Modernizr 2 is just around the corner and there are some nifty new features in there to help you build modern web apps. Some time would and will be well spent going into how to use Modernizr, but there will also be some more in depth looks into the internals of the core library, build tool, Modernizr.load and into how to extend all of these things for great good. HTML5 today. Straight up.
Did we mention we are giving away a ticket to TXJS? It's sold out, btw.
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle @joemccann.

Wrapping up the amazing conference that was TXJS, this month TXJS frontman, Alex Sexton will be hosting June's meetup. We also have Austin local via Chicago, Tim Tyrrell chatting up Jasmine, the uber-cool JavaScript unit testing framework.
There seems to be a tendency for developers to do an excellent job of unit testing their server-side code but leaving client-side javascript as the new “spaghetti” dumping ground and it doesn’t have to be that way! Jasmine is a nifty Javascript BDD testing framework with a RSpec-like syntax that easily integrates with vanilla JavaScript, jQuery plugins, and even Rails applications.
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner.
UPDATE 07/19/11 :: Meeting moved to 7:45pm to accomodate the owners of our space.
It's hot. We know. But don't fret, this month, we'll have plenty of cold beverages (courtesy of Compass Learning) alongside a talk by local web developer, Aaron Forsander (no really, he will be here this time!).
Node.js and Socket.io have made web sockets ridiculously easy to implement. Creating real-time web applications has never been easier. Couple that with the fact that most new phones have GPS and you've got the potential for some really cool interactivity. In this talk Aaron will be discussing building realtime mobile web applications and demo a really amazing Android app called Zombie Run and how he's porting it to the web using Node.js and Socket.io.
UPDATE:: 7/15/11
Also (surprise!) joining us will be J Chris Anderson from Couchbase!
Chris was one of the early committers to the Apache CouchDB project and has been working on CouchDB for over 3 years. He's watched CouchDB grow from unknown to a widely deployed and trusted database, now used by large organizations such as the BBC and CERN as well as small organizations like Dimagi using CouchDB on smartphones in rural Africa. Chris has a unique perspective from being involved in all aspects of Couchbase, he is deep into technology but equally involved in the business side of Couchbase
Couchbase is an HTTP server (as well as a database) so it can serve apps directly to the browser. In this talk, we'll build an HTML5 app on Couchbase, at a pace that anyone who knows basic JavaScript will be able to keep up with. At the end we'll create an ad-hoc cluster so we can all chat across the distributed system. I'll talk a little about how you can use the same techniques for serious apps, not just fun chat toys.
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner.
And bonus time, with Joe travelling the world, Alex Sexton will be hosting the meetup again!
Austin JavaScript is sponsored this month by Compass Learning. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
After last month's massive turnout, it is officially clear that the only way to beat the Austin heat is to come to the Austin JavaScript meetup (duh). With that being said, we are expecting all of you to return for this month's installment of the meetup as we have local living legend, Mike Cravey, here to serve up the fundamentals of JavaScript and jQuery.
Mike's talk will focus on the fundamentals of JavaScript the language. Think you know it all? We guarantee you will learn something new, unless you are @andrewdupont BECAUSE HE KNOWS ALL #dupontCAPS. Moreover, the introductory talk with cover things like function hoisting and closures, but even simpler topics like basic expressions. Noobs are certainly welcome so if you are one or know someone, be sure they attend. The presentation will be a quick one, so feel free to chime in while Cravey runs the show.
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner.
Since [Joe][3] is still on gypsy status, Alex Sexton will be hosting the meetup again!

September's meetup welcome's back local node.js hacker, Bradley Meck but this time Bradley is bringing his partner in crime, Kassandra Perch, to talk about not only a buzzword-worthy topic, but also one a topic that is incredibly useful — offline web apps.
Offline features are more than just for when you application is offline or for viewing content offline! Bradley and Kassandra will be discussing how to use ApplicationCache to speed up page loads and Lawnchair.js for storing offline data. They will have an example using Backbone.js' ORM to have an offline application send requests with updated data to a server after it has been offline w/o user interaction.
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner.
Joe and Alex will be both be attending Funconf so local Git, Python and JavaScript master, Travis Swicegood will be guest hosting the meetup.
After an off month in October, we are back this month with another local giving a great talk on how to use web technologies to build native mobile applications with libraries such as Sencha Touch and Phonegap.
Lyle will be discussing the creation of native mobile apps using web technologies. He'll cover items from development to debugging and distribution of the app. To help demonstrate these concepts, he'll be demoing a recent app that he created called Dateventure.
Joe is yet again still out of town so Alex will be guest hosting the meetup.
Austin JavaScript is sponsored this month by Tango Health. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
Happy New Year! Now that most of us are back to work after a hopefully relaxing holiday, we are ready to kick off yet another year of solid JavaScript meetups for the Austin area.
This month we have a special guest flying in from New York City — the CTO and co-founder of Nodejitsu, Paolo Fragemeni. Paolo, a solid computer programmer and veteran hacker has written loads of node.js code including the a significant portion dedicated to the node.js framework, Flatiron.
Node.js. What is it?!! How does it work?!! Paolo will be giving an informative talk on just that — the anatomy of node.js. So whether you are are node.js newbie or a seasoned veteran, this informative talk on node will benefit you.
Also, we will be throwing the 3rd Annual Austin JS SXSW Party in March so if you and/or your employer/company would like to sponsor the event (or be a part of it), please reach out to @joemccann to find out more details.
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle @joemccann.
Following up on last month's stellar presentation by Nodejitsu's, co-founder and CTO, Paolo Fragemeni, Austin JavaScript is back in February with another mover and shaker in the JavaScript and Mobile development industry, Rebecca Murphey.
Rebecca will be introducing us to Toura's Mulberry, which is an open-source, cross-platform mobile application development framework built on top of PhoneGap that lets you use web technologies to produce engaging, content-rich applications. In this talk, Rebecca will give a quick demo of Mulberry basics, then dive in to how they architected the JavaScript, templates, CSS, and tests to create a flexible, pluggable, 100% client-side content publishing system. DON'T SLEEP ON THIS!
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle @joemccann.
Finally, we will be throwing the 3rd Annual Austin JS SXSW Party in March so if you and/or your employer/company would like to sponsor the event (or be a part of it), please reach out to @joemccann to find out more details.

After another stellar SXSW event, Austin JS is back with another guest speaker, this time with Ben Combee of WebOS fame.
Straightforward and to the point, Ben will be chatting with us on how to build web apps with Enyo and Onyx.
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle @joemccann.
This month's Austin JS meetup not only taps into our extensive local talent base, but brings in the academic side of JavaScript as well. Local JavaScript aficionado, Lon Ingram, will be discussing his University of Texas Honors Thesis, Treehouse. This is an event not to be missed!
Lon will be presenting TreeHouse, the subject of his honors thesis, which he completed under the supervision of Dr. Michael Walfish. TreeHouse is a system that uses Web Workers to sandbox (mostly) unmodified JavaScript. TreeHouse gives application authors fine-grained control over untrusted code in their application. Authors can control what parts of the DOM untrusted code can see and modify, as well as the API calls it can make. Is your mind blown yet?
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle @joemccann.

Coming in just on the heels of what is to be the JavaScript conference of the South, TXJS, Austin JavaScript has brought another out-of-town guest speaker to the June 2012 meetup.
Mikeal will be talking about node. That's all he told me. I foresee a rather bizarre presentation nonetheless. Word is it may involve Japanese cuisine.
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle @joemccann.
It's hot. We know. Why not come down to this month's meetup and learn some cool things from local front-end expert and O'Reilly published author, Garann Means!
If you know much about the engineering side of Etsy, you're probably aware that they love their devtools there. StatsD is one of their better-known tools. It's an open source Node service that they use to collect statistics about how the site is working and being used. Garann will talk about the tool itself and about how it fits into Etsy's larger process.
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle @joemccann.

After last month's huge turnout for the meetup we are expecting yet another large turnout for local software developer and JavaScript aficionado, David Tulig.
David's talk will start by going over the components of the Google Closure Tools. This will cover the templates, which are usable on both the client and server, the library, which comes with a dependency management system and a large set of utilities, and the compiler, which performs advanced optimizations to speed up your JavaScript and reduce the size of the final application. He'll then go into detail on how Indeed has leveraged those tools to build resume instant search, covering using the closure tools in development, discussing the architecture that drives the product, and the advantages gained by using the closure tools.
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle @joemccann.

Appcelerator, the company behind the awesome mobile app development framework Titanium, has been a long time supporter of Austin JS going back many years. This month, we are treated to a special presentation (no, NOT a product pitch) by one of their key (and local!) developers, Bert Granges, to talk about and show off the latest and greatest that Titanium has to offer.
Ever wonder what it would be like to use JavaScript to build native applications for iOS and Android? Wouldn't it be nice if you could use one codebase for both platforms? Using JavaScript, Appcelerator Titanium platform and Cloud Services, you'll walk through what it takes to build out a fully functional mobile application supported by backend services. Along the way you will learn how Appcelerator Titanium works and hopefully learn a bit about JavaScript along the way.
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle @joemccann.
Post ACL weekend here in Austin, we will be having the last installment of Austin JS for 2012. Sad Panda, indeed. This month, we have another local JavaScript expert chatting up Windows 8!
Jonathan Hebert's talk will be about writing Windows Store Apps with JavaScript, including:
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle @joemccann. Oh wait! He Hebert's not gonna be there. Guess you Hebert'll have to heckle guest host, @slexaxton!


Austin JavaScript is sponsored this month by Rapid7. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Since the timing of the Thanksgiving holidays sadly interrupts Austin JavaScript's monthly meetup schedule, we decided to still get together instead of canceling the meetup entirely.
So come and join us for free beer, free food and an all around good time at our staple pub, The Ginger Man. This is purely a social event, but your JS skills may be tested so come prepared!

One of last month’s meetup sponsors, Rapid 7, is our exclusive sponsor for this event so be sure to thank them and say hello!
Let's ring in the new year with some new JavaScript Hotness. We've got two JavaScript pros flying in from Mozilla to go over some cool new browser features!
Their talk will be about all the brand new stuff in the browser world. They describe it:
It is no secret that Mozilla has been pushing the boundaries of what the internet is capable of, and has been a fundamental force in evolving the web. This will be a whirlwind tour of exciting JavaScript API's that Mozilla is leading.
They are going to cover a variety of things; Web SMS, Web Telephony, Battery API, Web Vibrator, Touch, Camera, The future of gaming, Mouse Lock, Gamepad API, Gladius.js, Mozilla Open Web apps and Identity/Browser Id. Afterwards there will be a Q & A session covering these topics.
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle @joemccann. Alternatively you can heckle new host, @slexaxton!
February has enough days dedicated to love and romance, so we're dedicating our meetup to bugs. We've got local JavaScript free-thinker and theorist Lon Ingram joining us for a talk about bugs and bug reproduction (ewww gross).
Lon will discuss the problem of reproducing and diagnosing bugs reported from the wild, and then present Reanimator, an experimental system for capturing and replaying JavaScript applications. Reanimator captures non-deterministic input to a JavaScript application in a log that can replayed at a later date. It was originally designed for recording web application crashes for later debugging, but Lon will also cover other uses, such as usability testing and tutorials.
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle @joemccann or @slexaxton!
Any questions or suggestions, please feel free to contact Alex ([@SlexAxton][5]). Also, be sure to follow us on Twitter: [@AustinJS][6].
Thanks to our sponsor IBM. They’re hiring developers! Check out the Job Description][4] and contact Jill (jorlich@us.ibm.com) to apply.
We're back from SXSW and TXJS and ready to get back into action! This month we'll have local JavaScripter, Mark DiMarco talk about D3.js and Data Visualizations.
Mark will give an intro to D3.js and data visualizations as well as some real world use cases for using these tools. Using an interactive programming style, he will navigate the ins and outs of simplifying data, manipulating it, and displaying it in a way that the end user can understand. He'll compare D3 to some other popular charting libraries and note the reasons when you'd pick one style of data visualizations over another.
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle [@slexaxton][4] or this months fill-in host [@tswicegood][5]!
It's June. It's getting hot and we all need a little more JavaScript in our lives. Well, enjoy the air conditioned comfort of Austin JS on June 18th with a talk from JavaScript SuperStar Rebecca Murphey.
It's one thing to write the code you need to write to get something working; it's another thing to write the code you need to write if you want to be able to prove that it works — and that it keeps working as you refactor and add new features. In this talk, we'll look at what it means to write testable JavaScript code.
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle @slexaxton!

This month’s awesome sponsor is the XO Group, Inc. Be sure to thank them for the drinks and pizza, or talk to them about some job opportunities! You can also email Shaun if you are interested in working there.
It's finally over 100 degrees with some consistency. It feels like home again. It must be July. Come celebrate our freedom at Austin JavaScript's first lightning talk meeting.
Instead of having a traditional speaker, we're going to try a lightning talks meeting. We've discussed it with the a few of you and are excited to here everything you guys have to say. If it goes well, we'd like to have these 1 or 2 times a year, so please give feedback!
We anticipate everyone coming with something that they'd like to share, but if there is a lack of people who are volunteering, then multiple non-contiguous talks by the same person will be allowed. Hopefully we have too many for that to happen, though!
Of course we will followup all of this up with our wildly crowd-pleasing roundtable of JavaScript-related questions. This is an open forum to present topics of discussion in a rapid-fire manner or simply heckle @lawnsea!

Austin JavaScript is sponsored this month by Waterfall Mobile. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
We hope your summers were eventful and full of fun, but it's time to get back into the groove. We're happy to partner up with the EmberATX meetup for a meetup of the centuries. Tom Dale, co-creator of Ember.js will be visiting Austin to give a talk about Ember.js, the state of Ember 1.0, and the future of the framework.
We're expecting a pretty full-house and only have limited space, so we ask that you RSVP here: Meetup.com EmberATX/AustinJS RSVP (slackers note: it should be open up 'til the moment the meetup starts, unless it fills up).
AustinJS would like to thank the @EmberATX community for setting this up. We're happy to share our space with other awesome JavaScript communities in town!
Glad tidings, Austin JavaScripters, we bring you good news of our meetup this month! We're happy to welcome Kassandra Perch to throw down some knowledge on Twitter's framework, Flight.
Her talk is titled "Flight: a Framework done right,” and we'll talk about how the framework is event-driven, component-based, and leverages the DOM to form a cohesive code structure. The concept of functional mixins will also be introduced, and how it is unique from other forms of class composition. Finally, we'll cover how all of these create a testable, scalable, friendly front-end code base.

Austin JavaScript is sponsored this month by PayPal. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
You can also e-mail Hudson Carlton if you are interested in working there.
Happy New Year, Austin JavaScriptorians! Hopefully you're enjoying your 2014 SO MUCH you've already broken those pesky resolutions you made a couple of weeks ago.
We're kicking the new year off with an exciting talk from our friends at PayPal called "Release the Kraken: A Story of Node.js in the Enterprise." Jeff Harrell and Erik Toth will tell us how PayPal revitalized its tech stack by moving from Java, JSP, and proprietary solutions to a Node.js web application stack with dust.js templating. Developer agility was the primary motivation, but along the way they had to take on enterprise culture and teach people that JavaScript is no longer a "toy," but a powerful tool to wield. We'll also take a look at PayPal's web app framework, Kraken.

Austin JavaScript is sponsored this month by RetailMeNot. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
This month we'll be hearing from Garann Means about refactoring big apps!
It would be nice if developers could download a JavaScript framework, plug in the custom logic required for their particular problem, and have a functional, scalable, and reliable application. As any who's tried can probably tell you, however, it doesn't work like that. It doesn't matter if your application has 5000 "pages" or less than 50 — it will eventually become a large application in terms of code, because size of code is not just a measure of the complexity of the app itself, but of its maturity. If you've tried taking an app from a minimal set of functionality to something complex enough to cover all the edge cases, you've probably done some rewriting.
If you haven't, it's your lucky day! We'll talk about several of the ways you can almost guarantee a rewrite in your app's future. If, on the other hand, rewrites don't sound like that much fun to you, we'll also talk about how to avoid them or at least minimise the risk they present
IMPORTANT: Location changed to Mass Relevance at 8th and Brazos, just up the street.

AustinJS is sponsored this month by Mass Relevance, so if you enjoy a slice of pizza or a drink at the meetup then be sure to thank them. Better yet, if you’re a developer looking for a job, check out careers at Mass Relevance or chat with one of their engineers at the meetup.
Hold on to your butts, it's AustinJS time. Not only will we hear from local hero Charles Lowell (@cowboyd) about "The Power of M," but we're also hosting a special guest from Google that will tell us about the future of the web platform, web components!
Whether you're using a full fledged MVC framework. or just spicing up your UX with a single special interaction, it's the "M" and only the "M" that is the key creating powerful user experiences. To demonstrate this principle in action, we'll first create an in-memory model of what a color is, and then use it to build an interactive 3D color chooser. Sound hard? Not when we harness the Power of M. In this talk, we'll track the building of an interactive, 3D color chooser that contains interactive visualizations of both the RGB Space (a cube), and the HSL Space (a cylinder).
BUT WAIT THERE'S MORE! Web components are an important part of the future of the web, so when we heard that Rob Dodson (@rob_dodson) was going to be in town, we invited him to come tell us more about them. Rob is a Google developer advocate that specializes in this area, so we're looking forward to learning from him about web components and Google's polyfill/framework Polymer.

AustinJS is sponsored this month by the web chefs over at Four Kitchens. Be sure to let them know you appreciate their support, and if you’re a developer looking for a job, check out careers at Four Kitchens or chat with one of their engineers at the meetup.
We're back with another AustinJS! We'll be hearing a couple of talks again this month. First up, Steve Stedman (@stedman) will be doling out some knowledge on LESS, a popular CSS preprocessor implemented in Javascript. Next Alex Sexton (@SlexAxton) will teach us about X11 colors (wha?!!??) and how they've impacted the web.

Our sponsor this month is Hudl. Come tell them thanks for buying the pizza and drinks, and if you happen to be looking for a job, let them know in person or checkout their open positions!
What up Austonians, it's Austin JS time again! Come join us at Spredfast (formerly Mass Relevance, note the location change) for another meetup. We'll hear from local web builder Jared Stilwell about "Complexity Metrics and You." What are complexity metrics? Great question!
The code works. Your linter and test cases are happy. But, you feel the code could be cleaner. Where do you start? Complexity metrics can lead the way. Using a combination of measurement techniques, the process of finding rough edges in your codebase and tracking improvements becomes much easier. We'll cover several common metrics, the landscape of existing tools for JavaScript, and how they can be used to guide refactoring.

Tonight our sponsor is an awesome startup from right here in Austin. HuBoard gives you instant project management built right on top of what you’re already using for your project, GitHub. Check out their app online, and make sure to tell them thanks for covering the pizza and drinks this month!
Hey Austin Javascripters, this month's meetup is gonna bring that ~*~* variety *~*~. Here are a few talks that we've got lined up already:
We've still got some time though, so feel free to come with an idea, and we'll work everyone in!
Big thanks to our sponsors this month, The Bidding Network, a top-flight staffing firm based right here in Austin. If you enjoy the pizza and drinks, make sure to tell them thanks. And of course, if you’re looking for a job you should talk to them. You won’t find a better recruiter in Austin!
Whatup jorbascrupmers. As promised we're going to be hearing about a shiny new feature coming in the next version of JavaScript — generators.
Jonathan Lipps will give a talk titled Yield! How ES6 Generators and Monocle-js Can Bring Async Into Line, Literally, and will teach us how generators can save our souls from callback hell.

We’ve got a lot of good folks to thank this month. Thanks to Sauce Labs for flying Jonathan out to do the talk. As always, thanks to Frog for hosting us. And last but not least thanks to our main sponsor, Joust, for drinks and food. Joust is a startup with a lot of momentum and several major customers like ESPN, ABC, and MTV. They’re building a core team of engineers, so if you’re interested, contact Philip.
Get ready for a blowout Austin JavaScripters, cause this month's meetup is going to be a choreography-fueled rager:

This month's speaker is Dan "JazzHands" Heberden:
Dan's going to take you to school on testing Javascript. Get ready to be SHOCKED AND AWED.

Thanks to sponsors this month, Help.com, whose team of customer service and technology experts is setting out to build the next generation of customer service software. Their goal is to give companies the tools they need to delight their customers at enterprise scale.
Help.com is a SaaS startup based in downtown Austin. They recently closed a $6 million seed round and growing their team is a top priority. Their team of experienced customer service and technology experts is excited to change the landscape of the industry and become one of the best places to work in Austin. If you’re interested in joining them, talk to them at the meetup or take a look at their job postings.
We've got another ~*super rad*~ meetup next Tuesday, October 21st. Local favorite Dan DeFelippi (@expertdan) is going to educate us on building mobile apps with Cordova (the open-source engine behind PhoneGap). Aside from being a proper geek and hacker, Dan is a co-founder of local bike rental and bike share app Spokefly.
Austin JavaScript is sponsored this month by Bazaar Voice. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Hey happy New Year Austin! Let's celebrate by getting together and talking about 3rd party JavaScript.

So who's gonna emcee this rager? None other than the venerable Rebecca Murphey (@rmurphey). Get ready to hear some harrowing-ass tales of running code on other people's sites, from one of the largest 3rd party JavaScript deployments out there.

You may have heard of this Seattle based e-retailer, but you may not have heard that they’re hiring for positions at their Austin office! If the idea of working on the world’s 6th largest website is interesting to you, come talk to one of the Amazon folks at the meetup. You can also apply online.
Are you finally recovered from SXSW and ready. for. some. JavaScript?! Well, you're in luck: this Tuesday, Austin local Tara Vancil is giving us a clinic on JavaScript crypto. Please don't tell the NSA.

The web hosts a large portion of the world's new cryptographic tools, and the debate about whether JavaScript is up to the challenge carries on. Tara will discuss how JavaScript plays an important role in developing some of the best crypto tools out there, explain some situations in which it just doesn't cut it, and show some examples of both.

Austin JavaScript is sponsored this month by Bocoup. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
As the saying goes, "April showers bring May showers." They also bring you another JavaScript meetup! Local markup slinger Charles Lowell will be giving a talk titled "on('input'): dealing with data from your user in real-time… as in like forms, actually."

Dealing with forms in a stateful UI can be a nightmare. While most of the major frameworks focus on their hot new rendering hotness, they uniformly pass the buck when it comes to handling user input. More often than not, you’re on your own, armed with nothing but callbacks when it comes to the complexities of wrangling networks of textfields, checkboxes and other custom components into robust, valid data structures that the rest of your app can use. In this talk, we’ll explore how to bring just a little more sanity to our forms by looking for help in an unlikely place: those same advances in rendering that have pushed the state of the art so far forward these past few years.

Austin JavaScript is sponsored this month by uShip. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
Howdy, Texas. We're looking forward to seeing all of you fine vaqueras and vaqueros this Tuesday June 17, 2015 as Kyle Simpson (@getify) rustles up some knowledge on transpiling JavaScript.
The new reality of JavaScript is that the features will evolve even quicker than the specification, and much quicker than your "supported" browsers. So we're going to have to come to grips with transpilers being a standard part of our build processes. But what can we do to wrangle at least two versions of every file? What does that mean for server-side coding (node/iojs) and what does it mean for browser-delivered files? Should we use the transpiled code everywhere, or should we have split delivery?

Microsoft BizSpark: supporting your startup as you grow
Sup, y'all. We've got something special planned for our July meetup and we are shore you're gonna think it's fresh to death.
Here's the Situation: AustinJS is going down the Shore! Jenn Schiffer is staging a blowout JerseyScript bo-coup on July 22, 2015. Jenn has convinced New York's own Adam J. Sontag to come rap with us about a speech recognition game he is working on.

Austin JavaScript is sponsored this month by Advisory Board. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Hey Austin JavaScripters, summer is in full swing and {{ joke_about_how_ember_is_hot }}. We're excited to hear from Iheanyi Ekechukwu as he tells us about "Ember.js, Ember-CLI, and how it all relates to that 'shut up and dance with me' song," (which we were actually hoping to hear about last month). Hope to see you there this Tuesday, August 19, 2015.

Austin JavaScript is sponsored this month by RetailMeNot. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
Webster's Dictionary defines "extravaganza" as:
a very large and exciting show or event
And nothing says exciting like JavaScript frameworksssssss!
Ok, calm down for a second so I can tell you what's going on here. Tim Tyrrell and Travis Swicegood are going to tell us about ReactJS, Flux, and that sort of stuff. Tim will kick it off live-coding with React, and then Travis will give a whirlwind tour of Flux and how it fits into the ecosystem we all love.
We won't dive too deep since we haven't covered React at AustinJS yet, but stay tuned for news about a new meetup you might be into!
Austin JavaScript is sponsored this month by Main Street Hub. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
For our final meetup of 2k15 we have a very special guest: Joe McCann, founder of AustinJS and NodeSource, is going to talk about this Node.js thing we've heard so much about. Node recently went straight from 0.12 to 4.0, meaning it is 33.3X more Enterprise Ready™®©℠ than competing platforms. Joe will tell us everything we need to know to scale Node out the front door and into the cloud.

Austin JavaScript is sponsored this month by ReIntent. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
🎉🎆 Happy New Year 🎆🎉 Hopefully 2016 finds all of you well, and hopefully you'll RESOLLLLVVVVE to make it out to AustinJS next week to hear Alex Sexton talk about "almost definitely client side security." We're pretty certain that means his three-hour deep dive on whether Rey is a Kenobi (hey as long as it's not politics, religion, or sex right).

Austin JavaScript is sponsored this month by The Iron Yard. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
This page been moved to /posts/meetups/2016/02/16/.
\ No newline at end of file diff --git a/posts/meetups/2016/02/16/index.html b/posts/meetups/2016/02/16/index.html new file mode 100644 index 00000000..9002a588 --- /dev/null +++ b/posts/meetups/2016/02/16/index.html @@ -0,0 +1,13 @@ +We're not in our usual location!: We'll be meeting at Spredfast this month in the Silicon Labs Building on Colorado/Cesar Chavez (map).
Hey everyone, we're excited about February 17, 2016 because Benjamin Coe is going to come talk about Bringing Open-Source Practices to Your Day Job.
We've got food and beverages this month thanks to Front End Development at IBM. If you'd like to hear more about what they're working on, feel free to reach out to frontend@us.ibm.com or check out the Feducation event they're doing with General Assembly.

Austin JavaScript is sponsored this month by IBM Design. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
This page been moved to /posts/meetups/2016/04/19/.
\ No newline at end of file diff --git a/posts/meetups/2016/04/19/index.html b/posts/meetups/2016/04/19/index.html new file mode 100644 index 00000000..b8a18d01 --- /dev/null +++ b/posts/meetups/2016/04/19/index.html @@ -0,0 +1,9 @@ +It's April, so let's shake off our collective SXSW hangovers 🍻 (or maybe emerge from our SXSW bunkers ☢️) and get together on April 20, 2016 for another great AustinJS!
We'll be hearing from Anton Astashov about Elm, a transpiled-to-JavaScript language which makes sure you’ll never have a runtime error in your app. Almost. He'll cover why it’s cool, what it looks like, it’s pros and (most importantly) cons!
Austin JavaScript is sponsored this month by Auth0. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
This page been moved to /posts/meetups/2016/05/17/.
\ No newline at end of file diff --git a/posts/meetups/2016/05/17/index.html b/posts/meetups/2016/05/17/index.html new file mode 100644 index 00000000..ccf40040 --- /dev/null +++ b/posts/meetups/2016/05/17/index.html @@ -0,0 +1,9 @@ +This month we've got dark web expert and Gotye fan Miike Mike Snow Taylor in to discuss the nuances of writing JavaScript that actually works in world-wide web browsing machines. Come out and join us next Tuesday May 18, 2016!

Austin JavaScript is sponsored this month by HomeAway. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
This page been moved to /posts/meetups/2016/06/21/.
\ No newline at end of file diff --git a/posts/meetups/2016/06/21/index.html b/posts/meetups/2016/06/21/index.html new file mode 100644 index 00000000..139fc98e --- /dev/null +++ b/posts/meetups/2016/06/21/index.html @@ -0,0 +1,9 @@ +This month we've got veteran frontend engineer Rebecca Murphey, who will share the story of how she started a new job this year by paying a visit to JavaScript circa 2009, back when Ryan Dahl was getting ready to announce Node and Facebook was still four years away from being mocked for the apparent heresy of JSX. She'll explain how she modernized and best-practice-ified a project that didn't even have a package.json, smoothing the development process, eliminating common sources of bugs, paving the way for bigger improvements, and never once uttering the words "we oughta just start from scratch." Come out and join us next Tuesday June 22, 2016!

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
This page been moved to /posts/meetups/2016/07/19/.
\ No newline at end of file diff --git a/posts/meetups/2016/07/19/index.html b/posts/meetups/2016/07/19/index.html new file mode 100644 index 00000000..ed7f36d7 --- /dev/null +++ b/posts/meetups/2016/07/19/index.html @@ -0,0 +1,9 @@ +This Tuesday, July 20, 2016, discover how this one weird extension changed the web forever. Andrew Dupont will give us a 12 year perspective (most of a century in internet years) on the ways GreaseMonkey shaped today's browsers and how user scripts give us the opportunity of a better web.

Austin JavaScript is sponsored this month by RetailMeNot. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
This page been moved to /posts/meetups/2016/08/16/.
\ No newline at end of file diff --git a/posts/meetups/2016/08/16/index.html b/posts/meetups/2016/08/16/index.html new file mode 100644 index 00000000..9b28b1fd --- /dev/null +++ b/posts/meetups/2016/08/16/index.html @@ -0,0 +1,23 @@ +Come out next Tuesday, August 17, 2016, as Dave Rupert tells us how to make the mobile web great again make Progressive Web Apps!
Austin JavaScript is sponsored this month by NodeSource. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
This page been moved to /posts/meetups/2016/09/20/.
\ No newline at end of file diff --git a/posts/meetups/2016/09/20/index.html b/posts/meetups/2016/09/20/index.html new file mode 100644 index 00000000..9baecd57 --- /dev/null +++ b/posts/meetups/2016/09/20/index.html @@ -0,0 +1,9 @@ +It may still be hot in ATX, but summer is over, so our very own Lon Ingram is gonna take us back to school and tell us about JavaScript in the Ivory Tower. We'll cover some great papers about JavaScript, and go beyond that to discuss how to find good research and read those super long intimidating papers.

Austin JavaScript is sponsored this month by Becker Wright Consultants. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
We're not in our usual location!: We'll be meeting at TechSpace Austin this month (map).
We've got a special meetup tonight! Austin on Rails, AustinJS, and EmberATX are teaming up to bring Yehuda Katz to town. Yehuda will tell us about "Ember, Now and Next," and then we'll have a Fireside Chat. Register and find out more on the event page:
Looking forward to seeing you there!
This page been moved to /posts/meetups/2016/11/15/.
\ No newline at end of file diff --git a/posts/meetups/2016/11/15/index.html b/posts/meetups/2016/11/15/index.html new file mode 100644 index 00000000..08ece350 --- /dev/null +++ b/posts/meetups/2016/11/15/index.html @@ -0,0 +1,9 @@ +Hey happy Veteran's Day and Marine Corps Birthday! AustinJS is going to get together Tuesday November 16, 2016 to hear from Jon Loyens about data-driven front end development ~⭐️for the troops⭐️~
In his own words:
Much has been made of Lean Startups, A/B testing and building data driven cultures. In order to be data-driven you need to have a culture of instrumentation and measurement, but building out the pipelines, client side instrumentation and an analytics warehouse from the ground up can be tedious, hard and time-consuming.
To address this problem, I’ll share a roadmap to successfully evolving a web analytics pipeline that starts by leveraging third party and open source tools for speed and time to market, but is still robust enough to evolve to owning your own warehouse. For context, I’ll walk through my experiences of introducing A/B testing and building out web analytics integrations at Bazaarvoice, expanding HomeAway’s A/B testing program to nearly 1000 tests a year, and now helping to architect data.world’s analytics pipeline.

Austin JavaScript is sponsored this month by Frog Design. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
This page been moved to /posts/meetups/2017/01/17/.
\ No newline at end of file diff --git a/posts/meetups/2017/01/17/index.html b/posts/meetups/2017/01/17/index.html new file mode 100644 index 00000000..0a93fdf8 --- /dev/null +++ b/posts/meetups/2017/01/17/index.html @@ -0,0 +1,11 @@ +Happy New Year everyone! Here's to fresh start. We're kicking the year off in style with a great talk from Rachel Weil!
Rachel will share a selection of personal projects that bring vintage electronics into the 21st century with Node.js and hobbyist microcontrollers. She’ll also cover some of the basic tools and approaches to getting started with refurbishing, refitting, and reworking old game consoles, computers, and digital toys.

In other big news, Spredfast is now the official location for AustinJS! The Spredfast team has always been kind to share their ~*luxurious*~ downtown space with us, so we look forward to making more memories going forward. Thanks Spredfast!
Austin JavaScript is sponsored this month by data.world. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
This page been moved to /posts/meetups/2017/02/21/.
\ No newline at end of file diff --git a/posts/meetups/2017/02/21/index.html b/posts/meetups/2017/02/21/index.html new file mode 100644 index 00000000..30a45719 --- /dev/null +++ b/posts/meetups/2017/02/21/index.html @@ -0,0 +1,11 @@ +What are immutable data structures? Why would you want to prevent objects from changing? Why not just Object.freeze()?
These are great questions for smart people, so you should come listen to Anton talk about what he'd like to see change in the world of immutable JavaScript (you… you see what I did there?).
This page been moved to /posts/meetups/2017/03/21/.
\ No newline at end of file diff --git a/posts/meetups/2017/03/21/index.html b/posts/meetups/2017/03/21/index.html new file mode 100644 index 00000000..77342f8b --- /dev/null +++ b/posts/meetups/2017/03/21/index.html @@ -0,0 +1,9 @@ +WebAssembly is fast. It’s being called “the future of the web”. Its speed and potential have major browser vendors working together to make it a reality. And it’s on its way — the MVP hit multiple browsers in October of last year.
But what makes it fast? Starting from the basics, this talk will walk you through what WebAssembly is, and then why it’s fast.
Get your burning questions ready! We'll have some super special swag for the best questions.
Make sure to do Mozilla a solid and [RSVP at their meetup page](https://www.meetup.com/Mozilla-Developer-Roadshow/events/237760047/)!

Austin JavaScript is sponsored this month by RetailMeNot. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
What up team we got a meetup tonight! Tonight we're going to talk about testing your code. We figured it's been almost 6 years since we last talked about TDD, which means the ecosystem has been through ~11 different testing frameworks, so we might as well get back into the subject since QUALITY IS EVERYONE'S JOB ZERO.
Mark Sims is coming to town to tell us about his experiences with testing and walk us through testing an app called Deathmatch that needs to be sure Chuck always wins.

Here come dat beaker!

Hey friends! AustinJS is back with an exciting dual talk from Austin's own Tara Vancil and Paul Frazee about their project, [Beaker Browser][beaker], an experimental web browser with builtin hosting and p2p web protocols.
This page been moved to /posts/meetups/2017/07/18/.
\ No newline at end of file diff --git a/posts/meetups/2017/07/18/index.html b/posts/meetups/2017/07/18/index.html new file mode 100644 index 00000000..bd810aa2 --- /dev/null +++ b/posts/meetups/2017/07/18/index.html @@ -0,0 +1,9 @@ +It's too hot for hair out there, so we've asked Lon Ingram to come talk to us about making websites fast as ⚡ (kung fu fighting, etc). Join us Tuesday July 19, 2017 and learn what it takes to appease our search engine overlords!
With the rise of the mobile web, speed has become crucial to success. Users won't wait around for slow-loading pages and search engines are now punishing sluggish sites. There's a wealth of ideas out there for cranking up performance, but how do you know where to start? What if you work for days to ship an optimization that doesn't really pay off? In this talk, you'll learn how to experiment and fail fast. You'll find out how to quickly and rigorously assess your optimization ideas with open source tools, and how to share your results so that others can replicate your findings.
Ever wonder how to pronounce Babel? Join us Tuesday August 16, 2017 to find out! Austin's own Andrew Levine will teach us how to write Babel plugins.
Andrew is going to give an intro to writing Babel plugins. He'll start with a very high level summary of how Babel works, and then dive into the Plugin APIs and several examples of real world plugins to write.
Source maps, huh, yeah. What are they good for? Absolutely... some things.
We have an extra special treat this month thanks to our gracious hosts and good friends at Spredfast: Ben Vinegar is coming all the way from "San Francisco" to tell us everything about how source maps work. Join us Tuesday September 20, 2017 for a special Bae Area AustinJS!
You may already be familiar with source maps. They let you debug your original, unminified, and untranspiled code in the browser. But have you ever wondered how they actually work? Ben will take a deep dive into the source map format to see what’s under the hood, exploring source map generation tools, parsers, and how to manipulate source maps directly for fun and profit.
Austin JavaScript is sponsored this month by Spredfast. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.
(Located in the Silicon Labs building on Colorado Street.)
Synthesizers! JavaScript! Aleatoricism?? Using an actual analog synthesizer as a guide, Kyle will build a feature-for-feature replica in the browser with the Web Audio API and show how to use JavaScript to overcome a lack of musical training. You'll learn the capabilities and limitations of the Web Audio API, and how it can be used for applications like gaming, WebVR, and 80s retro synthwave. With live coding, live synth playing, and a touch of music theory, what could go wrong?
Austin JavaScript is sponsored this month by eRelevance. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
This page been moved to /posts/meetups/2017/11/21/.
\ No newline at end of file diff --git a/posts/meetups/2017/11/21/index.html b/posts/meetups/2017/11/21/index.html new file mode 100644 index 00000000..77e32cd7 --- /dev/null +++ b/posts/meetups/2017/11/21/index.html @@ -0,0 +1,15 @@ +We've got Mando Escamilla coming this month to deploy some knowledge on us. Here's some relevant prior art:
In his own words…
If all that stuff is confusing or intimidating, don’t panic - we’re here to help. We’ll help you develop a mental model of a kubernetes cluster and what it does, then jump into a demo of how you’d build and deploy a simple javascript application inside a kubernetes cluster. Don’t worry - if we were able to figure this out, you can too.
Austin JavaScript is sponsored this month by PayPal. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
The January meetup is cancelled due to expected hazardous weather. See y'all in February!
Let's kick off the new year with Bradley Farias, who will deliver a meditation on the seven stages of grief standards development:
This talk is a reflection on a lot of discussions that come up when talking about language design and what it means to design for a future that is always bigger than the past. Topics from the past present and future such as ASI, ESM, decorators, and private fields are things that are important to get right if we are stuck with them forever. We can use discussion examples of each of these topics to get a better understanding of why it is so difficult to make things "just work". I will discuss ongoing themes of discussion within TC39 and efforts that are changing how TC39 is viewed.
Let's kick off the new year with Bradley Farias, who will deliver a meditation on the seven stages of grief standards development:
This talk is a reflection on a lot of discussions that come up when talking about language design and what it means to design for a future that is always bigger than the past. Topics from the past present and future such as ASI, ESM, decorators, and private fields are things that are important to get right if we are stuck with them forever. We can use discussion examples of each of these topics to get a better understanding of why it is so difficult to make things "just work". I will discuss ongoing themes of discussion within TC39 and efforts that are changing how TC39 is viewed.
Austin JavaScript is sponsored this month by Indeed. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
This page been moved to /posts/meetups/2018/05/15/.
\ No newline at end of file diff --git a/posts/meetups/2018/05/15/index.html b/posts/meetups/2018/05/15/index.html new file mode 100644 index 00000000..0045ced0 --- /dev/null +++ b/posts/meetups/2018/05/15/index.html @@ -0,0 +1,17 @@ +Come out tomorrow May 16, 2018, for some bevera.js at the Gingerman! Topics of discussion may include:
Topics of discussion will of course not include violations of our code of conduct. If you see anyone fall short of being excellent to one another, please let them or an organizer know!
Who is ready to optimize your user's spa experience? Anton is going to tell us the secrets to making your visitors feel pampered in no time flat! Anton will share all the tricks of the trade, from how to improve time to first relaxation to HTTP/2 aromatherapy tips.
Anton has recently been working on optimizing performance for mixbook.com, and he’d like to tell y'all about their experience: what worked and what didn't.
Topics include,
Austin JavaScript is sponsored this month by Magento. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
This page been moved to /posts/meetups/2018/07/17/.
\ No newline at end of file diff --git a/posts/meetups/2018/07/17/index.html b/posts/meetups/2018/07/17/index.html new file mode 100644 index 00000000..65dd315a --- /dev/null +++ b/posts/meetups/2018/07/17/index.html @@ -0,0 +1,9 @@ +Accessibility is hard. Oftentimes, it’s difficult to understand what users and assistive technology expect from your markup and designs. Can accessibility be easier to learn? Can it be…fun? In this talk, Dave will approach accessibility the way we might tackle a video game—looking at a handful of common UI patterns like popup, tabs, accordions, and modals; how to test them; and how to defeat them while leveling up your skillset along the way.
Simon has been building browser based simulations such as coldwar.io and ratsofthemaze.com over the past few years, showcasing them at numerous JS Confs and our own TXJS. Since he's in town this week, he's going to give us a casual retrospective on this work and a dive into some of the code.
Lon and Andrew are off to JSConf US and Aaron is taking a sabbatical to finish his upcoming definitive book on ConcreteAbstractFactoryAdapterImplementations, so Rebecca Murphey has graciously offered to come out of retirement and host this month's event.
Austin JavaScript is sponsored this month by Indeed. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
This page been moved to /posts/meetups/2018/09/18/.
\ No newline at end of file diff --git a/posts/meetups/2018/09/18/index.html b/posts/meetups/2018/09/18/index.html new file mode 100644 index 00000000..cdf7375a --- /dev/null +++ b/posts/meetups/2018/09/18/index.html @@ -0,0 +1,9 @@ +List manipulation is a foundation of programming, and filtering is one of the pillars. Use cases are widespread, from removing outliers from a dataset to applying filters from user interactions. When a list of criteria gets large, however, the code used for these filters can get unruly.
By using and writing higher-order functions, you can write, combine, and manipulate criteria while keeping your JavaScript readable, maintainable, and DRY.

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Handling events like clicks and keypresses as users interact with your content is essential for any web app. Learn the fundamentals of how events work in JavaScript, including:
Whether you're just learning JavaScript or are an experienced front-end developer, you'll walk away with a deeper familiarity with events. You'll be able to implement event listeners with confidence and debug with clarity!
This talk is adapted from an Ember.js-specific talk, Deep Dive on Ember Events.

Austin JavaScript is sponsored this month by Indeed. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Grid frameworks in CSS help keep a product, department, or even a whole company visually aligned. However, they can be a struggle to maintain while satisfying different experiences’ needs. Thankfully, scripting languages have a knack for keeping everything sane. By creating a new open-source package that generates grid frameworks, we will cover:
Austin JavaScript is sponsored this month by Magento. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Why do some people hate JavaScript while others bask in its glory? In Stack Overflow's 2018 Survey of over 100,000 developers; JavaScript, HTML, and CSS rank as the top three most used technologies, with 70% of developers stating that they use JavaScript. Next in the list is SQL with 57%.
Not everyone is an expert front-end developer, but it seems that most people at least have to dip their toes.
If you hate JavaScript, I'm going to finally articulate why you know in your heart that this is such a terrible language. For you JavaScript lovers out there, hopefully this sheds some light on why your language of choice is such a steaming pile of 💩.
Let's talk about what we can do about it.

Austin JavaScript is sponsored this month by Indeed. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Austin JavaScript is sponsored this month by Magento. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
This page been moved to /posts/meetups/2019/05/21/.
\ No newline at end of file diff --git a/posts/meetups/2019/05/21/index.html b/posts/meetups/2019/05/21/index.html new file mode 100644 index 00000000..333aeee4 --- /dev/null +++ b/posts/meetups/2019/05/21/index.html @@ -0,0 +1,9 @@ +Come learn about the weird history of the IE event model, what it took to ship window.event (and associated garbage) in Firefox 66, and why we're still talking about this in 2019.
Austin JavaScript is sponsored this month by H-E-B Digital. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
This page been moved to /posts/meetups/2019/07/16/.
\ No newline at end of file diff --git a/posts/meetups/2019/07/16/index.html b/posts/meetups/2019/07/16/index.html new file mode 100644 index 00000000..a52152f9 --- /dev/null +++ b/posts/meetups/2019/07/16/index.html @@ -0,0 +1,9 @@ +Let's talk about a five-year-old tech like it's brand new; which is really what WebAssembly is; it's been around for years but we're only just starting to discover what it can do and how to use it. Kas can say with no hyperbole that this is the next Ajax in terms of importance to browser applications, and in this talk they'll explain why a multi-language web doesn't spell the end of JavaScript but rather a Renaissance for the web.

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
One of the first things we learn in JavaScript is console.log(). Yet this belies the true complexity of its behavior. What exactly does console.log() do, anyways? (The short answer: it depends!) Adorn your pith and get in the jeep because we're about to explore console.log() and maybe learn a few things about streams, browsers and JavaScript engines along the way!

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
This page been moved to /posts/meetups/2019/10/15/.
\ No newline at end of file diff --git a/posts/meetups/2019/10/15/index.html b/posts/meetups/2019/10/15/index.html new file mode 100644 index 00000000..36b87313 --- /dev/null +++ b/posts/meetups/2019/10/15/index.html @@ -0,0 +1,9 @@ +Indeed is one of the largest Job Search websites in the world. In order to maintain developer velocity and quality, we’re in the process of dramatically shifting how we build web applications. Historically, we’ve built large monolith applications that have upwards of a hundred contributors, but we’ve found that this approach has limited our ability to iterate, and innovate as quickly as we’d like.
Today, we’re focusing on splitting our monolith applications into smaller, more manageable components. In this talk, I’ll cover in detail how we developed a platform that enables building decoupled, distributed systems that perform and feel like a single application.
We’ve developed a platform that enables the independent deployability of units of user interface units across products and pages. In this talk I’ll describe:

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
This page been moved to /posts/meetups/2019/11/19/.
\ No newline at end of file diff --git a/posts/meetups/2019/11/19/index.html b/posts/meetups/2019/11/19/index.html new file mode 100644 index 00000000..0a132087 --- /dev/null +++ b/posts/meetups/2019/11/19/index.html @@ -0,0 +1,9 @@ +Join us for an introduction to DevLaunchers, an initiative to teach high school students in under-served communities about game development. We'll dive into how we build the website, activities, internal tools and slack event handlers on Cloudflare Workers, CodeSandbox, GitHub Pages and Travis CI.

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
This page been moved to /posts/meetups/2020/02/18/.
\ No newline at end of file diff --git a/posts/meetups/2020/02/18/index.html b/posts/meetups/2020/02/18/index.html new file mode 100644 index 00000000..9fb36636 --- /dev/null +++ b/posts/meetups/2020/02/18/index.html @@ -0,0 +1,9 @@ +
Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Hosted software as a service is great, but can give the provider too much leverage over your data and the software itself. Meanwhile, self-hosted software, like many open source solutions, takes away the key value proposition of SaaS. Luckily, "semi-hosted" is a model that provides the best of both worlds and enables customization and extensibility not usually possible. I want to talk about this pattern and show what you can do with it by demonstrating a semi-hosted personal organizer I've been building with Deno and Mithril.js called Treestar.

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
A short dive into web components taking a look at what they are, how they work, what problems they solve, what problems they have, and why you may want to use them on your next project.
Dave Rupert is co-founder of Luro, a tool for tracking component usage and insights. He also co-hosts Shoptalk, a web design and development podcast with Chris Coyier from CSS-Tricks.

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
JavaScript has a horribly rich history of writing package managers with none fully reigning as the final winner in a perpetual war for popularity and utility. Let's cover some of their differences, that actually end up with some fun surprises about nuances in how they work along the way!

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Rule 1. Highly concurrent programs are hard.
Rule 2. Every non-trivial program is highly concurrent.
JavaScript gives us some primitives to express asynchrony like promises, and async functions, but unfortunately they do not guarantee correctness. In fact far from it. Most async code is full of edge-cases and foot guns that never reveal themselves until you’re at scale. In this talk, we’ll put names to all these edge-cases and footguns so that you can recognize them instantly when they happen to you. After showing the ills, we’ll talk about the the cure: an exciting new way of thinking about our programs called Structured Concurrency. Language communities from Go, and Rust to Swift and Java, are all ablaze with talk of it, so whether you’ve explored this topic before or this is the first you’ve heard of it, you won’t want to miss this talk, because in ten years time, it will be the norm and we’ll all wonder how we ever did without it.

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Build native mobile apps in JavaScript! Just regular JavaScript without any mobile frameworks.
This can be a great solution if you’re a web developer and JavaScript is your bread and butter. Apps built this way work fast, are quick to deploy, and don’t have to pass App Store reviews every time! So come and learn about the pros and cons of this approach, and what it takes to build a JS native mobile app.

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Remix is a full stack web framework that lets you focus on the user interface and work back through web standards to deliver a fast, slick, and resilient user experience. In this talk Brooks will show you how Remix makes it easy to iteratively build solid, engaging, and user-centric experiences using the basic building blocks of the web.

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Command palettes in applications are great — they spare us from reaching for the mouse to go spelunking through menus. Raycast and Script Kit are two delightful tools that are akin to command palettes, accessible from within any application, and programmable with JavaScript! Come, see what's possible, and feel empowered to start building out your own OS command palette!

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
We’ve all heard of the React motto “write once, run everywhere” but what does this look like in reality? Learn how Expo Router––the universal React framework––is making it possible to reuse complex app development patterns like routing, data fetching, and rendering, across web and native platforms.
I’m the creator of Expo Router, and manage the dev tools/web team at Expo. Bring your most complicated React/React Native questions and I’ll try my best to answer them all.

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
This month, we are opening the podium to the community, inviting all to take the microphone for a few minutes to show off something that you have learned or discovered recently that has made your life as a JS dev easier! All who are brave enough to present will be rewarded with newly minted AustinJS stickers.
Lightning talks:

Multiple

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Tauri is a relatively recent, open-source (FLOSS), framework that lets you re-purpose your JS frontend as both a desktop (Mac/Win/Linux) and mobile (iOS/Android) application. It's easy to use and creates small, highly performant, executables.

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
JavaScript is a language often mocked for its quirky behaviors, like how 3 + '3' equals '33' or how 0.1 + 0.2 doesn't quite equal 0.3. These peculiarities can be confusing and frustrating, especially for beginners. However, most of these behaviors aren't random or senseless—they stem from historical decisions, compromises, and attempts to handle various use cases. In this talk, we'll explore some of JavaScript's most notorious quirks, exploring their reasoning. We'll cover topics like type coercion, truthy/falsy values, equality comparisons, variable scope and hoisting, the typeof operator, and prototypal inheritance. If you understand the 'why' behind the 'what,' you will be better equipped to write clean, predictable JavaScript code and avoid common pitfalls. Whether you're a JavaScript beginner or an experienced developer, you'll walk away with valuable insights into the language's inner workings.

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Passwords are vulnerable and frustrating for users. Passkeys promise a seamless and secure authentication future. But understanding the concepts and implementing them into your web application can feel daunting.
In this talk, we'll break down the fundamentals of passkeys, including the WebAuthn specification and the benefits they provide. You'll learn how to set up a simple WebAuthn server, handle registration and authentication flows, and navigate the practical aspects of implementing passkeys in your application. We will cover just enough ground for you to get started and lay out a passkey foundation to be built upon.

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Or: "How a Rails developer read the docs, achieved enlightenment, and learned to love React server components"
An exploration of the pain and oddities of how traditional web frameworks attempt to handle high-interactivity dynamic UIs, and how modern front-end frameworks similarly introduce complexity to support low-interactivity static UIs.

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Effect is a powerful library that enhances your TypeScript projects by focusing on robust return types, error handling, query retries, interruption management, and observability. With Effect, you can ensure that your functions return consistent and predictable types, making your code more reliable and easier to maintain. It also encourages treating errors as first-class citizens, allowing for graceful error handling and recovery. Additionally, Effect provides mechanisms for retrying queries and managing interruptions, ensuring that your application remains resilient in various scenarios. Finally, its observability features help you monitor and debug your application more effectively. Now, you can take your todo application to the next level and impress everyone with your overengineered masterpiece.

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
When starting on a new web, fullstack project, developers are spoiled for choice from the many frameworks and services to choose from. For real-time or near real-time apps, there's an even more complicated world to navigate. Instead, what if you could use web APIs and simple to integrate services to power any real-time app? Join Jon as he guides you through everything you might need to create a chat room (spoiler: it's less than you might think!)

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
The holiday party was a blast! We introduced our new Austin JavaScript shirts for the first time, and gave them to the winning table members of the Web Trivia game we played. Plus, some tried out our new battledecks, where each speaker improvised the topic and content based on what slides popped up on the screen. They all did great, and were awarded a shirt as well.


Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Cloudflare offers a cheap and easy suite of tools for developers to build full stack web applications. In this talk, Collier will show how to build and deploy a full stack web app on Cloudflare, covering hosting, storage, databases, background jobs and more.

Collier King

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
We will focus on overcoming challenges in implementing secure and efficient login processes for React applications. The session covers basic login functionalities, integrating with external identity providers (IDPs), and advanced use cases like Single Sign-On (SSO), Multi-Factor Authentication (MFA), and social login options. Developers will learn how to streamline user authentication using the Asgardeo React SDK, enabling OpenID Connect (OIDC) compliance, token management, and best security practices.

Harsha Thirimanna

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
We'll explore the architectural patterns and practices for developing enterprise-ready open-source software using Effect-TS. The session will demonstrate how functional programming principles, through Effect-TS, provide robust solutions for complex enterprise requirements, including error handling, observability, and concurrency management.
Attendees will learn practical techniques for creating specialized effects, designing comprehensive error types, and implementing generation functions that enhance maintainability and scalability. The lecture will showcase these concepts through a HIPAA-compliant medical application lens, illustrating how Effect-TS elegantly addresses the stringent requirements of healthcare software—including audit logging, secure data handling, and regulatory compliance. The session will also cover advanced topics such as building observation services for telemetry and leveraging fiber-based concurrency to create responsive applications that maintain data integrity under load. By examining these enterprise patterns in Effect-TS, developers will gain valuable insights applicable to any industry requiring high reliability, security, and maintainability in their open-source software projects.

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Ever wanted to build something just for the vibes? In this talk, I’ll walk through how I prototyped a Tamagotchi-style app using Next.js and TailwindCSS — not for a client, not for a launch, but just to explore joy in coding. We'll cover core frontend logic (state management, time-based updates), CSS animations, and light gamification. The goal isn’t perfection — it's flow, play, and remembering why we started coding in the first place. Expect code demos, a few laughs, and maybe even a virtual pet revival.

Andrew Njoo

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
Agents are the coolest trend but what are they made of? Let's take a look at what is going on behind the scenes and explore concepts like Model Context Protocol, Function Calling and APIs

Austin JavaScript is sponsored this month by Cloudflare Austin. Please thank them for their gracious gifts of pizza and drinks and for their support of the local JavaScript community.Ask them about their job opportunities!
An archive of past Austin JavaScript meetups.
After 14 solid months of usage at Virtue Group's stunning office, we are moving our location to the crossroads of downtown Austin, namely 6th and Congress. The new meeting location will be at frog design's Austin studio located at 101 West 6th Street, 2nd Floor of the historical Scarborough Building.
Meeting will start promptly at 7:30 PM and will be wrapping up at 9pm. Afterwards, the conversations carry on the Gingerman, only 3 blocks away.
Yes, we are just as saddened just as much as you are, but unfortunately all potential hosts for the meetup are unavailable or out of town! We do have a speaker with some interesting content on Sencha Touch and Phonegap, but it will have to wait until November.
Stay tuned for next month's meetup details and be sure to follow us on Twitter: @austinjs.
This page been moved to {{ redirect.permalink.new | url }}.
- - diff --git a/september-16th-meetup/index.html b/september-16th-meetup/index.html new file mode 100644 index 00000000..f6668a63 --- /dev/null +++ b/september-16th-meetup/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2014/09/16/.
\ No newline at end of file diff --git a/september-2012-austin-js-meetup-details-announced/index.html b/september-2012-austin-js-meetup-details-announced/index.html new file mode 100644 index 00000000..57243c7d --- /dev/null +++ b/september-2012-austin-js-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2012/09/18/.
\ No newline at end of file diff --git a/september-meetup-details-announced-2011/index.html b/september-meetup-details-announced-2011/index.html new file mode 100644 index 00000000..13d32936 --- /dev/null +++ b/september-meetup-details-announced-2011/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2011/09/20/.
\ No newline at end of file diff --git a/september-meetup-details-announced/index.html b/september-meetup-details-announced/index.html new file mode 100644 index 00000000..3a9dde4c --- /dev/null +++ b/september-meetup-details-announced/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/meetups/2010/09/21/.
\ No newline at end of file diff --git a/sitemap.njk b/sitemap.njk deleted file mode 100644 index d8c78fd9..00000000 --- a/sitemap.njk +++ /dev/null @@ -1,16 +0,0 @@ ---- -permalink: sitemap.xml -eleventyExcludeFromCollections: true -reference: https://www.sitemaps.org/protocol.html ---- - -This page been moved to /posts/special-guest-added-for-april-meetup/.
\ No newline at end of file diff --git a/tonights-meetup-location-changed/index.html b/tonights-meetup-location-changed/index.html new file mode 100644 index 00000000..9436a04d --- /dev/null +++ b/tonights-meetup-location-changed/index.html @@ -0,0 +1 @@ +{# This is the closest we can get to 301 redirects in GitHub Pages. This template uses meta refresh to redirect from the old path to the new permalink in 0 seconds (change that delay if you wish the page to appear for longer, though if you do, note that the template is basic and un-styled). The template also sets the canonical link to the new page location and a link in the body, in case the browser doesn't do meta refresh. This template uses 11ty Pagination to create pages with data (https://www.11ty.dev/docs/pages-from-data/) from `_data/redirects.json`. Note that there is additional old/new file mapping in that file that may be removed if it's not needed. The obvious downside to this approach is that files are created in the root or posts directory for each of the old permalinks. At worst, this may result in namespace collisions should a future filename/permalink match one of the redirect permalinks. Otherwise, this approach merely clutters up the output directory with "old" files. We may want to sunset this approach as traffic to the old pages drops off to a certain level. #}This page been moved to /posts/tonights-meetup-location-changed/.
\ No newline at end of file