Git Product home page Git Product logo

bundlewatch's Introduction



npm bundlewatch All Contributors

node Libraries.io dependency status for latest release builds test


npm-chart contributors license

BundleWatch

BundleWatch checks file sizes, ensuring bundled browser assets don't jump in file size.
Sharp increases in BundleWatch can signal that something is wrong - adding a package that bloats the slug, a wrong import, or forgetting to minify.

Inspired by Siddharth Kshetrapal bundlesize

Getting Started

Install the BundleWatch package:

  • NPM: npm install bundlewatch --save-dev
  • Yarn: yarn add bundlewatch --dev

Add some basic configuration to your package.json

{
    "name": "my package name",
    "version": "0.0.1",
    "bundlewatch": {
        "files": [
            {
                "path": "myfolder/*.js",
                "maxSize": "100kB"
            }
        ]
    }
}

Usage:

  • NPM: npm run bundlewatch
  • Yarn: yarn run bundlewatch

This will give you command line output. If you want BundleWatch to report build status on your pull requests, see below.

Adding Build Status

BundleWatch can report its status on your GitHub Pull Requests.

build status preview

CI Auth Variables Needed by BundleWatch

  • BUNDLEWATCH_GITHUB_TOKEN

You will need to give BundleWatch access to your GitHub Statuses, which can be done by heading to: https://service.bundlewatch.io/setup-github

This will give you your BUNDLEWATCH_GITHUB_TOKEN. You will need to set this as an environment variable in CI.

CI Variables Needed by BundleWatch

The most efficient way to get this running is to ensure that some environment variables are available for BundleWatch to find.

  • CI_REPO_OWNER github.com/facebook/react
  • CI_REPO_NAME github.com/facebook/react
  • CI_COMMIT_SHA
  • CI_BRANCH

If you're using, Travis, CircleCI, Wrecker, Drone or GitHub Actions these should all work out of the box.

Have a look at the source code to see which variables are automatically found: getCIVars

Viewing the results breakdown

After setting up the above you will have BuildStatus on your Pull Requests. Clicking the details link on the reported status will show you a results file breakdown.

build results preview

Additional Documentation

Full documentation available on bundlewatch.io

I use bundlesize, why should I switch to BundleWatch

  • Bundlesize has entered maintenance mode and pull requests are left hanging, so we wanted to reboot the community through creating BundleWatch
  • New BundleWatch service with infrastructure as code
  • Launched bundlewatch.io documentation website
  • Enough test coverage to support CD
  • Node API Support
  • Lower barrier to contributing (automated testing and publishing), build a trusted community of contributors to have continuous improvement

Additional Features

  • Config validation to stop users from guessing why BundleWatch won't work
  • Support for config file path
  • Better results breakdown page
  • Better comparisons between branches, support branches other than master
  • Support for your own server for storing data
  • New and improved CI behaviour
  • Show history of BundleWatchs over time

Contributors

Thanks goes to these wonderful people (emoji key):


Jake Bolam

๐Ÿ’ป

Shouvik DCosta

๐Ÿ’ป

Tyler Benning

๐ŸŽจ

Leila Rosenthal

๐Ÿ“–

Francois Campbell

๐Ÿ’ป

Emmanuel Ogbizi

๐Ÿšง ๐Ÿ’ป ๐Ÿ›ก๏ธ

Pascal Iske

๐Ÿ›

Oleksii Leonov

๐Ÿ’ป

Nicolas Charpentier

๐Ÿ’ป ๐Ÿšง ๐Ÿ›ก๏ธ

This project follows the all-contributors specification. Contributions of any kind welcome!

Want to Help? Become a Contributor

Contributions of any kind are welcome! See the Contributing docs or Join us on Slack.

bundlewatch's People

Contributors

aghassi avatar allcontributors[bot] avatar beeequeue avatar charpeni avatar cheapsteak avatar dat2 avatar dependabot-preview[bot] avatar dependabot[bot] avatar francoiscampbell avatar iamogbz avatar indocomsoft avatar jakebolam avatar leilarosenthal avatar limonte avatar oleksii-leonov avatar sdcosta avatar tgrant59 avatar villelahdenvuo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

bundlewatch's Issues

Support GitHub Actions

Do you want to request a feature or report a bug?

Feature request

What is the current behavior?

When using with GitHub Actions, bundlewatch is unable to automatically detect repoOwner, repoName, commitSha, example: https://github.com/sweetalert2/sweetalert2/commit/6ffbc669ce6a17afe0370330fd59f1d4deb6a719/checks?check_suite_id=312798860

[WARNING] Some CI configuration options were not found (repoOwner, repoName, commitSha):

That is happening because bundlewatch doesn't have GitHub Action support here: https://github.com/bundlewatch/bundlewatch/blob/5030f7985e9daac9412e5d92d9cf796cff0d06cd/src/app/config/getCIVars.js

Here are GitHub Actions env variables: https://help.github.com/en/actions/automating-your-workflow-with-github-actions/using-environment-variables#default-environment-variables

What is the expected behavior?

GitHub Actions is supported out-of-the-box.

If this is a feature request, what is motivation or use case for changing the behavior?

GitHub Actions is great, I recently moved all my projects from Travis CI to it, it'd be great to support it.

494 Error when clicking Details link for Bundlewatch check

Do you want to request a feature or report a bug?
Bug Report

What is the current behavior?
When clicking the Details link in our Bundlewatch check, I'm taken to this page with a 494 Error

Screen Shot 2020-02-13 at 6 18 52 PM

If the current behavior is a bug, please provide the steps to reproduce.
We have Bundlewatch set up in our repo, running the command as a job on CircleCI, and have all required environment variables and GitHub permissions set up.

What is the expected behavior?
I should see the page with test results

If this is a feature request, what is motivation or use case for changing the behavior?

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.
NodeJS v12.14.1
Bundlewatch v0.2.5

Side note - the link to join Slack in this template does not work

Set CI_BRANCH_BASE for GitHub Actions

Do you want to request a feature or report a bug?

Bug

What is the current behavior?

There's no way to diff against a branch other than master on GitHub Actions CI

If the current behavior is a bug, please provide the steps to reproduce.

https://github.com/twbs/bootstrap/tree/v4-dev

What is the expected behavior?

If this is a feature request, what is motivation or use case for changing the behavior?

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

Recently I switched bootstrap from bundlesize to bundlewatch and it works quite well!

I wanted to figure out how to diff against a branch other than master, in our case v4-dev. I couldn't find how to make this work with GitHub Actions, since the env variables don't seem to provide a similar variable to CI_BRANCH_BASE

Does anybody have any ideas?

Bundlewatch throws an exception if there is no package.json in the current directory.

Do you want to request a feature or report a bug?

Bug report.

What is the current behavior?

Bundlewatch throws an exception if there is no package.json in the current directory, even when passing --config

If the current behavior is a bug, please provide the steps to reproduce.

  1. From a directory with no package.json, run /usr/local/bin/npx bundlewatch --config foo.json. The following exception will occur:
