├── .gitignore
├── 2021-11-11-how-to-download-embedded-videos
└── scrape_urls.py
├── 2021-11-26-introducing-gpt3
└── api_example.py
├── 2021-12-04-sending-mass-dms-on-reddit-through-api
├── extract_usernames.sh
├── mass_dm.py
└── scrape_users.py
├── 2021-12-12-using-ephemeral-onion-services-for-quick-nat-traversal
├── Dockerfile
└── run_onion_service.py
├── 2021-12-19-automating-google-dorking
└── google.py
├── 2021-12-27-grayhat-twitch-chatbots
└── t.py
├── 2022-01-19-using-python-and-mitmproxy-to-scrape-private-api-of-mobile-app
└── mal.py
├── 2022-01-31-the-very-basics-of-xpath
└── xpath_examples.py
├── 2022-01-31-using-proxies-for-web-scraping-and-automation
├── brightdata1.py
└── brightdata2.py
├── 2022-02-04-harvesting-emails-from-google-search-results
└── harvest.py
├── 2022-02-13-captcha-solver-services-for-scraping-and-automation
└── anticaptcha_example.py
├── 2022-02-13-introduction-to-scrapy-framework
└── books_to_scrape
│ ├── books_to_scrape
│ ├── __init__.py
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ │ ├── __init__.py
│ │ └── books.py
│ └── scrapy.cfg
├── 2022-02-19-email-harvesting-from-github-profiles
├── scrape_contrib_contacts.py
└── search_repos.py
├── 2022-03-05-evaluating-ms-playwright-for-gray-hat-automation
├── codegen_login_to_ig.py
├── screenshots1.py
└── use_cookies.py
├── 2022-03-09-sending-notifications-programmatically
├── phonecall.twiml.xml
├── smtplib_examply.py
├── tg.py
└── twilio_sms.py
├── 2022-03-12-how-to-scrape-pages-behind-login-with-python
└── apollo.py
├── 2022-03-20-decrypting-your-own-https-traffic-with-wireshark
└── tlskeylogger.plist
├── 2022-03-25-reproducible-linux-environments-with-vagrant-and-terraform
├── Vagrantfile
├── main.tf
└── provision.sh
├── 2022-03-26-running-gui-apps-within-docker-containers
├── 1
│ └── Dockerfile
└── 2
│ ├── Dockerfile
│ └── docker-compose.yml
├── 2022-04-02-smtp-enumeration-for-fun-and-profit.md
├── basic_wordlist.txt
└── smtp_enum.py
├── 2022-04-03-creating-dc-proxies-on-cloud-providers
├── main.tf
└── provision.sh
├── 2022-04-09-writing-web-scrapers-in-go-with-colly-framework
├── go.mod
├── go.sum
└── main.go
├── 2022-04-19-compiling-python-programs-with-pyinstaller
├── bitcoin.py
├── bitcoin.spec
└── images
│ └── bitcoin.png
├── 2022-05-23-scraping-instagram-api-with-instauto
└── ig_scrape_followers.py
├── 2022-06-04-importing-shopify-product-info-programmatically
└── import_via_rest_api.py
├── 2022-06-04-turning-scrapy-spider-into-api-with-scrapyrt
└── books_to_scrape
│ ├── Dockerfile
│ ├── books_to_scrape
│ ├── __init__.py
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ │ ├── __init__.py
│ │ └── books.py
│ └── scrapy.cfg
├── 2022-06-12-building-higher-order-automation-workflows-with-n8n
└── My_workflow.json
├── 2022-06-15-understanding-abstract-syntax-trees
├── hello.c
└── hello.py
├── 2022-06-16-how-to-scrape-youtube-view-intensity-time-series
└── yt.py
├── 2022-07-02-how-to-scrape-zillow-with-python-and-scrapy
├── scrapy.cfg
└── zillow
│ ├── __init__.py
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ ├── __init__.py
│ └── home.py
├── 2022-07-10-javascript-obfuscation-techniques-by-example
├── compress.js
├── controlflow.js
├── deadcode.js
├── hello.js
├── hello2.js
├── hexstring.js
├── identifiers.js
├── literals.js
├── mangling.js
├── scope.js
└── stringarray.js
├── 2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps
├── brackets.js
├── clean1.js
├── clean2.js
├── clean3.js
├── hacktivity.js
├── hexcoded.js
├── minified.js
├── node_modules
│ ├── .bin
│ │ ├── babel
│ │ ├── babel-external-helpers
│ │ ├── browserslist
│ │ ├── browserslist-lint
│ │ ├── jsesc
│ │ ├── json5
│ │ ├── parser
│ │ └── semver
│ ├── .package-lock.json
│ ├── @ampproject
│ │ └── remapping
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ ├── @babel
│ │ ├── cli
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── bin
│ │ │ │ ├── babel-external-helpers.js
│ │ │ │ └── babel.js
│ │ │ ├── index.js
│ │ │ └── package.json
│ │ ├── code-frame
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── compat-data
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── corejs2-built-ins.js
│ │ │ ├── corejs3-shipped-proposals.js
│ │ │ ├── data
│ │ │ │ ├── corejs2-built-ins.json
│ │ │ │ ├── corejs3-shipped-proposals.json
│ │ │ │ ├── native-modules.json
│ │ │ │ ├── overlapping-plugins.json
│ │ │ │ ├── plugin-bugfixes.json
│ │ │ │ └── plugins.json
│ │ │ ├── native-modules.js
│ │ │ ├── overlapping-plugins.js
│ │ │ ├── package.json
│ │ │ ├── plugin-bugfixes.js
│ │ │ └── plugins.js
│ │ ├── core
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── cjs-proxy.cjs
│ │ │ ├── package.json
│ │ │ └── src
│ │ │ │ ├── config
│ │ │ │ ├── files
│ │ │ │ │ ├── index-browser.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── resolve-targets-browser.ts
│ │ │ │ └── resolve-targets.ts
│ │ │ │ ├── transform-file-browser.ts
│ │ │ │ └── transform-file.ts
│ │ ├── generator
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── node_modules
│ │ │ │ └── @jridgewell
│ │ │ │ │ └── gen-mapping
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── src
│ │ │ │ │ ├── gen-mapping.ts
│ │ │ │ │ ├── sourcemap-segment.ts
│ │ │ │ │ └── types.ts
│ │ │ └── package.json
│ │ ├── helper-compilation-targets
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-environment-visitor
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-function-name
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-hoist-variables
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-module-imports
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-module-transforms
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-simple-access
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-split-export-declaration
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-validator-identifier
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── scripts
│ │ │ │ └── generate-identifier-regex.js
│ │ ├── helper-validator-option
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helpers
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── scripts
│ │ │ │ ├── generate-helpers.js
│ │ │ │ ├── generate-regenerator-runtime.js
│ │ │ │ └── package.json
│ │ ├── highlight
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── parser
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── bin
│ │ │ │ └── babel-parser.js
│ │ │ ├── index.cjs
│ │ │ ├── package.json
│ │ │ └── typings
│ │ │ │ └── babel-parser.d.ts
│ │ ├── template
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── traverse
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── scripts
│ │ │ │ ├── generators
│ │ │ │ ├── asserts.js
│ │ │ │ ├── validators.js
│ │ │ │ └── virtual-types.js
│ │ │ │ └── package.json
│ │ └── types
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── scripts
│ │ │ ├── generators
│ │ │ ├── asserts.js
│ │ │ ├── ast-types.js
│ │ │ ├── builders.js
│ │ │ ├── constants.js
│ │ │ ├── docs.js
│ │ │ ├── flow.js
│ │ │ ├── typescript-legacy.js
│ │ │ └── validators.js
│ │ │ ├── package.json
│ │ │ └── utils
│ │ │ ├── formatBuilderName.js
│ │ │ ├── lowerFirst.js
│ │ │ ├── stringifyValidator.js
│ │ │ └── toFunctionName.js
│ ├── @jridgewell
│ │ ├── gen-mapping
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── resolve-uri
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── set-array
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── src
│ │ │ │ └── set-array.ts
│ │ ├── sourcemap-codec
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── src
│ │ │ │ └── sourcemap-codec.ts
│ │ └── trace-mapping
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── src
│ │ │ ├── any-map.ts
│ │ │ ├── binary-search.ts
│ │ │ ├── by-source.ts
│ │ │ ├── resolve.ts
│ │ │ ├── sort.ts
│ │ │ ├── sourcemap-segment.ts
│ │ │ ├── strip-filename.ts
│ │ │ ├── trace-mapping.ts
│ │ │ └── types.ts
│ ├── @nicolo-ribaudo
│ │ └── chokidar-2
│ │ │ ├── README.md
│ │ │ ├── build-chokidar.sh
│ │ │ ├── package.json
│ │ │ └── types.d.ts
│ ├── ansi-styles
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── anymatch
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── package.json
│ ├── balanced-match
│ │ ├── .github
│ │ │ └── FUNDING.yml
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── binary-extensions
│ │ ├── binary-extensions.json
│ │ ├── binary-extensions.json.d.ts
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── brace-expansion
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── braces
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── browserslist
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── browser.js
│ │ ├── cli.js
│ │ ├── error.d.ts
│ │ ├── error.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── node.js
│ │ ├── package.json
│ │ └── parse.js
│ ├── caniuse-lite
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── data
│ │ │ ├── agents.js
│ │ │ ├── browserVersions.js
│ │ │ ├── browsers.js
│ │ │ ├── features.js
│ │ │ ├── features
│ │ │ │ ├── aac.js
│ │ │ │ ├── abortcontroller.js
│ │ │ │ ├── ac3-ec3.js
│ │ │ │ ├── accelerometer.js
│ │ │ │ ├── addeventlistener.js
│ │ │ │ ├── alternate-stylesheet.js
│ │ │ │ ├── ambient-light.js
│ │ │ │ ├── apng.js
│ │ │ │ ├── array-find-index.js
│ │ │ │ ├── array-find.js
│ │ │ │ ├── array-flat.js
│ │ │ │ ├── array-includes.js
│ │ │ │ ├── arrow-functions.js
│ │ │ │ ├── asmjs.js
│ │ │ │ ├── async-clipboard.js
│ │ │ │ ├── async-functions.js
│ │ │ │ ├── atob-btoa.js
│ │ │ │ ├── audio-api.js
│ │ │ │ ├── audio.js
│ │ │ │ ├── audiotracks.js
│ │ │ │ ├── autofocus.js
│ │ │ │ ├── auxclick.js
│ │ │ │ ├── av1.js
│ │ │ │ ├── avif.js
│ │ │ │ ├── background-attachment.js
│ │ │ │ ├── background-clip-text.js
│ │ │ │ ├── background-img-opts.js
│ │ │ │ ├── background-position-x-y.js
│ │ │ │ ├── background-repeat-round-space.js
│ │ │ │ ├── background-sync.js
│ │ │ │ ├── battery-status.js
│ │ │ │ ├── beacon.js
│ │ │ │ ├── beforeafterprint.js
│ │ │ │ ├── bigint.js
│ │ │ │ ├── blobbuilder.js
│ │ │ │ ├── bloburls.js
│ │ │ │ ├── border-image.js
│ │ │ │ ├── border-radius.js
│ │ │ │ ├── broadcastchannel.js
│ │ │ │ ├── brotli.js
│ │ │ │ ├── calc.js
│ │ │ │ ├── canvas-blending.js
│ │ │ │ ├── canvas-text.js
│ │ │ │ ├── canvas.js
│ │ │ │ ├── ch-unit.js
│ │ │ │ ├── chacha20-poly1305.js
│ │ │ │ ├── channel-messaging.js
│ │ │ │ ├── childnode-remove.js
│ │ │ │ ├── classlist.js
│ │ │ │ ├── client-hints-dpr-width-viewport.js
│ │ │ │ ├── clipboard.js
│ │ │ │ ├── colr-v1.js
│ │ │ │ ├── colr.js
│ │ │ │ ├── comparedocumentposition.js
│ │ │ │ ├── console-basic.js
│ │ │ │ ├── console-time.js
│ │ │ │ ├── const.js
│ │ │ │ ├── constraint-validation.js
│ │ │ │ ├── contenteditable.js
│ │ │ │ ├── contentsecuritypolicy.js
│ │ │ │ ├── contentsecuritypolicy2.js
│ │ │ │ ├── cookie-store-api.js
│ │ │ │ ├── cors.js
│ │ │ │ ├── createimagebitmap.js
│ │ │ │ ├── credential-management.js
│ │ │ │ ├── cryptography.js
│ │ │ │ ├── css-all.js
│ │ │ │ ├── css-animation.js
│ │ │ │ ├── css-any-link.js
│ │ │ │ ├── css-appearance.js
│ │ │ │ ├── css-at-counter-style.js
│ │ │ │ ├── css-autofill.js
│ │ │ │ ├── css-backdrop-filter.js
│ │ │ │ ├── css-background-offsets.js
│ │ │ │ ├── css-backgroundblendmode.js
│ │ │ │ ├── css-boxdecorationbreak.js
│ │ │ │ ├── css-boxshadow.js
│ │ │ │ ├── css-canvas.js
│ │ │ │ ├── css-caret-color.js
│ │ │ │ ├── css-cascade-layers.js
│ │ │ │ ├── css-case-insensitive.js
│ │ │ │ ├── css-clip-path.js
│ │ │ │ ├── css-color-adjust.js
│ │ │ │ ├── css-color-function.js
│ │ │ │ ├── css-conic-gradients.js
│ │ │ │ ├── css-container-queries.js
│ │ │ │ ├── css-container-query-units.js
│ │ │ │ ├── css-containment.js
│ │ │ │ ├── css-content-visibility.js
│ │ │ │ ├── css-counters.js
│ │ │ │ ├── css-crisp-edges.js
│ │ │ │ ├── css-cross-fade.js
│ │ │ │ ├── css-default-pseudo.js
│ │ │ │ ├── css-descendant-gtgt.js
│ │ │ │ ├── css-deviceadaptation.js
│ │ │ │ ├── css-dir-pseudo.js
│ │ │ │ ├── css-display-contents.js
│ │ │ │ ├── css-element-function.js
│ │ │ │ ├── css-env-function.js
│ │ │ │ ├── css-exclusions.js
│ │ │ │ ├── css-featurequeries.js
│ │ │ │ ├── css-file-selector-button.js
│ │ │ │ ├── css-filter-function.js
│ │ │ │ ├── css-filters.js
│ │ │ │ ├── css-first-letter.js
│ │ │ │ ├── css-first-line.js
│ │ │ │ ├── css-fixed.js
│ │ │ │ ├── css-focus-visible.js
│ │ │ │ ├── css-focus-within.js
│ │ │ │ ├── css-font-palette.js
│ │ │ │ ├── css-font-rendering-controls.js
│ │ │ │ ├── css-font-stretch.js
│ │ │ │ ├── css-gencontent.js
│ │ │ │ ├── css-gradients.js
│ │ │ │ ├── css-grid-animation.js
│ │ │ │ ├── css-grid.js
│ │ │ │ ├── css-hanging-punctuation.js
│ │ │ │ ├── css-has.js
│ │ │ │ ├── css-hyphenate.js
│ │ │ │ ├── css-hyphens.js
│ │ │ │ ├── css-image-orientation.js
│ │ │ │ ├── css-image-set.js
│ │ │ │ ├── css-in-out-of-range.js
│ │ │ │ ├── css-indeterminate-pseudo.js
│ │ │ │ ├── css-initial-letter.js
│ │ │ │ ├── css-initial-value.js
│ │ │ │ ├── css-lch-lab.js
│ │ │ │ ├── css-letter-spacing.js
│ │ │ │ ├── css-line-clamp.js
│ │ │ │ ├── css-logical-props.js
│ │ │ │ ├── css-marker-pseudo.js
│ │ │ │ ├── css-masks.js
│ │ │ │ ├── css-matches-pseudo.js
│ │ │ │ ├── css-math-functions.js
│ │ │ │ ├── css-media-interaction.js
│ │ │ │ ├── css-media-resolution.js
│ │ │ │ ├── css-media-scripting.js
│ │ │ │ ├── css-mediaqueries.js
│ │ │ │ ├── css-mixblendmode.js
│ │ │ │ ├── css-motion-paths.js
│ │ │ │ ├── css-namespaces.js
│ │ │ │ ├── css-nesting.js
│ │ │ │ ├── css-not-sel-list.js
│ │ │ │ ├── css-nth-child-of.js
│ │ │ │ ├── css-opacity.js
│ │ │ │ ├── css-optional-pseudo.js
│ │ │ │ ├── css-overflow-anchor.js
│ │ │ │ ├── css-overflow-overlay.js
│ │ │ │ ├── css-overflow.js
│ │ │ │ ├── css-overscroll-behavior.js
│ │ │ │ ├── css-page-break.js
│ │ │ │ ├── css-paged-media.js
│ │ │ │ ├── css-paint-api.js
│ │ │ │ ├── css-placeholder-shown.js
│ │ │ │ ├── css-placeholder.js
│ │ │ │ ├── css-print-color-adjust.js
│ │ │ │ ├── css-read-only-write.js
│ │ │ │ ├── css-rebeccapurple.js
│ │ │ │ ├── css-reflections.js
│ │ │ │ ├── css-regions.js
│ │ │ │ ├── css-repeating-gradients.js
│ │ │ │ ├── css-resize.js
│ │ │ │ ├── css-revert-value.js
│ │ │ │ ├── css-rrggbbaa.js
│ │ │ │ ├── css-scroll-behavior.js
│ │ │ │ ├── css-scroll-timeline.js
│ │ │ │ ├── css-scrollbar.js
│ │ │ │ ├── css-sel2.js
│ │ │ │ ├── css-sel3.js
│ │ │ │ ├── css-selection.js
│ │ │ │ ├── css-shapes.js
│ │ │ │ ├── css-snappoints.js
│ │ │ │ ├── css-sticky.js
│ │ │ │ ├── css-subgrid.js
│ │ │ │ ├── css-supports-api.js
│ │ │ │ ├── css-table.js
│ │ │ │ ├── css-text-align-last.js
│ │ │ │ ├── css-text-indent.js
│ │ │ │ ├── css-text-justify.js
│ │ │ │ ├── css-text-orientation.js
│ │ │ │ ├── css-text-spacing.js
│ │ │ │ ├── css-textshadow.js
│ │ │ │ ├── css-touch-action-2.js
│ │ │ │ ├── css-touch-action.js
│ │ │ │ ├── css-transitions.js
│ │ │ │ ├── css-unicode-bidi.js
│ │ │ │ ├── css-unset-value.js
│ │ │ │ ├── css-variables.js
│ │ │ │ ├── css-when-else.js
│ │ │ │ ├── css-widows-orphans.js
│ │ │ │ ├── css-width-stretch.js
│ │ │ │ ├── css-writing-mode.js
│ │ │ │ ├── css-zoom.js
│ │ │ │ ├── css3-attr.js
│ │ │ │ ├── css3-boxsizing.js
│ │ │ │ ├── css3-colors.js
│ │ │ │ ├── css3-cursors-grab.js
│ │ │ │ ├── css3-cursors-newer.js
│ │ │ │ ├── css3-cursors.js
│ │ │ │ ├── css3-tabsize.js
│ │ │ │ ├── currentcolor.js
│ │ │ │ ├── custom-elements.js
│ │ │ │ ├── custom-elementsv1.js
│ │ │ │ ├── customevent.js
│ │ │ │ ├── datalist.js
│ │ │ │ ├── dataset.js
│ │ │ │ ├── datauri.js
│ │ │ │ ├── date-tolocaledatestring.js
│ │ │ │ ├── declarative-shadow-dom.js
│ │ │ │ ├── decorators.js
│ │ │ │ ├── details.js
│ │ │ │ ├── deviceorientation.js
│ │ │ │ ├── devicepixelratio.js
│ │ │ │ ├── dialog.js
│ │ │ │ ├── dispatchevent.js
│ │ │ │ ├── dnssec.js
│ │ │ │ ├── do-not-track.js
│ │ │ │ ├── document-currentscript.js
│ │ │ │ ├── document-evaluate-xpath.js
│ │ │ │ ├── document-execcommand.js
│ │ │ │ ├── document-policy.js
│ │ │ │ ├── document-scrollingelement.js
│ │ │ │ ├── documenthead.js
│ │ │ │ ├── dom-manip-convenience.js
│ │ │ │ ├── dom-range.js
│ │ │ │ ├── domcontentloaded.js
│ │ │ │ ├── domfocusin-domfocusout-events.js
│ │ │ │ ├── dommatrix.js
│ │ │ │ ├── download.js
│ │ │ │ ├── dragndrop.js
│ │ │ │ ├── element-closest.js
│ │ │ │ ├── element-from-point.js
│ │ │ │ ├── element-scroll-methods.js
│ │ │ │ ├── eme.js
│ │ │ │ ├── eot.js
│ │ │ │ ├── es5.js
│ │ │ │ ├── es6-class.js
│ │ │ │ ├── es6-generators.js
│ │ │ │ ├── es6-module-dynamic-import.js
│ │ │ │ ├── es6-module.js
│ │ │ │ ├── es6-number.js
│ │ │ │ ├── es6-string-includes.js
│ │ │ │ ├── es6.js
│ │ │ │ ├── eventsource.js
│ │ │ │ ├── extended-system-fonts.js
│ │ │ │ ├── feature-policy.js
│ │ │ │ ├── fetch.js
│ │ │ │ ├── fieldset-disabled.js
│ │ │ │ ├── fileapi.js
│ │ │ │ ├── filereader.js
│ │ │ │ ├── filereadersync.js
│ │ │ │ ├── filesystem.js
│ │ │ │ ├── flac.js
│ │ │ │ ├── flexbox-gap.js
│ │ │ │ ├── flexbox.js
│ │ │ │ ├── flow-root.js
│ │ │ │ ├── focusin-focusout-events.js
│ │ │ │ ├── focusoptions-preventscroll.js
│ │ │ │ ├── font-family-system-ui.js
│ │ │ │ ├── font-feature.js
│ │ │ │ ├── font-kerning.js
│ │ │ │ ├── font-loading.js
│ │ │ │ ├── font-metrics-overrides.js
│ │ │ │ ├── font-size-adjust.js
│ │ │ │ ├── font-smooth.js
│ │ │ │ ├── font-unicode-range.js
│ │ │ │ ├── font-variant-alternates.js
│ │ │ │ ├── font-variant-numeric.js
│ │ │ │ ├── fontface.js
│ │ │ │ ├── form-attribute.js
│ │ │ │ ├── form-submit-attributes.js
│ │ │ │ ├── form-validation.js
│ │ │ │ ├── forms.js
│ │ │ │ ├── fullscreen.js
│ │ │ │ ├── gamepad.js
│ │ │ │ ├── geolocation.js
│ │ │ │ ├── getboundingclientrect.js
│ │ │ │ ├── getcomputedstyle.js
│ │ │ │ ├── getelementsbyclassname.js
│ │ │ │ ├── getrandomvalues.js
│ │ │ │ ├── gyroscope.js
│ │ │ │ ├── hardwareconcurrency.js
│ │ │ │ ├── hashchange.js
│ │ │ │ ├── heif.js
│ │ │ │ ├── hevc.js
│ │ │ │ ├── hidden.js
│ │ │ │ ├── high-resolution-time.js
│ │ │ │ ├── history.js
│ │ │ │ ├── html-media-capture.js
│ │ │ │ ├── html5semantic.js
│ │ │ │ ├── http-live-streaming.js
│ │ │ │ ├── http2.js
│ │ │ │ ├── http3.js
│ │ │ │ ├── iframe-sandbox.js
│ │ │ │ ├── iframe-seamless.js
│ │ │ │ ├── iframe-srcdoc.js
│ │ │ │ ├── imagecapture.js
│ │ │ │ ├── ime.js
│ │ │ │ ├── img-naturalwidth-naturalheight.js
│ │ │ │ ├── import-maps.js
│ │ │ │ ├── imports.js
│ │ │ │ ├── indeterminate-checkbox.js
│ │ │ │ ├── indexeddb.js
│ │ │ │ ├── indexeddb2.js
│ │ │ │ ├── inline-block.js
│ │ │ │ ├── innertext.js
│ │ │ │ ├── input-autocomplete-onoff.js
│ │ │ │ ├── input-color.js
│ │ │ │ ├── input-datetime.js
│ │ │ │ ├── input-email-tel-url.js
│ │ │ │ ├── input-event.js
│ │ │ │ ├── input-file-accept.js
│ │ │ │ ├── input-file-directory.js
│ │ │ │ ├── input-file-multiple.js
│ │ │ │ ├── input-inputmode.js
│ │ │ │ ├── input-minlength.js
│ │ │ │ ├── input-number.js
│ │ │ │ ├── input-pattern.js
│ │ │ │ ├── input-placeholder.js
│ │ │ │ ├── input-range.js
│ │ │ │ ├── input-search.js
│ │ │ │ ├── input-selection.js
│ │ │ │ ├── insert-adjacent.js
│ │ │ │ ├── insertadjacenthtml.js
│ │ │ │ ├── internationalization.js
│ │ │ │ ├── intersectionobserver-v2.js
│ │ │ │ ├── intersectionobserver.js
│ │ │ │ ├── intl-pluralrules.js
│ │ │ │ ├── intrinsic-width.js
│ │ │ │ ├── jpeg2000.js
│ │ │ │ ├── jpegxl.js
│ │ │ │ ├── jpegxr.js
│ │ │ │ ├── js-regexp-lookbehind.js
│ │ │ │ ├── json.js
│ │ │ │ ├── justify-content-space-evenly.js
│ │ │ │ ├── kerning-pairs-ligatures.js
│ │ │ │ ├── keyboardevent-charcode.js
│ │ │ │ ├── keyboardevent-code.js
│ │ │ │ ├── keyboardevent-getmodifierstate.js
│ │ │ │ ├── keyboardevent-key.js
│ │ │ │ ├── keyboardevent-location.js
│ │ │ │ ├── keyboardevent-which.js
│ │ │ │ ├── lazyload.js
│ │ │ │ ├── let.js
│ │ │ │ ├── link-icon-png.js
│ │ │ │ ├── link-icon-svg.js
│ │ │ │ ├── link-rel-dns-prefetch.js
│ │ │ │ ├── link-rel-modulepreload.js
│ │ │ │ ├── link-rel-preconnect.js
│ │ │ │ ├── link-rel-prefetch.js
│ │ │ │ ├── link-rel-preload.js
│ │ │ │ ├── link-rel-prerender.js
│ │ │ │ ├── loading-lazy-attr.js
│ │ │ │ ├── localecompare.js
│ │ │ │ ├── magnetometer.js
│ │ │ │ ├── matchesselector.js
│ │ │ │ ├── matchmedia.js
│ │ │ │ ├── mathml.js
│ │ │ │ ├── maxlength.js
│ │ │ │ ├── media-attribute.js
│ │ │ │ ├── media-fragments.js
│ │ │ │ ├── media-session-api.js
│ │ │ │ ├── mediacapture-fromelement.js
│ │ │ │ ├── mediarecorder.js
│ │ │ │ ├── mediasource.js
│ │ │ │ ├── menu.js
│ │ │ │ ├── meta-theme-color.js
│ │ │ │ ├── meter.js
│ │ │ │ ├── midi.js
│ │ │ │ ├── minmaxwh.js
│ │ │ │ ├── mp3.js
│ │ │ │ ├── mpeg-dash.js
│ │ │ │ ├── mpeg4.js
│ │ │ │ ├── multibackgrounds.js
│ │ │ │ ├── multicolumn.js
│ │ │ │ ├── mutation-events.js
│ │ │ │ ├── mutationobserver.js
│ │ │ │ ├── namevalue-storage.js
│ │ │ │ ├── native-filesystem-api.js
│ │ │ │ ├── nav-timing.js
│ │ │ │ ├── navigator-language.js
│ │ │ │ ├── netinfo.js
│ │ │ │ ├── notifications.js
│ │ │ │ ├── object-entries.js
│ │ │ │ ├── object-fit.js
│ │ │ │ ├── object-observe.js
│ │ │ │ ├── object-values.js
│ │ │ │ ├── objectrtc.js
│ │ │ │ ├── offline-apps.js
│ │ │ │ ├── offscreencanvas.js
│ │ │ │ ├── ogg-vorbis.js
│ │ │ │ ├── ogv.js
│ │ │ │ ├── ol-reversed.js
│ │ │ │ ├── once-event-listener.js
│ │ │ │ ├── online-status.js
│ │ │ │ ├── opus.js
│ │ │ │ ├── orientation-sensor.js
│ │ │ │ ├── outline.js
│ │ │ │ ├── pad-start-end.js
│ │ │ │ ├── page-transition-events.js
│ │ │ │ ├── pagevisibility.js
│ │ │ │ ├── passive-event-listener.js
│ │ │ │ ├── passwordrules.js
│ │ │ │ ├── path2d.js
│ │ │ │ ├── payment-request.js
│ │ │ │ ├── pdf-viewer.js
│ │ │ │ ├── permissions-api.js
│ │ │ │ ├── permissions-policy.js
│ │ │ │ ├── picture-in-picture.js
│ │ │ │ ├── picture.js
│ │ │ │ ├── ping.js
│ │ │ │ ├── png-alpha.js
│ │ │ │ ├── pointer-events.js
│ │ │ │ ├── pointer.js
│ │ │ │ ├── pointerlock.js
│ │ │ │ ├── portals.js
│ │ │ │ ├── prefers-color-scheme.js
│ │ │ │ ├── prefers-reduced-motion.js
│ │ │ │ ├── private-class-fields.js
│ │ │ │ ├── private-methods-and-accessors.js
│ │ │ │ ├── progress.js
│ │ │ │ ├── promise-finally.js
│ │ │ │ ├── promises.js
│ │ │ │ ├── proximity.js
│ │ │ │ ├── proxy.js
│ │ │ │ ├── public-class-fields.js
│ │ │ │ ├── publickeypinning.js
│ │ │ │ ├── push-api.js
│ │ │ │ ├── queryselector.js
│ │ │ │ ├── readonly-attr.js
│ │ │ │ ├── referrer-policy.js
│ │ │ │ ├── registerprotocolhandler.js
│ │ │ │ ├── rel-noopener.js
│ │ │ │ ├── rel-noreferrer.js
│ │ │ │ ├── rellist.js
│ │ │ │ ├── rem.js
│ │ │ │ ├── requestanimationframe.js
│ │ │ │ ├── requestidlecallback.js
│ │ │ │ ├── resizeobserver.js
│ │ │ │ ├── resource-timing.js
│ │ │ │ ├── rest-parameters.js
│ │ │ │ ├── rtcpeerconnection.js
│ │ │ │ ├── ruby.js
│ │ │ │ ├── run-in.js
│ │ │ │ ├── same-site-cookie-attribute.js
│ │ │ │ ├── screen-orientation.js
│ │ │ │ ├── script-async.js
│ │ │ │ ├── script-defer.js
│ │ │ │ ├── scrollintoview.js
│ │ │ │ ├── scrollintoviewifneeded.js
│ │ │ │ ├── sdch.js
│ │ │ │ ├── selection-api.js
│ │ │ │ ├── server-timing.js
│ │ │ │ ├── serviceworkers.js
│ │ │ │ ├── setimmediate.js
│ │ │ │ ├── sha-2.js
│ │ │ │ ├── shadowdom.js
│ │ │ │ ├── shadowdomv1.js
│ │ │ │ ├── sharedarraybuffer.js
│ │ │ │ ├── sharedworkers.js
│ │ │ │ ├── sni.js
│ │ │ │ ├── spdy.js
│ │ │ │ ├── speech-recognition.js
│ │ │ │ ├── speech-synthesis.js
│ │ │ │ ├── spellcheck-attribute.js
│ │ │ │ ├── sql-storage.js
│ │ │ │ ├── srcset.js
│ │ │ │ ├── stream.js
│ │ │ │ ├── streams.js
│ │ │ │ ├── stricttransportsecurity.js
│ │ │ │ ├── style-scoped.js
│ │ │ │ ├── subresource-integrity.js
│ │ │ │ ├── svg-css.js
│ │ │ │ ├── svg-filters.js
│ │ │ │ ├── svg-fonts.js
│ │ │ │ ├── svg-fragment.js
│ │ │ │ ├── svg-html.js
│ │ │ │ ├── svg-html5.js
│ │ │ │ ├── svg-img.js
│ │ │ │ ├── svg-smil.js
│ │ │ │ ├── svg.js
│ │ │ │ ├── sxg.js
│ │ │ │ ├── tabindex-attr.js
│ │ │ │ ├── template-literals.js
│ │ │ │ ├── template.js
│ │ │ │ ├── temporal.js
│ │ │ │ ├── testfeat.js
│ │ │ │ ├── text-decoration.js
│ │ │ │ ├── text-emphasis.js
│ │ │ │ ├── text-overflow.js
│ │ │ │ ├── text-size-adjust.js
│ │ │ │ ├── text-stroke.js
│ │ │ │ ├── text-underline-offset.js
│ │ │ │ ├── textcontent.js
│ │ │ │ ├── textencoder.js
│ │ │ │ ├── tls1-1.js
│ │ │ │ ├── tls1-2.js
│ │ │ │ ├── tls1-3.js
│ │ │ │ ├── token-binding.js
│ │ │ │ ├── touch.js
│ │ │ │ ├── transforms2d.js
│ │ │ │ ├── transforms3d.js
│ │ │ │ ├── trusted-types.js
│ │ │ │ ├── ttf.js
│ │ │ │ ├── typedarrays.js
│ │ │ │ ├── u2f.js
│ │ │ │ ├── unhandledrejection.js
│ │ │ │ ├── upgradeinsecurerequests.js
│ │ │ │ ├── url-scroll-to-text-fragment.js
│ │ │ │ ├── url.js
│ │ │ │ ├── urlsearchparams.js
│ │ │ │ ├── use-strict.js
│ │ │ │ ├── user-select-none.js
│ │ │ │ ├── user-timing.js
│ │ │ │ ├── variable-fonts.js
│ │ │ │ ├── vector-effect.js
│ │ │ │ ├── vibration.js
│ │ │ │ ├── video.js
│ │ │ │ ├── videotracks.js
│ │ │ │ ├── viewport-unit-variants.js
│ │ │ │ ├── viewport-units.js
│ │ │ │ ├── wai-aria.js
│ │ │ │ ├── wake-lock.js
│ │ │ │ ├── wasm.js
│ │ │ │ ├── wav.js
│ │ │ │ ├── wbr-element.js
│ │ │ │ ├── web-animation.js
│ │ │ │ ├── web-app-manifest.js
│ │ │ │ ├── web-bluetooth.js
│ │ │ │ ├── web-serial.js
│ │ │ │ ├── web-share.js
│ │ │ │ ├── webauthn.js
│ │ │ │ ├── webgl.js
│ │ │ │ ├── webgl2.js
│ │ │ │ ├── webgpu.js
│ │ │ │ ├── webhid.js
│ │ │ │ ├── webkit-user-drag.js
│ │ │ │ ├── webm.js
│ │ │ │ ├── webnfc.js
│ │ │ │ ├── webp.js
│ │ │ │ ├── websockets.js
│ │ │ │ ├── webusb.js
│ │ │ │ ├── webvr.js
│ │ │ │ ├── webvtt.js
│ │ │ │ ├── webworkers.js
│ │ │ │ ├── webxr.js
│ │ │ │ ├── will-change.js
│ │ │ │ ├── woff.js
│ │ │ │ ├── woff2.js
│ │ │ │ ├── word-break.js
│ │ │ │ ├── wordwrap.js
│ │ │ │ ├── x-doc-messaging.js
│ │ │ │ ├── x-frame-options.js
│ │ │ │ ├── xhr2.js
│ │ │ │ ├── xhtml.js
│ │ │ │ ├── xhtmlsmil.js
│ │ │ │ └── xml-serializer.js
│ │ │ └── regions
│ │ │ │ ├── AD.js
│ │ │ │ ├── AE.js
│ │ │ │ ├── AF.js
│ │ │ │ ├── AG.js
│ │ │ │ ├── AI.js
│ │ │ │ ├── AL.js
│ │ │ │ ├── AM.js
│ │ │ │ ├── AO.js
│ │ │ │ ├── AR.js
│ │ │ │ ├── AS.js
│ │ │ │ ├── AT.js
│ │ │ │ ├── AU.js
│ │ │ │ ├── AW.js
│ │ │ │ ├── AX.js
│ │ │ │ ├── AZ.js
│ │ │ │ ├── BA.js
│ │ │ │ ├── BB.js
│ │ │ │ ├── BD.js
│ │ │ │ ├── BE.js
│ │ │ │ ├── BF.js
│ │ │ │ ├── BG.js
│ │ │ │ ├── BH.js
│ │ │ │ ├── BI.js
│ │ │ │ ├── BJ.js
│ │ │ │ ├── BM.js
│ │ │ │ ├── BN.js
│ │ │ │ ├── BO.js
│ │ │ │ ├── BR.js
│ │ │ │ ├── BS.js
│ │ │ │ ├── BT.js
│ │ │ │ ├── BW.js
│ │ │ │ ├── BY.js
│ │ │ │ ├── BZ.js
│ │ │ │ ├── CA.js
│ │ │ │ ├── CD.js
│ │ │ │ ├── CF.js
│ │ │ │ ├── CG.js
│ │ │ │ ├── CH.js
│ │ │ │ ├── CI.js
│ │ │ │ ├── CK.js
│ │ │ │ ├── CL.js
│ │ │ │ ├── CM.js
│ │ │ │ ├── CN.js
│ │ │ │ ├── CO.js
│ │ │ │ ├── CR.js
│ │ │ │ ├── CU.js
│ │ │ │ ├── CV.js
│ │ │ │ ├── CX.js
│ │ │ │ ├── CY.js
│ │ │ │ ├── CZ.js
│ │ │ │ ├── DE.js
│ │ │ │ ├── DJ.js
│ │ │ │ ├── DK.js
│ │ │ │ ├── DM.js
│ │ │ │ ├── DO.js
│ │ │ │ ├── DZ.js
│ │ │ │ ├── EC.js
│ │ │ │ ├── EE.js
│ │ │ │ ├── EG.js
│ │ │ │ ├── ER.js
│ │ │ │ ├── ES.js
│ │ │ │ ├── ET.js
│ │ │ │ ├── FI.js
│ │ │ │ ├── FJ.js
│ │ │ │ ├── FK.js
│ │ │ │ ├── FM.js
│ │ │ │ ├── FO.js
│ │ │ │ ├── FR.js
│ │ │ │ ├── GA.js
│ │ │ │ ├── GB.js
│ │ │ │ ├── GD.js
│ │ │ │ ├── GE.js
│ │ │ │ ├── GF.js
│ │ │ │ ├── GG.js
│ │ │ │ ├── GH.js
│ │ │ │ ├── GI.js
│ │ │ │ ├── GL.js
│ │ │ │ ├── GM.js
│ │ │ │ ├── GN.js
│ │ │ │ ├── GP.js
│ │ │ │ ├── GQ.js
│ │ │ │ ├── GR.js
│ │ │ │ ├── GT.js
│ │ │ │ ├── GU.js
│ │ │ │ ├── GW.js
│ │ │ │ ├── GY.js
│ │ │ │ ├── HK.js
│ │ │ │ ├── HN.js
│ │ │ │ ├── HR.js
│ │ │ │ ├── HT.js
│ │ │ │ ├── HU.js
│ │ │ │ ├── ID.js
│ │ │ │ ├── IE.js
│ │ │ │ ├── IL.js
│ │ │ │ ├── IM.js
│ │ │ │ ├── IN.js
│ │ │ │ ├── IQ.js
│ │ │ │ ├── IR.js
│ │ │ │ ├── IS.js
│ │ │ │ ├── IT.js
│ │ │ │ ├── JE.js
│ │ │ │ ├── JM.js
│ │ │ │ ├── JO.js
│ │ │ │ ├── JP.js
│ │ │ │ ├── KE.js
│ │ │ │ ├── KG.js
│ │ │ │ ├── KH.js
│ │ │ │ ├── KI.js
│ │ │ │ ├── KM.js
│ │ │ │ ├── KN.js
│ │ │ │ ├── KP.js
│ │ │ │ ├── KR.js
│ │ │ │ ├── KW.js
│ │ │ │ ├── KY.js
│ │ │ │ ├── KZ.js
│ │ │ │ ├── LA.js
│ │ │ │ ├── LB.js
│ │ │ │ ├── LC.js
│ │ │ │ ├── LI.js
│ │ │ │ ├── LK.js
│ │ │ │ ├── LR.js
│ │ │ │ ├── LS.js
│ │ │ │ ├── LT.js
│ │ │ │ ├── LU.js
│ │ │ │ ├── LV.js
│ │ │ │ ├── LY.js
│ │ │ │ ├── MA.js
│ │ │ │ ├── MC.js
│ │ │ │ ├── MD.js
│ │ │ │ ├── ME.js
│ │ │ │ ├── MG.js
│ │ │ │ ├── MH.js
│ │ │ │ ├── MK.js
│ │ │ │ ├── ML.js
│ │ │ │ ├── MM.js
│ │ │ │ ├── MN.js
│ │ │ │ ├── MO.js
│ │ │ │ ├── MP.js
│ │ │ │ ├── MQ.js
│ │ │ │ ├── MR.js
│ │ │ │ ├── MS.js
│ │ │ │ ├── MT.js
│ │ │ │ ├── MU.js
│ │ │ │ ├── MV.js
│ │ │ │ ├── MW.js
│ │ │ │ ├── MX.js
│ │ │ │ ├── MY.js
│ │ │ │ ├── MZ.js
│ │ │ │ ├── NA.js
│ │ │ │ ├── NC.js
│ │ │ │ ├── NE.js
│ │ │ │ ├── NF.js
│ │ │ │ ├── NG.js
│ │ │ │ ├── NI.js
│ │ │ │ ├── NL.js
│ │ │ │ ├── NO.js
│ │ │ │ ├── NP.js
│ │ │ │ ├── NR.js
│ │ │ │ ├── NU.js
│ │ │ │ ├── NZ.js
│ │ │ │ ├── OM.js
│ │ │ │ ├── PA.js
│ │ │ │ ├── PE.js
│ │ │ │ ├── PF.js
│ │ │ │ ├── PG.js
│ │ │ │ ├── PH.js
│ │ │ │ ├── PK.js
│ │ │ │ ├── PL.js
│ │ │ │ ├── PM.js
│ │ │ │ ├── PN.js
│ │ │ │ ├── PR.js
│ │ │ │ ├── PS.js
│ │ │ │ ├── PT.js
│ │ │ │ ├── PW.js
│ │ │ │ ├── PY.js
│ │ │ │ ├── QA.js
│ │ │ │ ├── RE.js
│ │ │ │ ├── RO.js
│ │ │ │ ├── RS.js
│ │ │ │ ├── RU.js
│ │ │ │ ├── RW.js
│ │ │ │ ├── SA.js
│ │ │ │ ├── SB.js
│ │ │ │ ├── SC.js
│ │ │ │ ├── SD.js
│ │ │ │ ├── SE.js
│ │ │ │ ├── SG.js
│ │ │ │ ├── SH.js
│ │ │ │ ├── SI.js
│ │ │ │ ├── SK.js
│ │ │ │ ├── SL.js
│ │ │ │ ├── SM.js
│ │ │ │ ├── SN.js
│ │ │ │ ├── SO.js
│ │ │ │ ├── SR.js
│ │ │ │ ├── ST.js
│ │ │ │ ├── SV.js
│ │ │ │ ├── SY.js
│ │ │ │ ├── SZ.js
│ │ │ │ ├── TC.js
│ │ │ │ ├── TD.js
│ │ │ │ ├── TG.js
│ │ │ │ ├── TH.js
│ │ │ │ ├── TJ.js
│ │ │ │ ├── TK.js
│ │ │ │ ├── TL.js
│ │ │ │ ├── TM.js
│ │ │ │ ├── TN.js
│ │ │ │ ├── TO.js
│ │ │ │ ├── TR.js
│ │ │ │ ├── TT.js
│ │ │ │ ├── TV.js
│ │ │ │ ├── TW.js
│ │ │ │ ├── TZ.js
│ │ │ │ ├── UA.js
│ │ │ │ ├── UG.js
│ │ │ │ ├── US.js
│ │ │ │ ├── UY.js
│ │ │ │ ├── UZ.js
│ │ │ │ ├── VA.js
│ │ │ │ ├── VC.js
│ │ │ │ ├── VE.js
│ │ │ │ ├── VG.js
│ │ │ │ ├── VI.js
│ │ │ │ ├── VN.js
│ │ │ │ ├── VU.js
│ │ │ │ ├── WF.js
│ │ │ │ ├── WS.js
│ │ │ │ ├── YE.js
│ │ │ │ ├── YT.js
│ │ │ │ ├── ZA.js
│ │ │ │ ├── ZM.js
│ │ │ │ ├── ZW.js
│ │ │ │ ├── alt-af.js
│ │ │ │ ├── alt-an.js
│ │ │ │ ├── alt-as.js
│ │ │ │ ├── alt-eu.js
│ │ │ │ ├── alt-na.js
│ │ │ │ ├── alt-oc.js
│ │ │ │ ├── alt-sa.js
│ │ │ │ └── alt-ww.js
│ │ └── package.json
│ ├── chalk
│ │ ├── index.js
│ │ ├── index.js.flow
│ │ ├── license
│ │ ├── package.json
│ │ ├── readme.md
│ │ ├── templates.js
│ │ └── types
│ │ │ └── index.d.ts
│ ├── chokidar
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── types
│ │ │ └── index.d.ts
│ ├── color-convert
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── conversions.js
│ │ ├── index.js
│ │ ├── package.json
│ │ └── route.js
│ ├── color-name
│ │ ├── .eslintrc.json
│ │ ├── .npmignore
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── test.js
│ ├── commander
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── Readme.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── typings
│ │ │ └── index.d.ts
│ ├── concat-map
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── README.markdown
│ │ ├── example
│ │ │ └── map.js
│ │ ├── index.js
│ │ ├── package.json
│ │ └── test
│ │ │ └── map.js
│ ├── convert-source-map
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── debug
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── package.json
│ │ └── src
│ │ │ ├── browser.js
│ │ │ ├── common.js
│ │ │ ├── index.js
│ │ │ └── node.js
│ ├── electron-to-chromium
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── chromium-versions.js
│ │ ├── chromium-versions.json
│ │ ├── full-chromium-versions.js
│ │ ├── full-chromium-versions.json
│ │ ├── full-versions.js
│ │ ├── full-versions.json
│ │ ├── index.js
│ │ ├── package.json
│ │ ├── versions.js
│ │ └── versions.json
│ ├── escalade
│ │ ├── index.d.ts
│ │ ├── license
│ │ ├── package.json
│ │ ├── readme.md
│ │ └── sync
│ │ │ ├── index.d.ts
│ │ │ ├── index.js
│ │ │ └── index.mjs
│ ├── escape-string-regexp
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── fill-range
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── fs-readdir-recursive
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── fs.realpath
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── old.js
│ │ └── package.json
│ ├── fsevents
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── fsevents.d.ts
│ │ ├── fsevents.js
│ │ ├── fsevents.node
│ │ └── package.json
│ ├── gensync
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── index.js.flow
│ │ ├── package.json
│ │ └── test
│ │ │ ├── .babelrc
│ │ │ └── index.test.js
│ ├── glob-parent
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── glob
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── common.js
│ │ ├── glob.js
│ │ ├── package.json
│ │ └── sync.js
│ ├── globals
│ │ ├── globals.json
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── has-flag
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── inflight
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── inflight.js
│ │ └── package.json
│ ├── inherits
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── inherits.js
│ │ ├── inherits_browser.js
│ │ └── package.json
│ ├── is-binary-path
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── is-extglob
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── is-glob
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── is-number
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── js-tokens
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── jsesc
│ │ ├── LICENSE-MIT.txt
│ │ ├── README.md
│ │ ├── bin
│ │ │ └── jsesc
│ │ ├── jsesc.js
│ │ ├── man
│ │ │ └── jsesc.1
│ │ └── package.json
│ ├── json5
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ └── package.json
│ ├── make-dir
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── license
│ │ ├── node_modules
│ │ │ ├── .bin
│ │ │ │ └── semver
│ │ │ └── semver
│ │ │ │ ├── CHANGELOG.md
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ ├── bin
│ │ │ │ └── semver
│ │ │ │ ├── package.json
│ │ │ │ ├── range.bnf
│ │ │ │ └── semver.js
│ │ ├── package.json
│ │ └── readme.md
│ ├── minimatch
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── minimatch.js
│ │ └── package.json
│ ├── ms
│ │ ├── index.js
│ │ ├── license.md
│ │ ├── package.json
│ │ └── readme.md
│ ├── node-releases
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── data
│ │ │ ├── processed
│ │ │ │ └── envs.json
│ │ │ └── release-schedule
│ │ │ │ └── release-schedule.json
│ │ └── package.json
│ ├── normalize-path
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── once
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── once.js
│ │ └── package.json
│ ├── path-is-absolute
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── picocolors
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── picocolors.browser.js
│ │ ├── picocolors.d.ts
│ │ ├── picocolors.js
│ │ └── types.ts
│ ├── picomatch
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── pify
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── readdirp
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── package.json
│ ├── safe-buffer
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── package.json
│ ├── semver
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── bin
│ │ │ └── semver.js
│ │ ├── package.json
│ │ ├── range.bnf
│ │ └── semver.js
│ ├── slash
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── supports-color
│ │ ├── browser.js
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── to-fast-properties
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── to-regex-range
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── update-browserslist-db
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── check-npm-version.js
│ │ ├── cli.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── package.json
│ └── wrappy
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── package.json
│ │ └── wrappy.js
├── package-lock.json
├── package.json
├── rm_extra_semicolons.js
├── too_many_semicolons.js
├── undo_brackets.js
└── undo_hexcoding.js
├── 2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data
├── extract1.js
├── fb_example.js
├── get_quotes.js
├── node_modules
│ ├── .bin
│ │ ├── babel
│ │ ├── babel-external-helpers
│ │ ├── babel-node
│ │ ├── browserslist
│ │ ├── browserslist-lint
│ │ ├── jsesc
│ │ ├── json5
│ │ ├── parser
│ │ └── semver
│ ├── .package-lock.json
│ ├── @ampproject
│ │ └── remapping
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ ├── @babel
│ │ ├── cli
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── bin
│ │ │ │ ├── babel-external-helpers.js
│ │ │ │ └── babel.js
│ │ │ ├── index.js
│ │ │ └── package.json
│ │ ├── code-frame
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── compat-data
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── corejs2-built-ins.js
│ │ │ ├── corejs3-shipped-proposals.js
│ │ │ ├── data
│ │ │ │ ├── corejs2-built-ins.json
│ │ │ │ ├── corejs3-shipped-proposals.json
│ │ │ │ ├── native-modules.json
│ │ │ │ ├── overlapping-plugins.json
│ │ │ │ ├── plugin-bugfixes.json
│ │ │ │ └── plugins.json
│ │ │ ├── native-modules.js
│ │ │ ├── overlapping-plugins.js
│ │ │ ├── package.json
│ │ │ ├── plugin-bugfixes.js
│ │ │ └── plugins.js
│ │ ├── core
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── cjs-proxy.cjs
│ │ │ ├── package.json
│ │ │ └── src
│ │ │ │ ├── config
│ │ │ │ ├── files
│ │ │ │ │ ├── index-browser.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── resolve-targets-browser.ts
│ │ │ │ └── resolve-targets.ts
│ │ │ │ ├── transform-file-browser.ts
│ │ │ │ └── transform-file.ts
│ │ ├── generator
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── node_modules
│ │ │ │ └── @jridgewell
│ │ │ │ │ └── gen-mapping
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── src
│ │ │ │ │ ├── gen-mapping.ts
│ │ │ │ │ ├── sourcemap-segment.ts
│ │ │ │ │ └── types.ts
│ │ │ └── package.json
│ │ ├── helper-compilation-targets
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-environment-visitor
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-function-name
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-hoist-variables
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-module-imports
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-module-transforms
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-simple-access
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-split-export-declaration
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-string-parser
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-validator-identifier
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── scripts
│ │ │ │ └── generate-identifier-regex.js
│ │ ├── helper-validator-option
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helpers
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── scripts
│ │ │ │ ├── generate-helpers.js
│ │ │ │ ├── generate-regenerator-runtime.js
│ │ │ │ └── package.json
│ │ ├── highlight
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── parser
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── bin
│ │ │ │ └── babel-parser.js
│ │ │ ├── index.cjs
│ │ │ ├── package.json
│ │ │ └── typings
│ │ │ │ └── babel-parser.d.ts
│ │ ├── template
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── traverse
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── scripts
│ │ │ │ ├── generators
│ │ │ │ ├── asserts.js
│ │ │ │ └── validators.js
│ │ │ │ └── package.json
│ │ └── types
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── scripts
│ │ │ ├── generators
│ │ │ ├── asserts.js
│ │ │ ├── ast-types.js
│ │ │ ├── builders.js
│ │ │ ├── constants.js
│ │ │ ├── docs.js
│ │ │ ├── flow.js
│ │ │ ├── typescript-legacy.js
│ │ │ └── validators.js
│ │ │ ├── package.json
│ │ │ └── utils
│ │ │ ├── formatBuilderName.js
│ │ │ ├── lowerFirst.js
│ │ │ ├── stringifyValidator.js
│ │ │ └── toFunctionName.js
│ ├── @jridgewell
│ │ ├── gen-mapping
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── resolve-uri
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── set-array
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── src
│ │ │ │ └── set-array.ts
│ │ ├── sourcemap-codec
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── src
│ │ │ │ └── sourcemap-codec.ts
│ │ └── trace-mapping
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── src
│ │ │ ├── any-map.ts
│ │ │ ├── binary-search.ts
│ │ │ ├── by-source.ts
│ │ │ ├── resolve.ts
│ │ │ ├── sort.ts
│ │ │ ├── sourcemap-segment.ts
│ │ │ ├── strip-filename.ts
│ │ │ ├── trace-mapping.ts
│ │ │ └── types.ts
│ ├── @nicolo-ribaudo
│ │ └── chokidar-2
│ │ │ ├── README.md
│ │ │ ├── build-chokidar.sh
│ │ │ ├── package.json
│ │ │ └── types.d.ts
│ ├── ansi-styles
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── anymatch
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── package.json
│ ├── babel
│ │ ├── .npmignore
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── balanced-match
│ │ ├── .github
│ │ │ └── FUNDING.yml
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── binary-extensions
│ │ ├── binary-extensions.json
│ │ ├── binary-extensions.json.d.ts
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── brace-expansion
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── braces
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── browserslist
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── browser.js
│ │ ├── cli.js
│ │ ├── error.d.ts
│ │ ├── error.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── node.js
│ │ ├── package.json
│ │ └── parse.js
│ ├── caniuse-lite
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── data
│ │ │ ├── agents.js
│ │ │ ├── browserVersions.js
│ │ │ ├── browsers.js
│ │ │ ├── features.js
│ │ │ ├── features
│ │ │ │ ├── aac.js
│ │ │ │ ├── abortcontroller.js
│ │ │ │ ├── ac3-ec3.js
│ │ │ │ ├── accelerometer.js
│ │ │ │ ├── addeventlistener.js
│ │ │ │ ├── alternate-stylesheet.js
│ │ │ │ ├── ambient-light.js
│ │ │ │ ├── apng.js
│ │ │ │ ├── array-find-index.js
│ │ │ │ ├── array-find.js
│ │ │ │ ├── array-flat.js
│ │ │ │ ├── array-includes.js
│ │ │ │ ├── arrow-functions.js
│ │ │ │ ├── asmjs.js
│ │ │ │ ├── async-clipboard.js
│ │ │ │ ├── async-functions.js
│ │ │ │ ├── atob-btoa.js
│ │ │ │ ├── audio-api.js
│ │ │ │ ├── audio.js
│ │ │ │ ├── audiotracks.js
│ │ │ │ ├── autofocus.js
│ │ │ │ ├── auxclick.js
│ │ │ │ ├── av1.js
│ │ │ │ ├── avif.js
│ │ │ │ ├── background-attachment.js
│ │ │ │ ├── background-clip-text.js
│ │ │ │ ├── background-img-opts.js
│ │ │ │ ├── background-position-x-y.js
│ │ │ │ ├── background-repeat-round-space.js
│ │ │ │ ├── background-sync.js
│ │ │ │ ├── battery-status.js
│ │ │ │ ├── beacon.js
│ │ │ │ ├── beforeafterprint.js
│ │ │ │ ├── bigint.js
│ │ │ │ ├── blobbuilder.js
│ │ │ │ ├── bloburls.js
│ │ │ │ ├── border-image.js
│ │ │ │ ├── border-radius.js
│ │ │ │ ├── broadcastchannel.js
│ │ │ │ ├── brotli.js
│ │ │ │ ├── calc.js
│ │ │ │ ├── canvas-blending.js
│ │ │ │ ├── canvas-text.js
│ │ │ │ ├── canvas.js
│ │ │ │ ├── ch-unit.js
│ │ │ │ ├── chacha20-poly1305.js
│ │ │ │ ├── channel-messaging.js
│ │ │ │ ├── childnode-remove.js
│ │ │ │ ├── classlist.js
│ │ │ │ ├── client-hints-dpr-width-viewport.js
│ │ │ │ ├── clipboard.js
│ │ │ │ ├── colr-v1.js
│ │ │ │ ├── colr.js
│ │ │ │ ├── comparedocumentposition.js
│ │ │ │ ├── console-basic.js
│ │ │ │ ├── console-time.js
│ │ │ │ ├── const.js
│ │ │ │ ├── constraint-validation.js
│ │ │ │ ├── contenteditable.js
│ │ │ │ ├── contentsecuritypolicy.js
│ │ │ │ ├── contentsecuritypolicy2.js
│ │ │ │ ├── cookie-store-api.js
│ │ │ │ ├── cors.js
│ │ │ │ ├── createimagebitmap.js
│ │ │ │ ├── credential-management.js
│ │ │ │ ├── cryptography.js
│ │ │ │ ├── css-all.js
│ │ │ │ ├── css-animation.js
│ │ │ │ ├── css-any-link.js
│ │ │ │ ├── css-appearance.js
│ │ │ │ ├── css-at-counter-style.js
│ │ │ │ ├── css-autofill.js
│ │ │ │ ├── css-backdrop-filter.js
│ │ │ │ ├── css-background-offsets.js
│ │ │ │ ├── css-backgroundblendmode.js
│ │ │ │ ├── css-boxdecorationbreak.js
│ │ │ │ ├── css-boxshadow.js
│ │ │ │ ├── css-canvas.js
│ │ │ │ ├── css-caret-color.js
│ │ │ │ ├── css-cascade-layers.js
│ │ │ │ ├── css-case-insensitive.js
│ │ │ │ ├── css-clip-path.js
│ │ │ │ ├── css-color-adjust.js
│ │ │ │ ├── css-color-function.js
│ │ │ │ ├── css-conic-gradients.js
│ │ │ │ ├── css-container-queries.js
│ │ │ │ ├── css-container-query-units.js
│ │ │ │ ├── css-containment.js
│ │ │ │ ├── css-content-visibility.js
│ │ │ │ ├── css-counters.js
│ │ │ │ ├── css-crisp-edges.js
│ │ │ │ ├── css-cross-fade.js
│ │ │ │ ├── css-default-pseudo.js
│ │ │ │ ├── css-descendant-gtgt.js
│ │ │ │ ├── css-deviceadaptation.js
│ │ │ │ ├── css-dir-pseudo.js
│ │ │ │ ├── css-display-contents.js
│ │ │ │ ├── css-element-function.js
│ │ │ │ ├── css-env-function.js
│ │ │ │ ├── css-exclusions.js
│ │ │ │ ├── css-featurequeries.js
│ │ │ │ ├── css-file-selector-button.js
│ │ │ │ ├── css-filter-function.js
│ │ │ │ ├── css-filters.js
│ │ │ │ ├── css-first-letter.js
│ │ │ │ ├── css-first-line.js
│ │ │ │ ├── css-fixed.js
│ │ │ │ ├── css-focus-visible.js
│ │ │ │ ├── css-focus-within.js
│ │ │ │ ├── css-font-palette.js
│ │ │ │ ├── css-font-rendering-controls.js
│ │ │ │ ├── css-font-stretch.js
│ │ │ │ ├── css-gencontent.js
│ │ │ │ ├── css-gradients.js
│ │ │ │ ├── css-grid-animation.js
│ │ │ │ ├── css-grid.js
│ │ │ │ ├── css-hanging-punctuation.js
│ │ │ │ ├── css-has.js
│ │ │ │ ├── css-hyphenate.js
│ │ │ │ ├── css-hyphens.js
│ │ │ │ ├── css-image-orientation.js
│ │ │ │ ├── css-image-set.js
│ │ │ │ ├── css-in-out-of-range.js
│ │ │ │ ├── css-indeterminate-pseudo.js
│ │ │ │ ├── css-initial-letter.js
│ │ │ │ ├── css-initial-value.js
│ │ │ │ ├── css-lch-lab.js
│ │ │ │ ├── css-letter-spacing.js
│ │ │ │ ├── css-line-clamp.js
│ │ │ │ ├── css-logical-props.js
│ │ │ │ ├── css-marker-pseudo.js
│ │ │ │ ├── css-masks.js
│ │ │ │ ├── css-matches-pseudo.js
│ │ │ │ ├── css-math-functions.js
│ │ │ │ ├── css-media-interaction.js
│ │ │ │ ├── css-media-resolution.js
│ │ │ │ ├── css-media-scripting.js
│ │ │ │ ├── css-mediaqueries.js
│ │ │ │ ├── css-mixblendmode.js
│ │ │ │ ├── css-motion-paths.js
│ │ │ │ ├── css-namespaces.js
│ │ │ │ ├── css-nesting.js
│ │ │ │ ├── css-not-sel-list.js
│ │ │ │ ├── css-nth-child-of.js
│ │ │ │ ├── css-opacity.js
│ │ │ │ ├── css-optional-pseudo.js
│ │ │ │ ├── css-overflow-anchor.js
│ │ │ │ ├── css-overflow-overlay.js
│ │ │ │ ├── css-overflow.js
│ │ │ │ ├── css-overscroll-behavior.js
│ │ │ │ ├── css-page-break.js
│ │ │ │ ├── css-paged-media.js
│ │ │ │ ├── css-paint-api.js
│ │ │ │ ├── css-placeholder-shown.js
│ │ │ │ ├── css-placeholder.js
│ │ │ │ ├── css-print-color-adjust.js
│ │ │ │ ├── css-read-only-write.js
│ │ │ │ ├── css-rebeccapurple.js
│ │ │ │ ├── css-reflections.js
│ │ │ │ ├── css-regions.js
│ │ │ │ ├── css-repeating-gradients.js
│ │ │ │ ├── css-resize.js
│ │ │ │ ├── css-revert-value.js
│ │ │ │ ├── css-rrggbbaa.js
│ │ │ │ ├── css-scroll-behavior.js
│ │ │ │ ├── css-scroll-timeline.js
│ │ │ │ ├── css-scrollbar.js
│ │ │ │ ├── css-sel2.js
│ │ │ │ ├── css-sel3.js
│ │ │ │ ├── css-selection.js
│ │ │ │ ├── css-shapes.js
│ │ │ │ ├── css-snappoints.js
│ │ │ │ ├── css-sticky.js
│ │ │ │ ├── css-subgrid.js
│ │ │ │ ├── css-supports-api.js
│ │ │ │ ├── css-table.js
│ │ │ │ ├── css-text-align-last.js
│ │ │ │ ├── css-text-indent.js
│ │ │ │ ├── css-text-justify.js
│ │ │ │ ├── css-text-orientation.js
│ │ │ │ ├── css-text-spacing.js
│ │ │ │ ├── css-textshadow.js
│ │ │ │ ├── css-touch-action-2.js
│ │ │ │ ├── css-touch-action.js
│ │ │ │ ├── css-transitions.js
│ │ │ │ ├── css-unicode-bidi.js
│ │ │ │ ├── css-unset-value.js
│ │ │ │ ├── css-variables.js
│ │ │ │ ├── css-when-else.js
│ │ │ │ ├── css-widows-orphans.js
│ │ │ │ ├── css-width-stretch.js
│ │ │ │ ├── css-writing-mode.js
│ │ │ │ ├── css-zoom.js
│ │ │ │ ├── css3-attr.js
│ │ │ │ ├── css3-boxsizing.js
│ │ │ │ ├── css3-colors.js
│ │ │ │ ├── css3-cursors-grab.js
│ │ │ │ ├── css3-cursors-newer.js
│ │ │ │ ├── css3-cursors.js
│ │ │ │ ├── css3-tabsize.js
│ │ │ │ ├── currentcolor.js
│ │ │ │ ├── custom-elements.js
│ │ │ │ ├── custom-elementsv1.js
│ │ │ │ ├── customevent.js
│ │ │ │ ├── datalist.js
│ │ │ │ ├── dataset.js
│ │ │ │ ├── datauri.js
│ │ │ │ ├── date-tolocaledatestring.js
│ │ │ │ ├── declarative-shadow-dom.js
│ │ │ │ ├── decorators.js
│ │ │ │ ├── details.js
│ │ │ │ ├── deviceorientation.js
│ │ │ │ ├── devicepixelratio.js
│ │ │ │ ├── dialog.js
│ │ │ │ ├── dispatchevent.js
│ │ │ │ ├── dnssec.js
│ │ │ │ ├── do-not-track.js
│ │ │ │ ├── document-currentscript.js
│ │ │ │ ├── document-evaluate-xpath.js
│ │ │ │ ├── document-execcommand.js
│ │ │ │ ├── document-policy.js
│ │ │ │ ├── document-scrollingelement.js
│ │ │ │ ├── documenthead.js
│ │ │ │ ├── dom-manip-convenience.js
│ │ │ │ ├── dom-range.js
│ │ │ │ ├── domcontentloaded.js
│ │ │ │ ├── domfocusin-domfocusout-events.js
│ │ │ │ ├── dommatrix.js
│ │ │ │ ├── download.js
│ │ │ │ ├── dragndrop.js
│ │ │ │ ├── element-closest.js
│ │ │ │ ├── element-from-point.js
│ │ │ │ ├── element-scroll-methods.js
│ │ │ │ ├── eme.js
│ │ │ │ ├── eot.js
│ │ │ │ ├── es5.js
│ │ │ │ ├── es6-class.js
│ │ │ │ ├── es6-generators.js
│ │ │ │ ├── es6-module-dynamic-import.js
│ │ │ │ ├── es6-module.js
│ │ │ │ ├── es6-number.js
│ │ │ │ ├── es6-string-includes.js
│ │ │ │ ├── es6.js
│ │ │ │ ├── eventsource.js
│ │ │ │ ├── extended-system-fonts.js
│ │ │ │ ├── feature-policy.js
│ │ │ │ ├── fetch.js
│ │ │ │ ├── fieldset-disabled.js
│ │ │ │ ├── fileapi.js
│ │ │ │ ├── filereader.js
│ │ │ │ ├── filereadersync.js
│ │ │ │ ├── filesystem.js
│ │ │ │ ├── flac.js
│ │ │ │ ├── flexbox-gap.js
│ │ │ │ ├── flexbox.js
│ │ │ │ ├── flow-root.js
│ │ │ │ ├── focusin-focusout-events.js
│ │ │ │ ├── focusoptions-preventscroll.js
│ │ │ │ ├── font-family-system-ui.js
│ │ │ │ ├── font-feature.js
│ │ │ │ ├── font-kerning.js
│ │ │ │ ├── font-loading.js
│ │ │ │ ├── font-metrics-overrides.js
│ │ │ │ ├── font-size-adjust.js
│ │ │ │ ├── font-smooth.js
│ │ │ │ ├── font-unicode-range.js
│ │ │ │ ├── font-variant-alternates.js
│ │ │ │ ├── font-variant-numeric.js
│ │ │ │ ├── fontface.js
│ │ │ │ ├── form-attribute.js
│ │ │ │ ├── form-submit-attributes.js
│ │ │ │ ├── form-validation.js
│ │ │ │ ├── forms.js
│ │ │ │ ├── fullscreen.js
│ │ │ │ ├── gamepad.js
│ │ │ │ ├── geolocation.js
│ │ │ │ ├── getboundingclientrect.js
│ │ │ │ ├── getcomputedstyle.js
│ │ │ │ ├── getelementsbyclassname.js
│ │ │ │ ├── getrandomvalues.js
│ │ │ │ ├── gyroscope.js
│ │ │ │ ├── hardwareconcurrency.js
│ │ │ │ ├── hashchange.js
│ │ │ │ ├── heif.js
│ │ │ │ ├── hevc.js
│ │ │ │ ├── hidden.js
│ │ │ │ ├── high-resolution-time.js
│ │ │ │ ├── history.js
│ │ │ │ ├── html-media-capture.js
│ │ │ │ ├── html5semantic.js
│ │ │ │ ├── http-live-streaming.js
│ │ │ │ ├── http2.js
│ │ │ │ ├── http3.js
│ │ │ │ ├── iframe-sandbox.js
│ │ │ │ ├── iframe-seamless.js
│ │ │ │ ├── iframe-srcdoc.js
│ │ │ │ ├── imagecapture.js
│ │ │ │ ├── ime.js
│ │ │ │ ├── img-naturalwidth-naturalheight.js
│ │ │ │ ├── import-maps.js
│ │ │ │ ├── imports.js
│ │ │ │ ├── indeterminate-checkbox.js
│ │ │ │ ├── indexeddb.js
│ │ │ │ ├── indexeddb2.js
│ │ │ │ ├── inline-block.js
│ │ │ │ ├── innertext.js
│ │ │ │ ├── input-autocomplete-onoff.js
│ │ │ │ ├── input-color.js
│ │ │ │ ├── input-datetime.js
│ │ │ │ ├── input-email-tel-url.js
│ │ │ │ ├── input-event.js
│ │ │ │ ├── input-file-accept.js
│ │ │ │ ├── input-file-directory.js
│ │ │ │ ├── input-file-multiple.js
│ │ │ │ ├── input-inputmode.js
│ │ │ │ ├── input-minlength.js
│ │ │ │ ├── input-number.js
│ │ │ │ ├── input-pattern.js
│ │ │ │ ├── input-placeholder.js
│ │ │ │ ├── input-range.js
│ │ │ │ ├── input-search.js
│ │ │ │ ├── input-selection.js
│ │ │ │ ├── insert-adjacent.js
│ │ │ │ ├── insertadjacenthtml.js
│ │ │ │ ├── internationalization.js
│ │ │ │ ├── intersectionobserver-v2.js
│ │ │ │ ├── intersectionobserver.js
│ │ │ │ ├── intl-pluralrules.js
│ │ │ │ ├── intrinsic-width.js
│ │ │ │ ├── jpeg2000.js
│ │ │ │ ├── jpegxl.js
│ │ │ │ ├── jpegxr.js
│ │ │ │ ├── js-regexp-lookbehind.js
│ │ │ │ ├── json.js
│ │ │ │ ├── justify-content-space-evenly.js
│ │ │ │ ├── kerning-pairs-ligatures.js
│ │ │ │ ├── keyboardevent-charcode.js
│ │ │ │ ├── keyboardevent-code.js
│ │ │ │ ├── keyboardevent-getmodifierstate.js
│ │ │ │ ├── keyboardevent-key.js
│ │ │ │ ├── keyboardevent-location.js
│ │ │ │ ├── keyboardevent-which.js
│ │ │ │ ├── lazyload.js
│ │ │ │ ├── let.js
│ │ │ │ ├── link-icon-png.js
│ │ │ │ ├── link-icon-svg.js
│ │ │ │ ├── link-rel-dns-prefetch.js
│ │ │ │ ├── link-rel-modulepreload.js
│ │ │ │ ├── link-rel-preconnect.js
│ │ │ │ ├── link-rel-prefetch.js
│ │ │ │ ├── link-rel-preload.js
│ │ │ │ ├── link-rel-prerender.js
│ │ │ │ ├── loading-lazy-attr.js
│ │ │ │ ├── localecompare.js
│ │ │ │ ├── magnetometer.js
│ │ │ │ ├── matchesselector.js
│ │ │ │ ├── matchmedia.js
│ │ │ │ ├── mathml.js
│ │ │ │ ├── maxlength.js
│ │ │ │ ├── media-attribute.js
│ │ │ │ ├── media-fragments.js
│ │ │ │ ├── media-session-api.js
│ │ │ │ ├── mediacapture-fromelement.js
│ │ │ │ ├── mediarecorder.js
│ │ │ │ ├── mediasource.js
│ │ │ │ ├── menu.js
│ │ │ │ ├── meta-theme-color.js
│ │ │ │ ├── meter.js
│ │ │ │ ├── midi.js
│ │ │ │ ├── minmaxwh.js
│ │ │ │ ├── mp3.js
│ │ │ │ ├── mpeg-dash.js
│ │ │ │ ├── mpeg4.js
│ │ │ │ ├── multibackgrounds.js
│ │ │ │ ├── multicolumn.js
│ │ │ │ ├── mutation-events.js
│ │ │ │ ├── mutationobserver.js
│ │ │ │ ├── namevalue-storage.js
│ │ │ │ ├── native-filesystem-api.js
│ │ │ │ ├── nav-timing.js
│ │ │ │ ├── navigator-language.js
│ │ │ │ ├── netinfo.js
│ │ │ │ ├── notifications.js
│ │ │ │ ├── object-entries.js
│ │ │ │ ├── object-fit.js
│ │ │ │ ├── object-observe.js
│ │ │ │ ├── object-values.js
│ │ │ │ ├── objectrtc.js
│ │ │ │ ├── offline-apps.js
│ │ │ │ ├── offscreencanvas.js
│ │ │ │ ├── ogg-vorbis.js
│ │ │ │ ├── ogv.js
│ │ │ │ ├── ol-reversed.js
│ │ │ │ ├── once-event-listener.js
│ │ │ │ ├── online-status.js
│ │ │ │ ├── opus.js
│ │ │ │ ├── orientation-sensor.js
│ │ │ │ ├── outline.js
│ │ │ │ ├── pad-start-end.js
│ │ │ │ ├── page-transition-events.js
│ │ │ │ ├── pagevisibility.js
│ │ │ │ ├── passive-event-listener.js
│ │ │ │ ├── passwordrules.js
│ │ │ │ ├── path2d.js
│ │ │ │ ├── payment-request.js
│ │ │ │ ├── pdf-viewer.js
│ │ │ │ ├── permissions-api.js
│ │ │ │ ├── permissions-policy.js
│ │ │ │ ├── picture-in-picture.js
│ │ │ │ ├── picture.js
│ │ │ │ ├── ping.js
│ │ │ │ ├── png-alpha.js
│ │ │ │ ├── pointer-events.js
│ │ │ │ ├── pointer.js
│ │ │ │ ├── pointerlock.js
│ │ │ │ ├── portals.js
│ │ │ │ ├── prefers-color-scheme.js
│ │ │ │ ├── prefers-reduced-motion.js
│ │ │ │ ├── private-class-fields.js
│ │ │ │ ├── private-methods-and-accessors.js
│ │ │ │ ├── progress.js
│ │ │ │ ├── promise-finally.js
│ │ │ │ ├── promises.js
│ │ │ │ ├── proximity.js
│ │ │ │ ├── proxy.js
│ │ │ │ ├── public-class-fields.js
│ │ │ │ ├── publickeypinning.js
│ │ │ │ ├── push-api.js
│ │ │ │ ├── queryselector.js
│ │ │ │ ├── readonly-attr.js
│ │ │ │ ├── referrer-policy.js
│ │ │ │ ├── registerprotocolhandler.js
│ │ │ │ ├── rel-noopener.js
│ │ │ │ ├── rel-noreferrer.js
│ │ │ │ ├── rellist.js
│ │ │ │ ├── rem.js
│ │ │ │ ├── requestanimationframe.js
│ │ │ │ ├── requestidlecallback.js
│ │ │ │ ├── resizeobserver.js
│ │ │ │ ├── resource-timing.js
│ │ │ │ ├── rest-parameters.js
│ │ │ │ ├── rtcpeerconnection.js
│ │ │ │ ├── ruby.js
│ │ │ │ ├── run-in.js
│ │ │ │ ├── same-site-cookie-attribute.js
│ │ │ │ ├── screen-orientation.js
│ │ │ │ ├── script-async.js
│ │ │ │ ├── script-defer.js
│ │ │ │ ├── scrollintoview.js
│ │ │ │ ├── scrollintoviewifneeded.js
│ │ │ │ ├── sdch.js
│ │ │ │ ├── selection-api.js
│ │ │ │ ├── server-timing.js
│ │ │ │ ├── serviceworkers.js
│ │ │ │ ├── setimmediate.js
│ │ │ │ ├── sha-2.js
│ │ │ │ ├── shadowdom.js
│ │ │ │ ├── shadowdomv1.js
│ │ │ │ ├── sharedarraybuffer.js
│ │ │ │ ├── sharedworkers.js
│ │ │ │ ├── sni.js
│ │ │ │ ├── spdy.js
│ │ │ │ ├── speech-recognition.js
│ │ │ │ ├── speech-synthesis.js
│ │ │ │ ├── spellcheck-attribute.js
│ │ │ │ ├── sql-storage.js
│ │ │ │ ├── srcset.js
│ │ │ │ ├── stream.js
│ │ │ │ ├── streams.js
│ │ │ │ ├── stricttransportsecurity.js
│ │ │ │ ├── style-scoped.js
│ │ │ │ ├── subresource-integrity.js
│ │ │ │ ├── svg-css.js
│ │ │ │ ├── svg-filters.js
│ │ │ │ ├── svg-fonts.js
│ │ │ │ ├── svg-fragment.js
│ │ │ │ ├── svg-html.js
│ │ │ │ ├── svg-html5.js
│ │ │ │ ├── svg-img.js
│ │ │ │ ├── svg-smil.js
│ │ │ │ ├── svg.js
│ │ │ │ ├── sxg.js
│ │ │ │ ├── tabindex-attr.js
│ │ │ │ ├── template-literals.js
│ │ │ │ ├── template.js
│ │ │ │ ├── temporal.js
│ │ │ │ ├── testfeat.js
│ │ │ │ ├── text-decoration.js
│ │ │ │ ├── text-emphasis.js
│ │ │ │ ├── text-overflow.js
│ │ │ │ ├── text-size-adjust.js
│ │ │ │ ├── text-stroke.js
│ │ │ │ ├── text-underline-offset.js
│ │ │ │ ├── textcontent.js
│ │ │ │ ├── textencoder.js
│ │ │ │ ├── tls1-1.js
│ │ │ │ ├── tls1-2.js
│ │ │ │ ├── tls1-3.js
│ │ │ │ ├── token-binding.js
│ │ │ │ ├── touch.js
│ │ │ │ ├── transforms2d.js
│ │ │ │ ├── transforms3d.js
│ │ │ │ ├── trusted-types.js
│ │ │ │ ├── ttf.js
│ │ │ │ ├── typedarrays.js
│ │ │ │ ├── u2f.js
│ │ │ │ ├── unhandledrejection.js
│ │ │ │ ├── upgradeinsecurerequests.js
│ │ │ │ ├── url-scroll-to-text-fragment.js
│ │ │ │ ├── url.js
│ │ │ │ ├── urlsearchparams.js
│ │ │ │ ├── use-strict.js
│ │ │ │ ├── user-select-none.js
│ │ │ │ ├── user-timing.js
│ │ │ │ ├── variable-fonts.js
│ │ │ │ ├── vector-effect.js
│ │ │ │ ├── vibration.js
│ │ │ │ ├── video.js
│ │ │ │ ├── videotracks.js
│ │ │ │ ├── viewport-unit-variants.js
│ │ │ │ ├── viewport-units.js
│ │ │ │ ├── wai-aria.js
│ │ │ │ ├── wake-lock.js
│ │ │ │ ├── wasm.js
│ │ │ │ ├── wav.js
│ │ │ │ ├── wbr-element.js
│ │ │ │ ├── web-animation.js
│ │ │ │ ├── web-app-manifest.js
│ │ │ │ ├── web-bluetooth.js
│ │ │ │ ├── web-serial.js
│ │ │ │ ├── web-share.js
│ │ │ │ ├── webauthn.js
│ │ │ │ ├── webgl.js
│ │ │ │ ├── webgl2.js
│ │ │ │ ├── webgpu.js
│ │ │ │ ├── webhid.js
│ │ │ │ ├── webkit-user-drag.js
│ │ │ │ ├── webm.js
│ │ │ │ ├── webnfc.js
│ │ │ │ ├── webp.js
│ │ │ │ ├── websockets.js
│ │ │ │ ├── webusb.js
│ │ │ │ ├── webvr.js
│ │ │ │ ├── webvtt.js
│ │ │ │ ├── webworkers.js
│ │ │ │ ├── webxr.js
│ │ │ │ ├── will-change.js
│ │ │ │ ├── woff.js
│ │ │ │ ├── woff2.js
│ │ │ │ ├── word-break.js
│ │ │ │ ├── wordwrap.js
│ │ │ │ ├── x-doc-messaging.js
│ │ │ │ ├── x-frame-options.js
│ │ │ │ ├── xhr2.js
│ │ │ │ ├── xhtml.js
│ │ │ │ ├── xhtmlsmil.js
│ │ │ │ └── xml-serializer.js
│ │ │ └── regions
│ │ │ │ ├── AD.js
│ │ │ │ ├── AE.js
│ │ │ │ ├── AF.js
│ │ │ │ ├── AG.js
│ │ │ │ ├── AI.js
│ │ │ │ ├── AL.js
│ │ │ │ ├── AM.js
│ │ │ │ ├── AO.js
│ │ │ │ ├── AR.js
│ │ │ │ ├── AS.js
│ │ │ │ ├── AT.js
│ │ │ │ ├── AU.js
│ │ │ │ ├── AW.js
│ │ │ │ ├── AX.js
│ │ │ │ ├── AZ.js
│ │ │ │ ├── BA.js
│ │ │ │ ├── BB.js
│ │ │ │ ├── BD.js
│ │ │ │ ├── BE.js
│ │ │ │ ├── BF.js
│ │ │ │ ├── BG.js
│ │ │ │ ├── BH.js
│ │ │ │ ├── BI.js
│ │ │ │ ├── BJ.js
│ │ │ │ ├── BM.js
│ │ │ │ ├── BN.js
│ │ │ │ ├── BO.js
│ │ │ │ ├── BR.js
│ │ │ │ ├── BS.js
│ │ │ │ ├── BT.js
│ │ │ │ ├── BW.js
│ │ │ │ ├── BY.js
│ │ │ │ ├── BZ.js
│ │ │ │ ├── CA.js
│ │ │ │ ├── CD.js
│ │ │ │ ├── CF.js
│ │ │ │ ├── CG.js
│ │ │ │ ├── CH.js
│ │ │ │ ├── CI.js
│ │ │ │ ├── CK.js
│ │ │ │ ├── CL.js
│ │ │ │ ├── CM.js
│ │ │ │ ├── CN.js
│ │ │ │ ├── CO.js
│ │ │ │ ├── CR.js
│ │ │ │ ├── CU.js
│ │ │ │ ├── CV.js
│ │ │ │ ├── CX.js
│ │ │ │ ├── CY.js
│ │ │ │ ├── CZ.js
│ │ │ │ ├── DE.js
│ │ │ │ ├── DJ.js
│ │ │ │ ├── DK.js
│ │ │ │ ├── DM.js
│ │ │ │ ├── DO.js
│ │ │ │ ├── DZ.js
│ │ │ │ ├── EC.js
│ │ │ │ ├── EE.js
│ │ │ │ ├── EG.js
│ │ │ │ ├── ER.js
│ │ │ │ ├── ES.js
│ │ │ │ ├── ET.js
│ │ │ │ ├── FI.js
│ │ │ │ ├── FJ.js
│ │ │ │ ├── FK.js
│ │ │ │ ├── FM.js
│ │ │ │ ├── FO.js
│ │ │ │ ├── FR.js
│ │ │ │ ├── GA.js
│ │ │ │ ├── GB.js
│ │ │ │ ├── GD.js
│ │ │ │ ├── GE.js
│ │ │ │ ├── GF.js
│ │ │ │ ├── GG.js
│ │ │ │ ├── GH.js
│ │ │ │ ├── GI.js
│ │ │ │ ├── GL.js
│ │ │ │ ├── GM.js
│ │ │ │ ├── GN.js
│ │ │ │ ├── GP.js
│ │ │ │ ├── GQ.js
│ │ │ │ ├── GR.js
│ │ │ │ ├── GT.js
│ │ │ │ ├── GU.js
│ │ │ │ ├── GW.js
│ │ │ │ ├── GY.js
│ │ │ │ ├── HK.js
│ │ │ │ ├── HN.js
│ │ │ │ ├── HR.js
│ │ │ │ ├── HT.js
│ │ │ │ ├── HU.js
│ │ │ │ ├── ID.js
│ │ │ │ ├── IE.js
│ │ │ │ ├── IL.js
│ │ │ │ ├── IM.js
│ │ │ │ ├── IN.js
│ │ │ │ ├── IQ.js
│ │ │ │ ├── IR.js
│ │ │ │ ├── IS.js
│ │ │ │ ├── IT.js
│ │ │ │ ├── JE.js
│ │ │ │ ├── JM.js
│ │ │ │ ├── JO.js
│ │ │ │ ├── JP.js
│ │ │ │ ├── KE.js
│ │ │ │ ├── KG.js
│ │ │ │ ├── KH.js
│ │ │ │ ├── KI.js
│ │ │ │ ├── KM.js
│ │ │ │ ├── KN.js
│ │ │ │ ├── KP.js
│ │ │ │ ├── KR.js
│ │ │ │ ├── KW.js
│ │ │ │ ├── KY.js
│ │ │ │ ├── KZ.js
│ │ │ │ ├── LA.js
│ │ │ │ ├── LB.js
│ │ │ │ ├── LC.js
│ │ │ │ ├── LI.js
│ │ │ │ ├── LK.js
│ │ │ │ ├── LR.js
│ │ │ │ ├── LS.js
│ │ │ │ ├── LT.js
│ │ │ │ ├── LU.js
│ │ │ │ ├── LV.js
│ │ │ │ ├── LY.js
│ │ │ │ ├── MA.js
│ │ │ │ ├── MC.js
│ │ │ │ ├── MD.js
│ │ │ │ ├── ME.js
│ │ │ │ ├── MG.js
│ │ │ │ ├── MH.js
│ │ │ │ ├── MK.js
│ │ │ │ ├── ML.js
│ │ │ │ ├── MM.js
│ │ │ │ ├── MN.js
│ │ │ │ ├── MO.js
│ │ │ │ ├── MP.js
│ │ │ │ ├── MQ.js
│ │ │ │ ├── MR.js
│ │ │ │ ├── MS.js
│ │ │ │ ├── MT.js
│ │ │ │ ├── MU.js
│ │ │ │ ├── MV.js
│ │ │ │ ├── MW.js
│ │ │ │ ├── MX.js
│ │ │ │ ├── MY.js
│ │ │ │ ├── MZ.js
│ │ │ │ ├── NA.js
│ │ │ │ ├── NC.js
│ │ │ │ ├── NE.js
│ │ │ │ ├── NF.js
│ │ │ │ ├── NG.js
│ │ │ │ ├── NI.js
│ │ │ │ ├── NL.js
│ │ │ │ ├── NO.js
│ │ │ │ ├── NP.js
│ │ │ │ ├── NR.js
│ │ │ │ ├── NU.js
│ │ │ │ ├── NZ.js
│ │ │ │ ├── OM.js
│ │ │ │ ├── PA.js
│ │ │ │ ├── PE.js
│ │ │ │ ├── PF.js
│ │ │ │ ├── PG.js
│ │ │ │ ├── PH.js
│ │ │ │ ├── PK.js
│ │ │ │ ├── PL.js
│ │ │ │ ├── PM.js
│ │ │ │ ├── PN.js
│ │ │ │ ├── PR.js
│ │ │ │ ├── PS.js
│ │ │ │ ├── PT.js
│ │ │ │ ├── PW.js
│ │ │ │ ├── PY.js
│ │ │ │ ├── QA.js
│ │ │ │ ├── RE.js
│ │ │ │ ├── RO.js
│ │ │ │ ├── RS.js
│ │ │ │ ├── RU.js
│ │ │ │ ├── RW.js
│ │ │ │ ├── SA.js
│ │ │ │ ├── SB.js
│ │ │ │ ├── SC.js
│ │ │ │ ├── SD.js
│ │ │ │ ├── SE.js
│ │ │ │ ├── SG.js
│ │ │ │ ├── SH.js
│ │ │ │ ├── SI.js
│ │ │ │ ├── SK.js
│ │ │ │ ├── SL.js
│ │ │ │ ├── SM.js
│ │ │ │ ├── SN.js
│ │ │ │ ├── SO.js
│ │ │ │ ├── SR.js
│ │ │ │ ├── ST.js
│ │ │ │ ├── SV.js
│ │ │ │ ├── SY.js
│ │ │ │ ├── SZ.js
│ │ │ │ ├── TC.js
│ │ │ │ ├── TD.js
│ │ │ │ ├── TG.js
│ │ │ │ ├── TH.js
│ │ │ │ ├── TJ.js
│ │ │ │ ├── TK.js
│ │ │ │ ├── TL.js
│ │ │ │ ├── TM.js
│ │ │ │ ├── TN.js
│ │ │ │ ├── TO.js
│ │ │ │ ├── TR.js
│ │ │ │ ├── TT.js
│ │ │ │ ├── TV.js
│ │ │ │ ├── TW.js
│ │ │ │ ├── TZ.js
│ │ │ │ ├── UA.js
│ │ │ │ ├── UG.js
│ │ │ │ ├── US.js
│ │ │ │ ├── UY.js
│ │ │ │ ├── UZ.js
│ │ │ │ ├── VA.js
│ │ │ │ ├── VC.js
│ │ │ │ ├── VE.js
│ │ │ │ ├── VG.js
│ │ │ │ ├── VI.js
│ │ │ │ ├── VN.js
│ │ │ │ ├── VU.js
│ │ │ │ ├── WF.js
│ │ │ │ ├── WS.js
│ │ │ │ ├── YE.js
│ │ │ │ ├── YT.js
│ │ │ │ ├── ZA.js
│ │ │ │ ├── ZM.js
│ │ │ │ ├── ZW.js
│ │ │ │ ├── alt-af.js
│ │ │ │ ├── alt-an.js
│ │ │ │ ├── alt-as.js
│ │ │ │ ├── alt-eu.js
│ │ │ │ ├── alt-na.js
│ │ │ │ ├── alt-oc.js
│ │ │ │ ├── alt-sa.js
│ │ │ │ └── alt-ww.js
│ │ └── package.json
│ ├── chalk
│ │ ├── index.js
│ │ ├── index.js.flow
│ │ ├── license
│ │ ├── package.json
│ │ ├── readme.md
│ │ ├── templates.js
│ │ └── types
│ │ │ └── index.d.ts
│ ├── chokidar
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── types
│ │ │ └── index.d.ts
│ ├── color-convert
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── conversions.js
│ │ ├── index.js
│ │ ├── package.json
│ │ └── route.js
│ ├── color-name
│ │ ├── .eslintrc.json
│ │ ├── .npmignore
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── test.js
│ ├── commander
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── Readme.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── typings
│ │ │ └── index.d.ts
│ ├── concat-map
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── README.markdown
│ │ ├── example
│ │ │ └── map.js
│ │ ├── index.js
│ │ ├── package.json
│ │ └── test
│ │ │ └── map.js
│ ├── convert-source-map
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── debug
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── package.json
│ │ └── src
│ │ │ ├── browser.js
│ │ │ ├── common.js
│ │ │ ├── index.js
│ │ │ └── node.js
│ ├── electron-to-chromium
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── chromium-versions.js
│ │ ├── chromium-versions.json
│ │ ├── full-chromium-versions.js
│ │ ├── full-chromium-versions.json
│ │ ├── full-versions.js
│ │ ├── full-versions.json
│ │ ├── index.js
│ │ ├── package.json
│ │ ├── versions.js
│ │ └── versions.json
│ ├── escalade
│ │ ├── index.d.ts
│ │ ├── license
│ │ ├── package.json
│ │ ├── readme.md
│ │ └── sync
│ │ │ ├── index.d.ts
│ │ │ ├── index.js
│ │ │ └── index.mjs
│ ├── escape-string-regexp
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── fill-range
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── fs-readdir-recursive
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── fs.realpath
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── old.js
│ │ └── package.json
│ ├── fsevents
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── fsevents.d.ts
│ │ ├── fsevents.js
│ │ ├── fsevents.node
│ │ └── package.json
│ ├── gensync
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── index.js.flow
│ │ ├── package.json
│ │ └── test
│ │ │ ├── .babelrc
│ │ │ └── index.test.js
│ ├── glob-parent
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── glob
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── common.js
│ │ ├── glob.js
│ │ ├── package.json
│ │ └── sync.js
│ ├── globals
│ │ ├── globals.json
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── has-flag
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── inflight
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── inflight.js
│ │ └── package.json
│ ├── inherits
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── inherits.js
│ │ ├── inherits_browser.js
│ │ └── package.json
│ ├── is-binary-path
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── is-extglob
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── is-glob
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── is-number
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── js-tokens
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── jsesc
│ │ ├── LICENSE-MIT.txt
│ │ ├── README.md
│ │ ├── bin
│ │ │ └── jsesc
│ │ ├── jsesc.js
│ │ ├── man
│ │ │ └── jsesc.1
│ │ └── package.json
│ ├── json5
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ └── package.json
│ ├── make-dir
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── license
│ │ ├── node_modules
│ │ │ ├── .bin
│ │ │ │ └── semver
│ │ │ └── semver
│ │ │ │ ├── CHANGELOG.md
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ ├── bin
│ │ │ │ └── semver
│ │ │ │ ├── package.json
│ │ │ │ ├── range.bnf
│ │ │ │ └── semver.js
│ │ ├── package.json
│ │ └── readme.md
│ ├── minimatch
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── minimatch.js
│ │ └── package.json
│ ├── ms
│ │ ├── index.js
│ │ ├── license.md
│ │ ├── package.json
│ │ └── readme.md
│ ├── node-releases
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── data
│ │ │ ├── processed
│ │ │ │ └── envs.json
│ │ │ └── release-schedule
│ │ │ │ └── release-schedule.json
│ │ └── package.json
│ ├── normalize-path
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── once
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── once.js
│ │ └── package.json
│ ├── path-is-absolute
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── picocolors
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── picocolors.browser.js
│ │ ├── picocolors.d.ts
│ │ ├── picocolors.js
│ │ └── types.ts
│ ├── picomatch
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── pify
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── readdirp
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── package.json
│ ├── safe-buffer
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── package.json
│ ├── semver
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── bin
│ │ │ └── semver.js
│ │ ├── package.json
│ │ ├── range.bnf
│ │ └── semver.js
│ ├── slash
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── supports-color
│ │ ├── browser.js
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── to-fast-properties
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── to-regex-range
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── update-browserslist-db
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── check-npm-version.js
│ │ ├── cli.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── package.json
│ └── wrappy
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── package.json
│ │ └── wrappy.js
├── package-lock.json
├── package.json
└── quotes.js
├── 2022-08-14-writing-custom-scrapy-middleware-for-proxy-pool-integration
├── middleware.py
└── setting_snippet.py
├── 2022-08-27-building-python-script-clis-with-argparse-and-click
├── argv_demo.py
├── requirements.txt
├── url_scan_argparse.py
└── url_scan_click.py
├── 2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code
├── dead_branches.js
├── dead_functions.js
├── fix_dead_branches.js
├── no_dead_branches.js
├── no_dead_functions.js
├── node_modules
│ ├── .bin
│ │ ├── babel
│ │ ├── babel-external-helpers
│ │ ├── browserslist
│ │ ├── browserslist-lint
│ │ ├── jsesc
│ │ ├── json5
│ │ ├── parser
│ │ └── semver
│ ├── .package-lock.json
│ ├── @ampproject
│ │ └── remapping
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ ├── @babel
│ │ ├── cli
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── bin
│ │ │ │ ├── babel-external-helpers.js
│ │ │ │ └── babel.js
│ │ │ ├── index.js
│ │ │ └── package.json
│ │ ├── code-frame
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── compat-data
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── corejs2-built-ins.js
│ │ │ ├── corejs3-shipped-proposals.js
│ │ │ ├── data
│ │ │ │ ├── corejs2-built-ins.json
│ │ │ │ ├── corejs3-shipped-proposals.json
│ │ │ │ ├── native-modules.json
│ │ │ │ ├── overlapping-plugins.json
│ │ │ │ ├── plugin-bugfixes.json
│ │ │ │ └── plugins.json
│ │ │ ├── native-modules.js
│ │ │ ├── overlapping-plugins.js
│ │ │ ├── package.json
│ │ │ ├── plugin-bugfixes.js
│ │ │ └── plugins.js
│ │ ├── core
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── cjs-proxy.cjs
│ │ │ ├── package.json
│ │ │ └── src
│ │ │ │ ├── config
│ │ │ │ ├── files
│ │ │ │ │ ├── index-browser.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── resolve-targets-browser.ts
│ │ │ │ └── resolve-targets.ts
│ │ │ │ ├── transform-file-browser.ts
│ │ │ │ └── transform-file.ts
│ │ ├── generator
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── node_modules
│ │ │ │ └── @jridgewell
│ │ │ │ │ └── gen-mapping
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── src
│ │ │ │ │ ├── gen-mapping.ts
│ │ │ │ │ ├── sourcemap-segment.ts
│ │ │ │ │ └── types.ts
│ │ │ └── package.json
│ │ ├── helper-compilation-targets
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-environment-visitor
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-function-name
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-hoist-variables
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-module-imports
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-module-transforms
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-simple-access
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-split-export-declaration
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-string-parser
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helper-validator-identifier
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── scripts
│ │ │ │ └── generate-identifier-regex.js
│ │ ├── helper-validator-option
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── helpers
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── scripts
│ │ │ │ ├── generate-helpers.js
│ │ │ │ ├── generate-regenerator-runtime.js
│ │ │ │ └── package.json
│ │ ├── highlight
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── parser
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── bin
│ │ │ │ └── babel-parser.js
│ │ │ ├── index.cjs
│ │ │ ├── package.json
│ │ │ └── typings
│ │ │ │ └── babel-parser.d.ts
│ │ ├── template
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── traverse
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── scripts
│ │ │ │ ├── generators
│ │ │ │ ├── asserts.js
│ │ │ │ └── validators.js
│ │ │ │ └── package.json
│ │ └── types
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── scripts
│ │ │ ├── generators
│ │ │ ├── asserts.js
│ │ │ ├── ast-types.js
│ │ │ ├── builders.js
│ │ │ ├── constants.js
│ │ │ ├── docs.js
│ │ │ ├── flow.js
│ │ │ ├── typescript-legacy.js
│ │ │ └── validators.js
│ │ │ ├── package.json
│ │ │ └── utils
│ │ │ ├── formatBuilderName.js
│ │ │ ├── lowerFirst.js
│ │ │ ├── stringifyValidator.js
│ │ │ └── toFunctionName.js
│ ├── @jridgewell
│ │ ├── gen-mapping
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── resolve-uri
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── set-array
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── src
│ │ │ │ └── set-array.ts
│ │ ├── sourcemap-codec
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ └── src
│ │ │ │ └── sourcemap-codec.ts
│ │ └── trace-mapping
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── package.json
│ ├── @nicolo-ribaudo
│ │ └── chokidar-2
│ │ │ ├── README.md
│ │ │ ├── build-chokidar.sh
│ │ │ ├── package.json
│ │ │ └── types.d.ts
│ ├── ansi-styles
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── anymatch
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── package.json
│ ├── balanced-match
│ │ ├── .github
│ │ │ └── FUNDING.yml
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── binary-extensions
│ │ ├── binary-extensions.json
│ │ ├── binary-extensions.json.d.ts
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── brace-expansion
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── braces
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── browserslist
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── browser.js
│ │ ├── cli.js
│ │ ├── error.d.ts
│ │ ├── error.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── node.js
│ │ ├── package.json
│ │ └── parse.js
│ ├── caniuse-lite
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── data
│ │ │ ├── agents.js
│ │ │ ├── browserVersions.js
│ │ │ ├── browsers.js
│ │ │ ├── features.js
│ │ │ ├── features
│ │ │ │ ├── aac.js
│ │ │ │ ├── abortcontroller.js
│ │ │ │ ├── ac3-ec3.js
│ │ │ │ ├── accelerometer.js
│ │ │ │ ├── addeventlistener.js
│ │ │ │ ├── alternate-stylesheet.js
│ │ │ │ ├── ambient-light.js
│ │ │ │ ├── apng.js
│ │ │ │ ├── array-find-index.js
│ │ │ │ ├── array-find.js
│ │ │ │ ├── array-flat.js
│ │ │ │ ├── array-includes.js
│ │ │ │ ├── arrow-functions.js
│ │ │ │ ├── asmjs.js
│ │ │ │ ├── async-clipboard.js
│ │ │ │ ├── async-functions.js
│ │ │ │ ├── atob-btoa.js
│ │ │ │ ├── audio-api.js
│ │ │ │ ├── audio.js
│ │ │ │ ├── audiotracks.js
│ │ │ │ ├── autofocus.js
│ │ │ │ ├── auxclick.js
│ │ │ │ ├── av1.js
│ │ │ │ ├── avif.js
│ │ │ │ ├── background-attachment.js
│ │ │ │ ├── background-clip-text.js
│ │ │ │ ├── background-img-opts.js
│ │ │ │ ├── background-position-x-y.js
│ │ │ │ ├── background-repeat-round-space.js
│ │ │ │ ├── background-sync.js
│ │ │ │ ├── battery-status.js
│ │ │ │ ├── beacon.js
│ │ │ │ ├── beforeafterprint.js
│ │ │ │ ├── bigint.js
│ │ │ │ ├── blobbuilder.js
│ │ │ │ ├── bloburls.js
│ │ │ │ ├── border-image.js
│ │ │ │ ├── border-radius.js
│ │ │ │ ├── broadcastchannel.js
│ │ │ │ ├── brotli.js
│ │ │ │ ├── calc.js
│ │ │ │ ├── canvas-blending.js
│ │ │ │ ├── canvas-text.js
│ │ │ │ ├── canvas.js
│ │ │ │ ├── ch-unit.js
│ │ │ │ ├── chacha20-poly1305.js
│ │ │ │ ├── channel-messaging.js
│ │ │ │ ├── childnode-remove.js
│ │ │ │ ├── classlist.js
│ │ │ │ ├── client-hints-dpr-width-viewport.js
│ │ │ │ ├── clipboard.js
│ │ │ │ ├── colr-v1.js
│ │ │ │ ├── colr.js
│ │ │ │ ├── comparedocumentposition.js
│ │ │ │ ├── console-basic.js
│ │ │ │ ├── console-time.js
│ │ │ │ ├── const.js
│ │ │ │ ├── constraint-validation.js
│ │ │ │ ├── contenteditable.js
│ │ │ │ ├── contentsecuritypolicy.js
│ │ │ │ ├── contentsecuritypolicy2.js
│ │ │ │ ├── cookie-store-api.js
│ │ │ │ ├── cors.js
│ │ │ │ ├── createimagebitmap.js
│ │ │ │ ├── credential-management.js
│ │ │ │ ├── cryptography.js
│ │ │ │ ├── css-all.js
│ │ │ │ ├── css-animation.js
│ │ │ │ ├── css-any-link.js
│ │ │ │ ├── css-appearance.js
│ │ │ │ ├── css-at-counter-style.js
│ │ │ │ ├── css-autofill.js
│ │ │ │ ├── css-backdrop-filter.js
│ │ │ │ ├── css-background-offsets.js
│ │ │ │ ├── css-backgroundblendmode.js
│ │ │ │ ├── css-boxdecorationbreak.js
│ │ │ │ ├── css-boxshadow.js
│ │ │ │ ├── css-canvas.js
│ │ │ │ ├── css-caret-color.js
│ │ │ │ ├── css-cascade-layers.js
│ │ │ │ ├── css-case-insensitive.js
│ │ │ │ ├── css-clip-path.js
│ │ │ │ ├── css-color-adjust.js
│ │ │ │ ├── css-color-function.js
│ │ │ │ ├── css-conic-gradients.js
│ │ │ │ ├── css-container-queries.js
│ │ │ │ ├── css-container-query-units.js
│ │ │ │ ├── css-containment.js
│ │ │ │ ├── css-content-visibility.js
│ │ │ │ ├── css-counters.js
│ │ │ │ ├── css-crisp-edges.js
│ │ │ │ ├── css-cross-fade.js
│ │ │ │ ├── css-default-pseudo.js
│ │ │ │ ├── css-descendant-gtgt.js
│ │ │ │ ├── css-deviceadaptation.js
│ │ │ │ ├── css-dir-pseudo.js
│ │ │ │ ├── css-display-contents.js
│ │ │ │ ├── css-element-function.js
│ │ │ │ ├── css-env-function.js
│ │ │ │ ├── css-exclusions.js
│ │ │ │ ├── css-featurequeries.js
│ │ │ │ ├── css-file-selector-button.js
│ │ │ │ ├── css-filter-function.js
│ │ │ │ ├── css-filters.js
│ │ │ │ ├── css-first-letter.js
│ │ │ │ ├── css-first-line.js
│ │ │ │ ├── css-fixed.js
│ │ │ │ ├── css-focus-visible.js
│ │ │ │ ├── css-focus-within.js
│ │ │ │ ├── css-font-palette.js
│ │ │ │ ├── css-font-rendering-controls.js
│ │ │ │ ├── css-font-stretch.js
│ │ │ │ ├── css-gencontent.js
│ │ │ │ ├── css-gradients.js
│ │ │ │ ├── css-grid-animation.js
│ │ │ │ ├── css-grid.js
│ │ │ │ ├── css-hanging-punctuation.js
│ │ │ │ ├── css-has.js
│ │ │ │ ├── css-hyphenate.js
│ │ │ │ ├── css-hyphens.js
│ │ │ │ ├── css-image-orientation.js
│ │ │ │ ├── css-image-set.js
│ │ │ │ ├── css-in-out-of-range.js
│ │ │ │ ├── css-indeterminate-pseudo.js
│ │ │ │ ├── css-initial-letter.js
│ │ │ │ ├── css-initial-value.js
│ │ │ │ ├── css-lch-lab.js
│ │ │ │ ├── css-letter-spacing.js
│ │ │ │ ├── css-line-clamp.js
│ │ │ │ ├── css-logical-props.js
│ │ │ │ ├── css-marker-pseudo.js
│ │ │ │ ├── css-masks.js
│ │ │ │ ├── css-matches-pseudo.js
│ │ │ │ ├── css-math-functions.js
│ │ │ │ ├── css-media-interaction.js
│ │ │ │ ├── css-media-range-syntax.js
│ │ │ │ ├── css-media-resolution.js
│ │ │ │ ├── css-media-scripting.js
│ │ │ │ ├── css-mediaqueries.js
│ │ │ │ ├── css-mixblendmode.js
│ │ │ │ ├── css-motion-paths.js
│ │ │ │ ├── css-namespaces.js
│ │ │ │ ├── css-nesting.js
│ │ │ │ ├── css-not-sel-list.js
│ │ │ │ ├── css-nth-child-of.js
│ │ │ │ ├── css-opacity.js
│ │ │ │ ├── css-optional-pseudo.js
│ │ │ │ ├── css-overflow-anchor.js
│ │ │ │ ├── css-overflow-overlay.js
│ │ │ │ ├── css-overflow.js
│ │ │ │ ├── css-overscroll-behavior.js
│ │ │ │ ├── css-page-break.js
│ │ │ │ ├── css-paged-media.js
│ │ │ │ ├── css-paint-api.js
│ │ │ │ ├── css-placeholder-shown.js
│ │ │ │ ├── css-placeholder.js
│ │ │ │ ├── css-print-color-adjust.js
│ │ │ │ ├── css-read-only-write.js
│ │ │ │ ├── css-rebeccapurple.js
│ │ │ │ ├── css-reflections.js
│ │ │ │ ├── css-regions.js
│ │ │ │ ├── css-repeating-gradients.js
│ │ │ │ ├── css-resize.js
│ │ │ │ ├── css-revert-value.js
│ │ │ │ ├── css-rrggbbaa.js
│ │ │ │ ├── css-scroll-behavior.js
│ │ │ │ ├── css-scroll-timeline.js
│ │ │ │ ├── css-scrollbar.js
│ │ │ │ ├── css-sel2.js
│ │ │ │ ├── css-sel3.js
│ │ │ │ ├── css-selection.js
│ │ │ │ ├── css-shapes.js
│ │ │ │ ├── css-snappoints.js
│ │ │ │ ├── css-sticky.js
│ │ │ │ ├── css-subgrid.js
│ │ │ │ ├── css-supports-api.js
│ │ │ │ ├── css-table.js
│ │ │ │ ├── css-text-align-last.js
│ │ │ │ ├── css-text-indent.js
│ │ │ │ ├── css-text-justify.js
│ │ │ │ ├── css-text-orientation.js
│ │ │ │ ├── css-text-spacing.js
│ │ │ │ ├── css-textshadow.js
│ │ │ │ ├── css-touch-action-2.js
│ │ │ │ ├── css-touch-action.js
│ │ │ │ ├── css-transitions.js
│ │ │ │ ├── css-unicode-bidi.js
│ │ │ │ ├── css-unset-value.js
│ │ │ │ ├── css-variables.js
│ │ │ │ ├── css-when-else.js
│ │ │ │ ├── css-widows-orphans.js
│ │ │ │ ├── css-width-stretch.js
│ │ │ │ ├── css-writing-mode.js
│ │ │ │ ├── css-zoom.js
│ │ │ │ ├── css3-attr.js
│ │ │ │ ├── css3-boxsizing.js
│ │ │ │ ├── css3-colors.js
│ │ │ │ ├── css3-cursors-grab.js
│ │ │ │ ├── css3-cursors-newer.js
│ │ │ │ ├── css3-cursors.js
│ │ │ │ ├── css3-tabsize.js
│ │ │ │ ├── currentcolor.js
│ │ │ │ ├── custom-elements.js
│ │ │ │ ├── custom-elementsv1.js
│ │ │ │ ├── customevent.js
│ │ │ │ ├── datalist.js
│ │ │ │ ├── dataset.js
│ │ │ │ ├── datauri.js
│ │ │ │ ├── date-tolocaledatestring.js
│ │ │ │ ├── declarative-shadow-dom.js
│ │ │ │ ├── decorators.js
│ │ │ │ ├── details.js
│ │ │ │ ├── deviceorientation.js
│ │ │ │ ├── devicepixelratio.js
│ │ │ │ ├── dialog.js
│ │ │ │ ├── dispatchevent.js
│ │ │ │ ├── dnssec.js
│ │ │ │ ├── do-not-track.js
│ │ │ │ ├── document-currentscript.js
│ │ │ │ ├── document-evaluate-xpath.js
│ │ │ │ ├── document-execcommand.js
│ │ │ │ ├── document-policy.js
│ │ │ │ ├── document-scrollingelement.js
│ │ │ │ ├── documenthead.js
│ │ │ │ ├── dom-manip-convenience.js
│ │ │ │ ├── dom-range.js
│ │ │ │ ├── domcontentloaded.js
│ │ │ │ ├── domfocusin-domfocusout-events.js
│ │ │ │ ├── dommatrix.js
│ │ │ │ ├── download.js
│ │ │ │ ├── dragndrop.js
│ │ │ │ ├── element-closest.js
│ │ │ │ ├── element-from-point.js
│ │ │ │ ├── element-scroll-methods.js
│ │ │ │ ├── eme.js
│ │ │ │ ├── eot.js
│ │ │ │ ├── es5.js
│ │ │ │ ├── es6-class.js
│ │ │ │ ├── es6-generators.js
│ │ │ │ ├── es6-module-dynamic-import.js
│ │ │ │ ├── es6-module.js
│ │ │ │ ├── es6-number.js
│ │ │ │ ├── es6-string-includes.js
│ │ │ │ ├── es6.js
│ │ │ │ ├── eventsource.js
│ │ │ │ ├── extended-system-fonts.js
│ │ │ │ ├── feature-policy.js
│ │ │ │ ├── fetch.js
│ │ │ │ ├── fieldset-disabled.js
│ │ │ │ ├── fileapi.js
│ │ │ │ ├── filereader.js
│ │ │ │ ├── filereadersync.js
│ │ │ │ ├── filesystem.js
│ │ │ │ ├── flac.js
│ │ │ │ ├── flexbox-gap.js
│ │ │ │ ├── flexbox.js
│ │ │ │ ├── flow-root.js
│ │ │ │ ├── focusin-focusout-events.js
│ │ │ │ ├── focusoptions-preventscroll.js
│ │ │ │ ├── font-family-system-ui.js
│ │ │ │ ├── font-feature.js
│ │ │ │ ├── font-kerning.js
│ │ │ │ ├── font-loading.js
│ │ │ │ ├── font-metrics-overrides.js
│ │ │ │ ├── font-size-adjust.js
│ │ │ │ ├── font-smooth.js
│ │ │ │ ├── font-unicode-range.js
│ │ │ │ ├── font-variant-alternates.js
│ │ │ │ ├── font-variant-numeric.js
│ │ │ │ ├── fontface.js
│ │ │ │ ├── form-attribute.js
│ │ │ │ ├── form-submit-attributes.js
│ │ │ │ ├── form-validation.js
│ │ │ │ ├── forms.js
│ │ │ │ ├── fullscreen.js
│ │ │ │ ├── gamepad.js
│ │ │ │ ├── geolocation.js
│ │ │ │ ├── getboundingclientrect.js
│ │ │ │ ├── getcomputedstyle.js
│ │ │ │ ├── getelementsbyclassname.js
│ │ │ │ ├── getrandomvalues.js
│ │ │ │ ├── gyroscope.js
│ │ │ │ ├── hardwareconcurrency.js
│ │ │ │ ├── hashchange.js
│ │ │ │ ├── heif.js
│ │ │ │ ├── hevc.js
│ │ │ │ ├── hidden.js
│ │ │ │ ├── high-resolution-time.js
│ │ │ │ ├── history.js
│ │ │ │ ├── html-media-capture.js
│ │ │ │ ├── html5semantic.js
│ │ │ │ ├── http-live-streaming.js
│ │ │ │ ├── http2.js
│ │ │ │ ├── http3.js
│ │ │ │ ├── iframe-sandbox.js
│ │ │ │ ├── iframe-seamless.js
│ │ │ │ ├── iframe-srcdoc.js
│ │ │ │ ├── imagecapture.js
│ │ │ │ ├── ime.js
│ │ │ │ ├── img-naturalwidth-naturalheight.js
│ │ │ │ ├── import-maps.js
│ │ │ │ ├── imports.js
│ │ │ │ ├── indeterminate-checkbox.js
│ │ │ │ ├── indexeddb.js
│ │ │ │ ├── indexeddb2.js
│ │ │ │ ├── inline-block.js
│ │ │ │ ├── innertext.js
│ │ │ │ ├── input-autocomplete-onoff.js
│ │ │ │ ├── input-color.js
│ │ │ │ ├── input-datetime.js
│ │ │ │ ├── input-email-tel-url.js
│ │ │ │ ├── input-event.js
│ │ │ │ ├── input-file-accept.js
│ │ │ │ ├── input-file-directory.js
│ │ │ │ ├── input-file-multiple.js
│ │ │ │ ├── input-inputmode.js
│ │ │ │ ├── input-minlength.js
│ │ │ │ ├── input-number.js
│ │ │ │ ├── input-pattern.js
│ │ │ │ ├── input-placeholder.js
│ │ │ │ ├── input-range.js
│ │ │ │ ├── input-search.js
│ │ │ │ ├── input-selection.js
│ │ │ │ ├── insert-adjacent.js
│ │ │ │ ├── insertadjacenthtml.js
│ │ │ │ ├── internationalization.js
│ │ │ │ ├── intersectionobserver-v2.js
│ │ │ │ ├── intersectionobserver.js
│ │ │ │ ├── intl-pluralrules.js
│ │ │ │ ├── intrinsic-width.js
│ │ │ │ ├── jpeg2000.js
│ │ │ │ ├── jpegxl.js
│ │ │ │ ├── jpegxr.js
│ │ │ │ ├── js-regexp-lookbehind.js
│ │ │ │ ├── json.js
│ │ │ │ ├── justify-content-space-evenly.js
│ │ │ │ ├── kerning-pairs-ligatures.js
│ │ │ │ ├── keyboardevent-charcode.js
│ │ │ │ ├── keyboardevent-code.js
│ │ │ │ ├── keyboardevent-getmodifierstate.js
│ │ │ │ ├── keyboardevent-key.js
│ │ │ │ ├── keyboardevent-location.js
│ │ │ │ ├── keyboardevent-which.js
│ │ │ │ ├── lazyload.js
│ │ │ │ ├── let.js
│ │ │ │ ├── link-icon-png.js
│ │ │ │ ├── link-icon-svg.js
│ │ │ │ ├── link-rel-dns-prefetch.js
│ │ │ │ ├── link-rel-modulepreload.js
│ │ │ │ ├── link-rel-preconnect.js
│ │ │ │ ├── link-rel-prefetch.js
│ │ │ │ ├── link-rel-preload.js
│ │ │ │ ├── link-rel-prerender.js
│ │ │ │ ├── loading-lazy-attr.js
│ │ │ │ ├── localecompare.js
│ │ │ │ ├── magnetometer.js
│ │ │ │ ├── matchesselector.js
│ │ │ │ ├── matchmedia.js
│ │ │ │ ├── mathml.js
│ │ │ │ ├── maxlength.js
│ │ │ │ ├── media-attribute.js
│ │ │ │ ├── media-fragments.js
│ │ │ │ ├── media-session-api.js
│ │ │ │ ├── mediacapture-fromelement.js
│ │ │ │ ├── mediarecorder.js
│ │ │ │ ├── mediasource.js
│ │ │ │ ├── menu.js
│ │ │ │ ├── meta-theme-color.js
│ │ │ │ ├── meter.js
│ │ │ │ ├── midi.js
│ │ │ │ ├── minmaxwh.js
│ │ │ │ ├── mp3.js
│ │ │ │ ├── mpeg-dash.js
│ │ │ │ ├── mpeg4.js
│ │ │ │ ├── multibackgrounds.js
│ │ │ │ ├── multicolumn.js
│ │ │ │ ├── mutation-events.js
│ │ │ │ ├── mutationobserver.js
│ │ │ │ ├── namevalue-storage.js
│ │ │ │ ├── native-filesystem-api.js
│ │ │ │ ├── nav-timing.js
│ │ │ │ ├── navigator-language.js
│ │ │ │ ├── netinfo.js
│ │ │ │ ├── notifications.js
│ │ │ │ ├── object-entries.js
│ │ │ │ ├── object-fit.js
│ │ │ │ ├── object-observe.js
│ │ │ │ ├── object-values.js
│ │ │ │ ├── objectrtc.js
│ │ │ │ ├── offline-apps.js
│ │ │ │ ├── offscreencanvas.js
│ │ │ │ ├── ogg-vorbis.js
│ │ │ │ ├── ogv.js
│ │ │ │ ├── ol-reversed.js
│ │ │ │ ├── once-event-listener.js
│ │ │ │ ├── online-status.js
│ │ │ │ ├── opus.js
│ │ │ │ ├── orientation-sensor.js
│ │ │ │ ├── outline.js
│ │ │ │ ├── pad-start-end.js
│ │ │ │ ├── page-transition-events.js
│ │ │ │ ├── pagevisibility.js
│ │ │ │ ├── passive-event-listener.js
│ │ │ │ ├── passwordrules.js
│ │ │ │ ├── path2d.js
│ │ │ │ ├── payment-request.js
│ │ │ │ ├── pdf-viewer.js
│ │ │ │ ├── permissions-api.js
│ │ │ │ ├── permissions-policy.js
│ │ │ │ ├── picture-in-picture.js
│ │ │ │ ├── picture.js
│ │ │ │ ├── ping.js
│ │ │ │ ├── png-alpha.js
│ │ │ │ ├── pointer-events.js
│ │ │ │ ├── pointer.js
│ │ │ │ ├── pointerlock.js
│ │ │ │ ├── portals.js
│ │ │ │ ├── prefers-color-scheme.js
│ │ │ │ ├── prefers-reduced-motion.js
│ │ │ │ ├── private-class-fields.js
│ │ │ │ ├── private-methods-and-accessors.js
│ │ │ │ ├── progress.js
│ │ │ │ ├── promise-finally.js
│ │ │ │ ├── promises.js
│ │ │ │ ├── proximity.js
│ │ │ │ ├── proxy.js
│ │ │ │ ├── public-class-fields.js
│ │ │ │ ├── publickeypinning.js
│ │ │ │ ├── push-api.js
│ │ │ │ ├── queryselector.js
│ │ │ │ ├── readonly-attr.js
│ │ │ │ ├── referrer-policy.js
│ │ │ │ ├── registerprotocolhandler.js
│ │ │ │ ├── rel-noopener.js
│ │ │ │ ├── rel-noreferrer.js
│ │ │ │ ├── rellist.js
│ │ │ │ ├── rem.js
│ │ │ │ ├── requestanimationframe.js
│ │ │ │ ├── requestidlecallback.js
│ │ │ │ ├── resizeobserver.js
│ │ │ │ ├── resource-timing.js
│ │ │ │ ├── rest-parameters.js
│ │ │ │ ├── rtcpeerconnection.js
│ │ │ │ ├── ruby.js
│ │ │ │ ├── run-in.js
│ │ │ │ ├── same-site-cookie-attribute.js
│ │ │ │ ├── screen-orientation.js
│ │ │ │ ├── script-async.js
│ │ │ │ ├── script-defer.js
│ │ │ │ ├── scrollintoview.js
│ │ │ │ ├── scrollintoviewifneeded.js
│ │ │ │ ├── sdch.js
│ │ │ │ ├── selection-api.js
│ │ │ │ ├── server-timing.js
│ │ │ │ ├── serviceworkers.js
│ │ │ │ ├── setimmediate.js
│ │ │ │ ├── sha-2.js
│ │ │ │ ├── shadowdom.js
│ │ │ │ ├── shadowdomv1.js
│ │ │ │ ├── sharedarraybuffer.js
│ │ │ │ ├── sharedworkers.js
│ │ │ │ ├── sni.js
│ │ │ │ ├── spdy.js
│ │ │ │ ├── speech-recognition.js
│ │ │ │ ├── speech-synthesis.js
│ │ │ │ ├── spellcheck-attribute.js
│ │ │ │ ├── sql-storage.js
│ │ │ │ ├── srcset.js
│ │ │ │ ├── stream.js
│ │ │ │ ├── streams.js
│ │ │ │ ├── stricttransportsecurity.js
│ │ │ │ ├── style-scoped.js
│ │ │ │ ├── subresource-integrity.js
│ │ │ │ ├── svg-css.js
│ │ │ │ ├── svg-filters.js
│ │ │ │ ├── svg-fonts.js
│ │ │ │ ├── svg-fragment.js
│ │ │ │ ├── svg-html.js
│ │ │ │ ├── svg-html5.js
│ │ │ │ ├── svg-img.js
│ │ │ │ ├── svg-smil.js
│ │ │ │ ├── svg.js
│ │ │ │ ├── sxg.js
│ │ │ │ ├── tabindex-attr.js
│ │ │ │ ├── template-literals.js
│ │ │ │ ├── template.js
│ │ │ │ ├── temporal.js
│ │ │ │ ├── testfeat.js
│ │ │ │ ├── text-decoration.js
│ │ │ │ ├── text-emphasis.js
│ │ │ │ ├── text-overflow.js
│ │ │ │ ├── text-size-adjust.js
│ │ │ │ ├── text-stroke.js
│ │ │ │ ├── text-underline-offset.js
│ │ │ │ ├── textcontent.js
│ │ │ │ ├── textencoder.js
│ │ │ │ ├── tls1-1.js
│ │ │ │ ├── tls1-2.js
│ │ │ │ ├── tls1-3.js
│ │ │ │ ├── token-binding.js
│ │ │ │ ├── touch.js
│ │ │ │ ├── transforms2d.js
│ │ │ │ ├── transforms3d.js
│ │ │ │ ├── trusted-types.js
│ │ │ │ ├── ttf.js
│ │ │ │ ├── typedarrays.js
│ │ │ │ ├── u2f.js
│ │ │ │ ├── unhandledrejection.js
│ │ │ │ ├── upgradeinsecurerequests.js
│ │ │ │ ├── url-scroll-to-text-fragment.js
│ │ │ │ ├── url.js
│ │ │ │ ├── urlsearchparams.js
│ │ │ │ ├── use-strict.js
│ │ │ │ ├── user-select-none.js
│ │ │ │ ├── user-timing.js
│ │ │ │ ├── variable-fonts.js
│ │ │ │ ├── vector-effect.js
│ │ │ │ ├── vibration.js
│ │ │ │ ├── video.js
│ │ │ │ ├── videotracks.js
│ │ │ │ ├── viewport-unit-variants.js
│ │ │ │ ├── viewport-units.js
│ │ │ │ ├── wai-aria.js
│ │ │ │ ├── wake-lock.js
│ │ │ │ ├── wasm.js
│ │ │ │ ├── wav.js
│ │ │ │ ├── wbr-element.js
│ │ │ │ ├── web-animation.js
│ │ │ │ ├── web-app-manifest.js
│ │ │ │ ├── web-bluetooth.js
│ │ │ │ ├── web-serial.js
│ │ │ │ ├── web-share.js
│ │ │ │ ├── webauthn.js
│ │ │ │ ├── webgl.js
│ │ │ │ ├── webgl2.js
│ │ │ │ ├── webgpu.js
│ │ │ │ ├── webhid.js
│ │ │ │ ├── webkit-user-drag.js
│ │ │ │ ├── webm.js
│ │ │ │ ├── webnfc.js
│ │ │ │ ├── webp.js
│ │ │ │ ├── websockets.js
│ │ │ │ ├── webtransport.js
│ │ │ │ ├── webusb.js
│ │ │ │ ├── webvr.js
│ │ │ │ ├── webvtt.js
│ │ │ │ ├── webworkers.js
│ │ │ │ ├── webxr.js
│ │ │ │ ├── will-change.js
│ │ │ │ ├── woff.js
│ │ │ │ ├── woff2.js
│ │ │ │ ├── word-break.js
│ │ │ │ ├── wordwrap.js
│ │ │ │ ├── x-doc-messaging.js
│ │ │ │ ├── x-frame-options.js
│ │ │ │ ├── xhr2.js
│ │ │ │ ├── xhtml.js
│ │ │ │ ├── xhtmlsmil.js
│ │ │ │ └── xml-serializer.js
│ │ │ └── regions
│ │ │ │ ├── AD.js
│ │ │ │ ├── AE.js
│ │ │ │ ├── AF.js
│ │ │ │ ├── AG.js
│ │ │ │ ├── AI.js
│ │ │ │ ├── AL.js
│ │ │ │ ├── AM.js
│ │ │ │ ├── AO.js
│ │ │ │ ├── AR.js
│ │ │ │ ├── AS.js
│ │ │ │ ├── AT.js
│ │ │ │ ├── AU.js
│ │ │ │ ├── AW.js
│ │ │ │ ├── AX.js
│ │ │ │ ├── AZ.js
│ │ │ │ ├── BA.js
│ │ │ │ ├── BB.js
│ │ │ │ ├── BD.js
│ │ │ │ ├── BE.js
│ │ │ │ ├── BF.js
│ │ │ │ ├── BG.js
│ │ │ │ ├── BH.js
│ │ │ │ ├── BI.js
│ │ │ │ ├── BJ.js
│ │ │ │ ├── BM.js
│ │ │ │ ├── BN.js
│ │ │ │ ├── BO.js
│ │ │ │ ├── BR.js
│ │ │ │ ├── BS.js
│ │ │ │ ├── BT.js
│ │ │ │ ├── BW.js
│ │ │ │ ├── BY.js
│ │ │ │ ├── BZ.js
│ │ │ │ ├── CA.js
│ │ │ │ ├── CD.js
│ │ │ │ ├── CF.js
│ │ │ │ ├── CG.js
│ │ │ │ ├── CH.js
│ │ │ │ ├── CI.js
│ │ │ │ ├── CK.js
│ │ │ │ ├── CL.js
│ │ │ │ ├── CM.js
│ │ │ │ ├── CN.js
│ │ │ │ ├── CO.js
│ │ │ │ ├── CR.js
│ │ │ │ ├── CU.js
│ │ │ │ ├── CV.js
│ │ │ │ ├── CX.js
│ │ │ │ ├── CY.js
│ │ │ │ ├── CZ.js
│ │ │ │ ├── DE.js
│ │ │ │ ├── DJ.js
│ │ │ │ ├── DK.js
│ │ │ │ ├── DM.js
│ │ │ │ ├── DO.js
│ │ │ │ ├── DZ.js
│ │ │ │ ├── EC.js
│ │ │ │ ├── EE.js
│ │ │ │ ├── EG.js
│ │ │ │ ├── ER.js
│ │ │ │ ├── ES.js
│ │ │ │ ├── ET.js
│ │ │ │ ├── FI.js
│ │ │ │ ├── FJ.js
│ │ │ │ ├── FK.js
│ │ │ │ ├── FM.js
│ │ │ │ ├── FO.js
│ │ │ │ ├── FR.js
│ │ │ │ ├── GA.js
│ │ │ │ ├── GB.js
│ │ │ │ ├── GD.js
│ │ │ │ ├── GE.js
│ │ │ │ ├── GF.js
│ │ │ │ ├── GG.js
│ │ │ │ ├── GH.js
│ │ │ │ ├── GI.js
│ │ │ │ ├── GL.js
│ │ │ │ ├── GM.js
│ │ │ │ ├── GN.js
│ │ │ │ ├── GP.js
│ │ │ │ ├── GQ.js
│ │ │ │ ├── GR.js
│ │ │ │ ├── GT.js
│ │ │ │ ├── GU.js
│ │ │ │ ├── GW.js
│ │ │ │ ├── GY.js
│ │ │ │ ├── HK.js
│ │ │ │ ├── HN.js
│ │ │ │ ├── HR.js
│ │ │ │ ├── HT.js
│ │ │ │ ├── HU.js
│ │ │ │ ├── ID.js
│ │ │ │ ├── IE.js
│ │ │ │ ├── IL.js
│ │ │ │ ├── IM.js
│ │ │ │ ├── IN.js
│ │ │ │ ├── IQ.js
│ │ │ │ ├── IR.js
│ │ │ │ ├── IS.js
│ │ │ │ ├── IT.js
│ │ │ │ ├── JE.js
│ │ │ │ ├── JM.js
│ │ │ │ ├── JO.js
│ │ │ │ ├── JP.js
│ │ │ │ ├── KE.js
│ │ │ │ ├── KG.js
│ │ │ │ ├── KH.js
│ │ │ │ ├── KI.js
│ │ │ │ ├── KM.js
│ │ │ │ ├── KN.js
│ │ │ │ ├── KP.js
│ │ │ │ ├── KR.js
│ │ │ │ ├── KW.js
│ │ │ │ ├── KY.js
│ │ │ │ ├── KZ.js
│ │ │ │ ├── LA.js
│ │ │ │ ├── LB.js
│ │ │ │ ├── LC.js
│ │ │ │ ├── LI.js
│ │ │ │ ├── LK.js
│ │ │ │ ├── LR.js
│ │ │ │ ├── LS.js
│ │ │ │ ├── LT.js
│ │ │ │ ├── LU.js
│ │ │ │ ├── LV.js
│ │ │ │ ├── LY.js
│ │ │ │ ├── MA.js
│ │ │ │ ├── MC.js
│ │ │ │ ├── MD.js
│ │ │ │ ├── ME.js
│ │ │ │ ├── MG.js
│ │ │ │ ├── MH.js
│ │ │ │ ├── MK.js
│ │ │ │ ├── ML.js
│ │ │ │ ├── MM.js
│ │ │ │ ├── MN.js
│ │ │ │ ├── MO.js
│ │ │ │ ├── MP.js
│ │ │ │ ├── MQ.js
│ │ │ │ ├── MR.js
│ │ │ │ ├── MS.js
│ │ │ │ ├── MT.js
│ │ │ │ ├── MU.js
│ │ │ │ ├── MV.js
│ │ │ │ ├── MW.js
│ │ │ │ ├── MX.js
│ │ │ │ ├── MY.js
│ │ │ │ ├── MZ.js
│ │ │ │ ├── NA.js
│ │ │ │ ├── NC.js
│ │ │ │ ├── NE.js
│ │ │ │ ├── NF.js
│ │ │ │ ├── NG.js
│ │ │ │ ├── NI.js
│ │ │ │ ├── NL.js
│ │ │ │ ├── NO.js
│ │ │ │ ├── NP.js
│ │ │ │ ├── NR.js
│ │ │ │ ├── NU.js
│ │ │ │ ├── NZ.js
│ │ │ │ ├── OM.js
│ │ │ │ ├── PA.js
│ │ │ │ ├── PE.js
│ │ │ │ ├── PF.js
│ │ │ │ ├── PG.js
│ │ │ │ ├── PH.js
│ │ │ │ ├── PK.js
│ │ │ │ ├── PL.js
│ │ │ │ ├── PM.js
│ │ │ │ ├── PN.js
│ │ │ │ ├── PR.js
│ │ │ │ ├── PS.js
│ │ │ │ ├── PT.js
│ │ │ │ ├── PW.js
│ │ │ │ ├── PY.js
│ │ │ │ ├── QA.js
│ │ │ │ ├── RE.js
│ │ │ │ ├── RO.js
│ │ │ │ ├── RS.js
│ │ │ │ ├── RU.js
│ │ │ │ ├── RW.js
│ │ │ │ ├── SA.js
│ │ │ │ ├── SB.js
│ │ │ │ ├── SC.js
│ │ │ │ ├── SD.js
│ │ │ │ ├── SE.js
│ │ │ │ ├── SG.js
│ │ │ │ ├── SH.js
│ │ │ │ ├── SI.js
│ │ │ │ ├── SK.js
│ │ │ │ ├── SL.js
│ │ │ │ ├── SM.js
│ │ │ │ ├── SN.js
│ │ │ │ ├── SO.js
│ │ │ │ ├── SR.js
│ │ │ │ ├── ST.js
│ │ │ │ ├── SV.js
│ │ │ │ ├── SY.js
│ │ │ │ ├── SZ.js
│ │ │ │ ├── TC.js
│ │ │ │ ├── TD.js
│ │ │ │ ├── TG.js
│ │ │ │ ├── TH.js
│ │ │ │ ├── TJ.js
│ │ │ │ ├── TK.js
│ │ │ │ ├── TL.js
│ │ │ │ ├── TM.js
│ │ │ │ ├── TN.js
│ │ │ │ ├── TO.js
│ │ │ │ ├── TR.js
│ │ │ │ ├── TT.js
│ │ │ │ ├── TV.js
│ │ │ │ ├── TW.js
│ │ │ │ ├── TZ.js
│ │ │ │ ├── UA.js
│ │ │ │ ├── UG.js
│ │ │ │ ├── US.js
│ │ │ │ ├── UY.js
│ │ │ │ ├── UZ.js
│ │ │ │ ├── VA.js
│ │ │ │ ├── VC.js
│ │ │ │ ├── VE.js
│ │ │ │ ├── VG.js
│ │ │ │ ├── VI.js
│ │ │ │ ├── VN.js
│ │ │ │ ├── VU.js
│ │ │ │ ├── WF.js
│ │ │ │ ├── WS.js
│ │ │ │ ├── YE.js
│ │ │ │ ├── YT.js
│ │ │ │ ├── ZA.js
│ │ │ │ ├── ZM.js
│ │ │ │ ├── ZW.js
│ │ │ │ ├── alt-af.js
│ │ │ │ ├── alt-an.js
│ │ │ │ ├── alt-as.js
│ │ │ │ ├── alt-eu.js
│ │ │ │ ├── alt-na.js
│ │ │ │ ├── alt-oc.js
│ │ │ │ ├── alt-sa.js
│ │ │ │ └── alt-ww.js
│ │ └── package.json
│ ├── chalk
│ │ ├── index.js
│ │ ├── index.js.flow
│ │ ├── license
│ │ ├── package.json
│ │ ├── readme.md
│ │ ├── templates.js
│ │ └── types
│ │ │ └── index.d.ts
│ ├── chokidar
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── types
│ │ │ └── index.d.ts
│ ├── color-convert
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── conversions.js
│ │ ├── index.js
│ │ ├── package.json
│ │ └── route.js
│ ├── color-name
│ │ ├── .eslintrc.json
│ │ ├── .npmignore
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── test.js
│ ├── commander
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── Readme.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── typings
│ │ │ └── index.d.ts
│ ├── concat-map
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── README.markdown
│ │ ├── example
│ │ │ └── map.js
│ │ ├── index.js
│ │ ├── package.json
│ │ └── test
│ │ │ └── map.js
│ ├── convert-source-map
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── debug
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── package.json
│ │ └── src
│ │ │ ├── browser.js
│ │ │ ├── common.js
│ │ │ ├── index.js
│ │ │ └── node.js
│ ├── electron-to-chromium
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── chromium-versions.js
│ │ ├── chromium-versions.json
│ │ ├── full-chromium-versions.js
│ │ ├── full-chromium-versions.json
│ │ ├── full-versions.js
│ │ ├── full-versions.json
│ │ ├── index.js
│ │ ├── package.json
│ │ ├── versions.js
│ │ └── versions.json
│ ├── escalade
│ │ ├── index.d.ts
│ │ ├── license
│ │ ├── package.json
│ │ ├── readme.md
│ │ └── sync
│ │ │ ├── index.d.ts
│ │ │ ├── index.js
│ │ │ └── index.mjs
│ ├── escape-string-regexp
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── fill-range
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── fs-readdir-recursive
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── fs.realpath
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── old.js
│ │ └── package.json
│ ├── fsevents
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── fsevents.d.ts
│ │ ├── fsevents.js
│ │ ├── fsevents.node
│ │ └── package.json
│ ├── gensync
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── index.js.flow
│ │ ├── package.json
│ │ └── test
│ │ │ ├── .babelrc
│ │ │ └── index.test.js
│ ├── glob-parent
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── glob
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── common.js
│ │ ├── glob.js
│ │ ├── package.json
│ │ └── sync.js
│ ├── globals
│ │ ├── globals.json
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── has-flag
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── inflight
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── inflight.js
│ │ └── package.json
│ ├── inherits
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── inherits.js
│ │ ├── inherits_browser.js
│ │ └── package.json
│ ├── is-binary-path
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── is-extglob
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── is-glob
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── is-number
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── js-tokens
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── jsesc
│ │ ├── LICENSE-MIT.txt
│ │ ├── README.md
│ │ ├── bin
│ │ │ └── jsesc
│ │ ├── jsesc.js
│ │ ├── man
│ │ │ └── jsesc.1
│ │ └── package.json
│ ├── json5
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ └── package.json
│ ├── make-dir
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── license
│ │ ├── node_modules
│ │ │ ├── .bin
│ │ │ │ └── semver
│ │ │ └── semver
│ │ │ │ ├── CHANGELOG.md
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ ├── bin
│ │ │ │ └── semver
│ │ │ │ ├── package.json
│ │ │ │ ├── range.bnf
│ │ │ │ └── semver.js
│ │ ├── package.json
│ │ └── readme.md
│ ├── minimatch
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── minimatch.js
│ │ └── package.json
│ ├── ms
│ │ ├── index.js
│ │ ├── license.md
│ │ ├── package.json
│ │ └── readme.md
│ ├── node-releases
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── data
│ │ │ ├── processed
│ │ │ │ └── envs.json
│ │ │ └── release-schedule
│ │ │ │ └── release-schedule.json
│ │ └── package.json
│ ├── normalize-path
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── once
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── once.js
│ │ └── package.json
│ ├── path-is-absolute
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── picocolors
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── picocolors.browser.js
│ │ ├── picocolors.d.ts
│ │ ├── picocolors.js
│ │ └── types.ts
│ ├── picomatch
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── pify
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── readdirp
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── package.json
│ ├── safe-buffer
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── package.json
│ ├── semver
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── bin
│ │ │ └── semver.js
│ │ ├── package.json
│ │ ├── range.bnf
│ │ └── semver.js
│ ├── slash
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── supports-color
│ │ ├── browser.js
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── to-fast-properties
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ └── readme.md
│ ├── to-regex-range
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
│ ├── update-browserslist-db
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── check-npm-version.js
│ │ ├── cli.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── package.json
│ └── wrappy
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── package.json
│ │ └── wrappy.js
├── package-lock.json
├── package.json
└── rm_dead_functions.js
├── 2022-08-31-running-stable-diffusion-on-vultr
└── sd_gen.py
├── 2022-09-04-curl-beyond-the-basics
└── example.c
├── 2022-10-08-javascript-ast-manipulation-with-babel-defeating-string-array-mapping
├── deobfuscate.js
├── obfuscated.js
└── orig.js
├── 2022-10-09-making-heuristics-smarter-with-gpt3
└── example.py
├── 2022-10-12-scraping-legacy-asp-net-site-with-scrapy-a-real-example
├── claytonspider.py
├── items.py
└── parallelise.py
├── 2022-12-26-scrapy-simplified-developing-a-single-file-web-scraper
└── f500.py
├── 2023-01-14-scraping-yahoo-finance-with-python
├── summary.py
└── timeseries.py
├── 2023-01-15-understanding-python-generators-for-scraping-and-automation
└── hn_posts.py
├── 2023-01-18-javascript-ast-manipulation-with-babel-transform-prototyping-and-plugin-development
├── deobfuscate.js
├── deobfuscate2.js
├── input.js
├── output.js
├── plugin_rm_empty.js
├── plugin_unbracket.js
└── plugin_unhex.js
├── 2023-01-23-javascript-ast-manipulation-with-babel-3-ways-to-create-nodes-with-subtrees
├── instantiate.js
└── templ.js
├── 2023-01-25-javascript-ast-manipulation-with-babel-untangling-scope-confusion
├── 1.js
├── 2.js
├── 3.js
├── 4.js
├── 5.js
├── 6.js
├── 7.js
└── 8.js
├── 2023-01-30-javascript-ast-manipulation-with-babel-ast-modification-apis
├── say_abc.js
├── transform.js
└── transformed.js
├── 2023-02-07-javascript-ast-manipulation-with-babel-constant-folding-and-propagation
├── ast_explorer_constfold.js
├── ast_explorer_constprop.js
├── ast_explorer_unhex.js
├── constfolded.js
├── constpropagated.js
├── input.js
├── input2.js
├── obfuscated.js
└── unhexed.js
├── 2023-02-13-javascript-ast-manipulation-with-babel-reducing-indirection-undoing-string-concealing
├── in.js
├── obfuscated0.js
├── obfuscated1.js
├── obfuscated2.js
├── obfuscated3.js
├── obfuscated4.js
├── out.js
├── transform1.js
├── transform2.js
├── transform3.js
├── transform4.js
└── transform5.js
├── 2023-02-18-javascript-ast-manipulation-with-babel-reducing-nestedness-unflattening-the-cfg
├── in.js
├── obfuscated0.js
├── obfuscated1.js
├── obfuscated2.js
├── obfuscated3.js
├── obfuscated4.js
├── obfuscated5.js
├── out.js
├── transform1.js
├── transform2.js
├── transform3.js
├── transform4.js
├── transform5.js
└── transform6.js
├── 2023-02-24-dont-jsfuck-with-me-part-1
└── ast_transform.js
├── 2023-03-14-dont-jsfuck-with-me-part-2
├── ast_explorer_simplify_string_name.js
├── ast_explorer_undo_boolean_trick.js
├── ast_explorer_undo_concat_trick.js
├── ast_explorer_undo_entries_trick.js
├── ast_explorer_undo_flat_trick.js
├── ast_explorer_undo_fontcolor_trick.js
├── ast_explorer_undo_function_date_trick.js
├── ast_explorer_undo_function_escape_trick.js
├── ast_explorer_undo_italics_trick.js
├── ast_explorer_undo_number_to_string_trick.js
├── ast_explorer_undo_object_tostring_call_trick.js
├── ast_explorer_undo_regexp_trick.js
├── ast_explorer_undo_slice_trick.js
├── ast_explorer_undo_string_contructor_trick.js
├── ast_explorer_undo_string_trick.js
└── ast_explorer_undo_tostring_hack.js
├── 2023-05-02-crawlspider-and-link-extractors-for-rule-based-crawling-in-scrapy
├── sample
│ ├── __init__.py
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ │ ├── __init__.py
│ │ └── books.py
└── scrapy.cfg
├── 2023-05-15-scraping-product-data-from-nike
├── nike
│ ├── __init__.py
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ │ ├── __init__.py
│ │ └── nikecom.py
└── scrapy.cfg
├── 2023-05-30-understanding-javascript-packers
├── eval_unescape.js
├── helloworld.js
├── packed.js
└── packed_pretty.js
├── 2023-06-25-dont-jsfuck-with-me-part-3
├── ast_constructor_str.js
├── ast_eval_return_fncall.js
├── ast_eval_return_str.js
├── ast_explorer_fix_eval.js
├── ast_explorer_undo_entries_trick_v2.js
├── ast_refactor_regex_constr.js
├── ast_regex_str.js
├── ast_simplify_false_regex.js
├── ast_string_array_join.js
├── ast_string_constructor_name.js
├── ast_string_split.js
├── ast_undo_escape_call.js
└── jsfuck_deobfuscator
│ ├── app.js
│ ├── debug.js
│ ├── examples
│ ├── in1.js
│ ├── in2.js
│ ├── in3.js
│ ├── in4.js
│ ├── in5.js
│ ├── out1.js
│ ├── out2.js
│ ├── out3.js
│ └── out4.js
│ ├── package-lock.json
│ ├── package.json
│ ├── plugin_constructor_str.js
│ ├── plugin_eval_expr.js
│ ├── plugin_eval_program.js
│ ├── plugin_eval_return_fncall.js
│ ├── plugin_eval_return_str.js
│ ├── plugin_fix_eval.js
│ ├── plugin_refactor_regex_constr.js
│ ├── plugin_regex_str.js
│ ├── plugin_simplify_false_regex.js
│ ├── plugin_simplify_string_name.js
│ ├── plugin_string_array_join.js
│ ├── plugin_string_constructor_name.js
│ ├── plugin_string_split.js
│ ├── plugin_undo_boolean_trick.js
│ ├── plugin_undo_concat_trick.js
│ ├── plugin_undo_entries_trick.js
│ ├── plugin_undo_escape_call.js
│ ├── plugin_undo_flat_trick.js
│ ├── plugin_undo_fontcolor_trick.js
│ ├── plugin_undo_function_date_trick.js
│ ├── plugin_undo_function_escape_trick.js
│ ├── plugin_undo_italics_trick.js
│ ├── plugin_undo_number_tostring_trick.js
│ ├── plugin_undo_object_tostring_trick.js
│ ├── plugin_undo_regexp_trick.js
│ ├── plugin_undo_slice_trick.js
│ └── plugin_undo_string_trick.js
├── 2023-06-27-abusing-ahrefs-backlink-checker
└── ahrefs_hax.py
├── 2023-07-02-self-defending-js-code-and-debugger-traps
├── antidebug.js
├── self_defending.js
├── self_defending_edited.js
└── unprotected.js
├── 2023-07-22-using-scrapy-playwright-for-integrating-browser-automation-with-scrapy
├── kw_checker.py
└── requirements.txt
├── 2023-08-12-scrapy-by-example-scraping-company-data-from-yelp
├── recon
│ ├── __init__.py
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ │ ├── __init__.py
│ │ └── yelp.py
└── scrapy.cfg
├── 2023-08-14-abusing-goat-mobile-api-for-data-scraping
└── scrape.py
├── 2023-09-15-solving-a-simple-js-challenge-with-sandboxing
├── in.js
├── output.js
├── sandbox.js
├── transform.js
└── trick.sh
├── 2023-09-22-parsing-html-documents-with-beautifulsoup
└── test.html
├── 2023-10-16-extracting-data-from-elasticsearch
└── api_scrape.py
├── 2023-11-05-scraping-data-from-google-places-api
├── gplaces.ini
├── gplaces.py
└── requirements.txt
├── 2023-12-27-retrospective-scraping-of-historical-data-from-internet-archive-snapshots
├── iowa_doc_history.py
└── recover_timestamp.ipynb
├── 2024-02-04-ssh-tips-and-tricks
└── paramiko_example.py
├── 2024-04-12-scraping-clutch-for-b2b-company-data
├── 1_clutch_lists.py
├── 2_clutch_pages.py
├── 3_merge.py
├── get_cookies.py
├── get_cookies_sync.py
└── tls_session.py
├── 2024-10-01-katana-web-crawler-for-offensive-security-and-web-exploration
├── field-config.yaml
├── go.mod
└── main.go
└── README.md
/2021-11-26-introducing-gpt3/api_example.py:
--------------------------------------------------------------------------------
1 | import os
2 | import openai
3 |
4 | openai.api_key = os.getenv("OPENAI_API_KEY")
5 |
6 | response = openai.Completion.create(
7 | engine="davinci-instruct-beta-v3",
8 | prompt="Write a Python script that takes a list of integers via standard input and prints a sum of them",
9 | temperature=0.7,
10 | max_tokens=64,
11 | top_p=1,
12 | frequency_penalty=0,
13 | presence_penalty=0
14 | )
15 |
--------------------------------------------------------------------------------
/2021-12-04-sending-mass-dms-on-reddit-through-api/extract_usernames.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cat posts.csv | tail -n +2 | awk -F "," '{ print $2 }' | sort | uniq > users.txt
4 |
--------------------------------------------------------------------------------
/2021-12-12-using-ephemeral-onion-services-for-quick-nat-traversal/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM debian:11
2 |
3 | RUN apt-get update && apt-get install -y python3 python3-pip hugo tor
4 | RUN pip3 install stem
5 |
6 | ADD . /trickster.dev
7 | WORKDIR /trickster.dev
8 |
9 | ENTRYPOINT bash -c "tor --RunAsDaemon 1 --ControlPort 9051 && python3 run_onion_service.py"
10 |
11 |
--------------------------------------------------------------------------------
/2022-02-13-introduction-to-scrapy-framework/books_to_scrape/books_to_scrape/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rl1987/trickster.dev-code/bedff26564ced58e899e8efca9ebc9f91f8adb64/2022-02-13-introduction-to-scrapy-framework/books_to_scrape/books_to_scrape/__init__.py
--------------------------------------------------------------------------------
/2022-02-13-introduction-to-scrapy-framework/books_to_scrape/books_to_scrape/items.py:
--------------------------------------------------------------------------------
1 | # Define here the models for your scraped items
2 | #
3 | # See documentation in:
4 | # https://docs.scrapy.org/en/latest/topics/items.html
5 |
6 | import scrapy
7 |
8 | class Book(scrapy.Item):
9 | title = scrapy.Field()
10 | upc = scrapy.Field()
11 | description = scrapy.Field()
12 | price_excl_tax = scrapy.Field()
13 | price_incl_tax = scrapy.Field()
14 | availability = scrapy.Field()
15 | n_reviews = scrapy.Field()
16 |
--------------------------------------------------------------------------------
/2022-02-13-introduction-to-scrapy-framework/books_to_scrape/books_to_scrape/spiders/__init__.py:
--------------------------------------------------------------------------------
1 | # This package will contain the spiders of your Scrapy project
2 | #
3 | # Please refer to the documentation for information on how to create and manage
4 | # your spiders.
5 |
--------------------------------------------------------------------------------
/2022-02-13-introduction-to-scrapy-framework/books_to_scrape/scrapy.cfg:
--------------------------------------------------------------------------------
1 | # Automatically created by: scrapy startproject
2 | #
3 | # For more information about the [deploy] section see:
4 | # https://scrapyd.readthedocs.io/en/latest/deploy.html
5 |
6 | [settings]
7 | default = books_to_scrape.settings
8 |
9 | [deploy]
10 | #url = http://localhost:6800/
11 | project = books_to_scrape
12 |
--------------------------------------------------------------------------------
/2022-03-09-sending-notifications-programmatically/phonecall.twiml.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Data center is on fire!
4 |
5 |
--------------------------------------------------------------------------------
/2022-03-09-sending-notifications-programmatically/smtplib_examply.py:
--------------------------------------------------------------------------------
1 | import smtplib
2 |
3 | def prompt(prompt):
4 | return input(prompt).strip()
5 |
6 | fromaddr = prompt("From: ")
7 | toaddrs = prompt("To: ").split()
8 | print("Enter message, end with ^D (Unix) or ^Z (Windows):")
9 |
10 | # Add the From: and To: headers at the start!
11 | msg = ("From: %s\r\nTo: %s\r\n\r\n"
12 | % (fromaddr, ", ".join(toaddrs)))
13 | while True:
14 | try:
15 | line = input()
16 | except EOFError:
17 | break
18 | if not line:
19 | break
20 | msg = msg + line
21 |
22 | print("Message length is", len(msg))
23 |
24 | server = smtplib.SMTP('localhost')
25 | server.set_debuglevel(1)
26 | server.sendmail(fromaddr, toaddrs, msg)
27 | server.quit()
28 |
--------------------------------------------------------------------------------
/2022-03-09-sending-notifications-programmatically/twilio_sms.py:
--------------------------------------------------------------------------------
1 | from twilio.rest import Client
2 |
3 | account_sid = "[REDACTED]"
4 | auth_token = "[REDACTED]"
5 | client = Client(account_sid, auth_token)
6 |
7 | message = client.messages.create(body="Hello there!", from_='[REDACTED]', to='[REDACTED]')
8 |
--------------------------------------------------------------------------------
/2022-03-20-decrypting-your-own-https-traffic-with-wireshark/tlskeylogger.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Label
6 | sslkeylogger
7 | ProgramArguments
8 |
9 | sh
10 | -c
11 |
12 | launchctl setenv SSLKEYLOGFILE ~/.sslkeyfile
13 |
14 |
15 | RunAtLoad
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/2022-03-25-reproducible-linux-environments-with-vagrant-and-terraform/Vagrantfile:
--------------------------------------------------------------------------------
1 | Vagrant.configure("2") do |config|
2 | config.vm.box = "generic/debian11"
3 | config.vm.network "forwarded_port", guest: 5678, host: 5678
4 | config.vm.synced_folder ".", "/vagrant"
5 | config.vm.provision "shell", path: "provision.sh"
6 | end
7 |
--------------------------------------------------------------------------------
/2022-03-25-reproducible-linux-environments-with-vagrant-and-terraform/main.tf:
--------------------------------------------------------------------------------
1 | terraform {
2 | required_providers {
3 | digitalocean = {
4 | source = "digitalocean/digitalocean"
5 | version = "~> 2.0"
6 | }
7 | }
8 | }
9 |
10 | provider "digitalocean" {
11 | token = file("do_token.txt")
12 | }
13 |
14 | resource "digitalocean_droplet" "n8n" {
15 | image = "debian-11-x64"
16 | name = "n8n"
17 | region = "sfo3"
18 | size = "s-1vcpu-1gb"
19 | user_data = file("provision.sh")
20 | ssh_keys = ["[REDACTED]"]
21 | }
22 |
23 | output "server_ip" {
24 | value = resource.digitalocean_droplet.n8n.ipv4_address
25 | }
26 |
27 |
--------------------------------------------------------------------------------
/2022-03-25-reproducible-linux-environments-with-vagrant-and-terraform/provision.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -x
4 |
5 | apt-get update
6 |
7 | curl -fsSL https://deb.nodesource.com/setup_17.x -o /tmp/install_node.sh
8 | bash /tmp/install_node.sh
9 | apt-get install -y gcc g++ make nodejs
10 |
11 | curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
12 | echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
13 | apt-get update
14 | apt-get install -y yarn
15 |
16 | npm install n8n -g
17 | npm install pm2 -g
18 |
19 | pm2 start n8n
20 | pm2 startup
21 | pm2 save
22 |
--------------------------------------------------------------------------------
/2022-03-26-running-gui-apps-within-docker-containers/1/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM ubuntu:latest
2 | RUN apt-get update && apt-get install -y firefox x11vnc xvfb
3 | RUN echo "exec firefox" > ~/.xinitrc && chmod +x ~/.xinitrc
4 | CMD ["x11vnc", "-create", "-noxrecord", "-noxfixes", "-noxdamage", "-forever", "-passwd", "trustno1"]
5 |
--------------------------------------------------------------------------------
/2022-03-26-running-gui-apps-within-docker-containers/2/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM ubuntu:latest
2 | RUN apt-get update && apt-get install -y libxext-dev libxrender-dev libxtst-dev firefox
3 | CMD firefox
4 |
--------------------------------------------------------------------------------
/2022-03-26-running-gui-apps-within-docker-containers/2/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '2'
2 | services:
3 | firefox:
4 | image: firefox
5 | environment:
6 | - DISPLAY=novnc:0
7 | depends_on:
8 | - novnc
9 | networks:
10 | - x11
11 | novnc:
12 | image: theasp/novnc:latest
13 | environment:
14 | # Adjust to your screen size
15 | - DISPLAY_WIDTH=1600
16 | - DISPLAY_HEIGHT=968
17 | - RUN_XTERM=no
18 | ports:
19 | - "8080:8080"
20 | networks:
21 | - x11
22 | networks:
23 | x11:
24 |
--------------------------------------------------------------------------------
/2022-04-02-smtp-enumeration-for-fun-and-profit.md/basic_wordlist.txt:
--------------------------------------------------------------------------------
1 | abuse
2 | noc
3 | security
4 | postmaster
5 | hostmaster
6 | usenet
7 | news
8 | webmaster
9 | www
10 | uucp
11 | ftp
12 | support
13 | info
14 | sales
15 |
--------------------------------------------------------------------------------
/2022-04-19-compiling-python-programs-with-pyinstaller/images/bitcoin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rl1987/trickster.dev-code/bedff26564ced58e899e8efca9ebc9f91f8adb64/2022-04-19-compiling-python-programs-with-pyinstaller/images/bitcoin.png
--------------------------------------------------------------------------------
/2022-06-04-turning-scrapy-spider-into-api-with-scrapyrt/books_to_scrape/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM python:3-slim
2 |
3 | RUN pip3 install scrapy scrapyrt
4 |
5 | RUN mkdir /books_to_scrape
6 | ADD . /books_to_scrape
7 | WORKDIR /books_to_scrape
8 |
9 | EXPOSE 9080
10 |
11 | ENTRYPOINT ["scrapyrt", "-i", "0.0.0.0"]
12 |
--------------------------------------------------------------------------------
/2022-06-04-turning-scrapy-spider-into-api-with-scrapyrt/books_to_scrape/books_to_scrape/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rl1987/trickster.dev-code/bedff26564ced58e899e8efca9ebc9f91f8adb64/2022-06-04-turning-scrapy-spider-into-api-with-scrapyrt/books_to_scrape/books_to_scrape/__init__.py
--------------------------------------------------------------------------------
/2022-06-04-turning-scrapy-spider-into-api-with-scrapyrt/books_to_scrape/books_to_scrape/items.py:
--------------------------------------------------------------------------------
1 | # Define here the models for your scraped items
2 | #
3 | # See documentation in:
4 | # https://docs.scrapy.org/en/latest/topics/items.html
5 |
6 | import scrapy
7 |
8 | class Book(scrapy.Item):
9 | title = scrapy.Field()
10 | upc = scrapy.Field()
11 | description = scrapy.Field()
12 | price_excl_tax = scrapy.Field()
13 | price_incl_tax = scrapy.Field()
14 | availability = scrapy.Field()
15 | n_reviews = scrapy.Field()
16 |
--------------------------------------------------------------------------------
/2022-06-04-turning-scrapy-spider-into-api-with-scrapyrt/books_to_scrape/books_to_scrape/spiders/__init__.py:
--------------------------------------------------------------------------------
1 | # This package will contain the spiders of your Scrapy project
2 | #
3 | # Please refer to the documentation for information on how to create and manage
4 | # your spiders.
5 |
--------------------------------------------------------------------------------
/2022-06-04-turning-scrapy-spider-into-api-with-scrapyrt/books_to_scrape/scrapy.cfg:
--------------------------------------------------------------------------------
1 | # Automatically created by: scrapy startproject
2 | #
3 | # For more information about the [deploy] section see:
4 | # https://scrapyd.readthedocs.io/en/latest/deploy.html
5 |
6 | [settings]
7 | default = books_to_scrape.settings
8 |
9 | [deploy]
10 | #url = http://localhost:6800/
11 | project = books_to_scrape
12 |
--------------------------------------------------------------------------------
/2022-06-15-understanding-abstract-syntax-trees/hello.c:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | int main(int argc, char **argv) {
4 | (void)argc;
5 | (void)argv;
6 |
7 | printf("Hello, world!\n");
8 |
9 | return 0;
10 | }
11 |
--------------------------------------------------------------------------------
/2022-06-15-understanding-abstract-syntax-trees/hello.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | def main():
4 | print("Hello world")
5 |
6 | if __name__ == "__main__":
7 | main()
8 |
--------------------------------------------------------------------------------
/2022-07-02-how-to-scrape-zillow-with-python-and-scrapy/scrapy.cfg:
--------------------------------------------------------------------------------
1 | # Automatically created by: scrapy startproject
2 | #
3 | # For more information about the [deploy] section see:
4 | # https://scrapyd.readthedocs.io/en/latest/deploy.html
5 |
6 | [settings]
7 | default = zillow.settings
8 |
9 | [deploy]
10 | #url = http://localhost:6800/
11 | project = zillow
12 |
--------------------------------------------------------------------------------
/2022-07-02-how-to-scrape-zillow-with-python-and-scrapy/zillow/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rl1987/trickster.dev-code/bedff26564ced58e899e8efca9ebc9f91f8adb64/2022-07-02-how-to-scrape-zillow-with-python-and-scrapy/zillow/__init__.py
--------------------------------------------------------------------------------
/2022-07-02-how-to-scrape-zillow-with-python-and-scrapy/zillow/pipelines.py:
--------------------------------------------------------------------------------
1 | # Define your item pipelines here
2 | #
3 | # Don't forget to add your pipeline to the ITEM_PIPELINES setting
4 | # See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
5 |
6 |
7 | # useful for handling different item types with a single interface
8 | from itemadapter import ItemAdapter
9 |
10 |
11 | class ZillowPipeline:
12 | def process_item(self, item, spider):
13 | return item
14 |
--------------------------------------------------------------------------------
/2022-07-02-how-to-scrape-zillow-with-python-and-scrapy/zillow/spiders/__init__.py:
--------------------------------------------------------------------------------
1 | # This package will contain the spiders of your Scrapy project
2 | #
3 | # Please refer to the documentation for information on how to create and manage
4 | # your spiders.
5 |
--------------------------------------------------------------------------------
/2022-07-10-javascript-obfuscation-techniques-by-example/compress.js:
--------------------------------------------------------------------------------
1 | (function(){fetch('https://news.ycombinator.com/',{'headers':{'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','accept-language':'en-GB,en-US;q=0.9,en;q=0.8','sec-ch-ua':'".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"','sec-ch-ua-mobile':'?0','sec-ch-ua-platform':'"macOS"','sec-fetch-dest':'document','sec-fetch-mode':'navigate','sec-fetch-site':'none','sec-fetch-user':'?1','upgrade-insecure-requests':'1'},'referrerPolicy':'strict-origin-when-cross-origin','body':null,'method':'GET'});}())
--------------------------------------------------------------------------------
/2022-07-10-javascript-obfuscation-techniques-by-example/hello.js:
--------------------------------------------------------------------------------
1 | console.log("Hello, world! " + 123);
--------------------------------------------------------------------------------
/2022-07-10-javascript-obfuscation-techniques-by-example/hello2.js:
--------------------------------------------------------------------------------
1 | let oneTwoThree = 123;
2 | let hello = "Hello, world! ";
3 | console.log(hello + oneTwoThree);
4 |
--------------------------------------------------------------------------------
/2022-07-10-javascript-obfuscation-techniques-by-example/hexstring.js:
--------------------------------------------------------------------------------
1 | console["\x6C\x6F\x67"]("\x48\x65\x6C\x6C\x6F\x2C\x20\x77\x6F\x72\x6C\x64\x21\x20"+ 123)
2 |
--------------------------------------------------------------------------------
/2022-07-10-javascript-obfuscation-techniques-by-example/identifiers.js:
--------------------------------------------------------------------------------
1 | (function () {
2 | var a = [
3 | 'log',
4 | 'Hello, world! ',
5 | 123
6 | ];
7 | console[a[0]](a[1] + a[2]);
8 | }())
--------------------------------------------------------------------------------
/2022-07-10-javascript-obfuscation-techniques-by-example/mangling.js:
--------------------------------------------------------------------------------
1 | (function () {
2 | var a = 123;
3 | var b = 'Hello, world! ';
4 | console.log(b + a);
5 | }())
--------------------------------------------------------------------------------
/2022-07-10-javascript-obfuscation-techniques-by-example/stringarray.js:
--------------------------------------------------------------------------------
1 | var _0x8b75=["Hello, world! ","log"];console[_0x8b75[1]](_0x8b75[0]+ 123)
2 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/brackets.js:
--------------------------------------------------------------------------------
1 | console.log("AAA");
2 | console["log"]("AAA");
3 |
4 | let o = {};
5 | o["a"] = 42;
6 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/clean2.js:
--------------------------------------------------------------------------------
1 | console.log("AAA");
2 | console.log("AAA");
3 | let o = {};
4 | o["a"] = 42;
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/clean3.js:
--------------------------------------------------------------------------------
1 | console.log("123");
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/.bin/babel:
--------------------------------------------------------------------------------
1 | ../@babel/cli/bin/babel.js
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/.bin/babel-external-helpers:
--------------------------------------------------------------------------------
1 | ../@babel/cli/bin/babel-external-helpers.js
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/.bin/browserslist:
--------------------------------------------------------------------------------
1 | ../browserslist/cli.js
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/.bin/browserslist-lint:
--------------------------------------------------------------------------------
1 | ../update-browserslist-db/cli.js
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/.bin/jsesc:
--------------------------------------------------------------------------------
1 | ../jsesc/bin/jsesc
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/.bin/json5:
--------------------------------------------------------------------------------
1 | ../json5/lib/cli.js
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/.bin/parser:
--------------------------------------------------------------------------------
1 | ../@babel/parser/bin/babel-parser.js
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/.bin/semver:
--------------------------------------------------------------------------------
1 | ../semver/bin/semver.js
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/cli/README.md:
--------------------------------------------------------------------------------
1 | # @babel/cli
2 |
3 | > Babel command line.
4 |
5 | See our website [@babel/cli](https://babeljs.io/docs/en/babel-cli) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20cli%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/cli
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/cli --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/cli/bin/babel-external-helpers.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | require("../lib/babel-external-helpers");
4 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/cli/bin/babel.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | require("../lib/babel");
4 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/cli/index.js:
--------------------------------------------------------------------------------
1 | throw new Error("Use the `@babel/core` package instead of `@babel/cli`.");
2 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/code-frame/README.md:
--------------------------------------------------------------------------------
1 | # @babel/code-frame
2 |
3 | > Generate errors that contain a code frame that point to source locations.
4 |
5 | See our website [@babel/code-frame](https://babeljs.io/docs/en/babel-code-frame) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/code-frame
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/code-frame --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/compat-data/README.md:
--------------------------------------------------------------------------------
1 | # @babel/compat-data
2 |
3 | >
4 |
5 | See our website [@babel/compat-data](https://babeljs.io/docs/en/babel-compat-data) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/compat-data
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/compat-data
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/compat-data/corejs2-built-ins.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/corejs2-built-ins.json");
2 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/compat-data/corejs3-shipped-proposals.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/corejs3-shipped-proposals.json");
2 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json:
--------------------------------------------------------------------------------
1 | [
2 | "esnext.global-this",
3 | "esnext.promise.all-settled",
4 | "esnext.string.match-all"
5 | ]
6 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/compat-data/data/native-modules.json:
--------------------------------------------------------------------------------
1 | {
2 | "es6.module": {
3 | "chrome": "61",
4 | "and_chr": "61",
5 | "edge": "16",
6 | "firefox": "60",
7 | "and_ff": "60",
8 | "node": "13.2.0",
9 | "opera": "48",
10 | "op_mob": "48",
11 | "safari": "10.1",
12 | "ios": "10.3",
13 | "samsung": "8.2",
14 | "android": "61",
15 | "electron": "2.0",
16 | "ios_saf": "10.3"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/compat-data/native-modules.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/native-modules.json");
2 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/compat-data/overlapping-plugins.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/overlapping-plugins.json");
2 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/compat-data/plugin-bugfixes.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/plugin-bugfixes.json");
2 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/compat-data/plugins.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/plugins.json");
2 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/core/README.md:
--------------------------------------------------------------------------------
1 | # @babel/core
2 |
3 | > Babel compiler core.
4 |
5 | See our website [@babel/core](https://babeljs.io/docs/en/babel-core) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20core%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/core
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/core --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/generator/README.md:
--------------------------------------------------------------------------------
1 | # @babel/generator
2 |
3 | > Turns an AST into code.
4 |
5 | See our website [@babel/generator](https://babeljs.io/docs/en/babel-generator) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20generator%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/generator
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/generator --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/src/sourcemap-segment.ts:
--------------------------------------------------------------------------------
1 | type GeneratedColumn = number;
2 | type SourcesIndex = number;
3 | type SourceLine = number;
4 | type SourceColumn = number;
5 | type NamesIndex = number;
6 |
7 | export type SourceMapSegment =
8 | | [GeneratedColumn]
9 | | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn]
10 | | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex];
11 |
12 | export const COLUMN = 0;
13 | export const SOURCES_INDEX = 1;
14 | export const SOURCE_LINE = 2;
15 | export const SOURCE_COLUMN = 3;
16 | export const NAMES_INDEX = 4;
17 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/helper-compilation-targets/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-compilation-targets
2 |
3 | > Helper functions on Babel compilation targets
4 |
5 | See our website [@babel/helper-compilation-targets](https://babeljs.io/docs/en/babel-helper-compilation-targets) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-compilation-targets
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-compilation-targets
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/helper-environment-visitor/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-environment-visitor
2 |
3 | > Helper visitor to only visit nodes in the current 'this' context
4 |
5 | See our website [@babel/helper-environment-visitor](https://babeljs.io/docs/en/babel-helper-environment-visitor) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/helper-environment-visitor
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-environment-visitor --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/helper-function-name/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-function-name
2 |
3 | > Helper function to change the property 'name' of every function
4 |
5 | See our website [@babel/helper-function-name](https://babeljs.io/docs/en/babel-helper-function-name) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-function-name
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-function-name
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/helper-hoist-variables/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-hoist-variables
2 |
3 | > Helper function to hoist variables
4 |
5 | See our website [@babel/helper-hoist-variables](https://babeljs.io/docs/en/babel-helper-hoist-variables) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-hoist-variables
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-hoist-variables
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/helper-module-imports/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-module-imports
2 |
3 | > Babel helper functions for inserting module loads
4 |
5 | See our website [@babel/helper-module-imports](https://babeljs.io/docs/en/babel-helper-module-imports) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-module-imports
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-module-imports
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/helper-module-transforms/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-module-transforms
2 |
3 | > Babel helper functions for implementing ES6 module transformations
4 |
5 | See our website [@babel/helper-module-transforms](https://babeljs.io/docs/en/babel-helper-module-transforms) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-module-transforms
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-module-transforms
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/helper-simple-access/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-simple-access
2 |
3 | > Babel helper for ensuring that access to a given value is performed through simple accesses
4 |
5 | See our website [@babel/helper-simple-access](https://babeljs.io/docs/en/babel-helper-simple-access) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-simple-access
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-simple-access
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/helper-split-export-declaration/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-split-export-declaration
2 |
3 | >
4 |
5 | See our website [@babel/helper-split-export-declaration](https://babeljs.io/docs/en/babel-helper-split-export-declaration) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-split-export-declaration
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-split-export-declaration
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/helper-validator-identifier/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-validator-identifier
2 |
3 | > Validate identifier/keywords name
4 |
5 | See our website [@babel/helper-validator-identifier](https://babeljs.io/docs/en/babel-helper-validator-identifier) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-validator-identifier
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-validator-identifier
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/helper-validator-option/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-validator-option
2 |
3 | > Validate plugin/preset options
4 |
5 | See our website [@babel/helper-validator-option](https://babeljs.io/docs/en/babel-helper-validator-option) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-validator-option
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-validator-option
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/helpers/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helpers
2 |
3 | > Collection of helper functions used by Babel transforms.
4 |
5 | See our website [@babel/helpers](https://babeljs.io/docs/en/babel-helpers) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/helpers
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helpers --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/helpers/scripts/package.json:
--------------------------------------------------------------------------------
1 | { "type": "module" }
2 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/highlight/README.md:
--------------------------------------------------------------------------------
1 | # @babel/highlight
2 |
3 | > Syntax highlight JavaScript strings for output in terminals.
4 |
5 | See our website [@babel/highlight](https://babeljs.io/docs/en/babel-highlight) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/highlight
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/highlight --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/parser/README.md:
--------------------------------------------------------------------------------
1 | # @babel/parser
2 |
3 | > A JavaScript parser
4 |
5 | See our website [@babel/parser](https://babeljs.io/docs/en/babel-parser) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20parser%20(babylon)%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/parser
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/parser --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/parser/bin/babel-parser.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | /* eslint no-var: 0 */
3 |
4 | var parser = require("..");
5 | var fs = require("fs");
6 |
7 | var filename = process.argv[2];
8 | if (!filename) {
9 | console.error("no filename specified");
10 | } else {
11 | var file = fs.readFileSync(filename, "utf8");
12 | var ast = parser.parse(file);
13 |
14 | console.log(JSON.stringify(ast, null, " "));
15 | }
16 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/parser/index.cjs:
--------------------------------------------------------------------------------
1 | try {
2 | module.exports = require("./lib/index.cjs");
3 | } catch {
4 | module.exports = require("./lib/index.js");
5 | }
6 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/template/README.md:
--------------------------------------------------------------------------------
1 | # @babel/template
2 |
3 | > Generate an AST from a string template.
4 |
5 | See our website [@babel/template](https://babeljs.io/docs/en/babel-template) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/template
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/template --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/traverse/README.md:
--------------------------------------------------------------------------------
1 | # @babel/traverse
2 |
3 | > The Babel Traverse module maintains the overall tree state, and is responsible for replacing, removing, and adding nodes
4 |
5 | See our website [@babel/traverse](https://babeljs.io/docs/en/babel-traverse) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20traverse%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/traverse
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/traverse --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/traverse/scripts/generators/asserts.js:
--------------------------------------------------------------------------------
1 | import * as t from "@babel/types";
2 |
3 | export default function generateAsserts() {
4 | let output = `/*
5 | * This file is auto-generated! Do not modify it directly.
6 | * To re-generate run 'make build'
7 | */
8 | import * as t from "@babel/types";
9 | import NodePath from "../index";
10 |
11 |
12 | export interface NodePathAssetions {`;
13 |
14 | for (const type of [...t.TYPES].sort()) {
15 | output += `
16 | assert${type}(
17 | opts?: object,
18 | ): asserts this is NodePath;`;
19 | }
20 |
21 | output += `
22 | }`;
23 |
24 | return output;
25 | }
26 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/traverse/scripts/package.json:
--------------------------------------------------------------------------------
1 | { "type": "module" }
2 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/types/README.md:
--------------------------------------------------------------------------------
1 | # @babel/types
2 |
3 | > Babel Types is a Lodash-esque utility library for AST nodes
4 |
5 | See our website [@babel/types](https://babeljs.io/docs/en/babel-types) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20types%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/types
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/types --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/types/scripts/generators/constants.js:
--------------------------------------------------------------------------------
1 | import * as definitions from "../../lib/definitions/index.js";
2 |
3 | export default function generateConstants() {
4 | let output = `/*
5 | * This file is auto-generated! Do not modify it directly.
6 | * To re-generate run 'make build'
7 | */
8 | import { FLIPPED_ALIAS_KEYS } from "../../definitions";\n\n`;
9 |
10 | Object.keys(definitions.FLIPPED_ALIAS_KEYS).forEach(type => {
11 | output += `export const ${type.toUpperCase()}_TYPES = FLIPPED_ALIAS_KEYS["${type}"];\n`;
12 | });
13 |
14 | return output;
15 | }
16 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/types/scripts/package.json:
--------------------------------------------------------------------------------
1 | { "type": "module" }
2 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/types/scripts/utils/formatBuilderName.js:
--------------------------------------------------------------------------------
1 | const toLowerCase = Function.call.bind("".toLowerCase);
2 |
3 | export default function formatBuilderName(type) {
4 | // FunctionExpression -> functionExpression
5 | // JSXIdentifier -> jsxIdentifier
6 | // V8IntrinsicIdentifier -> v8IntrinsicIdentifier
7 | return type.replace(/^([A-Z](?=[a-z0-9])|[A-Z]+(?=[A-Z]))/, toLowerCase);
8 | }
9 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/types/scripts/utils/lowerFirst.js:
--------------------------------------------------------------------------------
1 | export default function lowerFirst(string) {
2 | return string[0].toLowerCase() + string.slice(1);
3 | }
4 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@babel/types/scripts/utils/toFunctionName.js:
--------------------------------------------------------------------------------
1 | export default function toFunctionName(typeName) {
2 | const _ = typeName.replace(/^TS/, "ts").replace(/^JSX/, "jsx");
3 | return _.slice(0, 1).toLowerCase() + _.slice(1);
4 | }
5 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@jridgewell/trace-mapping/src/resolve.ts:
--------------------------------------------------------------------------------
1 | import resolveUri from '@jridgewell/resolve-uri';
2 |
3 | export default function resolve(input: string, base: string | undefined): string {
4 | // The base is always treated as a directory, if it's not empty.
5 | // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327
6 | // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401
7 | if (base && !base.endsWith('/')) base += '/';
8 |
9 | return resolveUri(input, base);
10 | }
11 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@jridgewell/trace-mapping/src/strip-filename.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Removes everything after the last "/", but leaves the slash.
3 | */
4 | export default function stripFilename(path: string | undefined | null): string {
5 | if (!path) return '';
6 | const index = path.lastIndexOf('/');
7 | return path.slice(0, index + 1);
8 | }
9 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/@nicolo-ribaudo/chokidar-2/README.md:
--------------------------------------------------------------------------------
1 | # `@nicolo-ribaudo/chokidar-2`
2 |
3 | A wrapper around `chokidar@2.1.8` that doesn't depend on `fsevents@1`.
4 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/balanced-match/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | tidelift: "npm/balanced-match"
2 | patreon: juliangruber
3 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/binary-extensions/binary-extensions.json.d.ts:
--------------------------------------------------------------------------------
1 | declare const binaryExtensionsJson: readonly string[];
2 |
3 | export = binaryExtensionsJson;
4 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/binary-extensions/index.d.ts:
--------------------------------------------------------------------------------
1 | /**
2 | List of binary file extensions.
3 |
4 | @example
5 | ```
6 | import binaryExtensions = require('binary-extensions');
7 |
8 | console.log(binaryExtensions);
9 | //=> ['3ds', '3g2', …]
10 | ```
11 | */
12 | declare const binaryExtensions: readonly string[];
13 |
14 | export = binaryExtensions;
15 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/binary-extensions/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./binary-extensions.json');
2 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/browserslist/error.d.ts:
--------------------------------------------------------------------------------
1 | declare class BrowserslistError extends Error {
2 | constructor(message: any)
3 | name: 'BrowserslistError'
4 | browserslist: true
5 | }
6 |
7 | export = BrowserslistError
8 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/browserslist/error.js:
--------------------------------------------------------------------------------
1 | function BrowserslistError(message) {
2 | this.name = 'BrowserslistError'
3 | this.message = message
4 | this.browserslist = true
5 | if (Error.captureStackTrace) {
6 | Error.captureStackTrace(this, BrowserslistError)
7 | }
8 | }
9 |
10 | BrowserslistError.prototype = Error.prototype
11 |
12 | module.exports = BrowserslistError
13 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/caniuse-lite/data/browsers.js:
--------------------------------------------------------------------------------
1 | module.exports={A:"ie",B:"edge",C:"firefox",D:"chrome",E:"safari",F:"opera",G:"ios_saf",H:"op_mini",I:"android",J:"bb",K:"op_mob",L:"and_chr",M:"and_ff",N:"ie_mob",O:"and_uc",P:"samsung",Q:"and_qq",R:"baidu",S:"kaios"};
2 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/color-name/README.md:
--------------------------------------------------------------------------------
1 | A JSON with color names and its values. Based on http://dev.w3.org/csswg/css-color/#named-colors.
2 |
3 | [](https://nodei.co/npm/color-name/)
4 |
5 |
6 | ```js
7 | var colors = require('color-name');
8 | colors.red //[255,0,0]
9 | ```
10 |
11 |
12 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/color-name/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "color-name",
3 | "version": "1.1.3",
4 | "description": "A list of color names and its values",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "node test.js"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git@github.com:dfcreative/color-name.git"
12 | },
13 | "keywords": [
14 | "color-name",
15 | "color",
16 | "color-keyword",
17 | "keyword"
18 | ],
19 | "author": "DY ",
20 | "license": "MIT",
21 | "bugs": {
22 | "url": "https://github.com/dfcreative/color-name/issues"
23 | },
24 | "homepage": "https://github.com/dfcreative/color-name"
25 | }
26 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/color-name/test.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | var names = require('./');
4 | var assert = require('assert');
5 |
6 | assert.deepEqual(names.red, [255,0,0]);
7 | assert.deepEqual(names.aliceblue, [240,248,255]);
8 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/concat-map/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - 0.4
4 | - 0.6
5 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/concat-map/example/map.js:
--------------------------------------------------------------------------------
1 | var concatMap = require('../');
2 | var xs = [ 1, 2, 3, 4, 5, 6 ];
3 | var ys = concatMap(xs, function (x) {
4 | return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];
5 | });
6 | console.dir(ys);
7 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/concat-map/index.js:
--------------------------------------------------------------------------------
1 | module.exports = function (xs, fn) {
2 | var res = [];
3 | for (var i = 0; i < xs.length; i++) {
4 | var x = fn(xs[i], i);
5 | if (isArray(x)) res.push.apply(res, x);
6 | else res.push(x);
7 | }
8 | return res;
9 | };
10 |
11 | var isArray = Array.isArray || function (xs) {
12 | return Object.prototype.toString.call(xs) === '[object Array]';
13 | };
14 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/debug/src/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Detect Electron renderer / nwjs process, which is node, but we should
3 | * treat as a browser.
4 | */
5 |
6 | if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {
7 | module.exports = require('./browser.js');
8 | } else {
9 | module.exports = require('./node.js');
10 | }
11 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/electron-to-chromium/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | v1.3.0
2 | * Additionally include chromium to electron mappings
3 |
4 | v1.2.0
5 | * versions and full-versions are now separately importable.
6 |
7 | v1.1.0
8 | * Both electronToChromium and electronToBrowserList now can accept strings as well as numbers.
9 |
10 | v1.0.1
11 | Update documentation
12 |
13 | v1.0.0
14 | Inititial release
15 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/electron-to-chromium/chromium-versions.json:
--------------------------------------------------------------------------------
1 | {"39":"0.20","40":"0.21","41":"0.21","42":"0.25","43":"0.27","44":"0.30","45":"0.31","47":"0.36","49":"0.37","50":"1.1","51":"1.2","52":"1.3","53":"1.4","54":"1.4","56":"1.6","58":"1.7","59":"1.8","61":"2.0","66":"3.0","69":"4.0","72":"5.0","73":"5.0","76":"6.0","78":"7.0","79":"8.0","80":"8.0","82":"9.0","83":"9.0","84":"10.0","85":"10.0","86":"11.0","87":"11.0","89":"12.0","90":"13.0","91":"13.0","92":"14.0","93":"14.0","94":"15.0","95":"16.0","96":"16.0","98":"17.0","99":"18.0","100":"18.0","102":"19.0","103":"20.0","104":"20.0"}
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/escalade/index.d.ts:
--------------------------------------------------------------------------------
1 | type Promisable = T | Promise;
2 | export type Callback = (directory: string, files: string[]) => Promisable;
3 | export default function (directory: string, callback: Callback): Promise;
4 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/escalade/sync/index.d.ts:
--------------------------------------------------------------------------------
1 | export type Callback = (directory: string, files: string[]) => string | false | void;
2 | export default function (directory: string, callback: Callback): string | void;
3 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/escalade/sync/index.js:
--------------------------------------------------------------------------------
1 | const { dirname, resolve } = require('path');
2 | const { readdirSync, statSync } = require('fs');
3 |
4 | module.exports = function (start, callback) {
5 | let dir = resolve('.', start);
6 | let tmp, stats = statSync(dir);
7 |
8 | if (!stats.isDirectory()) {
9 | dir = dirname(dir);
10 | }
11 |
12 | while (true) {
13 | tmp = callback(dir, readdirSync(dir));
14 | if (tmp) return resolve(dir, tmp);
15 | dir = dirname(tmp = dir);
16 | if (tmp === dir) break;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/escalade/sync/index.mjs:
--------------------------------------------------------------------------------
1 | import { dirname, resolve } from 'path';
2 | import { readdirSync, statSync } from 'fs';
3 |
4 | export default function (start, callback) {
5 | let dir = resolve('.', start);
6 | let tmp, stats = statSync(dir);
7 |
8 | if (!stats.isDirectory()) {
9 | dir = dirname(dir);
10 | }
11 |
12 | while (true) {
13 | tmp = callback(dir, readdirSync(dir));
14 | if (tmp) return resolve(dir, tmp);
15 | dir = dirname(tmp = dir);
16 | if (tmp === dir) break;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/escape-string-regexp/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
4 |
5 | module.exports = function (str) {
6 | if (typeof str !== 'string') {
7 | throw new TypeError('Expected a string');
8 | }
9 |
10 | return str.replace(matchOperatorsRe, '\\$&');
11 | };
12 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/escape-string-regexp/readme.md:
--------------------------------------------------------------------------------
1 | # escape-string-regexp [](https://travis-ci.org/sindresorhus/escape-string-regexp)
2 |
3 | > Escape RegExp special characters
4 |
5 |
6 | ## Install
7 |
8 | ```
9 | $ npm install --save escape-string-regexp
10 | ```
11 |
12 |
13 | ## Usage
14 |
15 | ```js
16 | const escapeStringRegexp = require('escape-string-regexp');
17 |
18 | const escapedString = escapeStringRegexp('how much $ for a unicorn?');
19 | //=> 'how much \$ for a unicorn\?'
20 |
21 | new RegExp(escapedString);
22 | ```
23 |
24 |
25 | ## License
26 |
27 | MIT © [Sindre Sorhus](http://sindresorhus.com)
28 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/fsevents/fsevents.node:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rl1987/trickster.dev-code/bedff26564ced58e899e8efca9ebc9f91f8adb64/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/fsevents/fsevents.node
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/gensync/test/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | presets: [
3 | ["env", { targets: { node: "current" }}],
4 | ],
5 | }
6 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/globals/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | module.exports = require('./globals.json');
3 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/has-flag/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | module.exports = (flag, argv) => {
3 | argv = argv || process.argv;
4 | const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');
5 | const pos = argv.indexOf(prefix + flag);
6 | const terminatorPos = argv.indexOf('--');
7 | return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);
8 | };
9 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/inherits/inherits.js:
--------------------------------------------------------------------------------
1 | try {
2 | var util = require('util');
3 | /* istanbul ignore next */
4 | if (typeof util.inherits !== 'function') throw '';
5 | module.exports = util.inherits;
6 | } catch (e) {
7 | /* istanbul ignore next */
8 | module.exports = require('./inherits_browser.js');
9 | }
10 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/is-binary-path/index.d.ts:
--------------------------------------------------------------------------------
1 | /**
2 | Check if a file path is a binary file.
3 |
4 | @example
5 | ```
6 | import isBinaryPath = require('is-binary-path');
7 |
8 | isBinaryPath('source/unicorn.png');
9 | //=> true
10 |
11 | isBinaryPath('source/unicorn.txt');
12 | //=> false
13 | ```
14 | */
15 | declare function isBinaryPath(filePath: string): boolean;
16 |
17 | export = isBinaryPath;
18 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/is-binary-path/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | const path = require('path');
3 | const binaryExtensions = require('binary-extensions');
4 |
5 | const extensions = new Set(binaryExtensions);
6 |
7 | module.exports = filePath => extensions.has(path.extname(filePath).slice(1).toLowerCase());
8 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/is-extglob/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * is-extglob
3 | *
4 | * Copyright (c) 2014-2016, Jon Schlinkert.
5 | * Licensed under the MIT License.
6 | */
7 |
8 | module.exports = function isExtglob(str) {
9 | if (typeof str !== 'string' || str === '') {
10 | return false;
11 | }
12 |
13 | var match;
14 | while ((match = /(\\).|([@?!+*]\(.*\))/g.exec(str))) {
15 | if (match[2]) return true;
16 | str = str.slice(match.index + match[0].length);
17 | }
18 |
19 | return false;
20 | };
21 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/is-number/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * is-number
3 | *
4 | * Copyright (c) 2014-present, Jon Schlinkert.
5 | * Released under the MIT License.
6 | */
7 |
8 | 'use strict';
9 |
10 | module.exports = function(num) {
11 | if (typeof num === 'number') {
12 | return num - num === 0;
13 | }
14 | if (typeof num === 'string' && num.trim() !== '') {
15 | return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);
16 | }
17 | return false;
18 | };
19 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/make-dir/node_modules/.bin/semver:
--------------------------------------------------------------------------------
1 | ../semver/bin/semver
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/node-releases/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "node-releases",
3 | "version": "2.0.6",
4 | "description": "Node.js releases data",
5 | "scripts": {
6 | "build": "node scripts/build.js"
7 | },
8 | "repository": "chicoxyzzy/node-releases",
9 | "keywords": [
10 | "nodejs",
11 | "releases"
12 | ],
13 | "author": "Sergey Rubanov ",
14 | "license": "MIT",
15 | "devDependencies": {
16 | "semver": "^7.3.5"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/picocolors/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "picocolors",
3 | "version": "1.0.0",
4 | "main": "./picocolors.js",
5 | "types": "./picocolors.d.ts",
6 | "browser": {
7 | "./picocolors.js": "./picocolors.browser.js"
8 | },
9 | "sideEffects": false,
10 | "description": "The tiniest and the fastest library for terminal output formatting with ANSI colors",
11 | "files": [
12 | "picocolors.*",
13 | "types.ts"
14 | ],
15 | "keywords": [
16 | "terminal",
17 | "colors",
18 | "formatting",
19 | "cli",
20 | "console"
21 | ],
22 | "author": "Alexey Raspopov",
23 | "repository": "alexeyraspopov/picocolors",
24 | "license": "ISC"
25 | }
26 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/picocolors/picocolors.browser.js:
--------------------------------------------------------------------------------
1 | var x=String;
2 | var create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};
3 | module.exports=create();
4 | module.exports.createColors = create;
5 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/picocolors/picocolors.d.ts:
--------------------------------------------------------------------------------
1 | import { Colors } from "./types"
2 |
3 | declare const picocolors: Colors & { createColors: (enabled?: boolean) => Colors }
4 |
5 | export = picocolors
6 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/picomatch/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | module.exports = require('./lib/picomatch');
4 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/semver/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "semver",
3 | "version": "6.3.0",
4 | "description": "The semantic version parser used by npm.",
5 | "main": "semver.js",
6 | "scripts": {
7 | "test": "tap",
8 | "preversion": "npm test",
9 | "postversion": "npm publish",
10 | "postpublish": "git push origin --follow-tags"
11 | },
12 | "devDependencies": {
13 | "tap": "^14.3.1"
14 | },
15 | "license": "ISC",
16 | "repository": "https://github.com/npm/node-semver",
17 | "bin": {
18 | "semver": "./bin/semver.js"
19 | },
20 | "files": [
21 | "bin",
22 | "range.bnf",
23 | "semver.js"
24 | ],
25 | "tap": {
26 | "check-coverage": true
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/semver/range.bnf:
--------------------------------------------------------------------------------
1 | range-set ::= range ( logical-or range ) *
2 | logical-or ::= ( ' ' ) * '||' ( ' ' ) *
3 | range ::= hyphen | simple ( ' ' simple ) * | ''
4 | hyphen ::= partial ' - ' partial
5 | simple ::= primitive | partial | tilde | caret
6 | primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
7 | partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
8 | xr ::= 'x' | 'X' | '*' | nr
9 | nr ::= '0' | [1-9] ( [0-9] ) *
10 | tilde ::= '~' partial
11 | caret ::= '^' partial
12 | qualifier ::= ( '-' pre )? ( '+' build )?
13 | pre ::= parts
14 | build ::= parts
15 | parts ::= part ( '.' part ) *
16 | part ::= nr | [-0-9A-Za-z]+
17 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/slash/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | module.exports = input => {
3 | const isExtendedLengthPath = /^\\\\\?\\/.test(input);
4 | const hasNonAscii = /[^\u0000-\u0080]+/.test(input); // eslint-disable-line no-control-regex
5 |
6 | if (isExtendedLengthPath || hasNonAscii) {
7 | return input;
8 | }
9 |
10 | return input.replace(/\\/g, '/');
11 | };
12 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/slash/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "slash",
3 | "version": "2.0.0",
4 | "description": "Convert Windows backslash paths to slash paths",
5 | "license": "MIT",
6 | "repository": "sindresorhus/slash",
7 | "author": {
8 | "name": "Sindre Sorhus",
9 | "email": "sindresorhus@gmail.com",
10 | "url": "sindresorhus.com"
11 | },
12 | "engines": {
13 | "node": ">=6"
14 | },
15 | "scripts": {
16 | "test": "xo && ava"
17 | },
18 | "files": [
19 | "index.js"
20 | ],
21 | "keywords": [
22 | "path",
23 | "seperator",
24 | "sep",
25 | "slash",
26 | "backslash",
27 | "windows",
28 | "win"
29 | ],
30 | "devDependencies": {
31 | "ava": "*",
32 | "xo": "*"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/supports-color/browser.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | module.exports = {
3 | stdout: false,
4 | stderr: false
5 | };
6 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/update-browserslist-db/check-npm-version.js:
--------------------------------------------------------------------------------
1 | let { execSync } = require('child_process')
2 | let pico = require('picocolors')
3 |
4 | try {
5 | let version = parseInt(execSync('npm -v'))
6 | if (version <= 6) {
7 | process.stderr.write(
8 | pico.red(
9 | 'Update npm or call ' +
10 | pico.yellow('npx browserslist@latest --update-db') +
11 | '\n'
12 | )
13 | )
14 | process.exit(1)
15 | }
16 | } catch (e) {}
17 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/node_modules/update-browserslist-db/index.d.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Run update and print output to terminal.
3 | */
4 | declare function updateDb(print?: (str: string) => void): Promise
5 |
6 | export = updateDb
7 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "devDependencies": {
3 | "@babel/cli": "^7.18.9",
4 | "@babel/core": "^7.18.9"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/rm_extra_semicolons.js:
--------------------------------------------------------------------------------
1 | const fs = require("fs");
2 |
3 | const parser = require("@babel/parser");
4 | const generate = require("@babel/generator").default;
5 | const traverse = require("@babel/traverse").default;
6 |
7 | let js = fs.readFileSync("too_many_semicolons.js", "utf-8");
8 |
9 | const ast = parser.parse(js);
10 |
11 | traverse(ast, {
12 | EmptyStatement: function(path) {
13 | path.remove();
14 | }
15 | });
16 |
17 | let clean = generate(ast).code;
18 |
19 | fs.writeFileSync("clean3.js", clean);
20 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/too_many_semicolons.js:
--------------------------------------------------------------------------------
1 | ;;;;;console.log("123");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 |
--------------------------------------------------------------------------------
/2022-07-20-javascript-ast-manipulation-with-babel-the-first-steps/undo_hexcoding.js:
--------------------------------------------------------------------------------
1 | const fs = require("fs");
2 |
3 | const parser = require("@babel/parser");
4 | const generate = require("@babel/generator").default;
5 | const traverse = require("@babel/traverse").default;
6 |
7 | let hjs = fs.readFileSync("hexcoded.js", "utf-8");
8 |
9 | const ast = parser.parse(hjs);
10 |
11 | traverse(ast, {
12 | StringLiteral: function(path) {
13 | path.node.extra.raw = "\"" + path.node.extra.rawValue + "\"";
14 | }
15 | });
16 |
17 | let clean = generate(ast).code;
18 |
19 | fs.writeFileSync("clean1.js", clean);
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/extract1.js:
--------------------------------------------------------------------------------
1 | const fs = require("fs");
2 |
3 | const parser = require("@babel/parser");
4 | const traverse = require("@babel/traverse").default;
5 |
6 | let js = fs.readFileSync("fb_example.js", "utf-8");
7 |
8 | const ast = parser.parse(js);
9 |
10 | var url = null;
11 |
12 | traverse(ast, {
13 | ObjectProperty: function(path) {
14 | if (!path.node.method && path.node.key.name == "href") {
15 | url = path.node.value.value;
16 | }
17 | }
18 | });
19 |
20 | console.log(url);
21 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/fb_example.js:
--------------------------------------------------------------------------------
1 | FB.ui({
2 | method: 'share',
3 | href: 'https://developers.facebook.com/docs/'
4 | }, function(response){});
5 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/.bin/babel:
--------------------------------------------------------------------------------
1 | ../@babel/cli/bin/babel.js
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/.bin/babel-external-helpers:
--------------------------------------------------------------------------------
1 | ../@babel/cli/bin/babel-external-helpers.js
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/.bin/babel-node:
--------------------------------------------------------------------------------
1 | ../babel/lib/cli.js
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/.bin/browserslist:
--------------------------------------------------------------------------------
1 | ../browserslist/cli.js
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/.bin/browserslist-lint:
--------------------------------------------------------------------------------
1 | ../update-browserslist-db/cli.js
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/.bin/jsesc:
--------------------------------------------------------------------------------
1 | ../jsesc/bin/jsesc
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/.bin/json5:
--------------------------------------------------------------------------------
1 | ../json5/lib/cli.js
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/.bin/parser:
--------------------------------------------------------------------------------
1 | ../@babel/parser/bin/babel-parser.js
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/.bin/semver:
--------------------------------------------------------------------------------
1 | ../semver/bin/semver.js
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/cli/README.md:
--------------------------------------------------------------------------------
1 | # @babel/cli
2 |
3 | > Babel command line.
4 |
5 | See our website [@babel/cli](https://babeljs.io/docs/en/babel-cli) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20cli%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/cli
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/cli --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/cli/bin/babel-external-helpers.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | require("../lib/babel-external-helpers");
4 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/cli/bin/babel.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | require("../lib/babel");
4 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/cli/index.js:
--------------------------------------------------------------------------------
1 | throw new Error("Use the `@babel/core` package instead of `@babel/cli`.");
2 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/code-frame/README.md:
--------------------------------------------------------------------------------
1 | # @babel/code-frame
2 |
3 | > Generate errors that contain a code frame that point to source locations.
4 |
5 | See our website [@babel/code-frame](https://babeljs.io/docs/en/babel-code-frame) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/code-frame
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/code-frame --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/compat-data/README.md:
--------------------------------------------------------------------------------
1 | # @babel/compat-data
2 |
3 | >
4 |
5 | See our website [@babel/compat-data](https://babeljs.io/docs/en/babel-compat-data) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/compat-data
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/compat-data
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/compat-data/corejs2-built-ins.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/corejs2-built-ins.json");
2 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/compat-data/corejs3-shipped-proposals.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/corejs3-shipped-proposals.json");
2 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json:
--------------------------------------------------------------------------------
1 | [
2 | "esnext.global-this",
3 | "esnext.promise.all-settled",
4 | "esnext.string.match-all"
5 | ]
6 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/compat-data/data/native-modules.json:
--------------------------------------------------------------------------------
1 | {
2 | "es6.module": {
3 | "chrome": "61",
4 | "and_chr": "61",
5 | "edge": "16",
6 | "firefox": "60",
7 | "and_ff": "60",
8 | "node": "13.2.0",
9 | "opera": "48",
10 | "op_mob": "48",
11 | "safari": "10.1",
12 | "ios": "10.3",
13 | "samsung": "8.2",
14 | "android": "61",
15 | "electron": "2.0",
16 | "ios_saf": "10.3"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/compat-data/native-modules.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/native-modules.json");
2 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/compat-data/overlapping-plugins.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/overlapping-plugins.json");
2 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/compat-data/plugin-bugfixes.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/plugin-bugfixes.json");
2 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/compat-data/plugins.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/plugins.json");
2 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/core/README.md:
--------------------------------------------------------------------------------
1 | # @babel/core
2 |
3 | > Babel compiler core.
4 |
5 | See our website [@babel/core](https://babeljs.io/docs/en/babel-core) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20core%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/core
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/core --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/generator/README.md:
--------------------------------------------------------------------------------
1 | # @babel/generator
2 |
3 | > Turns an AST into code.
4 |
5 | See our website [@babel/generator](https://babeljs.io/docs/en/babel-generator) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20generator%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/generator
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/generator --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/src/sourcemap-segment.ts:
--------------------------------------------------------------------------------
1 | type GeneratedColumn = number;
2 | type SourcesIndex = number;
3 | type SourceLine = number;
4 | type SourceColumn = number;
5 | type NamesIndex = number;
6 |
7 | export type SourceMapSegment =
8 | | [GeneratedColumn]
9 | | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn]
10 | | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex];
11 |
12 | export const COLUMN = 0;
13 | export const SOURCES_INDEX = 1;
14 | export const SOURCE_LINE = 2;
15 | export const SOURCE_COLUMN = 3;
16 | export const NAMES_INDEX = 4;
17 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/helper-compilation-targets/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-compilation-targets
2 |
3 | > Helper functions on Babel compilation targets
4 |
5 | See our website [@babel/helper-compilation-targets](https://babeljs.io/docs/en/babel-helper-compilation-targets) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-compilation-targets
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-compilation-targets
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/helper-environment-visitor/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-environment-visitor
2 |
3 | > Helper visitor to only visit nodes in the current 'this' context
4 |
5 | See our website [@babel/helper-environment-visitor](https://babeljs.io/docs/en/babel-helper-environment-visitor) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/helper-environment-visitor
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-environment-visitor --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/helper-function-name/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-function-name
2 |
3 | > Helper function to change the property 'name' of every function
4 |
5 | See our website [@babel/helper-function-name](https://babeljs.io/docs/en/babel-helper-function-name) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-function-name
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-function-name
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/helper-hoist-variables/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-hoist-variables
2 |
3 | > Helper function to hoist variables
4 |
5 | See our website [@babel/helper-hoist-variables](https://babeljs.io/docs/en/babel-helper-hoist-variables) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-hoist-variables
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-hoist-variables
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/helper-module-imports/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-module-imports
2 |
3 | > Babel helper functions for inserting module loads
4 |
5 | See our website [@babel/helper-module-imports](https://babeljs.io/docs/en/babel-helper-module-imports) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-module-imports
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-module-imports
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/helper-module-transforms/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-module-transforms
2 |
3 | > Babel helper functions for implementing ES6 module transformations
4 |
5 | See our website [@babel/helper-module-transforms](https://babeljs.io/docs/en/babel-helper-module-transforms) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-module-transforms
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-module-transforms
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/helper-simple-access/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-simple-access
2 |
3 | > Babel helper for ensuring that access to a given value is performed through simple accesses
4 |
5 | See our website [@babel/helper-simple-access](https://babeljs.io/docs/en/babel-helper-simple-access) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-simple-access
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-simple-access
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/helper-split-export-declaration/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-split-export-declaration
2 |
3 | >
4 |
5 | See our website [@babel/helper-split-export-declaration](https://babeljs.io/docs/en/babel-helper-split-export-declaration) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-split-export-declaration
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-split-export-declaration
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/helper-string-parser/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-string-parser
2 |
3 | > A utility package to parse strings
4 |
5 | See our website [@babel/helper-string-parser](https://babeljs.io/docs/en/babel-helper-string-parser) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-string-parser
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-string-parser
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/helper-validator-identifier/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-validator-identifier
2 |
3 | > Validate identifier/keywords name
4 |
5 | See our website [@babel/helper-validator-identifier](https://babeljs.io/docs/en/babel-helper-validator-identifier) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-validator-identifier
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-validator-identifier
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/helper-validator-option/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-validator-option
2 |
3 | > Validate plugin/preset options
4 |
5 | See our website [@babel/helper-validator-option](https://babeljs.io/docs/en/babel-helper-validator-option) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-validator-option
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-validator-option
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/helpers/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helpers
2 |
3 | > Collection of helper functions used by Babel transforms.
4 |
5 | See our website [@babel/helpers](https://babeljs.io/docs/en/babel-helpers) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/helpers
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helpers --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/helpers/scripts/package.json:
--------------------------------------------------------------------------------
1 | { "type": "module" }
2 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/highlight/README.md:
--------------------------------------------------------------------------------
1 | # @babel/highlight
2 |
3 | > Syntax highlight JavaScript strings for output in terminals.
4 |
5 | See our website [@babel/highlight](https://babeljs.io/docs/en/babel-highlight) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/highlight
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/highlight --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/parser/README.md:
--------------------------------------------------------------------------------
1 | # @babel/parser
2 |
3 | > A JavaScript parser
4 |
5 | See our website [@babel/parser](https://babeljs.io/docs/en/babel-parser) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20parser%20(babylon)%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/parser
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/parser --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/parser/bin/babel-parser.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | /* eslint no-var: 0 */
3 |
4 | var parser = require("..");
5 | var fs = require("fs");
6 |
7 | var filename = process.argv[2];
8 | if (!filename) {
9 | console.error("no filename specified");
10 | } else {
11 | var file = fs.readFileSync(filename, "utf8");
12 | var ast = parser.parse(file);
13 |
14 | console.log(JSON.stringify(ast, null, " "));
15 | }
16 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/parser/index.cjs:
--------------------------------------------------------------------------------
1 | try {
2 | module.exports = require("./lib/index.cjs");
3 | } catch {
4 | module.exports = require("./lib/index.js");
5 | }
6 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/template/README.md:
--------------------------------------------------------------------------------
1 | # @babel/template
2 |
3 | > Generate an AST from a string template.
4 |
5 | See our website [@babel/template](https://babeljs.io/docs/en/babel-template) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/template
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/template --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/traverse/README.md:
--------------------------------------------------------------------------------
1 | # @babel/traverse
2 |
3 | > The Babel Traverse module maintains the overall tree state, and is responsible for replacing, removing, and adding nodes
4 |
5 | See our website [@babel/traverse](https://babeljs.io/docs/en/babel-traverse) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20traverse%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/traverse
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/traverse --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/traverse/scripts/generators/asserts.js:
--------------------------------------------------------------------------------
1 | import * as t from "@babel/types";
2 |
3 | export default function generateAsserts() {
4 | let output = `/*
5 | * This file is auto-generated! Do not modify it directly.
6 | * To re-generate run 'make build'
7 | */
8 | import * as t from "@babel/types";
9 | import NodePath from "../index";
10 |
11 |
12 | export interface NodePathAssetions {`;
13 |
14 | for (const type of [...t.TYPES].sort()) {
15 | output += `
16 | assert${type}(
17 | opts?: object,
18 | ): asserts this is NodePath;`;
19 | }
20 |
21 | output += `
22 | }`;
23 |
24 | return output;
25 | }
26 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/traverse/scripts/package.json:
--------------------------------------------------------------------------------
1 | { "type": "module" }
2 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/types/README.md:
--------------------------------------------------------------------------------
1 | # @babel/types
2 |
3 | > Babel Types is a Lodash-esque utility library for AST nodes
4 |
5 | See our website [@babel/types](https://babeljs.io/docs/en/babel-types) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20types%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/types
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/types --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/types/scripts/generators/constants.js:
--------------------------------------------------------------------------------
1 | import * as definitions from "../../lib/definitions/index.js";
2 |
3 | export default function generateConstants() {
4 | let output = `/*
5 | * This file is auto-generated! Do not modify it directly.
6 | * To re-generate run 'make build'
7 | */
8 | import { FLIPPED_ALIAS_KEYS } from "../../definitions";\n\n`;
9 |
10 | Object.keys(definitions.FLIPPED_ALIAS_KEYS).forEach(type => {
11 | output += `export const ${type.toUpperCase()}_TYPES = FLIPPED_ALIAS_KEYS["${type}"];\n`;
12 | });
13 |
14 | return output;
15 | }
16 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/types/scripts/package.json:
--------------------------------------------------------------------------------
1 | { "type": "module" }
2 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/types/scripts/utils/formatBuilderName.js:
--------------------------------------------------------------------------------
1 | const toLowerCase = Function.call.bind("".toLowerCase);
2 |
3 | export default function formatBuilderName(type) {
4 | // FunctionExpression -> functionExpression
5 | // JSXIdentifier -> jsxIdentifier
6 | // V8IntrinsicIdentifier -> v8IntrinsicIdentifier
7 | return type.replace(/^([A-Z](?=[a-z0-9])|[A-Z]+(?=[A-Z]))/, toLowerCase);
8 | }
9 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/types/scripts/utils/lowerFirst.js:
--------------------------------------------------------------------------------
1 | export default function lowerFirst(string) {
2 | return string[0].toLowerCase() + string.slice(1);
3 | }
4 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@babel/types/scripts/utils/toFunctionName.js:
--------------------------------------------------------------------------------
1 | export default function toFunctionName(typeName) {
2 | const _ = typeName.replace(/^TS/, "ts").replace(/^JSX/, "jsx");
3 | return _.slice(0, 1).toLowerCase() + _.slice(1);
4 | }
5 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@jridgewell/trace-mapping/src/resolve.ts:
--------------------------------------------------------------------------------
1 | import resolveUri from '@jridgewell/resolve-uri';
2 |
3 | export default function resolve(input: string, base: string | undefined): string {
4 | // The base is always treated as a directory, if it's not empty.
5 | // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327
6 | // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401
7 | if (base && !base.endsWith('/')) base += '/';
8 |
9 | return resolveUri(input, base);
10 | }
11 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@jridgewell/trace-mapping/src/strip-filename.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Removes everything after the last "/", but leaves the slash.
3 | */
4 | export default function stripFilename(path: string | undefined | null): string {
5 | if (!path) return '';
6 | const index = path.lastIndexOf('/');
7 | return path.slice(0, index + 1);
8 | }
9 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/@nicolo-ribaudo/chokidar-2/README.md:
--------------------------------------------------------------------------------
1 | # `@nicolo-ribaudo/chokidar-2`
2 |
3 | A wrapper around `chokidar@2.1.8` that doesn't depend on `fsevents@1`.
4 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/babel/.npmignore:
--------------------------------------------------------------------------------
1 | src
2 | test
3 | node_modules
4 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/babel/README.md:
--------------------------------------------------------------------------------
1 | # babel
2 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/babel/index.js:
--------------------------------------------------------------------------------
1 | throw new Error("The node API for `babel` has been moved to `babel-core`.");
2 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/babel/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "babel",
3 | "version": "6.23.0",
4 | "description": "Turn ES6 code into readable vanilla ES5 with source maps",
5 | "author": "Sebastian McKenzie ",
6 | "homepage": "https://babeljs.io/",
7 | "license": "MIT",
8 | "repository": "https://github.com/babel/babel/tree/master/packages/babel",
9 | "bin": {
10 | "babel": "./lib/cli.js",
11 | "babel-node": "./lib/cli.js",
12 | "babel-external-helpers": "./lib/cli.js"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/balanced-match/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | tidelift: "npm/balanced-match"
2 | patreon: juliangruber
3 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/binary-extensions/binary-extensions.json.d.ts:
--------------------------------------------------------------------------------
1 | declare const binaryExtensionsJson: readonly string[];
2 |
3 | export = binaryExtensionsJson;
4 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/binary-extensions/index.d.ts:
--------------------------------------------------------------------------------
1 | /**
2 | List of binary file extensions.
3 |
4 | @example
5 | ```
6 | import binaryExtensions = require('binary-extensions');
7 |
8 | console.log(binaryExtensions);
9 | //=> ['3ds', '3g2', …]
10 | ```
11 | */
12 | declare const binaryExtensions: readonly string[];
13 |
14 | export = binaryExtensions;
15 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/binary-extensions/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./binary-extensions.json');
2 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/browserslist/error.d.ts:
--------------------------------------------------------------------------------
1 | declare class BrowserslistError extends Error {
2 | constructor(message: any)
3 | name: 'BrowserslistError'
4 | browserslist: true
5 | }
6 |
7 | export = BrowserslistError
8 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/browserslist/error.js:
--------------------------------------------------------------------------------
1 | function BrowserslistError(message) {
2 | this.name = 'BrowserslistError'
3 | this.message = message
4 | this.browserslist = true
5 | if (Error.captureStackTrace) {
6 | Error.captureStackTrace(this, BrowserslistError)
7 | }
8 | }
9 |
10 | BrowserslistError.prototype = Error.prototype
11 |
12 | module.exports = BrowserslistError
13 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/caniuse-lite/data/browsers.js:
--------------------------------------------------------------------------------
1 | module.exports={A:"ie",B:"edge",C:"firefox",D:"chrome",E:"safari",F:"opera",G:"ios_saf",H:"op_mini",I:"android",J:"bb",K:"op_mob",L:"and_chr",M:"and_ff",N:"ie_mob",O:"and_uc",P:"samsung",Q:"and_qq",R:"baidu",S:"kaios"};
2 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/color-name/README.md:
--------------------------------------------------------------------------------
1 | A JSON with color names and its values. Based on http://dev.w3.org/csswg/css-color/#named-colors.
2 |
3 | [](https://nodei.co/npm/color-name/)
4 |
5 |
6 | ```js
7 | var colors = require('color-name');
8 | colors.red //[255,0,0]
9 | ```
10 |
11 |
12 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/color-name/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "color-name",
3 | "version": "1.1.3",
4 | "description": "A list of color names and its values",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "node test.js"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git@github.com:dfcreative/color-name.git"
12 | },
13 | "keywords": [
14 | "color-name",
15 | "color",
16 | "color-keyword",
17 | "keyword"
18 | ],
19 | "author": "DY ",
20 | "license": "MIT",
21 | "bugs": {
22 | "url": "https://github.com/dfcreative/color-name/issues"
23 | },
24 | "homepage": "https://github.com/dfcreative/color-name"
25 | }
26 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/color-name/test.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | var names = require('./');
4 | var assert = require('assert');
5 |
6 | assert.deepEqual(names.red, [255,0,0]);
7 | assert.deepEqual(names.aliceblue, [240,248,255]);
8 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/concat-map/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - 0.4
4 | - 0.6
5 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/concat-map/example/map.js:
--------------------------------------------------------------------------------
1 | var concatMap = require('../');
2 | var xs = [ 1, 2, 3, 4, 5, 6 ];
3 | var ys = concatMap(xs, function (x) {
4 | return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];
5 | });
6 | console.dir(ys);
7 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/concat-map/index.js:
--------------------------------------------------------------------------------
1 | module.exports = function (xs, fn) {
2 | var res = [];
3 | for (var i = 0; i < xs.length; i++) {
4 | var x = fn(xs[i], i);
5 | if (isArray(x)) res.push.apply(res, x);
6 | else res.push(x);
7 | }
8 | return res;
9 | };
10 |
11 | var isArray = Array.isArray || function (xs) {
12 | return Object.prototype.toString.call(xs) === '[object Array]';
13 | };
14 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/debug/src/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Detect Electron renderer / nwjs process, which is node, but we should
3 | * treat as a browser.
4 | */
5 |
6 | if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {
7 | module.exports = require('./browser.js');
8 | } else {
9 | module.exports = require('./node.js');
10 | }
11 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/electron-to-chromium/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | v1.3.0
2 | * Additionally include chromium to electron mappings
3 |
4 | v1.2.0
5 | * versions and full-versions are now separately importable.
6 |
7 | v1.1.0
8 | * Both electronToChromium and electronToBrowserList now can accept strings as well as numbers.
9 |
10 | v1.0.1
11 | Update documentation
12 |
13 | v1.0.0
14 | Inititial release
15 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/electron-to-chromium/chromium-versions.json:
--------------------------------------------------------------------------------
1 | {"39":"0.20","40":"0.21","41":"0.21","42":"0.25","43":"0.27","44":"0.30","45":"0.31","47":"0.36","49":"0.37","50":"1.1","51":"1.2","52":"1.3","53":"1.4","54":"1.4","56":"1.6","58":"1.7","59":"1.8","61":"2.0","66":"3.0","69":"4.0","72":"5.0","73":"5.0","76":"6.0","78":"7.0","79":"8.0","80":"8.0","82":"9.0","83":"9.0","84":"10.0","85":"10.0","86":"11.0","87":"11.0","89":"12.0","90":"13.0","91":"13.0","92":"14.0","93":"14.0","94":"15.0","95":"16.0","96":"16.0","98":"17.0","99":"18.0","100":"18.0","102":"19.0","103":"20.0","104":"20.0"}
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/escalade/index.d.ts:
--------------------------------------------------------------------------------
1 | type Promisable = T | Promise;
2 | export type Callback = (directory: string, files: string[]) => Promisable;
3 | export default function (directory: string, callback: Callback): Promise;
4 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/escalade/sync/index.d.ts:
--------------------------------------------------------------------------------
1 | export type Callback = (directory: string, files: string[]) => string | false | void;
2 | export default function (directory: string, callback: Callback): string | void;
3 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/escalade/sync/index.js:
--------------------------------------------------------------------------------
1 | const { dirname, resolve } = require('path');
2 | const { readdirSync, statSync } = require('fs');
3 |
4 | module.exports = function (start, callback) {
5 | let dir = resolve('.', start);
6 | let tmp, stats = statSync(dir);
7 |
8 | if (!stats.isDirectory()) {
9 | dir = dirname(dir);
10 | }
11 |
12 | while (true) {
13 | tmp = callback(dir, readdirSync(dir));
14 | if (tmp) return resolve(dir, tmp);
15 | dir = dirname(tmp = dir);
16 | if (tmp === dir) break;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/escalade/sync/index.mjs:
--------------------------------------------------------------------------------
1 | import { dirname, resolve } from 'path';
2 | import { readdirSync, statSync } from 'fs';
3 |
4 | export default function (start, callback) {
5 | let dir = resolve('.', start);
6 | let tmp, stats = statSync(dir);
7 |
8 | if (!stats.isDirectory()) {
9 | dir = dirname(dir);
10 | }
11 |
12 | while (true) {
13 | tmp = callback(dir, readdirSync(dir));
14 | if (tmp) return resolve(dir, tmp);
15 | dir = dirname(tmp = dir);
16 | if (tmp === dir) break;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/escape-string-regexp/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
4 |
5 | module.exports = function (str) {
6 | if (typeof str !== 'string') {
7 | throw new TypeError('Expected a string');
8 | }
9 |
10 | return str.replace(matchOperatorsRe, '\\$&');
11 | };
12 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/escape-string-regexp/readme.md:
--------------------------------------------------------------------------------
1 | # escape-string-regexp [](https://travis-ci.org/sindresorhus/escape-string-regexp)
2 |
3 | > Escape RegExp special characters
4 |
5 |
6 | ## Install
7 |
8 | ```
9 | $ npm install --save escape-string-regexp
10 | ```
11 |
12 |
13 | ## Usage
14 |
15 | ```js
16 | const escapeStringRegexp = require('escape-string-regexp');
17 |
18 | const escapedString = escapeStringRegexp('how much $ for a unicorn?');
19 | //=> 'how much \$ for a unicorn\?'
20 |
21 | new RegExp(escapedString);
22 | ```
23 |
24 |
25 | ## License
26 |
27 | MIT © [Sindre Sorhus](http://sindresorhus.com)
28 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/fsevents/fsevents.node:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rl1987/trickster.dev-code/bedff26564ced58e899e8efca9ebc9f91f8adb64/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/fsevents/fsevents.node
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/gensync/test/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | presets: [
3 | ["env", { targets: { node: "current" }}],
4 | ],
5 | }
6 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/globals/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | module.exports = require('./globals.json');
3 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/has-flag/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | module.exports = (flag, argv) => {
3 | argv = argv || process.argv;
4 | const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');
5 | const pos = argv.indexOf(prefix + flag);
6 | const terminatorPos = argv.indexOf('--');
7 | return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);
8 | };
9 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/inherits/inherits.js:
--------------------------------------------------------------------------------
1 | try {
2 | var util = require('util');
3 | /* istanbul ignore next */
4 | if (typeof util.inherits !== 'function') throw '';
5 | module.exports = util.inherits;
6 | } catch (e) {
7 | /* istanbul ignore next */
8 | module.exports = require('./inherits_browser.js');
9 | }
10 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/is-binary-path/index.d.ts:
--------------------------------------------------------------------------------
1 | /**
2 | Check if a file path is a binary file.
3 |
4 | @example
5 | ```
6 | import isBinaryPath = require('is-binary-path');
7 |
8 | isBinaryPath('source/unicorn.png');
9 | //=> true
10 |
11 | isBinaryPath('source/unicorn.txt');
12 | //=> false
13 | ```
14 | */
15 | declare function isBinaryPath(filePath: string): boolean;
16 |
17 | export = isBinaryPath;
18 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/is-binary-path/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | const path = require('path');
3 | const binaryExtensions = require('binary-extensions');
4 |
5 | const extensions = new Set(binaryExtensions);
6 |
7 | module.exports = filePath => extensions.has(path.extname(filePath).slice(1).toLowerCase());
8 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/is-extglob/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * is-extglob
3 | *
4 | * Copyright (c) 2014-2016, Jon Schlinkert.
5 | * Licensed under the MIT License.
6 | */
7 |
8 | module.exports = function isExtglob(str) {
9 | if (typeof str !== 'string' || str === '') {
10 | return false;
11 | }
12 |
13 | var match;
14 | while ((match = /(\\).|([@?!+*]\(.*\))/g.exec(str))) {
15 | if (match[2]) return true;
16 | str = str.slice(match.index + match[0].length);
17 | }
18 |
19 | return false;
20 | };
21 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/is-number/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * is-number
3 | *
4 | * Copyright (c) 2014-present, Jon Schlinkert.
5 | * Released under the MIT License.
6 | */
7 |
8 | 'use strict';
9 |
10 | module.exports = function(num) {
11 | if (typeof num === 'number') {
12 | return num - num === 0;
13 | }
14 | if (typeof num === 'string' && num.trim() !== '') {
15 | return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);
16 | }
17 | return false;
18 | };
19 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/make-dir/node_modules/.bin/semver:
--------------------------------------------------------------------------------
1 | ../semver/bin/semver
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/node-releases/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "node-releases",
3 | "version": "2.0.6",
4 | "description": "Node.js releases data",
5 | "scripts": {
6 | "build": "node scripts/build.js"
7 | },
8 | "repository": "chicoxyzzy/node-releases",
9 | "keywords": [
10 | "nodejs",
11 | "releases"
12 | ],
13 | "author": "Sergey Rubanov ",
14 | "license": "MIT",
15 | "devDependencies": {
16 | "semver": "^7.3.5"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/picocolors/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "picocolors",
3 | "version": "1.0.0",
4 | "main": "./picocolors.js",
5 | "types": "./picocolors.d.ts",
6 | "browser": {
7 | "./picocolors.js": "./picocolors.browser.js"
8 | },
9 | "sideEffects": false,
10 | "description": "The tiniest and the fastest library for terminal output formatting with ANSI colors",
11 | "files": [
12 | "picocolors.*",
13 | "types.ts"
14 | ],
15 | "keywords": [
16 | "terminal",
17 | "colors",
18 | "formatting",
19 | "cli",
20 | "console"
21 | ],
22 | "author": "Alexey Raspopov",
23 | "repository": "alexeyraspopov/picocolors",
24 | "license": "ISC"
25 | }
26 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/picocolors/picocolors.browser.js:
--------------------------------------------------------------------------------
1 | var x=String;
2 | var create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};
3 | module.exports=create();
4 | module.exports.createColors = create;
5 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/picocolors/picocolors.d.ts:
--------------------------------------------------------------------------------
1 | import { Colors } from "./types"
2 |
3 | declare const picocolors: Colors & { createColors: (enabled?: boolean) => Colors }
4 |
5 | export = picocolors
6 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/picomatch/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | module.exports = require('./lib/picomatch');
4 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/semver/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "semver",
3 | "version": "6.3.0",
4 | "description": "The semantic version parser used by npm.",
5 | "main": "semver.js",
6 | "scripts": {
7 | "test": "tap",
8 | "preversion": "npm test",
9 | "postversion": "npm publish",
10 | "postpublish": "git push origin --follow-tags"
11 | },
12 | "devDependencies": {
13 | "tap": "^14.3.1"
14 | },
15 | "license": "ISC",
16 | "repository": "https://github.com/npm/node-semver",
17 | "bin": {
18 | "semver": "./bin/semver.js"
19 | },
20 | "files": [
21 | "bin",
22 | "range.bnf",
23 | "semver.js"
24 | ],
25 | "tap": {
26 | "check-coverage": true
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/semver/range.bnf:
--------------------------------------------------------------------------------
1 | range-set ::= range ( logical-or range ) *
2 | logical-or ::= ( ' ' ) * '||' ( ' ' ) *
3 | range ::= hyphen | simple ( ' ' simple ) * | ''
4 | hyphen ::= partial ' - ' partial
5 | simple ::= primitive | partial | tilde | caret
6 | primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
7 | partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
8 | xr ::= 'x' | 'X' | '*' | nr
9 | nr ::= '0' | [1-9] ( [0-9] ) *
10 | tilde ::= '~' partial
11 | caret ::= '^' partial
12 | qualifier ::= ( '-' pre )? ( '+' build )?
13 | pre ::= parts
14 | build ::= parts
15 | parts ::= part ( '.' part ) *
16 | part ::= nr | [-0-9A-Za-z]+
17 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/slash/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | module.exports = input => {
3 | const isExtendedLengthPath = /^\\\\\?\\/.test(input);
4 | const hasNonAscii = /[^\u0000-\u0080]+/.test(input); // eslint-disable-line no-control-regex
5 |
6 | if (isExtendedLengthPath || hasNonAscii) {
7 | return input;
8 | }
9 |
10 | return input.replace(/\\/g, '/');
11 | };
12 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/slash/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "slash",
3 | "version": "2.0.0",
4 | "description": "Convert Windows backslash paths to slash paths",
5 | "license": "MIT",
6 | "repository": "sindresorhus/slash",
7 | "author": {
8 | "name": "Sindre Sorhus",
9 | "email": "sindresorhus@gmail.com",
10 | "url": "sindresorhus.com"
11 | },
12 | "engines": {
13 | "node": ">=6"
14 | },
15 | "scripts": {
16 | "test": "xo && ava"
17 | },
18 | "files": [
19 | "index.js"
20 | ],
21 | "keywords": [
22 | "path",
23 | "seperator",
24 | "sep",
25 | "slash",
26 | "backslash",
27 | "windows",
28 | "win"
29 | ],
30 | "devDependencies": {
31 | "ava": "*",
32 | "xo": "*"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/supports-color/browser.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | module.exports = {
3 | stdout: false,
4 | stderr: false
5 | };
6 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/update-browserslist-db/check-npm-version.js:
--------------------------------------------------------------------------------
1 | let { execSync } = require('child_process')
2 | let pico = require('picocolors')
3 |
4 | try {
5 | let version = parseInt(execSync('npm -v'))
6 | if (version <= 6) {
7 | process.stderr.write(
8 | pico.red(
9 | 'Update npm or call ' +
10 | pico.yellow('npx browserslist@latest --update-db') +
11 | '\n'
12 | )
13 | )
14 | process.exit(1)
15 | }
16 | } catch (e) {}
17 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/node_modules/update-browserslist-db/index.d.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Run update and print output to terminal.
3 | */
4 | declare function updateDb(print?: (str: string) => void): Promise
5 |
6 | export = updateDb
7 |
--------------------------------------------------------------------------------
/2022-08-02-javascript-ast-manipulation-with-babel-extracting-hardcoded-data/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "babel": "^6.23.0"
4 | },
5 | "devDependencies": {
6 | "@babel/cli": "^7.18.10",
7 | "@babel/core": "^7.18.10"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/2022-08-14-writing-custom-scrapy-middleware-for-proxy-pool-integration/setting_snippet.py:
--------------------------------------------------------------------------------
1 | # Enable or disable downloader middlewares
2 | # See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
3 | DOWNLOADER_MIDDLEWARES = {
4 | 'museums.middlewares.BrightDataDownloaderMiddleware': 500,
5 | }
--------------------------------------------------------------------------------
/2022-08-27-building-python-script-clis-with-argparse-and-click/argv_demo.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | import sys
4 |
5 |
6 | def main():
7 | if len(sys.argv) == 1:
8 | print("Usage:")
9 | print("{} ...".format(sys.argv[0]))
10 | return
11 |
12 | for arg in sys.argv[1:]:
13 | print(arg)
14 |
15 |
16 | if __name__ == "__main__":
17 | main()
18 |
--------------------------------------------------------------------------------
/2022-08-27-building-python-script-clis-with-argparse-and-click/requirements.txt:
--------------------------------------------------------------------------------
1 | requests
2 | click
3 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/dead_branches.js:
--------------------------------------------------------------------------------
1 | if (1 == 2)
2 | console.log("1 == 2");
3 |
4 | if (1 == 1) {
5 | console.log("1 == 1");
6 | } else if (1 == 2) {
7 | console.log("1 == 2");
8 | } else {
9 | console.log("Unreachable as well");
10 | }
11 |
12 | 1 == 1 ? console.log("yes") : console.log("no");
13 |
14 | console.log("Hello");
15 |
16 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/dead_functions.js:
--------------------------------------------------------------------------------
1 | function dead1(a, b) {
2 | return a + b + 1;
3 | }
4 |
5 | function dead2() {
6 | console.log("!!");
7 | }
8 |
9 | function dead3() {
10 | dead1(1, 2);
11 | dead2();
12 | }
13 |
14 | console.log("Hello");
15 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/no_dead_branches.js:
--------------------------------------------------------------------------------
1 | console.log("1 == 1");
2 | console.log("yes");
3 | console.log("Hello");
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/no_dead_functions.js:
--------------------------------------------------------------------------------
1 | console.log("Hello");
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/.bin/babel:
--------------------------------------------------------------------------------
1 | ../@babel/cli/bin/babel.js
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/.bin/babel-external-helpers:
--------------------------------------------------------------------------------
1 | ../@babel/cli/bin/babel-external-helpers.js
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/.bin/browserslist:
--------------------------------------------------------------------------------
1 | ../browserslist/cli.js
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/.bin/browserslist-lint:
--------------------------------------------------------------------------------
1 | ../update-browserslist-db/cli.js
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/.bin/jsesc:
--------------------------------------------------------------------------------
1 | ../jsesc/bin/jsesc
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/.bin/json5:
--------------------------------------------------------------------------------
1 | ../json5/lib/cli.js
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/.bin/parser:
--------------------------------------------------------------------------------
1 | ../@babel/parser/bin/babel-parser.js
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/.bin/semver:
--------------------------------------------------------------------------------
1 | ../semver/bin/semver.js
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/cli/README.md:
--------------------------------------------------------------------------------
1 | # @babel/cli
2 |
3 | > Babel command line.
4 |
5 | See our website [@babel/cli](https://babeljs.io/docs/en/babel-cli) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20cli%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/cli
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/cli --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/cli/bin/babel-external-helpers.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | require("../lib/babel-external-helpers");
4 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/cli/bin/babel.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | require("../lib/babel");
4 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/cli/index.js:
--------------------------------------------------------------------------------
1 | throw new Error("Use the `@babel/core` package instead of `@babel/cli`.");
2 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/code-frame/README.md:
--------------------------------------------------------------------------------
1 | # @babel/code-frame
2 |
3 | > Generate errors that contain a code frame that point to source locations.
4 |
5 | See our website [@babel/code-frame](https://babeljs.io/docs/en/babel-code-frame) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/code-frame
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/code-frame --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/compat-data/README.md:
--------------------------------------------------------------------------------
1 | # @babel/compat-data
2 |
3 | >
4 |
5 | See our website [@babel/compat-data](https://babeljs.io/docs/en/babel-compat-data) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/compat-data
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/compat-data
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/compat-data/corejs2-built-ins.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/corejs2-built-ins.json");
2 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/compat-data/corejs3-shipped-proposals.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/corejs3-shipped-proposals.json");
2 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json:
--------------------------------------------------------------------------------
1 | [
2 | "esnext.global-this",
3 | "esnext.promise.all-settled",
4 | "esnext.string.match-all"
5 | ]
6 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/compat-data/data/native-modules.json:
--------------------------------------------------------------------------------
1 | {
2 | "es6.module": {
3 | "chrome": "61",
4 | "and_chr": "61",
5 | "edge": "16",
6 | "firefox": "60",
7 | "and_ff": "60",
8 | "node": "13.2.0",
9 | "opera": "48",
10 | "op_mob": "48",
11 | "safari": "10.1",
12 | "ios": "10.3",
13 | "samsung": "8.2",
14 | "android": "61",
15 | "electron": "2.0",
16 | "ios_saf": "10.3"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/compat-data/native-modules.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/native-modules.json");
2 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/compat-data/overlapping-plugins.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/overlapping-plugins.json");
2 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/compat-data/plugin-bugfixes.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/plugin-bugfixes.json");
2 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/compat-data/plugins.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./data/plugins.json");
2 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/core/README.md:
--------------------------------------------------------------------------------
1 | # @babel/core
2 |
3 | > Babel compiler core.
4 |
5 | See our website [@babel/core](https://babeljs.io/docs/en/babel-core) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20core%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/core
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/core --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/generator/README.md:
--------------------------------------------------------------------------------
1 | # @babel/generator
2 |
3 | > Turns an AST into code.
4 |
5 | See our website [@babel/generator](https://babeljs.io/docs/en/babel-generator) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20generator%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/generator
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/generator --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/src/sourcemap-segment.ts:
--------------------------------------------------------------------------------
1 | type GeneratedColumn = number;
2 | type SourcesIndex = number;
3 | type SourceLine = number;
4 | type SourceColumn = number;
5 | type NamesIndex = number;
6 |
7 | export type SourceMapSegment =
8 | | [GeneratedColumn]
9 | | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn]
10 | | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex];
11 |
12 | export const COLUMN = 0;
13 | export const SOURCES_INDEX = 1;
14 | export const SOURCE_LINE = 2;
15 | export const SOURCE_COLUMN = 3;
16 | export const NAMES_INDEX = 4;
17 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/helper-compilation-targets/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-compilation-targets
2 |
3 | > Helper functions on Babel compilation targets
4 |
5 | See our website [@babel/helper-compilation-targets](https://babeljs.io/docs/en/babel-helper-compilation-targets) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-compilation-targets
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-compilation-targets
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/helper-environment-visitor/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-environment-visitor
2 |
3 | > Helper visitor to only visit nodes in the current 'this' context
4 |
5 | See our website [@babel/helper-environment-visitor](https://babeljs.io/docs/en/babel-helper-environment-visitor) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/helper-environment-visitor
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-environment-visitor --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/helper-function-name/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-function-name
2 |
3 | > Helper function to change the property 'name' of every function
4 |
5 | See our website [@babel/helper-function-name](https://babeljs.io/docs/en/babel-helper-function-name) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-function-name
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-function-name
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/helper-hoist-variables/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-hoist-variables
2 |
3 | > Helper function to hoist variables
4 |
5 | See our website [@babel/helper-hoist-variables](https://babeljs.io/docs/en/babel-helper-hoist-variables) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-hoist-variables
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-hoist-variables
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/helper-module-imports/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-module-imports
2 |
3 | > Babel helper functions for inserting module loads
4 |
5 | See our website [@babel/helper-module-imports](https://babeljs.io/docs/en/babel-helper-module-imports) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-module-imports
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-module-imports
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/helper-module-transforms/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-module-transforms
2 |
3 | > Babel helper functions for implementing ES6 module transformations
4 |
5 | See our website [@babel/helper-module-transforms](https://babeljs.io/docs/en/babel-helper-module-transforms) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-module-transforms
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-module-transforms
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/helper-simple-access/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-simple-access
2 |
3 | > Babel helper for ensuring that access to a given value is performed through simple accesses
4 |
5 | See our website [@babel/helper-simple-access](https://babeljs.io/docs/en/babel-helper-simple-access) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-simple-access
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-simple-access
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/helper-split-export-declaration/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-split-export-declaration
2 |
3 | >
4 |
5 | See our website [@babel/helper-split-export-declaration](https://babeljs.io/docs/en/babel-helper-split-export-declaration) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-split-export-declaration
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-split-export-declaration
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/helper-string-parser/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-string-parser
2 |
3 | > A utility package to parse strings
4 |
5 | See our website [@babel/helper-string-parser](https://babeljs.io/docs/en/babel-helper-string-parser) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-string-parser
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-string-parser
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/helper-validator-identifier/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-validator-identifier
2 |
3 | > Validate identifier/keywords name
4 |
5 | See our website [@babel/helper-validator-identifier](https://babeljs.io/docs/en/babel-helper-validator-identifier) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-validator-identifier
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-validator-identifier
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/helper-validator-option/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helper-validator-option
2 |
3 | > Validate plugin/preset options
4 |
5 | See our website [@babel/helper-validator-option](https://babeljs.io/docs/en/babel-helper-validator-option) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save @babel/helper-validator-option
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helper-validator-option
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/helpers/README.md:
--------------------------------------------------------------------------------
1 | # @babel/helpers
2 |
3 | > Collection of helper functions used by Babel transforms.
4 |
5 | See our website [@babel/helpers](https://babeljs.io/docs/en/babel-helpers) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/helpers
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/helpers --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/helpers/scripts/package.json:
--------------------------------------------------------------------------------
1 | { "type": "module" }
2 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/highlight/README.md:
--------------------------------------------------------------------------------
1 | # @babel/highlight
2 |
3 | > Syntax highlight JavaScript strings for output in terminals.
4 |
5 | See our website [@babel/highlight](https://babeljs.io/docs/en/babel-highlight) for more information.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/highlight
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/highlight --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/parser/README.md:
--------------------------------------------------------------------------------
1 | # @babel/parser
2 |
3 | > A JavaScript parser
4 |
5 | See our website [@babel/parser](https://babeljs.io/docs/en/babel-parser) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20parser%20(babylon)%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/parser
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/parser --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/parser/bin/babel-parser.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | /* eslint no-var: 0 */
3 |
4 | var parser = require("..");
5 | var fs = require("fs");
6 |
7 | var filename = process.argv[2];
8 | if (!filename) {
9 | console.error("no filename specified");
10 | } else {
11 | var file = fs.readFileSync(filename, "utf8");
12 | var ast = parser.parse(file);
13 |
14 | console.log(JSON.stringify(ast, null, " "));
15 | }
16 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/parser/index.cjs:
--------------------------------------------------------------------------------
1 | try {
2 | module.exports = require("./lib/index.cjs");
3 | } catch {
4 | module.exports = require("./lib/index.js");
5 | }
6 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/template/README.md:
--------------------------------------------------------------------------------
1 | # @babel/template
2 |
3 | > Generate an AST from a string template.
4 |
5 | See our website [@babel/template](https://babeljs.io/docs/en/babel-template) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/template
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/template --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/traverse/README.md:
--------------------------------------------------------------------------------
1 | # @babel/traverse
2 |
3 | > The Babel Traverse module maintains the overall tree state, and is responsible for replacing, removing, and adding nodes
4 |
5 | See our website [@babel/traverse](https://babeljs.io/docs/en/babel-traverse) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20traverse%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/traverse
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/traverse --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/traverse/scripts/generators/asserts.js:
--------------------------------------------------------------------------------
1 | import * as t from "@babel/types";
2 |
3 | export default function generateAsserts() {
4 | let output = `/*
5 | * This file is auto-generated! Do not modify it directly.
6 | * To re-generate run 'make build'
7 | */
8 | import * as t from "@babel/types";
9 | import NodePath from "../index";
10 |
11 |
12 | export interface NodePathAssetions {`;
13 |
14 | for (const type of [...t.TYPES].sort()) {
15 | output += `
16 | assert${type}(
17 | opts?: object,
18 | ): asserts this is NodePath;`;
19 | }
20 |
21 | output += `
22 | }`;
23 |
24 | return output;
25 | }
26 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/traverse/scripts/package.json:
--------------------------------------------------------------------------------
1 | { "type": "module" }
2 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/types/README.md:
--------------------------------------------------------------------------------
1 | # @babel/types
2 |
3 | > Babel Types is a Lodash-esque utility library for AST nodes
4 |
5 | See our website [@babel/types](https://babeljs.io/docs/en/babel-types) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20types%22+is%3Aopen) associated with this package.
6 |
7 | ## Install
8 |
9 | Using npm:
10 |
11 | ```sh
12 | npm install --save-dev @babel/types
13 | ```
14 |
15 | or using yarn:
16 |
17 | ```sh
18 | yarn add @babel/types --dev
19 | ```
20 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/types/scripts/generators/constants.js:
--------------------------------------------------------------------------------
1 | import * as definitions from "../../lib/definitions/index.js";
2 |
3 | export default function generateConstants() {
4 | let output = `/*
5 | * This file is auto-generated! Do not modify it directly.
6 | * To re-generate run 'make build'
7 | */
8 | import { FLIPPED_ALIAS_KEYS } from "../../definitions";\n\n`;
9 |
10 | Object.keys(definitions.FLIPPED_ALIAS_KEYS).forEach(type => {
11 | output += `export const ${type.toUpperCase()}_TYPES = FLIPPED_ALIAS_KEYS["${type}"];\n`;
12 | });
13 |
14 | return output;
15 | }
16 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/types/scripts/package.json:
--------------------------------------------------------------------------------
1 | { "type": "module" }
2 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/types/scripts/utils/formatBuilderName.js:
--------------------------------------------------------------------------------
1 | const toLowerCase = Function.call.bind("".toLowerCase);
2 |
3 | export default function formatBuilderName(type) {
4 | // FunctionExpression -> functionExpression
5 | // JSXIdentifier -> jsxIdentifier
6 | // V8IntrinsicIdentifier -> v8IntrinsicIdentifier
7 | return type.replace(/^([A-Z](?=[a-z0-9])|[A-Z]+(?=[A-Z]))/, toLowerCase);
8 | }
9 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/types/scripts/utils/lowerFirst.js:
--------------------------------------------------------------------------------
1 | export default function lowerFirst(string) {
2 | return string[0].toLowerCase() + string.slice(1);
3 | }
4 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@babel/types/scripts/utils/toFunctionName.js:
--------------------------------------------------------------------------------
1 | export default function toFunctionName(typeName) {
2 | const _ = typeName.replace(/^TS/, "ts").replace(/^JSX/, "jsx");
3 | return _.slice(0, 1).toLowerCase() + _.slice(1);
4 | }
5 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/@nicolo-ribaudo/chokidar-2/README.md:
--------------------------------------------------------------------------------
1 | # `@nicolo-ribaudo/chokidar-2`
2 |
3 | A wrapper around `chokidar@2.1.8` that doesn't depend on `fsevents@1`.
4 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/balanced-match/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | tidelift: "npm/balanced-match"
2 | patreon: juliangruber
3 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/binary-extensions/binary-extensions.json.d.ts:
--------------------------------------------------------------------------------
1 | declare const binaryExtensionsJson: readonly string[];
2 |
3 | export = binaryExtensionsJson;
4 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/binary-extensions/index.d.ts:
--------------------------------------------------------------------------------
1 | /**
2 | List of binary file extensions.
3 |
4 | @example
5 | ```
6 | import binaryExtensions = require('binary-extensions');
7 |
8 | console.log(binaryExtensions);
9 | //=> ['3ds', '3g2', …]
10 | ```
11 | */
12 | declare const binaryExtensions: readonly string[];
13 |
14 | export = binaryExtensions;
15 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/binary-extensions/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./binary-extensions.json');
2 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/browserslist/error.d.ts:
--------------------------------------------------------------------------------
1 | declare class BrowserslistError extends Error {
2 | constructor(message: any)
3 | name: 'BrowserslistError'
4 | browserslist: true
5 | }
6 |
7 | export = BrowserslistError
8 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/browserslist/error.js:
--------------------------------------------------------------------------------
1 | function BrowserslistError(message) {
2 | this.name = 'BrowserslistError'
3 | this.message = message
4 | this.browserslist = true
5 | if (Error.captureStackTrace) {
6 | Error.captureStackTrace(this, BrowserslistError)
7 | }
8 | }
9 |
10 | BrowserslistError.prototype = Error.prototype
11 |
12 | module.exports = BrowserslistError
13 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/caniuse-lite/data/browsers.js:
--------------------------------------------------------------------------------
1 | module.exports={A:"ie",B:"edge",C:"firefox",D:"chrome",E:"safari",F:"opera",G:"ios_saf",H:"op_mini",I:"android",J:"bb",K:"op_mob",L:"and_chr",M:"and_ff",N:"ie_mob",O:"and_uc",P:"samsung",Q:"and_qq",R:"baidu",S:"kaios"};
2 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/color-name/README.md:
--------------------------------------------------------------------------------
1 | A JSON with color names and its values. Based on http://dev.w3.org/csswg/css-color/#named-colors.
2 |
3 | [](https://nodei.co/npm/color-name/)
4 |
5 |
6 | ```js
7 | var colors = require('color-name');
8 | colors.red //[255,0,0]
9 | ```
10 |
11 |
12 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/color-name/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "color-name",
3 | "version": "1.1.3",
4 | "description": "A list of color names and its values",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "node test.js"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git@github.com:dfcreative/color-name.git"
12 | },
13 | "keywords": [
14 | "color-name",
15 | "color",
16 | "color-keyword",
17 | "keyword"
18 | ],
19 | "author": "DY ",
20 | "license": "MIT",
21 | "bugs": {
22 | "url": "https://github.com/dfcreative/color-name/issues"
23 | },
24 | "homepage": "https://github.com/dfcreative/color-name"
25 | }
26 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/color-name/test.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | var names = require('./');
4 | var assert = require('assert');
5 |
6 | assert.deepEqual(names.red, [255,0,0]);
7 | assert.deepEqual(names.aliceblue, [240,248,255]);
8 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/concat-map/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - 0.4
4 | - 0.6
5 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/concat-map/example/map.js:
--------------------------------------------------------------------------------
1 | var concatMap = require('../');
2 | var xs = [ 1, 2, 3, 4, 5, 6 ];
3 | var ys = concatMap(xs, function (x) {
4 | return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];
5 | });
6 | console.dir(ys);
7 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/concat-map/index.js:
--------------------------------------------------------------------------------
1 | module.exports = function (xs, fn) {
2 | var res = [];
3 | for (var i = 0; i < xs.length; i++) {
4 | var x = fn(xs[i], i);
5 | if (isArray(x)) res.push.apply(res, x);
6 | else res.push(x);
7 | }
8 | return res;
9 | };
10 |
11 | var isArray = Array.isArray || function (xs) {
12 | return Object.prototype.toString.call(xs) === '[object Array]';
13 | };
14 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/debug/src/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Detect Electron renderer / nwjs process, which is node, but we should
3 | * treat as a browser.
4 | */
5 |
6 | if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {
7 | module.exports = require('./browser.js');
8 | } else {
9 | module.exports = require('./node.js');
10 | }
11 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/electron-to-chromium/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | v1.3.0
2 | * Additionally include chromium to electron mappings
3 |
4 | v1.2.0
5 | * versions and full-versions are now separately importable.
6 |
7 | v1.1.0
8 | * Both electronToChromium and electronToBrowserList now can accept strings as well as numbers.
9 |
10 | v1.0.1
11 | Update documentation
12 |
13 | v1.0.0
14 | Inititial release
15 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/electron-to-chromium/chromium-versions.json:
--------------------------------------------------------------------------------
1 | {"39":"0.20","40":"0.21","41":"0.21","42":"0.25","43":"0.27","44":"0.30","45":"0.31","47":"0.36","49":"0.37","50":"1.1","51":"1.2","52":"1.3","53":"1.4","54":"1.4","56":"1.6","58":"1.7","59":"1.8","61":"2.0","66":"3.0","69":"4.0","72":"5.0","73":"5.0","76":"6.0","78":"7.0","79":"8.0","80":"8.0","82":"9.0","83":"9.0","84":"10.0","85":"10.0","86":"11.0","87":"11.0","89":"12.0","90":"13.0","91":"13.0","92":"14.0","93":"14.0","94":"15.0","95":"16.0","96":"16.0","98":"17.0","99":"18.0","100":"18.0","102":"19.0","103":"20.0","104":"20.0","105":"21.0"}
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/escalade/index.d.ts:
--------------------------------------------------------------------------------
1 | type Promisable = T | Promise;
2 | export type Callback = (directory: string, files: string[]) => Promisable;
3 | export default function (directory: string, callback: Callback): Promise;
4 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/escalade/sync/index.d.ts:
--------------------------------------------------------------------------------
1 | export type Callback = (directory: string, files: string[]) => string | false | void;
2 | export default function (directory: string, callback: Callback): string | void;
3 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/escalade/sync/index.js:
--------------------------------------------------------------------------------
1 | const { dirname, resolve } = require('path');
2 | const { readdirSync, statSync } = require('fs');
3 |
4 | module.exports = function (start, callback) {
5 | let dir = resolve('.', start);
6 | let tmp, stats = statSync(dir);
7 |
8 | if (!stats.isDirectory()) {
9 | dir = dirname(dir);
10 | }
11 |
12 | while (true) {
13 | tmp = callback(dir, readdirSync(dir));
14 | if (tmp) return resolve(dir, tmp);
15 | dir = dirname(tmp = dir);
16 | if (tmp === dir) break;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/escalade/sync/index.mjs:
--------------------------------------------------------------------------------
1 | import { dirname, resolve } from 'path';
2 | import { readdirSync, statSync } from 'fs';
3 |
4 | export default function (start, callback) {
5 | let dir = resolve('.', start);
6 | let tmp, stats = statSync(dir);
7 |
8 | if (!stats.isDirectory()) {
9 | dir = dirname(dir);
10 | }
11 |
12 | while (true) {
13 | tmp = callback(dir, readdirSync(dir));
14 | if (tmp) return resolve(dir, tmp);
15 | dir = dirname(tmp = dir);
16 | if (tmp === dir) break;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/escape-string-regexp/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
4 |
5 | module.exports = function (str) {
6 | if (typeof str !== 'string') {
7 | throw new TypeError('Expected a string');
8 | }
9 |
10 | return str.replace(matchOperatorsRe, '\\$&');
11 | };
12 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/escape-string-regexp/readme.md:
--------------------------------------------------------------------------------
1 | # escape-string-regexp [](https://travis-ci.org/sindresorhus/escape-string-regexp)
2 |
3 | > Escape RegExp special characters
4 |
5 |
6 | ## Install
7 |
8 | ```
9 | $ npm install --save escape-string-regexp
10 | ```
11 |
12 |
13 | ## Usage
14 |
15 | ```js
16 | const escapeStringRegexp = require('escape-string-regexp');
17 |
18 | const escapedString = escapeStringRegexp('how much $ for a unicorn?');
19 | //=> 'how much \$ for a unicorn\?'
20 |
21 | new RegExp(escapedString);
22 | ```
23 |
24 |
25 | ## License
26 |
27 | MIT © [Sindre Sorhus](http://sindresorhus.com)
28 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/fsevents/fsevents.node:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rl1987/trickster.dev-code/bedff26564ced58e899e8efca9ebc9f91f8adb64/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/fsevents/fsevents.node
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/gensync/test/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | presets: [
3 | ["env", { targets: { node: "current" }}],
4 | ],
5 | }
6 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/globals/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | module.exports = require('./globals.json');
3 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/has-flag/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | module.exports = (flag, argv) => {
3 | argv = argv || process.argv;
4 | const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');
5 | const pos = argv.indexOf(prefix + flag);
6 | const terminatorPos = argv.indexOf('--');
7 | return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);
8 | };
9 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/inherits/inherits.js:
--------------------------------------------------------------------------------
1 | try {
2 | var util = require('util');
3 | /* istanbul ignore next */
4 | if (typeof util.inherits !== 'function') throw '';
5 | module.exports = util.inherits;
6 | } catch (e) {
7 | /* istanbul ignore next */
8 | module.exports = require('./inherits_browser.js');
9 | }
10 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/is-binary-path/index.d.ts:
--------------------------------------------------------------------------------
1 | /**
2 | Check if a file path is a binary file.
3 |
4 | @example
5 | ```
6 | import isBinaryPath = require('is-binary-path');
7 |
8 | isBinaryPath('source/unicorn.png');
9 | //=> true
10 |
11 | isBinaryPath('source/unicorn.txt');
12 | //=> false
13 | ```
14 | */
15 | declare function isBinaryPath(filePath: string): boolean;
16 |
17 | export = isBinaryPath;
18 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/is-binary-path/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | const path = require('path');
3 | const binaryExtensions = require('binary-extensions');
4 |
5 | const extensions = new Set(binaryExtensions);
6 |
7 | module.exports = filePath => extensions.has(path.extname(filePath).slice(1).toLowerCase());
8 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/is-extglob/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * is-extglob
3 | *
4 | * Copyright (c) 2014-2016, Jon Schlinkert.
5 | * Licensed under the MIT License.
6 | */
7 |
8 | module.exports = function isExtglob(str) {
9 | if (typeof str !== 'string' || str === '') {
10 | return false;
11 | }
12 |
13 | var match;
14 | while ((match = /(\\).|([@?!+*]\(.*\))/g.exec(str))) {
15 | if (match[2]) return true;
16 | str = str.slice(match.index + match[0].length);
17 | }
18 |
19 | return false;
20 | };
21 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/is-number/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * is-number
3 | *
4 | * Copyright (c) 2014-present, Jon Schlinkert.
5 | * Released under the MIT License.
6 | */
7 |
8 | 'use strict';
9 |
10 | module.exports = function(num) {
11 | if (typeof num === 'number') {
12 | return num - num === 0;
13 | }
14 | if (typeof num === 'string' && num.trim() !== '') {
15 | return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);
16 | }
17 | return false;
18 | };
19 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/make-dir/node_modules/.bin/semver:
--------------------------------------------------------------------------------
1 | ../semver/bin/semver
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/node-releases/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "node-releases",
3 | "version": "2.0.6",
4 | "description": "Node.js releases data",
5 | "scripts": {
6 | "build": "node scripts/build.js"
7 | },
8 | "repository": "chicoxyzzy/node-releases",
9 | "keywords": [
10 | "nodejs",
11 | "releases"
12 | ],
13 | "author": "Sergey Rubanov ",
14 | "license": "MIT",
15 | "devDependencies": {
16 | "semver": "^7.3.5"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/picocolors/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "picocolors",
3 | "version": "1.0.0",
4 | "main": "./picocolors.js",
5 | "types": "./picocolors.d.ts",
6 | "browser": {
7 | "./picocolors.js": "./picocolors.browser.js"
8 | },
9 | "sideEffects": false,
10 | "description": "The tiniest and the fastest library for terminal output formatting with ANSI colors",
11 | "files": [
12 | "picocolors.*",
13 | "types.ts"
14 | ],
15 | "keywords": [
16 | "terminal",
17 | "colors",
18 | "formatting",
19 | "cli",
20 | "console"
21 | ],
22 | "author": "Alexey Raspopov",
23 | "repository": "alexeyraspopov/picocolors",
24 | "license": "ISC"
25 | }
26 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/picocolors/picocolors.browser.js:
--------------------------------------------------------------------------------
1 | var x=String;
2 | var create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};
3 | module.exports=create();
4 | module.exports.createColors = create;
5 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/picocolors/picocolors.d.ts:
--------------------------------------------------------------------------------
1 | import { Colors } from "./types"
2 |
3 | declare const picocolors: Colors & { createColors: (enabled?: boolean) => Colors }
4 |
5 | export = picocolors
6 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/picomatch/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | module.exports = require('./lib/picomatch');
4 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/semver/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "semver",
3 | "version": "6.3.0",
4 | "description": "The semantic version parser used by npm.",
5 | "main": "semver.js",
6 | "scripts": {
7 | "test": "tap",
8 | "preversion": "npm test",
9 | "postversion": "npm publish",
10 | "postpublish": "git push origin --follow-tags"
11 | },
12 | "devDependencies": {
13 | "tap": "^14.3.1"
14 | },
15 | "license": "ISC",
16 | "repository": "https://github.com/npm/node-semver",
17 | "bin": {
18 | "semver": "./bin/semver.js"
19 | },
20 | "files": [
21 | "bin",
22 | "range.bnf",
23 | "semver.js"
24 | ],
25 | "tap": {
26 | "check-coverage": true
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/slash/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | module.exports = input => {
3 | const isExtendedLengthPath = /^\\\\\?\\/.test(input);
4 | const hasNonAscii = /[^\u0000-\u0080]+/.test(input); // eslint-disable-line no-control-regex
5 |
6 | if (isExtendedLengthPath || hasNonAscii) {
7 | return input;
8 | }
9 |
10 | return input.replace(/\\/g, '/');
11 | };
12 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/supports-color/browser.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | module.exports = {
3 | stdout: false,
4 | stderr: false
5 | };
6 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/update-browserslist-db/check-npm-version.js:
--------------------------------------------------------------------------------
1 | let { execSync } = require('child_process')
2 | let pico = require('picocolors')
3 |
4 | try {
5 | let version = parseInt(execSync('npm -v'))
6 | if (version <= 6) {
7 | process.stderr.write(
8 | pico.red(
9 | 'Update npm or call ' +
10 | pico.yellow('npx browserslist@latest --update-db') +
11 | '\n'
12 | )
13 | )
14 | process.exit(1)
15 | }
16 | } catch (e) {}
17 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/node_modules/update-browserslist-db/index.d.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Run update and print output to terminal.
3 | */
4 | declare function updateDb(print?: (str: string) => void): Promise
5 |
6 | export = updateDb
7 |
--------------------------------------------------------------------------------
/2022-08-27-javascript-ast-manipulation-with-babel-removing-unreachable-code/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "devDependencies": {
3 | "@babel/cli": "^7.18.10",
4 | "@babel/core": "^7.18.13"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/2022-10-08-javascript-ast-manipulation-with-babel-defeating-string-array-mapping/obfuscated.js:
--------------------------------------------------------------------------------
1 | var _0x3baf=["Hello Venus","log","Hello Earth","Hello Mars"];console[_0x3baf[1]](_0x3baf[0]);console[_0x3baf[1]](_0x3baf[2]);console[_0x3baf[1]](_0x3baf[3])
2 |
--------------------------------------------------------------------------------
/2022-10-08-javascript-ast-manipulation-with-babel-defeating-string-array-mapping/orig.js:
--------------------------------------------------------------------------------
1 | console.log("Hello Venus");
2 | console.log("Hello Earth");
3 | console.log("Hello Mars");
4 |
--------------------------------------------------------------------------------
/2023-01-18-javascript-ast-manipulation-with-babel-transform-prototyping-and-plugin-development/deobfuscate2.js:
--------------------------------------------------------------------------------
1 | const fs = require("fs");
2 | const path = require("path");
3 |
4 | const babel = require("@babel/core");
5 | const t = require("@babel/types");
6 |
7 | const result = babel.transformFileSync(path.join(__dirname, 'input.js') , {
8 | plugins: [
9 | path.join(__dirname, 'plugin_unhex.js'),
10 | path.join(__dirname, 'plugin_unbracket.js'),
11 | path.join(__dirname, 'plugin_rm_empty.js')
12 | ]
13 | });
14 |
15 | console.log(result.code);
16 |
17 | fs.writeFileSync(path.join(__dirname, 'output.js'), result.code, 'utf-8');
18 |
19 |
--------------------------------------------------------------------------------
/2023-01-18-javascript-ast-manipulation-with-babel-transform-prototyping-and-plugin-development/input.js:
--------------------------------------------------------------------------------
1 | console["log"]("\x41\x42\x43"); // ABC
2 | ;;;;;console.log("123");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
--------------------------------------------------------------------------------
/2023-01-18-javascript-ast-manipulation-with-babel-transform-prototyping-and-plugin-development/output.js:
--------------------------------------------------------------------------------
1 | console.log("ABC"); // ABC
2 | console.log("123");
--------------------------------------------------------------------------------
/2023-01-18-javascript-ast-manipulation-with-babel-transform-prototyping-and-plugin-development/plugin_rm_empty.js:
--------------------------------------------------------------------------------
1 | const babel = require("@babel/core");
2 | const t = require("@babel/types");
3 |
4 | module.exports = function (babel) {
5 | return {
6 | name: "rm_needless_semicolons",
7 | visitor: {
8 | EmptyStatement: function (path) {
9 | path.remove();
10 | }
11 | }
12 | }
13 | };
14 |
--------------------------------------------------------------------------------
/2023-01-18-javascript-ast-manipulation-with-babel-transform-prototyping-and-plugin-development/plugin_unbracket.js:
--------------------------------------------------------------------------------
1 | const babel = require("@babel/core");
2 | const t = require("@babel/types");
3 |
4 | module.exports = function (babel) {
5 | return {
6 | name: "bracket_to_dot",
7 | visitor: {
8 | CallExpression: function (path) {
9 | let prop = path.node.callee.property;
10 |
11 | if (t.isStringLiteral(prop)) {
12 | path.node.callee.property = t.Identifier(prop.value);
13 | path.node.callee.computed = false;
14 | }
15 | }
16 | }
17 | }
18 | };
19 |
--------------------------------------------------------------------------------
/2023-01-18-javascript-ast-manipulation-with-babel-transform-prototyping-and-plugin-development/plugin_unhex.js:
--------------------------------------------------------------------------------
1 | const babel = require("@babel/core");
2 | const t = require("@babel/types");
3 |
4 | module.exports = function (babel) {
5 | return {
6 | name: "undo_hexadecimal_strings",
7 | visitor: {
8 | StringLiteral: function (path) {
9 | path.node.extra.raw = '"' + path.node.extra.rawValue + '"';
10 | }
11 | }
12 | }
13 | };
14 |
--------------------------------------------------------------------------------
/2023-01-23-javascript-ast-manipulation-with-babel-3-ways-to-create-nodes-with-subtrees/templ.js:
--------------------------------------------------------------------------------
1 | const parser = require("@babel/parser");
2 | const generate = require("@babel/generator").default;
3 | const t = require("@babel/types");
4 | const template = require("@babel/template").default;
5 |
6 | const exampleTempl = template(`
7 | debugger;
8 | console.log(%%msg%%);
9 | debugger;
10 | `);
11 |
12 | const body = exampleTempl({
13 | msg: t.stringLiteral("!")
14 | });
15 |
16 | const ast = parser.parse("");
17 |
18 | ast.program.body = body;
19 |
20 | console.log(ast);
21 | console.log("==================");
22 | console.log(generate(ast).code);
23 |
24 |
--------------------------------------------------------------------------------
/2023-01-25-javascript-ast-manipulation-with-babel-untangling-scope-confusion/1.js:
--------------------------------------------------------------------------------
1 | let x = 10;
2 | let y = 20;
3 |
4 | {
5 | let y = 30;
6 | console.log(x + y);
7 | }
8 |
9 | console.log(x + y);
10 |
--------------------------------------------------------------------------------
/2023-01-25-javascript-ast-manipulation-with-babel-untangling-scope-confusion/2.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "ast-transform", // not required
6 | visitor: {
7 | Program(path) {
8 | console.log(path.scope);
9 | }
10 | }
11 | };
12 | }
13 |
14 |
--------------------------------------------------------------------------------
/2023-01-25-javascript-ast-manipulation-with-babel-untangling-scope-confusion/3.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "ast-transform", // not required
6 | visitor: {
7 | VariableDeclarator(path) {
8 | if (path.node.id.name == "y") {
9 | console.log(path.scope);
10 | console.log("PARENT", path.scope.parent);
11 | }
12 | }
13 | }
14 | };
15 | }
16 |
17 |
--------------------------------------------------------------------------------
/2023-01-25-javascript-ast-manipulation-with-babel-untangling-scope-confusion/4.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "ast-transform", // not required
6 | visitor: {
7 | VariableDeclarator(path) {
8 | let idName = path.node.id.name;
9 | let parentScope = path.scope.parent;
10 | if (!parentScope) return;
11 | if (parentScope.getBinding(idName)) {
12 | let newName = path.scope.generateUidIdentifier(idName);
13 | path.scope.rename(idName, newName.name);
14 | }
15 | }
16 | }
17 | };
18 | }
--------------------------------------------------------------------------------
/2023-01-25-javascript-ast-manipulation-with-babel-untangling-scope-confusion/5.js:
--------------------------------------------------------------------------------
1 | let x = 10;
2 | let y = 20;
3 | {
4 | let _y = 30;
5 | console.log(x + _y);
6 | }
7 | console.log(x + y);
--------------------------------------------------------------------------------
/2023-01-25-javascript-ast-manipulation-with-babel-untangling-scope-confusion/7.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "ast-transform", // not required
6 | visitor: {
7 | FunctionDeclaration(path) {
8 | let fnName = path.node.id.name;
9 | let binding = path.scope.getBinding(fnName);
10 | if (!binding.referenced) path.remove();
11 | }
12 | }
13 | };
14 | }
15 |
16 |
--------------------------------------------------------------------------------
/2023-01-25-javascript-ast-manipulation-with-babel-untangling-scope-confusion/8.js:
--------------------------------------------------------------------------------
1 | (function () {
2 | {
3 | {
4 | function b(a, b) {
5 | return Array.prototype.slice.call(a).concat(Array.prototype.slice.call(b));
6 | }
7 |
8 | function c() {
9 | var a = arguments[0],
10 | c = Array.prototype.slice.call(arguments, 1);
11 |
12 | var b = function () {
13 | return a.apply(this, c.concat(Array.prototype.slice.call(arguments)));
14 | };
15 |
16 | b.prototype = a.prototype;
17 | return b;
18 | }
19 | }
20 | var a = [];
21 | a[0] = 10;
22 | a[1] = 20;
23 | a[2] = 30;
24 | console.log(a[0] + a[2]);
25 | console.log(a[0] + a[1]);
26 | }
27 | })();
--------------------------------------------------------------------------------
/2023-01-30-javascript-ast-manipulation-with-babel-ast-modification-apis/say_abc.js:
--------------------------------------------------------------------------------
1 | function say_abc() {
2 | console.log("a");
3 | console.log("b");
4 | console.log("c");
5 | }
6 |
7 | say_abc();
8 |
--------------------------------------------------------------------------------
/2023-01-30-javascript-ast-manipulation-with-babel-ast-modification-apis/transform.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "ast-transform", // not required
6 | visitor: {
7 | FunctionDeclaration(path) {
8 | let body = path.get('body');
9 | body.unshiftContainer('body', t.debuggerStatement());
10 | body.pushContainer('body', t.debuggerStatement());
11 | }
12 | }
13 | };
14 | }
15 |
16 |
--------------------------------------------------------------------------------
/2023-01-30-javascript-ast-manipulation-with-babel-ast-modification-apis/transformed.js:
--------------------------------------------------------------------------------
1 | function say_abc() {
2 | debugger;
3 | console.log("a");
4 | console.log("b");
5 | console.log("c");
6 | debugger;
7 | }
8 |
9 | say_abc();
10 |
--------------------------------------------------------------------------------
/2023-02-07-javascript-ast-manipulation-with-babel-constant-folding-and-propagation/ast_explorer_constfold.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "ast-transform", // not required
6 | visitor: {
7 | BinaryExpression(path) {
8 | let evaluated = path.evaluate();
9 | if (!evaluated) return;
10 | if (!evaluated.confident) return;
11 |
12 | let value = evaluated.value;
13 | let valueNode = t.valueToNode(value);
14 | if (!t.isLiteral(valueNode)) return;
15 |
16 | path.replaceWith(valueNode);
17 | }
18 | }
19 | };
20 | }
21 |
--------------------------------------------------------------------------------
/2023-02-07-javascript-ast-manipulation-with-babel-constant-folding-and-propagation/ast_explorer_constprop.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "ast-transform", // not required
6 | visitor: {
7 | VariableDeclarator(path) {
8 | if (path.node.init == null) return;
9 | if (!t.isLiteral(path.node.init)) return;
10 | const binding = path.scope.getBinding(path.node.id.name);
11 | if (!binding.constant) return;
12 | for (let i = 0; i < binding.referencePaths.length; i++) {
13 | let refPath = binding.referencePaths[i];
14 | refPath.replaceWith(path.node.init);
15 | }
16 | path.remove();
17 | }
18 | }
19 | };
20 | }
21 |
22 |
--------------------------------------------------------------------------------
/2023-02-07-javascript-ast-manipulation-with-babel-constant-folding-and-propagation/ast_explorer_unhex.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "ast-transform", // not required
6 | visitor: {
7 | NumericLiteral(path) {
8 | if (path.node.extra.raw.startsWith("0x")) delete path.node.extra.raw;
9 | },
10 | }
11 | };
12 | }
13 |
14 |
--------------------------------------------------------------------------------
/2023-02-07-javascript-ast-manipulation-with-babel-constant-folding-and-propagation/constfolded.js:
--------------------------------------------------------------------------------
1 | const fourtyTwo = 42;
2 | const msg = "The answer is:";
3 | console['log'](msg, fourtyTwo);
4 |
--------------------------------------------------------------------------------
/2023-02-07-javascript-ast-manipulation-with-babel-constant-folding-and-propagation/constpropagated.js:
--------------------------------------------------------------------------------
1 | console.log("The answer is:", 42);
2 | let t;
3 | t = Math.floor(Date.now() / 1000);
4 | console.log(t);
5 |
--------------------------------------------------------------------------------
/2023-02-07-javascript-ast-manipulation-with-babel-constant-folding-and-propagation/input.js:
--------------------------------------------------------------------------------
1 | const fourtyTwo = 42;
2 | const msg = "The answer is:";
3 | console.log(msg, fourtyTwo);
--------------------------------------------------------------------------------
/2023-02-07-javascript-ast-manipulation-with-babel-constant-folding-and-propagation/input2.js:
--------------------------------------------------------------------------------
1 | const fourtyTwo = 42;
2 | const msg = "The answer is:";
3 | console.log(msg, fourtyTwo);
4 |
5 | let t;
6 | t = Math.floor(Date.now() / 1000);
7 | console.log(t);
8 |
--------------------------------------------------------------------------------
/2023-02-07-javascript-ast-manipulation-with-babel-constant-folding-and-propagation/obfuscated.js:
--------------------------------------------------------------------------------
1 | const fourtyTwo = 0x25fb + 0x3eb * -0x9 + -0x28e;
2 | const msg = 'The\x20answer' + '\x20is:';
3 | console['log'](msg, fourtyTwo);
--------------------------------------------------------------------------------
/2023-02-07-javascript-ast-manipulation-with-babel-constant-folding-and-propagation/unhexed.js:
--------------------------------------------------------------------------------
1 | const fourtyTwo = 9723 + 1003 * -9 + -654;
2 | const msg = 'The\x20answer' + '\x20is:';
3 | console['log'](msg, fourtyTwo);
4 |
--------------------------------------------------------------------------------
/2023-02-13-javascript-ast-manipulation-with-babel-reducing-indirection-undoing-string-concealing/transform2.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "ast-transform", // not required
6 | visitor: {
7 | VariableDeclarator(path) {
8 | let node = path.node;
9 | if (!node.init) return;
10 | if (!t.isIdentifier(node.init)) return;
11 | let scope = path.scope;
12 | let binding = scope.getBinding(node.id.name);
13 |
14 | for (let refPath of binding.referencePaths) {
15 | refPath.replaceWith(node.init);
16 | }
17 | path.remove();
18 | }
19 | }
20 | };
21 | }
22 |
--------------------------------------------------------------------------------
/2023-02-18-javascript-ast-manipulation-with-babel-reducing-nestedness-unflattening-the-cfg/in.js:
--------------------------------------------------------------------------------
1 | (function(){
2 | function foo () {
3 | return function () {
4 | var sum = 1 + 2;
5 | console.log(1);
6 | console.log(2);
7 | console.log(3);
8 | console.log(4);
9 | console.log(5);
10 | console.log(6);
11 | }
12 | }
13 |
14 | foo()();
15 | })();
--------------------------------------------------------------------------------
/2023-02-18-javascript-ast-manipulation-with-babel-reducing-nestedness-unflattening-the-cfg/out.js:
--------------------------------------------------------------------------------
1 | function pWydz(_0x237610) {
2 | return _0x237610();
3 | }
4 |
5 | function Ssbzl(_0x113c5a, _0x2b9ca8) {
6 | return _0x113c5a + _0x2b9ca8;
7 | }
8 |
9 | function _0x11c3ac() {
10 | function YnoJz(_0x5ad206, _0x2b2bb5) {
11 | return Ssbzl(_0x5ad206, _0x2b2bb5);
12 | }
13 |
14 | return function () {
15 | var _0x143f46 = 0x0;
16 |
17 | var _0x3c58ad = YnoJz(0x1, 0x2);
18 |
19 | console.log(0x1);
20 | console.log(0x2);
21 | console.log(0x3);
22 | console.log(0x4);
23 | console.log(0x5);
24 | console.log(0x6);
25 | };
26 | }
27 |
28 | pWydz(_0x11c3ac)();
--------------------------------------------------------------------------------
/2023-02-18-javascript-ast-manipulation-with-babel-reducing-nestedness-unflattening-the-cfg/transform1.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "ast-transform", // not required
6 | visitor: {
7 | ExpressionStatement(path) {
8 | if (!t.isProgram(path.parent)) return;
9 | let node = path.node;
10 | let expr = node.expression;
11 | if (!t.isCallExpression(expr)) return;
12 | let callee = expr.callee;
13 | if (!t.isFunctionExpression(callee)) return;
14 | let innerStatements = callee.body.body;
15 | path.replaceWithMultiple(innerStatements);
16 | }
17 | }
18 | };
19 | }
--------------------------------------------------------------------------------
/2023-02-18-javascript-ast-manipulation-with-babel-reducing-nestedness-unflattening-the-cfg/transform2.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "ast-transform", // not required
6 | visitor: {
7 | UnaryExpression(path) {
8 | let result = path.evaluate();
9 | if (result.confident) {
10 | path.replaceWith(t.valueToNode(result.value));
11 | }
12 | }
13 | }
14 | };
15 | }
--------------------------------------------------------------------------------
/2023-02-18-javascript-ast-manipulation-with-babel-reducing-nestedness-unflattening-the-cfg/transform3.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "ast-transform", // not required
6 | visitor: {
7 | CallExpression(path) {
8 | let prop = path.node.callee.property;
9 |
10 | if (t.isStringLiteral(prop)) {
11 | path.node.callee.property = t.identifier(prop.value);
12 | path.node.callee.computed = false;
13 | }
14 | }
15 | }
16 | };
17 | }
--------------------------------------------------------------------------------
/2023-03-14-dont-jsfuck-with-me-part-2/ast_explorer_simplify_string_name.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "simplify-string-name", // not required
6 | visitor: {
7 | MemberExpression(path) {
8 | let node = path.node;
9 | if (!t.isIdentifier(node.object)) return;
10 | if (!t.isStringLiteral(node.property)) return;
11 | if (node.object.name === "String" && node.property.value === "name") {
12 | path.replaceWith(t.valueToNode("String"));
13 | }
14 | }
15 | }
16 | };
17 | }
18 |
--------------------------------------------------------------------------------
/2023-03-14-dont-jsfuck-with-me-part-2/ast_explorer_undo_boolean_trick.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "undo-boolean-trick", // not required
6 | visitor: {
7 | Identifier(path) {
8 | let node = path.node;
9 | if (!t.isBinaryExpression(path.parent)) return;
10 | if (path.parent.operator != "+") return;
11 | if (node.name === "Boolean") path.replaceWith(t.valueToNode(String(Boolean)));
12 | }
13 | }
14 | };
15 | }
16 |
--------------------------------------------------------------------------------
/2023-03-14-dont-jsfuck-with-me-part-2/ast_explorer_undo_flat_trick.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "undo-flat-trick", // not required
6 | visitor: {
7 | MemberExpression(path) {
8 | let node = path.node;
9 | if (!t.isArrayExpression(node.object)) return;
10 | if (node.object.elements.length != 0) return;
11 | if (!t.isStringLiteral(node.property)) return;
12 | if (node.property.value === "flat" && t.isBinaryExpression(path.parent)) {
13 | path.replaceWith(t.stringLiteral(String(Array.prototype.flat)));
14 | }
15 | }
16 | }
17 | };
18 | }
19 |
--------------------------------------------------------------------------------
/2023-03-14-dont-jsfuck-with-me-part-2/ast_explorer_undo_string_contructor_trick.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "undo-string-constructor-trick", // not required
6 | visitor: {
7 | MemberExpression(path) {
8 | let node = path.node;
9 | if (!t.isBinaryExpression(path.parent)) return;
10 | if (path.parent.operator != "+") return;
11 | if (!t.isStringLiteral(node.object)) return;
12 | if (node.object.value != "") return;
13 | if (!t.isStringLiteral(node.property)) return;
14 | if (node.property.value === "constructor") {
15 | path.replaceWith(t.valueToNode(String(String)));
16 | }
17 | }
18 | }
19 | };
20 | }
--------------------------------------------------------------------------------
/2023-03-14-dont-jsfuck-with-me-part-2/ast_explorer_undo_string_trick.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "undo-string-trick", // not required
6 | visitor: {
7 | Identifier(path) {
8 | let node = path.node;
9 | if (!t.isBinaryExpression(path.parent)) return;
10 | if (path.parent.operator != "+") return;
11 | if (node.name === "String") path.replaceWith(t.valueToNode(String(String)));
12 | }
13 | }
14 | };
15 | }
16 |
--------------------------------------------------------------------------------
/2023-05-02-crawlspider-and-link-extractors-for-rule-based-crawling-in-scrapy/sample/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rl1987/trickster.dev-code/bedff26564ced58e899e8efca9ebc9f91f8adb64/2023-05-02-crawlspider-and-link-extractors-for-rule-based-crawling-in-scrapy/sample/__init__.py
--------------------------------------------------------------------------------
/2023-05-02-crawlspider-and-link-extractors-for-rule-based-crawling-in-scrapy/sample/items.py:
--------------------------------------------------------------------------------
1 | # Define here the models for your scraped items
2 | #
3 | # See documentation in:
4 | # https://docs.scrapy.org/en/latest/topics/items.html
5 |
6 | import scrapy
7 |
8 |
9 | class SampleItem(scrapy.Item):
10 | # define the fields for your item here like:
11 | # name = scrapy.Field()
12 | pass
13 |
--------------------------------------------------------------------------------
/2023-05-02-crawlspider-and-link-extractors-for-rule-based-crawling-in-scrapy/sample/pipelines.py:
--------------------------------------------------------------------------------
1 | # Define your item pipelines here
2 | #
3 | # Don't forget to add your pipeline to the ITEM_PIPELINES setting
4 | # See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
5 |
6 |
7 | # useful for handling different item types with a single interface
8 | from itemadapter import ItemAdapter
9 |
10 |
11 | class SamplePipeline:
12 | def process_item(self, item, spider):
13 | return item
14 |
--------------------------------------------------------------------------------
/2023-05-02-crawlspider-and-link-extractors-for-rule-based-crawling-in-scrapy/sample/spiders/__init__.py:
--------------------------------------------------------------------------------
1 | # This package will contain the spiders of your Scrapy project
2 | #
3 | # Please refer to the documentation for information on how to create and manage
4 | # your spiders.
5 |
--------------------------------------------------------------------------------
/2023-05-02-crawlspider-and-link-extractors-for-rule-based-crawling-in-scrapy/scrapy.cfg:
--------------------------------------------------------------------------------
1 | # Automatically created by: scrapy startproject
2 | #
3 | # For more information about the [deploy] section see:
4 | # https://scrapyd.readthedocs.io/en/latest/deploy.html
5 |
6 | [settings]
7 | default = sample.settings
8 |
9 | [deploy]
10 | #url = http://localhost:6800/
11 | project = sample
12 |
--------------------------------------------------------------------------------
/2023-05-15-scraping-product-data-from-nike/nike/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rl1987/trickster.dev-code/bedff26564ced58e899e8efca9ebc9f91f8adb64/2023-05-15-scraping-product-data-from-nike/nike/__init__.py
--------------------------------------------------------------------------------
/2023-05-15-scraping-product-data-from-nike/nike/items.py:
--------------------------------------------------------------------------------
1 | # Define here the models for your scraped items
2 | #
3 | # See documentation in:
4 | # https://docs.scrapy.org/en/latest/topics/items.html
5 |
6 | import scrapy
7 |
8 |
9 | class NikeProductItem(scrapy.Item):
10 | title = scrapy.Field()
11 | subtitle = scrapy.Field()
12 | pid = scrapy.Field()
13 | current_price = scrapy.Field()
14 | empl_price = scrapy.Field()
15 | full_price = scrapy.Field()
16 | in_stock = scrapy.Field()
17 | product_url = scrapy.Field()
18 | image_urls = scrapy.Field()
19 | description = scrapy.Field()
20 |
21 |
22 |
--------------------------------------------------------------------------------
/2023-05-15-scraping-product-data-from-nike/nike/pipelines.py:
--------------------------------------------------------------------------------
1 | # Define your item pipelines here
2 | #
3 | # Don't forget to add your pipeline to the ITEM_PIPELINES setting
4 | # See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
5 |
6 |
7 | # useful for handling different item types with a single interface
8 | from itemadapter import ItemAdapter
9 |
10 |
11 | class NikePipeline:
12 | def process_item(self, item, spider):
13 | return item
14 |
--------------------------------------------------------------------------------
/2023-05-15-scraping-product-data-from-nike/nike/spiders/__init__.py:
--------------------------------------------------------------------------------
1 | # This package will contain the spiders of your Scrapy project
2 | #
3 | # Please refer to the documentation for information on how to create and manage
4 | # your spiders.
5 |
--------------------------------------------------------------------------------
/2023-05-15-scraping-product-data-from-nike/scrapy.cfg:
--------------------------------------------------------------------------------
1 | # Automatically created by: scrapy startproject
2 | #
3 | # For more information about the [deploy] section see:
4 | # https://scrapyd.readthedocs.io/en/latest/deploy.html
5 |
6 | [settings]
7 | default = nike.settings
8 |
9 | [deploy]
10 | #url = http://localhost:6800/
11 | project = nike
12 |
--------------------------------------------------------------------------------
/2023-05-30-understanding-javascript-packers/eval_unescape.js:
--------------------------------------------------------------------------------
1 | var myText = 'Пишите нам'; eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%76%69%74%40%61%75%64%69%74%2d%69%74%2e%72%75%3f%73%75%62%6a%65%63%74%3d%25%44%30%25%41%31%25%44%30%25%42%31%25%44%30%25%42%35%25%44%31%25%38%30%25%44%30%25%42%45%25%44%30%25%42%43%25%44%30%25%42%35%25%44%31%25%38%32%25%44%31%25%38%30%22%3e%27%2b%28%6d%79%54%65%78%74%20%3f%20%6d%79%54%65%78%74%20%3a%20%27%76%69%74%40%61%75%64%69%74%2d%69%74%2e%72%75%27%29%2b%27%3c%2f%61%3e%27%29%3b'))
2 |
3 |
--------------------------------------------------------------------------------
/2023-05-30-understanding-javascript-packers/helloworld.js:
--------------------------------------------------------------------------------
1 | let hello = "hello world";
2 | console.log(hello);
3 |
--------------------------------------------------------------------------------
/2023-05-30-understanding-javascript-packers/packed.js:
--------------------------------------------------------------------------------
1 | eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('1 0="0 2";3.4(0);',5,5,'hello|let|world|console|log'.split('|'),0,{}))
2 |
--------------------------------------------------------------------------------
/2023-05-30-understanding-javascript-packers/packed_pretty.js:
--------------------------------------------------------------------------------
1 | eval(function(p, a, c, k, e, r) {
2 | e = String;
3 | if(!''.replace(/^/, String)) {
4 | while(c--) r[c] = k[c] || c;
5 | k = [function(e) {
6 | return r[e]
7 | }];
8 | e = function() {
9 | return '\\w+'
10 | };
11 | c = 1
12 | };
13 | while(c--)
14 | if(k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]);
15 | return p
16 | }('1 0="0 2";3.4(0);', 5, 5, 'hello|let|world|console|log'.split('|'), 0, {}))
17 |
--------------------------------------------------------------------------------
/2023-06-25-dont-jsfuck-with-me-part-3/ast_regex_str.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "regex-str", // not required
6 | visitor: {
7 | BinaryExpression(path) {
8 | const binExpr = path.node;
9 | const left = binExpr.left;
10 | if (!t.isRegExpLiteral(left)) return;
11 | const right = binExpr.right;
12 | if (!t.isArrayExpression(right)) return;
13 | if (right.elements.length != 0) return;
14 |
15 | const regexStr = String(RegExp(left.pattern));
16 |
17 | path.replaceWith(t.stringLiteral(regexStr));
18 | }
19 | }
20 | };
21 | }
--------------------------------------------------------------------------------
/2023-06-25-dont-jsfuck-with-me-part-3/ast_undo_escape_call.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "undo-escape-call", // not required
6 | visitor: {
7 | CallExpression(path) {
8 | let callExpr = path.node;
9 | if (!t.isIdentifier(callExpr.callee)) return;
10 | if (callExpr.callee.name != "escape") return;
11 | if (callExpr.arguments.length != 1) return;
12 | if (!t.isStringLiteral(callExpr.arguments[0])) return;
13 |
14 | let newNode = t.stringLiteral(escape(callExpr.arguments[0].value));
15 | path.replaceWith(newNode);
16 | }
17 | }
18 | };
19 | }
20 |
--------------------------------------------------------------------------------
/2023-06-25-dont-jsfuck-with-me-part-3/jsfuck_deobfuscator/debug.js:
--------------------------------------------------------------------------------
1 | const generate = require("@babel/generator").default;
2 |
3 | function logASTChange(pluginName, ast1, ast2) {
4 | const js1 = generate(ast1).code;
5 | const js2 = generate(ast2).code;
6 |
7 | console.log("PLUGIN NAME:", pluginName);
8 | console.log("FROM CODE:", js1);
9 | console.log("TO CODE:", js2);
10 | }
11 |
12 | module.exports = { logASTChange };
13 |
--------------------------------------------------------------------------------
/2023-06-25-dont-jsfuck-with-me-part-3/jsfuck_deobfuscator/examples/out1.js:
--------------------------------------------------------------------------------
1 | alert("HJKLPQVWXYZ!\'!#$*@^_`|~");
--------------------------------------------------------------------------------
/2023-06-25-dont-jsfuck-with-me-part-3/jsfuck_deobfuscator/examples/out2.js:
--------------------------------------------------------------------------------
1 | console.log("a");
--------------------------------------------------------------------------------
/2023-06-25-dont-jsfuck-with-me-part-3/jsfuck_deobfuscator/examples/out3.js:
--------------------------------------------------------------------------------
1 | FB.getLoginStatus(function (response) {
2 | statusChangeCallback(response);
3 | });
--------------------------------------------------------------------------------
/2023-06-25-dont-jsfuck-with-me-part-3/jsfuck_deobfuscator/examples/out4.js:
--------------------------------------------------------------------------------
1 | for (var i = 1; i <= 20; i++) {
2 | if (i % 15 == 0) console.log("FizzBuzz");else if (i % 3 == 0) console.log("Fizz");else if (i % 5 == 0) console.log("Buzz");else console.log(i);
3 | }
--------------------------------------------------------------------------------
/2023-06-25-dont-jsfuck-with-me-part-3/jsfuck_deobfuscator/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "jsfuck_deobfuscator",
3 | "version": "1.0.0",
4 | "description": "AST-level deobfuscator to clean up and simplify output of JSFuck",
5 | "main": "app.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "rl1987",
10 | "license": "ISC",
11 | "devDependencies": {
12 | "@babel/cli": "7.19.3",
13 | "@babel/core": "7.19.0",
14 | "@babel/generator": "7.19.0",
15 | "@babel/parser": "7.19.0",
16 | "@babel/traverse": "7.19.0",
17 | "@babel/types": "7.19.0"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/2023-06-25-dont-jsfuck-with-me-part-3/jsfuck_deobfuscator/plugin_simplify_string_name.js:
--------------------------------------------------------------------------------
1 | const babel = require("@babel/core");
2 | const t = require("@babel/types");
3 |
4 | module.exports = function (babel) {
5 | return {
6 | name: "simplify-string-name", // not required
7 | visitor: {
8 | MemberExpression(path) {
9 | let node = path.node;
10 | if (!t.isIdentifier(node.object)) return;
11 | if (!t.isStringLiteral(node.property)) return;
12 | if (node.object.name === "String" && node.property.value === "name") {
13 | path.replaceWith(t.valueToNode("String"));
14 | }
15 | }
16 | }
17 | };
18 | }
19 |
--------------------------------------------------------------------------------
/2023-07-02-self-defending-js-code-and-debugger-traps/self_defending.js:
--------------------------------------------------------------------------------
1 | function hi(){var _0x3298fd=(function(){var _0x3c6e04=!![];return function(_0x471481,_0x2bd7a3){var _0x14b95c=_0x3c6e04?function(){if(_0x2bd7a3){var _0xc92697=_0x2bd7a3['apply'](_0x471481,arguments);_0x2bd7a3=null;return _0xc92697;}}:function(){};_0x3c6e04=![];return _0x14b95c;};}());var _0x3a8b12=_0x3298fd(this,function(){return _0x3a8b12['toString']()['search']('(((.+)+)+)+$')['toString']()['constructor'](_0x3a8b12)['search']('(((.+)+)+)+$');});_0x3a8b12();console['log']('Hello\x20World!');console['log']('Hello\x20World!');console['log']('Hello\x20World!');console['log']('Hello\x20World!');console['log']('Hello\x20World!');console['log']('Hello\x20World!');console['log']('Hello\x20World!');}hi();
--------------------------------------------------------------------------------
/2023-07-02-self-defending-js-code-and-debugger-traps/unprotected.js:
--------------------------------------------------------------------------------
1 | // Paste your JavaScript code here
2 | function hi() {
3 | console.log("Hello World!");
4 | console.log("Hello World!");
5 | console.log("Hello World!");
6 | console.log("Hello World!");
7 | console.log("Hello World!");
8 | console.log("Hello World!");
9 | console.log("Hello World!");
10 | }
11 | hi();
12 |
--------------------------------------------------------------------------------
/2023-07-22-using-scrapy-playwright-for-integrating-browser-automation-with-scrapy/requirements.txt:
--------------------------------------------------------------------------------
1 | scrapy
2 | playwright
3 | scrapy-playwright
4 |
--------------------------------------------------------------------------------
/2023-08-12-scrapy-by-example-scraping-company-data-from-yelp/recon/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rl1987/trickster.dev-code/bedff26564ced58e899e8efca9ebc9f91f8adb64/2023-08-12-scrapy-by-example-scraping-company-data-from-yelp/recon/__init__.py
--------------------------------------------------------------------------------
/2023-08-12-scrapy-by-example-scraping-company-data-from-yelp/recon/items.py:
--------------------------------------------------------------------------------
1 | # Define here the models for your scraped items
2 | #
3 | # See documentation in:
4 | # https://docs.scrapy.org/en/latest/topics/items.html
5 |
6 | import scrapy
7 |
8 |
9 | class YelpItem(scrapy.Item):
10 | # define the fields for your item here like:
11 | yelp_biz_id = scrapy.Field()
12 | category = scrapy.Field()
13 | name = scrapy.Field()
14 | description = scrapy.Field()
15 | phone_number = scrapy.Field()
16 | website = scrapy.Field()
17 | address = scrapy.Field()
18 | latitude = scrapy.Field()
19 | longitude = scrapy.Field()
20 | gmaps_img_url = scrapy.Field()
21 | yelp_url = scrapy.Field()
22 |
23 |
--------------------------------------------------------------------------------
/2023-08-12-scrapy-by-example-scraping-company-data-from-yelp/recon/pipelines.py:
--------------------------------------------------------------------------------
1 | # Define your item pipelines here
2 | #
3 | # Don't forget to add your pipeline to the ITEM_PIPELINES setting
4 | # See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
5 |
6 |
7 | # useful for handling different item types with a single interface
8 | from itemadapter import ItemAdapter
9 |
10 |
11 | class ReconPipeline:
12 | def process_item(self, item, spider):
13 | return item
14 |
--------------------------------------------------------------------------------
/2023-08-12-scrapy-by-example-scraping-company-data-from-yelp/recon/spiders/__init__.py:
--------------------------------------------------------------------------------
1 | # This package will contain the spiders of your Scrapy project
2 | #
3 | # Please refer to the documentation for information on how to create and manage
4 | # your spiders.
5 |
--------------------------------------------------------------------------------
/2023-08-12-scrapy-by-example-scraping-company-data-from-yelp/scrapy.cfg:
--------------------------------------------------------------------------------
1 | # Automatically created by: scrapy startproject
2 | #
3 | # For more information about the [deploy] section see:
4 | # https://scrapyd.readthedocs.io/en/latest/deploy.html
5 |
6 | [settings]
7 | default = recon.settings
8 |
9 | [deploy]
10 | #url = http://localhost:6800/
11 | project = recon
12 |
--------------------------------------------------------------------------------
/2023-09-15-solving-a-simple-js-challenge-with-sandboxing/sandbox.js:
--------------------------------------------------------------------------------
1 | const fs = require("fs");
2 | const vm = require("vm");
3 |
4 | let js = fs.readFileSync("in.js", "utf-8");
5 |
6 | const script = new vm.Script(js);
7 | const mapperContext = { window: {}, document: {
8 | location: {
9 | reload: function(){}
10 | }
11 | }};
12 |
13 | const sandbox = vm.createContext(mapperContext);
14 | script.runInContext(sandbox);
15 | vm.runInContext('go();', sandbox);
16 |
17 | console.log(sandbox.document.cookie);
18 |
--------------------------------------------------------------------------------
/2023-09-15-solving-a-simple-js-challenge-with-sandboxing/transform.js:
--------------------------------------------------------------------------------
1 | export default function (babel) {
2 | const { types: t } = babel;
3 |
4 | return {
5 | name: "ast-transform", // not required
6 | visitor: {
7 | "Program|IfStatement|Expression|ExpressionStatement"(path) {
8 | t.removeComments(path.node);
9 | }
10 | }
11 | };
12 | }
13 |
14 |
--------------------------------------------------------------------------------
/2023-09-15-solving-a-simple-js-challenge-with-sandboxing/trick.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -x
4 |
5 | curl "https://opencorporates.com" | \
6 | xmllint --html --xpath '//script/text()' - | \
7 | tail +2 > in.js # Deleting "