TypeError: Cannot read property 'bundlewatch' of undefined
    at determineConfig (/Users/drogers/.npm/_npx/3805/lib/node_modules/bundlewatch/lib/bin/determineConfig.js:70:36)
    at main (/Users/drogers/.npm/_npx/3805/lib/node_modules/bundlewatch/lib/bin/index.js:51:47)
    at mainSafe (/Users/drogers/.npm/_npx/3805/lib/node_modules/bundlewatch/lib/bin/index.js:102:29)
    at Object.<anonymous> (/Users/drogers/.npm/_npx/3805/lib/node_modules/bundlewatch/lib/bin/index.js:149:1)
    at Module._compile (internal/modules/cjs/loader.js:1251:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1272:10)
    at Module.load (internal/modules/cjs/loader.js:1100:32)
    at Function.Module._load (internal/modules/cjs/loader.js:962:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
    at /usr/local/lib/node_modules/npm/node_modules/libnpx/index.js:268:14
[FATAL] Uncaught exception

What is the expected behavior?

The missing package.json should be ignored, and the proviced config file used.

If this is a feature request, what is motivation or use case for changing the behavior?

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

bundlewatch is broken with brotli-size 3

i get this output with brotli-size 3.0.1:

yarn run v1.17.3
$ bundlewatch --config bundlewatch.config.json
TypeError: brotli.sync is not a function
    at getBrotliSize (/app/node_modules/bundlewatch/lib/app/getLocalFileDetails/getSize.js:32:19)
    at getSize (/app/node_modules/bundlewatch/lib/app/getLocalFileDetails/getSize.js:50:20)
    at paths.forEach.filePath (/app/node_modules/bundlewatch/lib/app/getLocalFileDetails/index.js:40:52)
    at Array.forEach (<anonymous>)
    at files.forEach.file (/app/node_modules/bundlewatch/lib/app/getLocalFileDetails/index.js:37:19)
    at Array.forEach (<anonymous>)
    at getLocalFileDetails (/app/node_modules/bundlewatch/lib/app/getLocalFileDetails/index.js:28:11)
    at /app/node_modules/bundlewatch/lib/app/index.js:47:76
    at Generator.next (<anonymous>)
    at step (/app/node_modules/bundlewatch/lib/app/index.js:38:191)
[FATAL] Uncaught exception
error Command failed with exit code 1.

i had to set the version to 1.0.0 to run it successfully.

environment:

  • node 10.16.0
  • yarn 1.17.3
  • bundlewatch 0.2.5
  • brotli-size 3.0.1

Feature request - compress URLs to better handle a bit more data in the url

Do you want to request a feature or report a bug?

Feature, related to (but doesn't entirely fix) #34

What is the current behavior?

There seems to be a huge amount of data passed in the URL that does not handle url encoding well,

for example, there's this url, where the post-url-encoded query param is 2419 characters long https://service.bundlewatch.io/results?d=details%7CrepoOwner%7Cbundlewatch%7CrepoName%7CrepoCurrentBranch%7Cdependabot/npm_and_yarn/gzip-size-6.0.0%7CrepoBranchBase%7Cmaster%7CcommitSha%7Cc9ae69ef43d3e4b0ec1661ee13b9ebb7112e2842%7Cresults%7Cstatus%7Cpass%7CfullResults%7CfilePath%7C./__testdata__/test-file-1.jpg%7Csize%7CbaseBranchSize%7CmaxSize%7C./__testdata__/test-file-2.jpg%7C./lib/app/analyze/analyze.test.mockdata.js%7C./lib/app/analyze/analyzeFiles/index.js%7C./lib/app/analyze/index.js%7C./lib/app/config/ensureValid.js%7C./lib/app/config/getCIVars.js%7C./lib/app/config/getConfig.js%7C./lib/app/errors/ValidationError.js%7C./lib/app/getLocalFileDetails/getSize.js%7C./lib/app/getLocalFileDetails/index.js%7C./lib/app/index.js%7C./lib/app/reporting/BundleWatchService/index.js%7C./lib/app/reporting/GitHubService/index.js%7C./lib/app/resultsPage/createURL.js%7C./lib/app/resultsPage/shortenURL.js%7C./lib/bin/determineConfig.js%7C./lib/bin/index.js%7C./lib/logger/index.js%7C./artifacts/bundlewatch-0.0.0.tgz%7Csummary%7CEverything%2Bis%2Bin%2Bcheck%2B(%252B2B,%2B-0B,%2B%252B0.0%2525)%5EU2A%7CU2A%7CAZ28%7C5GKT%7C5GKT%7CAZ28%7C6L%7C6L%7C1KW%7CPO%7CPO%7C1KW%7CYY%7CYY%7C1KW%7CWB%7CWB%7C1KW%7CH1%7CH1%7C1KW%7CFR%7CFR%7C1KW%7C5A%7C5A%7C1KW%7CGC%7CGC%7C1KW%7CJT%7CJT%7C1KW%7C120%7C120%7C1KW%7COE%7COE%7C1KW%7CS4%7CS4%7C1KW%7CF1%7CF1%7C1KW%7CFZ%7CFZ%7C1KW%7CQX%7CQX%7C1KW%7C14V%7C14V%7C1KW%7CFP%7CFP%7C1KW%7CB5A%7CB58%7CBUO%5E%5E$0%7C$1%7C2%7C3%7C2%7C4%7C5%7C6%7C7%7C8%7C9%5D%7CA%7C$B%7CC%7CD%7C@$E%7CF%7CB%7CC%7CG%7C14%7CH%7C15%7CI%7C16%5D%7C$E%7CJ%7CB%7CC%7CG%7C17%7CH%7C18%7CI%7C19%5D%7C$E%7CK%7CB%7CC%7CG%7C1A%7CH%7C1B%7CI%7C1C%5D%7C$E%7CL%7CB%7CC%7CG%7C1D%7CH%7C1E%7CI%7C1F%5D%7C$E%7CM%7CB%7CC%7CG%7C1G%7CH%7C1H%7CI%7C1I%5D%7C$E%7CN%7CB%7CC%7CG%7C1J%7CH%7C1K%7CI%7C1L%5D%7C$E%7CO%7CB%7CC%7CG%7C1M%7CH%7C1N%7CI%7C1O%5D%7C$E%7CP%7CB%7CC%7CG%7C1P%7CH%7C1Q%7CI%7C1R%5D%7C$E%7CQ%7CB%7CC%7CG%7C1S%7CH%7C1T%7CI%7C1U%5D%7C$E%7CR%7CB%7CC%7CG%7C1V%7CH%7C1W%7CI%7C1X%5D%7C$E%7CS%7CB%7CC%7CG%7C1Y%7CH%7C1Z%7CI%7C20%5D%7C$E%7CT%7CB%7CC%7CG%7C21%7CH%7C22%7CI%7C23%5D%7C$E%7CU%7CB%7CC%7CG%7C24%7CH%7C25%7CI%7C26%5D%7C$E%7CV%7CB%7CC%7CG%7C27%7CH%7C28%7CI%7C29%5D%7C$E%7CW%7CB%7CC%7CG%7C2A%7CH%7C2B%7CI%7C2C%5D%7C$E%7CX%7CB%7CC%7CG%7C2D%7CH%7C2E%7CI%7C2F%5D%7C$E%7CY%7CB%7CC%7CG%7C2G%7CH%7C2H%7CI%7C2I%5D%7C$E%7CZ%7CB%7CC%7CG%7C2J%7CH%7C2K%7CI%7C2L%5D%7C$E%7C10%7CB%7CC%7CG%7C2M%7CH%7C2N%7CI%7C2O%5D%7C$E%7C11%7CB%7CC%7CG%7C2P%7CH%7C2Q%7CI%7C2R%5D%5D%7C12%7C13%5D%5D
calling decodeURIComponent on that reveals the original value is 1719 characters long (so URL encoding inflated it by 40%) details|repoOwner|bundlewatch|repoName|repoCurrentBranch|dependabot/npm_and_yarn/gzip-size-6.0.0|repoBranchBase|master|commitSha|c9ae69ef43d3e4b0ec1661ee13b9ebb7112e2842|results|status|pass|fullResults|filePath|./__testdata__/test-file-1.jpg|size|baseBranchSize|maxSize|./__testdata__/test-file-2.jpg|./lib/app/analyze/analyze.test.mockdata.js|./lib/app/analyze/analyzeFiles/index.js|./lib/app/analyze/index.js|./lib/app/config/ensureValid.js|./lib/app/config/getCIVars.js|./lib/app/config/getConfig.js|./lib/app/errors/ValidationError.js|./lib/app/getLocalFileDetails/getSize.js|./lib/app/getLocalFileDetails/index.js|./lib/app/index.js|./lib/app/reporting/BundleWatchService/index.js|./lib/app/reporting/GitHubService/index.js|./lib/app/resultsPage/createURL.js|./lib/app/resultsPage/shortenURL.js|./lib/bin/determineConfig.js|./lib/bin/index.js|./lib/logger/index.js|./artifacts/bundlewatch-0.0.0.tgz|summary|Everything+is+in+check+(%2B2B,+-0B,+%2B0.0%25)^U2A|U2A|AZ28|5GKT|5GKT|AZ28|6L|6L|1KW|PO|PO|1KW|YY|YY|1KW|WB|WB|1KW|H1|H1|1KW|FR|FR|1KW|5A|5A|1KW|GC|GC|1KW|JT|JT|1KW|120|120|1KW|OE|OE|1KW|S4|S4|1KW|F1|F1|1KW|FZ|FZ|1KW|QX|QX|1KW|14V|14V|1KW|FP|FP|1KW|B5A|B58|BUO^^$0|$1|2|3|2|4|5|6|7|8|9]|A|$B|C|D|@$E|F|B|C|G|14|H|15|I|16]|$E|J|B|C|G|17|H|18|I|19]|$E|K|B|C|G|1A|H|1B|I|1C]|$E|L|B|C|G|1D|H|1E|I|1F]|$E|M|B|C|G|1G|H|1H|I|1I]|$E|N|B|C|G|1J|H|1K|I|1L]|$E|O|B|C|G|1M|H|1N|I|1O]|$E|P|B|C|G|1P|H|1Q|I|1R]|$E|Q|B|C|G|1S|H|1T|I|1U]|$E|R|B|C|G|1V|H|1W|I|1X]|$E|S|B|C|G|1Y|H|1Z|I|20]|$E|T|B|C|G|21|H|22|I|23]|$E|U|B|C|G|24|H|25|I|26]|$E|V|B|C|G|27|H|28|I|29]|$E|W|B|C|G|2A|H|2B|I|2C]|$E|X|B|C|G|2D|H|2E|I|2F]|$E|Y|B|C|G|2G|H|2H|I|2I]|$E|Z|B|C|G|2J|H|2K|I|2L]|$E|10|B|C|G|2M|H|2N|I|2O]|$E|11|B|C|G|2P|H|2Q|I|2R]]|12|13]]
Using lz compression (`lzString.compressToEncodedURIComponent(input)`), the resulting string has a length of 1433 characters (16% reduction) CYUwLghglgNgzgHwE4gA4HsDyB3AdiJBAIwFddgYRsIwBjAC2TXQDkIBbEJjAYRKRS4wAISQRcDBKFQhyEIujAB6XKnYB9ccHUBPCElxKA5gC8oqALRwoJkBYBsAOgAML7ulHiGwiHC7tfMAIEWnR2digwAGV6CBCATggQe3iQADMAFgBmYCyQDKJnEFoARnt7EpAQEqyiVKIiAHYSkoAmEFaADgzWpjgSGDBEOEgwEkRUX0Q0gZgAJRB+wenYEAAFGkZHJXV1IJHgGghdpX2wCzTVixLHACtUIwRrW2JfEE8JeiibfwgAD2+L22uzOh0gJzOFyurTuDwQ2xgUCISggqFQKNwEBgOlsGKxOJAjjOjnY6FoAGswRA7ogEUiUWi8djceJ8bYAGKrOBKKDkEB-GnwpSI5Go9Gs5kgHl8gW3WnC+lipShXCXIxKWT9FAANSxUGAgrposZKrVxnAPAAkrqkHBDQrjejTVB1UYLehVS77SKGeiCEh0LalLrEWCoB6AKICQPexWMt1gAAyZKxnMoABFwNB4Oboj9Y47c8naKnVpnILBubzQLL5T6ldX+QXfUoUBgkGBeerhGQKCAAOo0BhRAgANygtCljdrQvrjLbgc7uHVAHFIgAJEhEEdIceT6U15tKlBLIYbN3KlA0EAAVTmiaP88WAzPEAvcHoi9kd4fctn9KIXklFAIIkAifAeA9NVm0Awxp2bGB0CMN0kAPJs-22fROzSCBaCGJRSHIShqDoegLFcCiiVMJ4SHCfQdAQCNRwIHQwHoLsAGooDgLjcA4hhinJDiAAoAFJWmECSABoOPI4QZPE4QKPEgBWABKAA9G9WgAQQQbS9J0gAtLoEBUlcAGkABUzMsmzjNM+xEwQJyEBKCz+wQNZMC8nz3M8gBNAKECCtyPIQfthAiqL-IQdcSjihLYvZOYEBSsLPJUvSsoyhAVx4PKCtigApGzStytpnDc1oqtizAIwQercqiDIEBa3L2QSzqOqMtLetigBFAANBBhoqjJtTciaOrWNLZti4QcsWzoEGEG9MA0jSABIqq2hLeiyBBelalSXIQRoEBW+IAF0ED0raooK9MEAAAS2hr2VWhACpXKa4rc07LTc+xbvehBiq+n63Iu9c3JWoGShuhAwYsyG8rcvTYZKKKEZ4UGGucx70ZKZ6sYahH2XxhAAFk0d+kpfqx2GEctKmWDptyIax1GEcTKmfKJ+naax9mEcwKnZsFtzZqxgaEARuYqblqWSiif6ShshGbyp1KVcmrHPIRoaqbVlXgqx3qgZqqmbKl1oEth1peitrIqZvDnWlax3AaOkHkYaya7Zho74aOpGwc8u3MaOnGjrx-2EBGu3SaO8mjsphPgrtxmjuZo7WYT3q7a5o6eaOvmE5KKq7eFo7RaO8XK4Su2ZaOuWrcV262jc13rqAA

If the current behavior is a bug, please provide the steps to reproduce.

What is the expected behavior?

If this is a feature request, what is motivation or use case for changing the behavior?

Long urls are breaking the details page (getting 494 Request header too large errors trying to view them);

Compressing the query params into a format that doesn't get inflated by url encoding would add a bit more headroom to how long a URL can be without breaking the link.

It doesn't solve it completely though (using Checks API to publish the table to the repo as a markdown summary would #293 but that might be a larger change / take more time)

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

Files with autogenerated id in their names are always removed then added

Do you want to request a feature or report a bug?

Report a bug

What is the current behavior?

The page breakdown keeps showing the file being removed, then added, while it's the same file. This adds complexity seeing the overall change to the file.

image

If the current behavior is a bug, please provide the steps to reproduce.

Create a bundle with an auto-generated id in the name, such as:

{
      "path": "build/*-main-split.js",
      "compression": "brotli",
      "maxSize": "100 kB"
    },

What is the expected behavior?

Bundlewatch should compare the 2 files with different generated id instead of showing one as removed and the other as added.

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

Is there a way to clear the cache or something on the bundlewatch side?

Difficulty accessing short URLs

What is the current behavior?
https://ja2r7.app.goo.gl/
Short URL is difficult to access, is there any other alternate domain name?

What is the expected behavior?
Are there any other alternate jump addresses?
Or some other alternate address for goo.gl?

Results page is down with 494 Error status code

Do you want to request a feature or report a bug?

Bug

What is the current behavior?

494 ERROR
The request could not be satisfied.

If the current behavior is a bug, please provide the steps to reproduce.

What is the expected behavior?

If this is a feature request, what is motivation or use case for changing the behavior?

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

Unable to fetch fileDetails for baseBranch=master code=Request failed with status code 404

Do you want to request a feature or report a bug?
Bug

What is the current behavior?
The report works fine and the status is reported to Github just fine the issue is when it tries to compare the current PR with master this is the error I get:

Unable to fetch fileDetails for baseBranch=master from https://service.bundlewatch.io/store code=Request failed with status code 404

Screenshot 2020-08-28 at 20 44 31

If the current behavior is a bug, please provide the steps to reproduce.

My config:

{
  "files": [
    {
      "path": "build/**/bundle.*.js",
      "maxSize": "500 kB"
    },
    {
      "path": "build/**/*.chunk.js",
      "maxSize": "50 kB"
    }
  ]
}
BUNDLEWATCH_GITHUB_TOKEN=*** -e CI_REPO_OWNER=owner -e GIT_COMMIT=**** -e GIT_BRANCH=add-bundlesize-checks -e CI_BRANCH_BASE=master -e GIT_URL=https://github.com/xxx/xxx.git npm run -config bundlewatch.config.json
[INFO] Retrieving comparison
[ERROR] Unable to fetch fileDetails for baseBranch=master from https://service.bundlewatch.io/store code=Request failed with status code 404
[INFO] master !== add-bundlesize-checks, no results saved
[INFO] add-bundlesize-checks is not a branch to track, no results saved

.....

bundlewatch FAIL

maxSize check failed

What is the expected behavior?
I would expect it to compare with Pull request with the master branch.

If this is a feature request, what is motivation or use case for changing the behavior?

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.
Linux, Node 13, bundlewatch 0.2.7

Do I need to configure the variables differently so I can work for Github PRs & compare it with the master branch?

Bundlewatch Github status not working?

Do you want to request a feature or report a bug?

Bug.

(Slack link above not working btw)

What is the current behavior?

Unable to get Github status check to work with Github actions.

If the current behavior is a bug, please provide the steps to reproduce.

Following the official documentation.

  1. Install bundlewatch.
  2. Create config file.
  3. Add BUNDLEWATCH_GITHUB_TOKEN secret to the project.
  4. Add build command and bundlewatch CLI command to my existing Github Actions workflow.
  5. Commit these changes.
  6. Observe everything works and results are saved.
  7. Open a new pull request.
  8. Observe everything works again and the results are diffed against the base branch.
  9. Observe no status check appears on the pull request.

package.json

"size": "bundlewatch --config .bundlewatchrc.json"

.bundlewatchrc.json

{
  "files": [
    {
      "maxSize": "20 KB",
      "path": "build/static/js/*.js"
    }
  ],
  "ci": {
    "trackBranches": ["main"]
  }
}

.github/workflows/workflow.yml

name: workflow

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  webapp:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/[email protected]
      - run: yarn install --frozen-lockfile
      - run: yarn build
      - run: yarn size
        env:
          BUNDLEWATCH_GITHUB_TOKEN: ${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}
          CI_BRANCH_BASE: main

What is the expected behavior?

A failing or succeeding pull request check appears on Github.

If this is a feature request, what is motivation or use case for changing the behavior?

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

Node 12.18.3
bundlewatch 0.2.7

https://service.bundlewatch.io/store failed with status code 404

Do you want to request a feature or report a bug?
Bug

What is the current behavior?
While using Travis, service returns 404
If the current behavior is a bug, please provide the steps to reproduce.

  1. Create a travis project + git
  2. Configure auth token in travis
  3. push some code to master
  4. create a pull request
  5. see results

Travis build:
https://travis-ci.org/patrick-tolosa/bundle-size-tester/builds/655498429?utm_source=github_status&utm_medium=notification

Repo:
https://github.com/patrick-tolosa/bundle-size-tester

Expected behavior is to get correct MASTER vs BRANCH size difference, currently due to this issue we keep getting the absolute size only (not the diff)

Bundlewatch results breakdown seems broken

Do you want to request a feature or report a bug?

Bug

What is the current behavior?

It seems the bundlewatch results breakdown (referenced here in the docs), is broken. See this bundlewatch url for an example, which was generated on CI by bundlewatch here. What I'm getting when I visit the url generated by bundlewatch is:

Screenshot 2021-06-04 at 12 51 31

If the current behavior is a bug, please provide the steps to reproduce.

The workflow (and repo) that produced these results can be found here.

What is the expected behavior?

I expected a result similar to the results breakdown from the docs:

Screenshot 2021-06-04 at 12 45 12

If this is a feature request, what is motivation or use case for changing the behavior?

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

Tested the above on Firefox 88.0.1, macOS 11.3, and bundlewatch 0.3.2 ran on CI on Ubuntu 20.04.2

Fundamental instructions missing from documentation

On both the readme and the site, these are the instructions:

Getting Started

Install the BundleWatch package:

  • NPM: npm install bundlewatch --save-dev
  • Yarn: yarn add bundlewatch --dev

Add some basic configuration to your package.json

{
    "name": "my package name",
    "version": "0.0.1",
    "bundlewatch": {
        "files": [
            {
                "path": "myfolder/*.js",
                "maxSize": "100kB"
            }
        ]
    }
}

Usage:

  • NPM: npm run bundlewatch
  • Yarn: yarn run bundlewatch

This will give you command line output. If you want BundleWatch to report build status on your pull requests, see below.

Now run the last command:

โฏ npm run bundlewatch
npm ERR! missing script: bundlewatch

Support for GitLab (and self hosted GitLab)

Do you want to request a feature or report a bug?

feature

What is the current behavior?

Only works with project using Github

If the current behavior is a bug, please provide the steps to reproduce.

What is the expected behavior?

Get bundlewatch to work with Gitlab

If this is a feature request, what is motivation or use case for changing the behavior?

A significant amount of projects are hosted outside of Github. It would be great if they get access to this great tool.

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

Branches with slash (`/`) in their name are not supporten in GitHub Actions

Do you want to request a feature or report a bug?

Report a bug.

What is the current behavior?

When I run bundlewatch in a GitHub action on a branch that contains a / it fails to recognize it and cuts it after the first slash (fix/issue/123-slashes-in-branch).

[INFO] master !== fix, no results saved
[INFO] fix is not a branch to track, no results saved

If the current behavior is a bug, please provide the steps to reproduce.

  1. Setup GH Action
    - name: Run bundlewatch
      run: npx bundlewatch
      env:
        BUNDLEWATCH_GITHUB_TOKEN: ${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}
        CI_COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
  2. Push a change to a branch with a slash, like fix/issue/123-slashes-in-branch

What is the expected behavior?

All branch names are supported.

If this is a feature request, what is motivation or use case for changing the behavior?
n/a

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

I'm using latest bundlewatch 0.3.2.

I bet, the reason for this bug, is the bug in ci-env https://github.com/siddharthkp/ci-env/blob/master/index.js#L122 reading only the part between the second and third slash.

Fix seems to be waiting at siddharthkp/ci-env#43

Status page doesn't work when maxSize is not set

Do you want to request a feature or report a bug?

Bug
What is the current behavior?

{"errors":{"isJoi":true,"name":"ValidationError","details":[{"message":"\"maxSize\" contains an invalid value","path":["results","fullResults",0,"maxSize"],"type":"any.invalid","context":{"key":"maxSize","label":"maxSize"}}],"_object":{"details":{"repoOwner":"0xProject","repoName":"0x-monorepo","repoCurrentBranch":"feature/artifacts","repoBranchBase":"master","commitSha":"6bfe7d7b7e707a9057556149def4681035e23027"},"results":{"status":"pass","fullResults":[{"filePath":"packages/0x.js/_bundles/index.min.js","status":"pass","size":546328,"baseBranchSize":0,"maxSize":null},{"filePath":"packages/instant/public/main.bundle.js","status":"pass","size":33448,"baseBranchSize":0,"maxSize":null}],"summary":"Everything is in check (+566.19KB, -0B)"}}}}

Link

If the current behavior is a bug, please provide the steps to reproduce.

Just integrated bundlewatch and didn't set the maxSize as it's a default.
What is the expected behavior?
Should work
If this is a feature request, what is motivation or use case for changing the behavior?

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

api for bundlewatch-service store to fetch details file

Do you want to request a feature or report a bug?
request a feature

What is the current behavior?
no access for the details file created in store for current brunch.

If the current behavior is a bug, please provide the steps to reproduce.

What is the expected behavior?
an api to the store to fetch this file (using same props such as token, repo details and so on

If this is a feature request, what is motivation or use case for changing the behavior?

in this case - until the issue #30 , of hashing the chunks names for master compression will be easy to walk around bu reading the raw data of the file,

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

High severity vulnerability (axios)

Cloning repository reveals:

found 1 high severity vulnerability

Investigating further npm audit:


                       === npm audit security report ===

# Run  npm install [email protected]  to resolve 1 vulnerability
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ High          โ”‚ Server-Side Request Forgery                                  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Package       โ”‚ axios                                                        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Dependency of โ”‚ axios                                                        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Path          โ”‚ axios                                                        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ More info     โ”‚ https://npmjs.com/advisories/1594                            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜


Please bump dependency for axios to resolve this (I think I can provide a PR if necessary)

Axios security issues

Do you want to request a feature or report a bug?

A very old version of axios is being used and there have been recent reports of vulnerabilities and also fixed.
I wanted to ask what's the feeling on upgrading axios to v1.x at this point.

At the moment the requirement is version 0.24.0, and latest version is 1.6.2

axios/axios#6006

What is the current behavior?

No functional changes

If the current behavior is a bug, please provide the steps to reproduce.

Just check the vulnerabilities reports

What is the expected behavior?

Keep up to date with security fixes for the axios package

If this is a feature request, what is motivation or use case for changing the behavior?

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

Getting 404 NPM error

~/clones/isomorphic-git
โฏ npm i
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/bundewatch - Not found
npm ERR! 404 
npm ERR! 404  'bundewatch@^0.3.2' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/nikiv/.npm/_logs/2023-03-20T17_19_36_336Z-debug.log

Getting this in my project now. I am not directly trying import bundlewatch so I don't know which of my dependencies is breaking. Is it possible to check if something is okay with bundlewatch npm?

Thank you.

Results page URL issues

Do you want to request a feature or report a bug?
Bug

What is the current behavior?

  1. The url shortener is returning a 400 status code in CircleCI
  2. Without the shortened url, the details page is returning a 413 error

If the current behavior is a bug, please provide the steps to reproduce.
All I'm doing is running bundlewatch from CircleCI, everything seems to be working except for the detail page. Here's the output from CircleCI https://gist.github.com/a-axton/95f9eea5ce0d34bd12b8b78f56787683

What is the expected behavior?
Link should take me to a working details page, I think it might be from too many characters in the URL.

Default branches other than `master` ar not supported

Do you want to request a feature or report a bug?

Bug

What is the current behavior?
When I run bundlewatch on Travis-CI for a push event, ci-env sets base branch as empty, then bundlewatch uses hardcoded default master, which does not exist in my repo

see https://app.travis-ci.com/github/woocommerce/google-listings-and-ads/jobs/522666112#L14735

[ERROR] Unable to fetch fileDetails for baseBranch=master from https://service.bundlewatch.io/store code=Request failed with status code 404
[INFO] master !== trunk, no results saved
[INFO] Saving results

I explicitly specified the tracked branches in my repo:

 "ci": {
            "trackBranches": ["trunk", "develop"]
        }

If the current behavior is a bug, please provide the steps to reproduce.

  1. Setup bundlewatch for your repo, set custom trackBranches:
	"bundlewatch": {
		"files": [
			{
				"path": "./js/build/*.js",
				"maxSize": "3 kB"
			}
		],
        "ci": {
            "trackBranches": ["trunk", "develop"]
        }
	}
  1. Run on travis script: npm run build && npx bundlewatch

(See our repo's bundlewatch config https://github.com/woocommerce/google-listings-and-ads/blob/trunk/package.json#L94-L120 and the build results https://app.travis-ci.com/github/woocommerce/google-listings-and-ads/jobs/522666112#L14735)

What is the expected behavior?

For a push even, when no CI_BASE_BRANCH is specified, should compare against CI_TARGET_BRANCH or at least respect the branch setup I gave, and use config.ci.trackBranches[0]

If this is a feature request, what is motivation or use case for changing the behavior?

n/a

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

Feature request - use the Checks API rather than the status API to put comparison table directly into the repo as a markdown table (solves the url length problem)

Do you want to request a feature or report a bug?
Feature request, related to (and should resolve) #34

What is the current behavior?
bundlewatch currently encodes all the state it needs to display into the URL, this is causing links to break for bundles with a lot of files

like this one https://service.bundlewatch.io/results?d=details%7CrepoOwner%7Credacted%7CrepoName%7Credacted%7CrepoCurrentBranch%7Cchang%2F20w49%2Fvisibility-links%7CrepoBranchBase%7Cmain%7CcommitSha%7C44454626f65f1df2944758575632e6d7c364bf47%7Cresults%7Cstatus%7Cpass%7CfullResults%7CfilePath%7Cbuild%2Fstatic%2Fjs%2Fapollo-query-planner.js%7Csize%7CbaseBranchSize%7CmaxSize%7Cbuild%2Fstatic%2Fjs%2Fapp.js%7Cbuild%2Fstatic%2Fjs%2Fcss.js%7Cbuild%2Fstatic%2Fjs%2FGraphLayout.js%7Cbuild%2Fstatic%2Fjs%2FGraphsListPage.js%7Cbuild%2Fstatic%2Fjs%2Fjs-sandbox.js%7Cbuild%2Fstatic%2Fjs%2Fmonaco-editor.js%7Cbuild%2Fstatic%2Fjs%2Fmonaco-languages.js%7Cbuild%2Fstatic%2Fjs%2FOrgMembersPage.js%7Cbuild%2Fstatic%2Fjs%2FOrgSettingsPage.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_abap.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_abnf.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_actionscript.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_ada.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_agda.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_al.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_antlr4.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_apacheconf.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_apl.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_applescript.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_aql.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_arduino.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_arff.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_asciidoc.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_asm6502.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_aspnet.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_autohotkey.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_autoit.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_bash.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_basic.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_batch.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_bbcode.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_bison.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_bnf.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_brainfuck.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_brightscript.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_bro.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_c.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_cil.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_clike.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_clojure.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_cmake.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_coffeescript.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_concurnas.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_cpp.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_crystal.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_csharp.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_csp.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_css.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_cssExtras.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_cypher.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_d.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_dart.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_dax.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_dhall.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_diff.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_django.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_dnsZoneFile.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_docker.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_ebnf.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_editorconfig.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_eiffel.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_ejs.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_elixir.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_elm.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_erb.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_erlang.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_etlua.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_excelFormula.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_factor.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_firestoreSecurityRules.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_flow.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_fortran.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_fsharp.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_ftl.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_gcode.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_gdscript.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_gedcom.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_gherkin.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_git.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_glsl.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_gml.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_go.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_graphql.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_groovy.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_haml.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_handlebars.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_haskell.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_haxe.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_hcl.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_hlsl.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_hpkp.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_hsts.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_http.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_ichigojam.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_icon.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_iecst.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_ignore.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_inform7.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_ini.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_io.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_j.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_java.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_javadoc.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_javadoclike.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_javascript.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_javastacktrace.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_jolie.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_jq.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_jsdoc.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_jsExtras.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_json.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_json5.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_jsonp.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_jsstacktrace.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_jsTemplates.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_jsx.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_julia.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_keyman.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_kotlin.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_latex.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_latte.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_less.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_lilypond.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_liquid.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_lisp.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_livescript.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_llvm.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_lolcode.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_lua.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_makefile.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_markdown.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_markup.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_markupTemplating.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_matlab.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_mel.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_mizar.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_monkey.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_moonscript.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_n1ql.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_n4js.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_nand2tetrisHdl.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_nasm.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_neon.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_nginx.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_nim.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_nix.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_nsis.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_objectivec.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_ocaml.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_opencl.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_oz.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_parigp.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_parser.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_pascal.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_pascaligo.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_pcaxis.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_peoplecode.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_perl.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_php.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_phpdoc.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_phpExtras.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_plsql.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_powerquery.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_powershell.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_processing.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_prolog.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_properties.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_protobuf.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_pug.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_puppet.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_pure.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_purebasic.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_python.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_q.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_qml.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_qore.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_r.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_racket.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_reason.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_regex.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_renpy.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_rest.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_rip.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_roboconf.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_robotframework.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_ruby.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_rust.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_sas.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_sass.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_scala.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_scheme.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_scss.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_shellSession.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_smali.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_smalltalk.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_smarty.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_solidity.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_solutionFile.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_soy.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_sparql.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_splunkSpl.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_sql.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_stylus.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_swift.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_t4Cs.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_t4Templating.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_t4Vb.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_tap.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_tcl.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_textile.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_toml.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_tsx.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_tt2.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_turtle.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_twig.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_typescript.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_unrealscript.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_vala.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_vbnet.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_velocity.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_verilog.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_vhdl.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_vim.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_visualBasic.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_warpscript.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_wasm.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_wiki.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_xeora.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_xmlDoc.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_xojo.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_xquery.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_yaml.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_yang.js%7Cbuild%2Fstatic%2Fjs%2Freact-syntax-highlighter_languages_refractor_zig.js%7Cbuild%2Fstatic%2Fjs%2Fruntime.js%7Cbuild%2Fstatic%2Fjs%2FStudioPage.js%7Cbuild%2Fstatic%2Fjs%2Fvendors~apollo-query-planner.js%7Cbuild%2Fstatic%2Fjs%2Fvendors~apollo-query-planner~apollo-reporting-protobuf.js%7Cbuild%2Fstatic%2Fjs%2Fvendors~GraphLayout.js%7Cbuild%2Fstatic%2Fjs%2Fvendors~GraphLayout~StudioPage.js%7Cbuild%2Fstatic%2Fjs%2Fvendors~GraphsListPage~StudioPage.js%7Cbuild%2Fstatic%2Fjs%2Fvendors~js-sandbox.js%7Cbuild%2Fstatic%2Fjs%2Fvendors~react-syntax-highlighter_languages_refractor_sqf.js%7Cbuild%2Fstatic%2Fjs%2Fvendors~react-syntax-highlighter%2Frefractor-core-import.js%7Cbuild%2Fstatic%2Fjs%2Fvendors~StudioPage.js%7Cbuild%2Fstatic%2Fjs%2Fvendors~zxcvbn.js%7Cbuild%2Fstatic%2Fworkers%2Feditor.worker.js%7Cbuild%2Fstatic%2Fworkers%2Fjson.worker.js%7Cbuild%2Fassets%2Fmonaco.editor.main.css%7Cbuild%2Fstatic%2Fcss%2F0.css%7Cbuild%2Fstatic%2Fcss%2F12.css%7Cbuild%2Fstatic%2Fcss%2F5.css%7Csummary%7CEverything%2Bis%2Bin%2Bcheck%2B(%252B11B%2C%2B-0B%2C%2B%252B0.0%2525)%5ECS%7CCS%7C2HWCG%7CBJYL%7CBJYL%7CD62O%7CFD%7CFD%7C2HWCG%7C3SWH%7C3SW8%7C2HWCG%7C7GR%7C7GR%7C2HWCG%7C96%7C96%7C2HWCG%7CBUYK%7CBUYK%7C2HWCG%7CLZJ%7CLZJ%7C2HWCG%7C7AZ%7C7AZ%7C2HWCG%7CCN7%7CCN7%7C2HWCG%7C35U%7C35U%7C2HWCG%7CJT%7CJT%7C2HWCG%7CJR%7CJR%7C2HWCG%7CLW%7CLW%7C2HWCG%7CJW%7CJW%7C2HWCG%7C16T%7C16T%7C2HWCG%7CNS%7CNS%7C2HWCG%7C2WM%7C2WM%7C2HWCG%7CLX%7CLX%7C2HWCG%7CXF%7CXF%7C2HWCG%7CN9%7CN9%7C2HWCG%7C2V8%7C2V8%7C2HWCG%7CBM%7CBM%7C2HWCG%7C1FB%7C1FB%7C2HWCG%7CL5%7CL5%7C2HWCG%7C2B8%7C2B8%7C2HWCG%7C3DD%7C3DD%7C2HWCG%7CL4%7CL4%7C2HWCG%7C2BG%7C2BG%7C2HWCG%7C12R%7C12R%7C2HWCG%7COD%7COD%7C2HWCG%7CD3%7CD3%7C2HWCG%7C10H%7C10H%7C2HWCG%7CC8%7CC8%7C2HWCG%7CB3%7CB3%7C2HWCG%7CMP%7CMP%7C2HWCG%7CQ6%7CQ6%7C2HWCG%7CTK%7CTK%7C2HWCG%7C11R%7C11R%7C2HWCG%7CIZ%7CIZ%7C2HWCG%7C1A0%7C1A0%7C2HWCG%7C3F9%7C3F9%7C2HWCG%7CO7%7CO7%7C2HWCG%7CV4%7CV4%7C2HWCG%7C1CZ%7C1CZ%7C2HWCG%7C19Q%7C19Q%7C2HWCG%7C1ZF%7C1ZF%7C2HWCG%7CGS%7CGS%7C2HWCG%7CO1%7CO1%7C2HWCG%7C1AY%7C1AY%7C2HWCG%7CP2%7CP2%7C2HWCG%7C14A%7C14A%7C2HWCG%7CK2%7CK2%7C2HWCG%7C1GV%7C1GV%7C2HWCG%7CP7%7CP7%7C2HWCG%7CHD%7CHD%7C2HWCG%7C10F%7C10F%7C2HWCG%7CKT%7CKT%7C2HWCG%7CF4%7CF4%7C2HWCG%7CDV%7CDV%7C2HWCG%7CCY%7CCY%7C2HWCG%7CN8%7CN8%7C2HWCG%7CRV%7CRV%7C2HWCG%7CRO%7CRO%7C2HWCG%7CMP%7CMP%7C2HWCG%7C1HK%7C1HK%7C2HWCG%7CJ7%7CJ7%7C2HWCG%7C114%7C114%7C2HWCG%7CKL%7CKL%7C2HWCG%7C2X2%7C2X2%7C2HWCG%7CI7%7CI7%7C2HWCG%7CJ5%7CJ5%7C2HWCG%7CTQ%7CTQ%7C2HWCG%7C110%7C110%7C2HWCG%7C15S%7C15S%7C2HWCG%7CBO%7CBO%7C2HWCG%7CMY%7CMY%7C2HWCG%7CD3%7CD3%7C2HWCG%7C46M%7C46M%7C2HWCG%7CC9%7CC9%7C2HWCG%7C17C%7C17C%7C2HWCG%7C32M%7C32M%7C2HWCG%7CK2%7CK2%7C2HWCG%7CLP%7CLP%7C2HWCG%7CVJ%7CVJ%7C2HWCG%7C1GU%7C1GU%7C2HWCG%7CXK%7CXK%7C2HWCG%7C1C9%7C1C9%7C2HWCG%7CML%7CML%7C2HWCG%7CMD%7CMD%7C2HWCG%7C1EE%7C1EE%7C2HWCG%7CC3%7CC3%7C2HWCG%7CAQ%7CAQ%7C2HWCG%7CLZ%7CLZ%7C2HWCG%7CMH%7CMH%7C2HWCG%7CNJ%7CNJ%7C2HWCG%7CUC%7CUC%7C2HWCG%7CCJ%7CCJ%7C2HWCG%7C1C0%7C1C0%7C2HWCG%7CAU%7CAU%7C2HWCG%7CZX%7CZX%7C2HWCG%7CKZ%7CKZ%7C2HWCG%7CUT%7CUT%7C2HWCG%7C1HH%7C1HH%7C2HWCG%7CK7%7CK7%7C2HWCG%7C148%7C148%7C2HWCG%7CK7%7CK7%7C2HWCG%7CRV%7CRV%7C2HWCG%7CO5%7CO5%7C2HWCG%7C1C9%7C1C9%7C2HWCG%7CS2%7CS2%7C2HWCG%7CDM%7CDM%7C2HWCG%7CJW%7CJW%7C2HWCG%7CH2%7CH2%7C2HWCG%7CHK%7CHK%7C2HWCG%7C136%7C136%7C2HWCG%7CU6%7CU6%7C2HWCG%7COZ%7COZ%7C2HWCG%7CMD%7CMD%7C2HWCG%7CSL%7CSL%7C2HWCG%7CJX%7CJX%7C2HWCG%7C1NX%7C1NX%7C2HWCG%7CGE%7CGE%7C2HWCG%7C12M%7C12M%7C2HWCG%7CM7%7CM7%7C2HWCG%7CXW%7CXW%7C2HWCG%7CWH%7CWH%7C2HWCG%7CGY%7CGY%7C2HWCG%7CP2%7CP2%7C2HWCG%7CHW%7CHW%7C2HWCG%7CL1%7CL1%7C2HWCG%7C1GE%7C1GE%7C2HWCG%7CVV%7CVV%7C2HWCG%7CLW%7CLW%7C2HWCG%7CFT%7CFT%7C2HWCG%7C5D9%7C5D9%7C2HWCG%7CO0%7CO0%7C2HWCG%7CMZ%7CMZ%7C2HWCG%7C10H%7C10H%7C2HWCG%7C1GM%7C1GM%7C2HWCG%7CGN%7CGN%7C2HWCG%7CD1%7CD1%7C2HWCG%7CJE%7CJE%7C2HWCG%7CJR%7CJR%7C2HWCG%7C1TD%7C1TD%7C2HWCG%7COT%7COT%7C2HWCG%7CRN%7CRN%7C2HWCG%7C1QN%7C1QN%7C2HWCG%7C112%7C112%7C2HWCG%7CMI%7CMI%7C2HWCG%7C3UN%7C3UN%7C2HWCG%7CLC%7CLC%7C2HWCG%7CK9%7CK9%7C2HWCG%7COT%7COT%7C2HWCG%7CV5%7CV5%7C2HWCG%7CPE%7CPE%7C2HWCG%7CHD%7CHD%7C2HWCG%7CPK%7CPK%7C2HWCG%7CYD%7CYD%7C2HWCG%7C1EP%7C1EP%7C2HWCG%7C1V1%7C1V1%7C2HWCG%7C1KE%7C1KE%7C2HWCG%7C2AU%7C2AU%7C2HWCG%7CYP%7CYP%7C2HWCG%7C15G%7C15G%7C2HWCG%7CH3%7CH3%7C2HWCG%7CEF%7CEF%7C2HWCG%7CBU%7CBU%7C2HWCG%7CK7%7CK7%7C2HWCG%7CX0%7CX0%7C2HWCG%7CZW%7CZW%7C2HWCG%7C1H3%7C1H3%7C2HWCG%7C11T%7C11T%7C2HWCG%7CZG%7CZG%7C2HWCG%7CXV%7CXV%7C2HWCG%7CMU%7CMU%7C2HWCG%7CNA%7CNA%7C2HWCG%7CHE%7CHE%7C2HWCG%7CX2%7CX2%7C2HWCG%7CLB%7CLB%7C2HWCG%7CQO%7CQO%7C2HWCG%7C1RC%7C1RC%7C2HWCG%7C10C%7C10C%7C2HWCG%7CI2%7CI2%7C2HWCG%7CE7%7CE7%7C2HWCG%7CN7%7CN7%7C2HWCG%7CYH%7CYH%7C2HWCG%7C12R%7C12R%7C2HWCG%7C2I9%7C2I9%7C2HWCG%7CIR%7CIR%7C2HWCG%7C13H%7C13H%7C2HWCG%7COJ%7COJ%7C2HWCG%7CMJ%7CMJ%7C2HWCG%7C2KH%7C2KH%7C2HWCG%7CNS%7CNS%7C2HWCG%7CHQ%7CHQ%7C2HWCG%7C11K%7C11K%7C2HWCG%7COD%7COD%7C2HWCG%7CHB%7CHB%7C2HWCG%7C16V%7C16V%7C2HWCG%7C11J%7C11J%7C2HWCG%7CW0%7CW0%7C2HWCG%7C1KU%7C1KU%7C2HWCG%7C1F4%7C1F4%7C2HWCG%7CYU%7CYU%7C2HWCG%7C29K%7C29K%7C2HWCG%7CHL%7CHL%7C2HWCG%7C1WW%7C1WW%7C2HWCG%7CWM%7CWM%7C2HWCG%7CU2%7CU2%7C2HWCG%7C127%7C127%7C2HWCG%7CK1%7CK1%7C2HWCG%7C1BQ%7C1BQ%7C2HWCG%7C12U%7C12U%7C2HWCG%7CK7%7CK7%7C2HWCG%7CJB%7CJB%7C2HWCG%7COG%7COG%7C2HWCG%7CWP%7CWP%7C2HWCG%7CW1%7CW1%7C2HWCG%7C1L1%7C1L1%7C2HWCG%7CM4%7CM4%7C2HWCG%7C10H%7C10H%7C2HWCG%7CSR%7CSR%7C2HWCG%7C4O8%7C4O8%7C2HWCG%7C10R%7C10R%7C2HWCG%7CJN%7CJN%7C2HWCG%7CPC%7CPC%7C2HWCG%7CMG%7CMG%7C2HWCG%7CLJ%7CLJ%7C2HWCG%7CBY%7CBY%7C2HWCG%7CLN%7CLN%7C2HWCG%7C1G2%7C1G2%7C2HWCG%7CQ7%7CQ7%7C2HWCG%7CD2%7CD2%7C2HWCG%7C11U%7C11U%7C2HWCG%7C6RY%7C6RW%7C2HWCG%7C1T2R%7C1T2R%7C2HWCG%7C7656%7C7656%7C2HWCG%7CGQ1%7CGQ1%7C2HWCG%7C2BJS%7C2BJS%7C2HWCG%7C2AG5%7C2AG5%7C2HWCG%7C4B1%7C4B1%7C2HWCG%7CW9VQ%7CW9VQ%7C2HWCG%7C8R6%7C8R6%7C2HWCG%7CA5Q%7CA5Q%7C2HWCG%7CAKVX%7CAKVX%7C2HWCG%7C8IQK%7C8IQK%7C2HWCG%7CUUC%7CUUC%7C2HWCG%7C1FIW%7C1FIW%7C2HWCG%7CCUC%7CCUC%7C4E0W%7CCW6%7CCW6%7C4E0W%7CGHB%7CGHB%7C4E0W%7C70%7C70%7C4E0W%5E%5E%240%7C%241%7C2%7C3%7C4%7C5%7C6%7C7%7C8%7C9%7CA%5D%7CB%7C%24C%7CD%7CE%7C%40%24F%7CG%7CC%7CD%7CH%7C7M%7CI%7C7N%7CJ%7C7O%5D%7C%24F%7CK%7CC%7CD%7CH%7C7P%7CI%7C7Q%7CJ%7C7R%5D%7C%24F%7CL%7CC%7CD%7CH%7C7S%7CI%7C7T%7CJ%7C7U%5D%7C%24F%7CM%7CC%7CD%7CH%7C7V%7CI%7C7W%7CJ%7C7X%5D%7C%24F%7CN%7CC%7CD%7CH%7C7Y%7CI%7C7Z%7CJ%7C80%5D%7C%24F%7CO%7CC%7CD%7CH%7C81%7CI%7C82%7CJ%7C83%5D%7C%24F%7CP%7CC%7CD%7CH%7C84%7CI%7C85%7CJ%7C86%5D%7C%24F%7CQ%7CC%7CD%7CH%7C87%7CI%7C88%7CJ%7C89%5D%7C%24F%7CR%7CC%7CD%7CH%7C8A%7CI%7C8B%7CJ%7C8C%5D%7C%24F%7CS%7CC%7CD%7CH%7C8D%7CI%7C8E%7CJ%7C8F%5D%7C%24F%7CT%7CC%7CD%7CH%7C8G%7CI%7C8H%7CJ%7C8I%5D%7C%24F%7CU%7CC%7CD%7CH%7C8J%7CI%7C8K%7CJ%7C8L%5D%7C%24F%7CV%7CC%7CD%7CH%7C8M%7CI%7C8N%7CJ%7C8O%5D%7C%24F%7CW%7CC%7CD%7CH%7C8P%7CI%7C8Q%7CJ%7C8R%5D%7C%24F%7CX%7CC%7CD%7CH%7C8S%7CI%7C8T%7CJ%7C8U%5D%7C%24F%7CY%7CC%7CD%7CH%7C8V%7CI%7C8W%7CJ%7C8X%5D%7C%24F%7CZ%7CC%7CD%7CH%7C8Y%7CI%7C8Z%7CJ%7C90%5D%7C%24F%7C10%7CC%7CD%7CH%7C91%7CI%7C92%7CJ%7C93%5D%7C%24F%7C11%7CC%7CD%7CH%7C94%7CI%7C95%7CJ%7C96%5D%7C%24F%7C12%7CC%7CD%7CH%7C97%7CI%7C98%7CJ%7C99%5D%7C%24F%7C13%7CC%7CD%7CH%7C9A%7CI%7C9B%7CJ%7C9C%5D%7C%24F%7C14%7CC%7CD%7CH%7C9D%7CI%7C9E%7CJ%7C9F%5D%7C%24F%7C15%7CC%7CD%7CH%7C9G%7CI%7C9H%7CJ%7C9I%5D%7C%24F%7C16%7CC%7CD%7CH%7C9J%7CI%7C9K%7CJ%7C9L%5D%7C%24F%7C17%7CC%7CD%7CH%7C9M%7CI%7C9N%7CJ%7C9O%5D%7C%24F%7C18%7CC%7CD%7CH%7C9P%7CI%7C9Q%7CJ%7C9R%5D%7C%24F%7C19%7CC%7CD%7CH%7C9S%7CI%7C9T%7CJ%7C9U%5D%7C%24F%7C1A%7CC%7CD%7CH%7C9V%7CI%7C9W%7CJ%7C9X%5D%7C%24F%7C1B%7CC%7CD%7CH%7C9Y%7CI%7C9Z%7CJ%7CA0%5D%7C%24F%7C1C%7CC%7CD%7CH%7CA1%7CI%7CA2%7CJ%7CA3%5D%7C%24F%7C1D%7CC%7CD%7CH%7CA4%7CI%7CA5%7CJ%7CA6%5D%7C%24F%7C1E%7CC%7CD%7CH%7CA7%7CI%7CA8%7CJ%7CA9%5D%7C%24F%7C1F%7CC%7CD%7CH%7CAA%7CI%7CAB%7CJ%7CAC%5D%7C%24F%7C1G%7CC%7CD%7CH%7CAD%7CI%7CAE%7CJ%7CAF%5D%7C%24F%7C1H%7CC%7CD%7CH%7CAG%7CI%7CAH%7CJ%7CAI%5D%7C%24F%7C1I%7CC%7CD%7CH%7CAJ%7CI%7CAK%7CJ%7CAL%5D%7C%24F%7C1J%7CC%7CD%7CH%7CAM%7CI%7CAN%7CJ%7CAO%5D%7C%24F%7C1K%7CC%7CD%7CH%7CAP%7CI%7CAQ%7CJ%7CAR%5D%7C%24F%7C1L%7CC%7CD%7CH%7CAS%7CI%7CAT%7CJ%7CAU%5D%7C%24F%7C1M%7CC%7CD%7CH%7CAV%7CI%7CAW%7CJ%7CAX%5D%7C%24F%7C1N%7CC%7CD%7CH%7CAY%7CI%7CAZ%7CJ%7CB0%5D%7C%24F%7C1O%7CC%7CD%7CH%7CB1%7CI%7CB2%7CJ%7CB3%5D%7C%24F%7C1P%7CC%7CD%7CH%7CB4%7CI%7CB5%7CJ%7CB6%5D%7C%24F%7C1Q%7CC%7CD%7CH%7CB7%7CI%7CB8%7CJ%7CB9%5D%7C%24F%7C1R%7CC%7CD%7CH%7CBA%7CI%7CBB%7CJ%7CBC%5D%7C%24F%7C1S%7CC%7CD%7CH%7CBD%7CI%7CBE%7CJ%7CBF%5D%7C%24F%7C1T%7CC%7CD%7CH%7CBG%7CI%7CBH%7CJ%7CBI%5D%7C%24F%7C1U%7CC%7CD%7CH%7CBJ%7CI%7CBK%7CJ%7CBL%5D%7C%24F%7C1V%7CC%7CD%7CH%7CBM%7CI%7CBN%7CJ%7CBO%5D%7C%24F%7C1W%7CC%7CD%7CH%7CBP%7CI%7CBQ%7CJ%7CBR%5D%7C%24F%7C1X%7CC%7CD%7CH%7CBS%7CI%7CBT%7CJ%7CBU%5D%7C%24F%7C1Y%7CC%7CD%7CH%7CBV%7CI%7CBW%7CJ%7CBX%5D%7C%24F%7C1Z%7CC%7CD%7CH%7CBY%7CI%7CBZ%7CJ%7CC0%5D%7C%24F%7C20%7CC%7CD%7CH%7CC1%7CI%7CC2%7CJ%7CC3%5D%7C%24F%7C21%7CC%7CD%7CH%7CC4%7CI%7CC5%7CJ%7CC6%5D%7C%24F%7C22%7CC%7CD%7CH%7CC7%7CI%7CC8%7CJ%7CC9%5D%7C%24F%7C23%7CC%7CD%7CH%7CCA%7CI%7CCB%7CJ%7CCC%5D%7C%24F%7C24%7CC%7CD%7CH%7CCD%7CI%7CCE%7CJ%7CCF%5D%7C%24F%7C25%7CC%7CD%7CH%7CCG%7CI%7CCH%7CJ%7CCI%5D%7C%24F%7C26%7CC%7CD%7CH%7CCJ%7CI%7CCK%7CJ%7CCL%5D%7C%24F%7C27%7CC%7CD%7CH%7CCM%7CI%7CCN%7CJ%7CCO%5D%7C%24F%7C28%7CC%7CD%7CH%7CCP%7CI%7CCQ%7CJ%7CCR%5D%7C%24F%7C29%7CC%7CD%7CH%7CCS%7CI%7CCT%7CJ%7CCU%5D%7C%24F%7C2A%7CC%7CD%7CH%7CCV%7CI%7CCW%7CJ%7CCX%5D%7C%24F%7C2B%7CC%7CD%7CH%7CCY%7CI%7CCZ%7CJ%7CD0%5D%7C%24F%7C2C%7CC%7CD%7CH%7CD1%7CI%7CD2%7CJ%7CD3%5D%7C%24F%7C2D%7CC%7CD%7CH%7CD4%7CI%7CD5%7CJ%7CD6%5D%7C%24F%7C2E%7CC%7CD%7CH%7CD7%7CI%7CD8%7CJ%7CD9%5D%7C%24F%7C2F%7CC%7CD%7CH%7CDA%7CI%7CDB%7CJ%7CDC%5D%7C%24F%7C2G%7CC%7CD%7CH%7CDD%7CI%7CDE%7CJ%7CDF%5D%7C%24F%7C2H%7CC%7CD%7CH%7CDG%7CI%7CDH%7CJ%7CDI%5D%7C%24F%7C2I%7CC%7CD%7CH%7CDJ%7CI%7CDK%7CJ%7CDL%5D%7C%24F%7C2J%7CC%7CD%7CH%7CDM%7CI%7CDN%7CJ%7CDO%5D%7C%24F%7C2K%7CC%7CD%7CH%7CDP%7CI%7CDQ%7CJ%7CDR%5D%7C%24F%7C2L%7CC%7CD%7CH%7CDS%7CI%7CDT%7CJ%7CDU%5D%7C%24F%7C2M%7CC%7CD%7CH%7CDV%7CI%7CDW%7CJ%7CDX%5D%7C%24F%7C2N%7CC%7CD%7CH%7CDY%7CI%7CDZ%7CJ%7CE0%5D%7C%24F%7C2O%7CC%7CD%7CH%7CE1%7CI%7CE2%7CJ%7CE3%5D%7C%24F%7C2P%7CC%7CD%7CH%7CE4%7CI%7CE5%7CJ%7CE6%5D%7C%24F%7C2Q%7CC%7CD%7CH%7CE7%7CI%7CE8%7CJ%7CE9%5D%7C%24F%7C2R%7CC%7CD%7CH%7CEA%7CI%7CEB%7CJ%7CEC%5D%7C%24F%7C2S%7CC%7CD%7CH%7CED%7CI%7CEE%7CJ%7CEF%5D%7C%24F%7C2T%7CC%7CD%7CH%7CEG%7CI%7CEH%7CJ%7CEI%5D%7C%24F%7C2U%7CC%7CD%7CH%7CEJ%7CI%7CEK%7CJ%7CEL%5D%7C%24F%7C2V%7CC%7CD%7CH%7CEM%7CI%7CEN%7CJ%7CEO%5D%7C%24F%7C2W%7CC%7CD%7CH%7CEP%7CI%7CEQ%7CJ%7CER%5D%7C%24F%7C2X%7CC%7CD%7CH%7CES%7CI%7CET%7CJ%7CEU%5D%7C%24F%7C2Y%7CC%7CD%7CH%7CEV%7CI%7CEW%7CJ%7CEX%5D%7C%24F%7C2Z%7CC%7CD%7CH%7CEY%7CI%7CEZ%7CJ%7CF0%5D%7C%24F%7C30%7CC%7CD%7CH%7CF1%7CI%7CF2%7CJ%7CF3%5D%7C%24F%7C31%7CC%7CD%7CH%7CF4%7CI%7CF5%7CJ%7CF6%5D%7C%24F%7C32%7CC%7CD%7CH%7CF7%7CI%7CF8%7CJ%7CF9%5D%7C%24F%7C33%7CC%7CD%7CH%7CFA%7CI%7CFB%7CJ%7CFC%5D%7C%24F%7C34%7CC%7CD%7CH%7CFD%7CI%7CFE%7CJ%7CFF%5D%7C%24F%7C35%7CC%7CD%7CH%7CFG%7CI%7CFH%7CJ%7CFI%5D%7C%24F%7C36%7CC%7CD%7CH%7CFJ%7CI%7CFK%7CJ%7CFL%5D%7C%24F%7C37%7CC%7CD%7CH%7CFM%7CI%7CFN%7CJ%7CFO%5D%7C%24F%7C38%7CC%7CD%7CH%7CFP%7CI%7CFQ%7CJ%7CFR%5D%7C%24F%7C39%7CC%7CD%7CH%7CFS%7CI%7CFT%7CJ%7CFU%5D%7C%24F%7C3A%7CC%7CD%7CH%7CFV%7CI%7CFW%7CJ%7CFX%5D%7C%24F%7C3B%7CC%7CD%7CH%7CFY%7CI%7CFZ%7CJ%7CG0%5D%7C%24F%7C3C%7CC%7CD%7CH%7CG1%7CI%7CG2%7CJ%7CG3%5D%7C%24F%7C3D%7CC%7CD%7CH%7CG4%7CI%7CG5%7CJ%7CG6%5D%7C%24F%7C3E%7CC%7CD%7CH%7CG7%7CI%7CG8%7CJ%7CG9%5D%7C%24F%7C3F%7CC%7CD%7CH%7CGA%7CI%7CGB%7CJ%7CGC%5D%7C%24F%7C3G%7CC%7CD%7CH%7CGD%7CI%7CGE%7CJ%7CGF%5D%7C%24F%7C3H%7CC%7CD%7CH%7CGG%7CI%7CGH%7CJ%7CGI%5D%7C%24F%7C3I%7CC%7CD%7CH%7CGJ%7CI%7CGK%7CJ%7CGL%5D%7C%24F%7C3J%7CC%7CD%7CH%7CGM%7CI%7CGN%7CJ%7CGO%5D%7C%24F%7C3K%7CC%7CD%7CH%7CGP%7CI%7CGQ%7CJ%7CGR%5D%7C%24F%7C3L%7CC%7CD%7CH%7CGS%7CI%7CGT%7CJ%7CGU%5D%7C%24F%7C3M%7CC%7CD%7CH%7CGV%7CI%7CGW%7CJ%7CGX%5D%7C%24F%7C3N%7CC%7CD%7CH%7CGY%7CI%7CGZ%7CJ%7CH0%5D%7C%24F%7C3O%7CC%7CD%7CH%7CH1%7CI%7CH2%7CJ%7CH3%5D%7C%24F%7C3P%7CC%7CD%7CH%7CH4%7CI%7CH5%7CJ%7CH6%5D%7C%24F%7C3Q%7CC%7CD%7CH%7CH7%7CI%7CH8%7CJ%7CH9%5D%7C%24F%7C3R%7CC%7CD%7CH%7CHA%7CI%7CHB%7CJ%7CHC%5D%7C%24F%7C3S%7CC%7CD%7CH%7CHD%7CI%7CHE%7CJ%7CHF%5D%7C%24F%7C3T%7CC%7CD%7CH%7CHG%7CI%7CHH%7CJ%7CHI%5D%7C%24F%7C3U%7CC%7CD%7CH%7CHJ%7CI%7CHK%7CJ%7CHL%5D%7C%24F%7C3V%7CC%7CD%7CH%7CHM%7CI%7CHN%7CJ%7CHO%5D%7C%24F%7C3W%7CC%7CD%7CH%7CHP%7CI%7CHQ%7CJ%7CHR%5D%7C%24F%7C3X%7CC%7CD%7CH%7CHS%7CI%7CHT%7CJ%7CHU%5D%7C%24F%7C3Y%7CC%7CD%7CH%7CHV%7CI%7CHW%7CJ%7CHX%5D%7C%24F%7C3Z%7CC%7CD%7CH%7CHY%7CI%7CHZ%7CJ%7CI0%5D%7C%24F%7C40%7CC%7CD%7CH%7CI1%7CI%7CI2%7CJ%7CI3%5D%7C%24F%7C41%7CC%7CD%7CH%7CI4%7CI%7CI5%7CJ%7CI6%5D%7C%24F%7C42%7CC%7CD%7CH%7CI7%7CI%7CI8%7CJ%7CI9%5D%7C%24F%7C43%7CC%7CD%7CH%7CIA%7CI%7CIB%7CJ%7CIC%5D%7C%24F%7C44%7CC%7CD%7CH%7CID%7CI%7CIE%7CJ%7CIF%5D%7C%24F%7C45%7CC%7CD%7CH%7CIG%7CI%7CIH%7CJ%7CII%5D%7C%24F%7C46%7CC%7CD%7CH%7CIJ%7CI%7CIK%7CJ%7CIL%5D%7C%24F%7C47%7CC%7CD%7CH%7CIM%7CI%7CIN%7CJ%7CIO%5D%7C%24F%7C48%7CC%7CD%7CH%7CIP%7CI%7CIQ%7CJ%7CIR%5D%7C%24F%7C49%7CC%7CD%7CH%7CIS%7CI%7CIT%7CJ%7CIU%5D%7C%24F%7C4A%7CC%7CD%7CH%7CIV%7CI%7CIW%7CJ%7CIX%5D%7C%24F%7C4B%7CC%7CD%7CH%7CIY%7CI%7CIZ%7CJ%7CJ0%5D%7C%24F%7C4C%7CC%7CD%7CH%7CJ1%7CI%7CJ2%7CJ%7CJ3%5D%7C%24F%7C4D%7CC%7CD%7CH%7CJ4%7CI%7CJ5%7CJ%7CJ6%5D%7C%24F%7C4E%7CC%7CD%7CH%7CJ7%7CI%7CJ8%7CJ%7CJ9%5D%7C%24F%7C4F%7CC%7CD%7CH%7CJA%7CI%7CJB%7CJ%7CJC%5D%7C%24F%7C4G%7CC%7CD%7CH%7CJD%7CI%7CJE%7CJ%7CJF%5D%7C%24F%7C4H%7CC%7CD%7CH%7CJG%7CI%7CJH%7CJ%7CJI%5D%7C%24F%7C4I%7CC%7CD%7CH%7CJJ%7CI%7CJK%7CJ%7CJL%5D%7C%24F%7C4J%7CC%7CD%7CH%7CJM%7CI%7CJN%7CJ%7CJO%5D%7C%24F%7C4K%7CC%7CD%7CH%7CJP%7CI%7CJQ%7CJ%7CJR%5D%7C%24F%7C4L%7CC%7CD%7CH%7CJS%7CI%7CJT%7CJ%7CJU%5D%7C%24F%7C4M%7CC%7CD%7CH%7CJV%7CI%7CJW%7CJ%7CJX%5D%7C%24F%7C4N%7CC%7CD%7CH%7CJY%7CI%7CJZ%7CJ%7CK0%5D%7C%24F%7C4O%7CC%7CD%7CH%7CK1%7CI%7CK2%7CJ%7CK3%5D%7C%24F%7C4P%7CC%7CD%7CH%7CK4%7CI%7CK5%7CJ%7CK6%5D%7C%24F%7C4Q%7CC%7CD%7CH%7CK7%7CI%7CK8%7CJ%7CK9%5D%7C%24F%7C4R%7CC%7CD%7CH%7CKA%7CI%7CKB%7CJ%7CKC%5D%7C%24F%7C4S%7CC%7CD%7CH%7CKD%7CI%7CKE%7CJ%7CKF%5D%7C%24F%7C4T%7CC%7CD%7CH%7CKG%7CI%7CKH%7CJ%7CKI%5D%7C%24F%7C4U%7CC%7CD%7CH%7CKJ%7CI%7CKK%7CJ%7CKL%5D%7C%24F%7C4V%7CC%7CD%7CH%7CKM%7CI%7CKN%7CJ%7CKO%5D%7C%24F%7C4W%7CC%7CD%7CH%7CKP%7CI%7CKQ%7CJ%7CKR%5D%7C%24F%7C4X%7CC%7CD%7CH%7CKS%7CI%7CKT%7CJ%7CKU%5D%7C%24F%7C4Y%7CC%7CD%7CH%7CKV%7CI%7CKW%7CJ%7CKX%5D%7C%24F%7C4Z%7CC%7CD%7CH%7CKY%7CI%7CKZ%7CJ%7CL0%5D%7C%24F%7C50%7CC%7CD%7CH%7CL1%7CI%7CL2%7CJ%7CL3%5D%7C%24F%7C51%7CC%7CD%7CH%7CL4%7CI%7CL5%7CJ%7CL6%5D%7C%24F%7C52%7CC%7CD%7CH%7CL7%7CI%7CL8%7CJ%7CL9%5D%7C%24F%7C53%7CC%7CD%7CH%7CLA%7CI%7CLB%7CJ%7CLC%5D%7C%24F%7C54%7CC%7CD%7CH%7CLD%7CI%7CLE%7CJ%7CLF%5D%7C%24F%7C55%7CC%7CD%7CH%7CLG%7CI%7CLH%7CJ%7CLI%5D%7C%24F%7C56%7CC%7CD%7CH%7CLJ%7CI%7CLK%7CJ%7CLL%5D%7C%24F%7C57%7CC%7CD%7CH%7CLM%7CI%7CLN%7CJ%7CLO%5D%7C%24F%7C58%7CC%7CD%7CH%7CLP%7CI%7CLQ%7CJ%7CLR%5D%7C%24F%7C59%7CC%7CD%7CH%7CLS%7CI%7CLT%7CJ%7CLU%5D%7C%24F%7C5A%7CC%7CD%7CH%7CLV%7CI%7CLW%7CJ%7CLX%5D%7C%24F%7C5B%7CC%7CD%7CH%7CLY%7CI%7CLZ%7CJ%7CM0%5D%7C%24F%7C5C%7CC%7CD%7CH%7CM1%7CI%7CM2%7CJ%7CM3%5D%7C%24F%7C5D%7CC%7CD%7CH%7CM4%7CI%7CM5%7CJ%7CM6%5D%7C%24F%7C5E%7CC%7CD%7CH%7CM7%7CI%7CM8%7CJ%7CM9%5D%7C%24F%7C5F%7CC%7CD%7CH%7CMA%7CI%7CMB%7CJ%7CMC%5D%7C%24F%7C5G%7CC%7CD%7CH%7CMD%7CI%7CME%7CJ%7CMF%5D%7C%24F%7C5H%7CC%7CD%7CH%7CMG%7CI%7CMH%7CJ%7CMI%5D%7C%24F%7C5I%7CC%7CD%7CH%7CMJ%7CI%7CMK%7CJ%7CML%5D%7C%24F%7C5J%7CC%7CD%7CH%7CMM%7CI%7CMN%7CJ%7CMO%5D%7C%24F%7C5K%7CC%7CD%7CH%7CMP%7CI%7CMQ%7CJ%7CMR%5D%7C%24F%7C5L%7CC%7CD%7CH%7CMS%7CI%7CMT%7CJ%7CMU%5D%7C%24F%7C5M%7CC%7CD%7CH%7CMV%7CI%7CMW%7CJ%7CMX%5D%7C%24F%7C5N%7CC%7CD%7CH%7CMY%7CI%7CMZ%7CJ%7CN0%5D%7C%24F%7C5O%7CC%7CD%7CH%7CN1%7CI%7CN2%7CJ%7CN3%5D%7C%24F%7C5P%7CC%7CD%7CH%7CN4%7CI%7CN5%7CJ%7CN6%5D%7C%24F%7C5Q%7CC%7CD%7CH%7CN7%7CI%7CN8%7CJ%7CN9%5D%7C%24F%7C5R%7CC%7CD%7CH%7CNA%7CI%7CNB%7CJ%7CNC%5D%7C%24F%7C5S%7CC%7CD%7CH%7CND%7CI%7CNE%7CJ%7CNF%5D%7C%24F%7C5T%7CC%7CD%7CH%7CNG%7CI%7CNH%7CJ%7CNI%5D%7C%24F%7C5U%7CC%7CD%7CH%7CNJ%7CI%7CNK%7CJ%7CNL%5D%7C%24F%7C5V%7CC%7CD%7CH%7CNM%7CI%7CNN%7CJ%7CNO%5D%7C%24F%7C5W%7CC%7CD%7CH%7CNP%7CI%7CNQ%7CJ%7CNR%5D%7C%24F%7C5X%7CC%7CD%7CH%7CNS%7CI%7CNT%7CJ%7CNU%5D%7C%24F%7C5Y%7CC%7CD%7CH%7CNV%7CI%7CNW%7CJ%7CNX%5D%7C%24F%7C5Z%7CC%7CD%7CH%7CNY%7CI%7CNZ%7CJ%7CO0%5D%7C%24F%7C60%7CC%7CD%7CH%7CO1%7CI%7CO2%7CJ%7CO3%5D%7C%24F%7C61%7CC%7CD%7CH%7CO4%7CI%7CO5%7CJ%7CO6%5D%7C%24F%7C62%7CC%7CD%7CH%7CO7%7CI%7CO8%7CJ%7CO9%5D%7C%24F%7C63%7CC%7CD%7CH%7COA%7CI%7COB%7CJ%7COC%5D%7C%24F%7C64%7CC%7CD%7CH%7COD%7CI%7COE%7CJ%7COF%5D%7C%24F%7C65%7CC%7CD%7CH%7COG%7CI%7COH%7CJ%7COI%5D%7C%24F%7C66%7CC%7CD%7CH%7COJ%7CI%7COK%7CJ%7COL%5D%7C%24F%7C67%7CC%7CD%7CH%7COM%7CI%7CON%7CJ%7COO%5D%7C%24F%7C68%7CC%7CD%7CH%7COP%7CI%7COQ%7CJ%7COR%5D%7C%24F%7C69%7CC%7CD%7CH%7COS%7CI%7COT%7CJ%7COU%5D%7C%24F%7C6A%7CC%7CD%7CH%7COV%7CI%7COW%7CJ%7COX%5D%7C%24F%7C6B%7CC%7CD%7CH%7COY%7CI%7COZ%7CJ%7CP0%5D%7C%24F%7C6C%7CC%7CD%7CH%7CP1%7CI%7CP2%7CJ%7CP3%5D%7C%24F%7C6D%7CC%7CD%7CH%7CP4%7CI%7CP5%7CJ%7CP6%5D%7C%24F%7C6E%7CC%7CD%7CH%7CP7%7CI%7CP8%7CJ%7CP9%5D%7C%24F%7C6F%7CC%7CD%7CH%7CPA%7CI%7CPB%7CJ%7CPC%5D%7C%24F%7C6G%7CC%7CD%7CH%7CPD%7CI%7CPE%7CJ%7CPF%5D%7C%24F%7C6H%7CC%7CD%7CH%7CPG%7CI%7CPH%7CJ%7CPI%5D%7C%24F%7C6I%7CC%7CD%7CH%7CPJ%7CI%7CPK%7CJ%7CPL%5D%7C%24F%7C6J%7CC%7CD%7CH%7CPM%7CI%7CPN%7CJ%7CPO%5D%7C%24F%7C6K%7CC%7CD%7CH%7CPP%7CI%7CPQ%7CJ%7CPR%5D%7C%24F%7C6L%7CC%7CD%7CH%7CPS%7CI%7CPT%7CJ%7CPU%5D%7C%24F%7C6M%7CC%7CD%7CH%7CPV%7CI%7CPW%7CJ%7CPX%5D%7C%24F%7C6N%7CC%7CD%7CH%7CPY%7CI%7CPZ%7CJ%7CQ0%5D%7C%24F%7C6O%7CC%7CD%7CH%7CQ1%7CI%7CQ2%7CJ%7CQ3%5D%7C%24F%7C6P%7CC%7CD%7CH%7CQ4%7CI%7CQ5%7CJ%7CQ6%5D%7C%24F%7C6Q%7CC%7CD%7CH%7CQ7%7CI%7CQ8%7CJ%7CQ9%5D%7C%24F%7C6R%7CC%7CD%7CH%7CQA%7CI%7CQB%7CJ%7CQC%5D%7C%24F%7C6S%7CC%7CD%7CH%7CQD%7CI%7CQE%7CJ%7CQF%5D%7C%24F%7C6T%7CC%7CD%7CH%7CQG%7CI%7CQH%7CJ%7CQI%5D%7C%24F%7C6U%7CC%7CD%7CH%7CQJ%7CI%7CQK%7CJ%7CQL%5D%7C%24F%7C6V%7CC%7CD%7CH%7CQM%7CI%7CQN%7CJ%7CQO%5D%7C%24F%7C6W%7CC%7CD%7CH%7CQP%7CI%7CQQ%7CJ%7CQR%5D%7C%24F%7C6X%7CC%7CD%7CH%7CQS%7CI%7CQT%7CJ%7CQU%5D%7C%24F%7C6Y%7CC%7CD%7CH%7CQV%7CI%7CQW%7CJ%7CQX%5D%7C%24F%7C6Z%7CC%7CD%7CH%7CQY%7CI%7CQZ%7CJ%7CR0%5D%7C%24F%7C70%7CC%7CD%7CH%7CR1%7CI%7CR2%7CJ%7CR3%5D%7C%24F%7C71%7CC%7CD%7CH%7CR4%7CI%7CR5%7CJ%7CR6%5D%7C%24F%7C72%7CC%7CD%7CH%7CR7%7CI%7CR8%7CJ%7CR9%5D%7C%24F%7C73%7CC%7CD%7CH%7CRA%7CI%7CRB%7CJ%7CRC%5D%7C%24F%7C74%7CC%7CD%7CH%7CRD%7CI%7CRE%7CJ%7CRF%5D%7C%24F%7C75%7CC%7CD%7CH%7CRG%7CI%7CRH%7CJ%7CRI%5D%7C%24F%7C76%7CC%7CD%7CH%7CRJ%7CI%7CRK%7CJ%7CRL%5D%7C%24F%7C77%7CC%7CD%7CH%7CRM%7CI%7CRN%7CJ%7CRO%5D%7C%24F%7C78%7CC%7CD%7CH%7CRP%7CI%7CRQ%7CJ%7CRR%5D%7C%24F%7C79%7CC%7CD%7CH%7CRS%7CI%7CRT%7CJ%7CRU%5D%7C%24F%7C7A%7CC%7CD%7CH%7CRV%7CI%7CRW%7CJ%7CRX%5D%7C%24F%7C7B%7CC%7CD%7CH%7CRY%7CI%7CRZ%7CJ%7CS0%5D%7C%24F%7C7C%7CC%7CD%7CH%7CS1%7CI%7CS2%7CJ%7CS3%5D%7C%24F%7C7D%7CC%7CD%7CH%7CS4%7CI%7CS5%7CJ%7CS6%5D%7C%24F%7C7E%7CC%7CD%7CH%7CS7%7CI%7CS8%7CJ%7CS9%5D%7C%24F%7C7F%7CC%7CD%7CH%7CSA%7CI%7CSB%7CJ%7CSC%5D%7C%24F%7C7G%7CC%7CD%7CH%7CSD%7CI%7CSE%7CJ%7CSF%5D%7C%24F%7C7H%7CC%7CD%7CH%7CSG%7CI%7CSH%7CJ%7CSI%5D%7C%24F%7C7I%7CC%7CD%7CH%7CSJ%7CI%7CSK%7CJ%7CSL%5D%7C%24F%7C7J%7CC%7CD%7CH%7CSM%7CI%7CSN%7CJ%7CSO%5D%5D%7C7K%7C7L%5D%5D

Which triggers a 494 Request header too large error

e.g. using the async build of react-syntax-highlighter, every language is its own bundle loaded async when it's needed

If the current behavior is a bug, please provide the steps to reproduce.

Click the link above ^
Or try to build a project with

import { PrismAsyncLight as Prism } from 'react-syntax-highlighter';

What is the expected behavior?

Something that looks like this would be fantastic

If this is a feature request, what is motivation or use case for changing the behavior?

Putting the data directly into the repo's check page would entirely bypass the URL limit problem

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

Custom context for reporting on github

Do you want to request a feature or report a bug?
Feature: Allow passing a flag on the cli or config to use a custom name for the context which will help in most monorepo cases.

What is the current behavior?
Uses the context name bundlewatch

If the current behavior is a bug, please provide the steps to reproduce.
Not a bug

What is the expected behavior?

bundlewatch --custom-context "bundlewatch-app-frontend"

should use the name bundlewatch-app-frontend

If this is a feature request, what is motivation or use case for changing the behavior?
This feature will allow reporting multiple times for a commit without overwriting the previous commits.

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.
NA

Support for GitHub Enterprise

Do you want to request a feature or report a bug? Feature

What is the current behavior? Posts only to github.com

If the current behavior is a bug, please provide the steps to reproduce.

What is the expected behavior?

If this is a feature request, what is motivation or use case for changing the behavior? Be able to post bundle results to a github enterprise app

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

The branch name is detected incorrectly for GitHub Actions

Do you want to request a feature or report a bug?

Bug

What is the current behavior?

The branch name for GitHub Actions is detected as refs/heads/branch_name instead of branch_name, e.g. refs/heads/master instead of master.

What is the expected behavior?

The branch name for GitHub Actions is detected correctly.

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

This is the issue from my PR #64

Relates SO question: https://stackoverflow.com/q/58033366/1331425

Monorepo Support

Do you want to request a feature or report a bug?

Feature

What is the current behavior?

If you have multiple packages in one repo you can either have all of them reported as one (packages/*/dist/*.js), or only one reported (packages/pkg-one/dist/*.js).

Running the script multiple times overrides the last report each time.

What is the expected behavior?

CLI

My proposal is to add a new argument to the CLI: --name or --package. Using this would tag the report as being for a specific package, separating it from the others.

This would allow for running the script multiple times for reporting multiple packages.

Server

This can be stored in various ways, but the simplest one would be to simply add a package field to the report, and when returning the results from an endpoint simply return all the commitSha+package combos.

e.g.

{
  // [commit/repo info]
  packages: {
    "pkg-one": {
      // [file report data]
    },
    // ...
  }
}

If this is a feature request, what is motivation or use case for changing the behavior?

It's impossible to use this service in a monorepo. It would allow projects that use it (popular ones include Vue, babel) to do so.

Bug: https://service.bundlewatch.io/store code=Request failed with status code 500

What is the current behavior?

[INFO] Retrieving comparison
[ERROR] Unable to fetch fileDetails for baseBranch=master from https://service.bundlewatch.io/store code=Request failed with status code 500

If the current behavior is a bug, please provide the steps to reproduce.

I'm using both github action and just pure package.json entry, such as
"bundlewatch": "cross-env CI_REPO_OWNER=*** CI_COMMIT_SHA=*** CI_REPO_NAME=*** CI_BRANCH=master BUNDLEWATCH_GITHUB_TOKEN=*** bundlewatch",

What is the expected behavior?

Not 500 :)

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

Windows/docker ubuntu
bundlewatch version "0.2.6"

But! I'm able to see results breakdown, including going to correct url :)

feature request

Request a feature that generates array text applications to the current File field in the result to avoid manually adjust the maxSize value.

   files: [{
       path: './myfolder/*.js',
       maxSize: '100kb',
       compression: 'none',
   }],

Test issue for advanced status reporting

Do you want to request a feature or report a bug?

What is the current behavior?

If the current behavior is a bug, please provide the steps to reproduce.

What is the expected behavior?

If this is a feature request, what is motivation or use case for changing the behavior?

Please mention other relevant information such as the browser version, Node.js version, bundlewatch version, and Operating System.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.