├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitattributes
├── .github
├── CODEOWNERS
├── CONTRIBUTING.md
├── FUNDING.yml
├── ISSUE_TEMPLATE.md
├── ISSUE_TEMPLATE
│ ├── BUG.md
│ ├── DOCS.md
│ ├── FEATURE.md
│ ├── MODIFICATION.md
│ └── SUPPORT.md
├── PULL_REQUEST_TEMPLATE.md
└── workflows
│ └── nodejs.yml
├── .gitignore
├── .prettierignore
├── .prettierrc.js
├── CHANGELOG.md
├── LICENSE
├── README.md
├── babel.config.js
├── commitlint.config.js
├── husky.config.js
├── lint-staged.config.js
├── package-lock.json
├── package.json
├── src
├── cjs.js
├── index.js
├── options.json
└── utils
│ └── normalizeFallback.js
└── test
├── __snapshots__
├── encoding-option.test.js.snap
├── esModule-options.test.js.snap
├── fallback-option.test.js.snap
├── generator-option.test.js.snap
├── limit-option.test.js.snap
├── loader.test.js.snap
├── mimetype-option.test.js.snap
└── validate-options.test.js.snap
├── cjs.test.js
├── encoding-option.test.js
├── esModule-options.test.js
├── fallback-option.test.js
├── fixtures
├── concated.js
├── file.gif
├── file.html
├── file.jpg
├── file.png
├── file.svg
├── file.unknown
├── simple-html.js
├── simple-svg.js
├── simple-unknown.js
├── simple.js
├── string-raw-loader
│ └── index.js
└── x-custom-loader
│ └── index.js
├── generator-option.test.js
├── helpers
├── compile.js
├── execute.js
├── getCompiler.js
├── index.js
├── normalizeErrors.js
└── readAsset.js
├── limit-option.test.js
├── loader.test.js
├── mimetype-option.test.js
├── utils
├── __snapshots__
│ └── normalizeFallback.test.js.snap
└── normalizeFallback.test.js
└── validate-options.test.js
/.editorconfig:
--------------------------------------------------------------------------------
1 | # editorconfig.org
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
11 | [*.md]
12 | trim_trailing_whitespace = false
13 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | /coverage
2 | /dist
3 | /node_modules
4 | /test/fixtures
5 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | extends: ['@webpack-contrib/eslint-config-webpack', 'prettier'],
4 | };
5 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | package-lock.json -diff
2 | * text=auto
3 | bin/* eol=lf
4 | yarn.lock -diff
5 |
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | # These are the default owners for everything in
2 | # webpack-contrib
3 | @webpack-contrib/org-maintainers
4 |
5 | # Add repository specific users / groups
6 | # below here for libs that are not maintained by the org.
7 |
--------------------------------------------------------------------------------
/.github/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing in @webpack-contrib
2 |
3 | We'd always love contributions to further improve the webpack / webpack-contrib ecosystem!
4 | Here are the guidelines we'd like you to follow:
5 |
6 | - [Questions and Problems](#question)
7 | - [Issues and Bugs](#issue)
8 | - [Feature Requests](#feature)
9 | - [Pull Request Submission Guidelines](#submit-pr)
10 | - [Commit Message Conventions](#commit)
11 |
12 | ## Got a Question or Problem?
13 |
14 | Please submit support requests and questions to StackOverflow using the tag [[webpack]](http://stackoverflow.com/tags/webpack).
15 | StackOverflow is better suited for this kind of support though you may also inquire in [Webpack Gitter](https://gitter.im/webpack/webpack).
16 | The issue tracker is for bug reports and feature discussions.
17 |
18 | ## Found an Issue or Bug?
19 |
20 | Before you submit an issue, please search the issue tracker, maybe an issue for your problem already exists and the discussion might inform you of workarounds readily available.
21 |
22 | We want to fix all the issues as soon as possible, but before fixing a bug we need to reproduce and confirm it. In order to reproduce bugs, we ask that you to provide a minimal reproduction scenario (github repo or failing test case). Having a live, reproducible scenario gives us a wealth of important information without going back & forth to you with additional questions like:
23 |
24 | - version of Webpack used
25 | - version of the loader / plugin you are creating a bug report for
26 | - the use-case that fails
27 |
28 | A minimal reproduce scenario allows us to quickly confirm a bug (or point out config problems) as well as confirm that we are fixing the right problem.
29 |
30 | We will be insisting on a minimal reproduce scenario in order to save maintainers time and ultimately be able to fix more bugs. We understand that sometimes it might be hard to extract essentials bits of code from a larger code-base but we really need to isolate the problem before we can fix it.
31 |
32 | Unfortunately, we are not able to investigate / fix bugs without a minimal reproduction, so if we don't hear back from you we are going to close an issue that doesn't have enough info to be reproduced.
33 |
34 | ## Feature Requests?
35 |
36 | You can _request_ a new feature by creating an issue on Github.
37 |
38 | If you would like to _implement_ a new feature, please submit an issue with a proposal for your work `first`, to be sure that particular makes sense for the project.
39 |
40 | ## Pull Request Submission Guidelines
41 |
42 | Before you submit your Pull Request (PR) consider the following guidelines:
43 |
44 | - Search Github for an open or closed PR that relates to your submission. You don't want to duplicate effort.
45 | - Commit your changes using a descriptive commit message that follows our [commit message conventions](#commit). Adherence to these conventions is necessary because release notes are automatically generated from these messages.
46 | - Fill out our `Pull Request Template`. Your pull request will not be considered if it is ignored.
47 | - Please sign the `Contributor License Agreement (CLA)` when a pull request is opened. We cannot accept your pull request without this. Make sure you sign with the primary email address associated with your local / github account.
48 |
49 | ## Webpack Contrib Commit Conventions
50 |
51 | Each commit message consists of a **header**, a **body** and a **footer**. The header has a special
52 | format that includes a **type**, a **scope** and a **subject**:
53 |
54 | ```
55 | ():
56 |
57 |
58 |
59 |
60 | ```
61 |
62 | The **header** is mandatory and the **scope** of the header is optional.
63 |
64 | Any line of the commit message cannot be longer 100 characters! This allows the message to be easier
65 | to read on GitHub as well as in various git tools.
66 |
67 | The footer should contain a [closing reference to an issue](https://help.github.com/articles/closing-issues-via-commit-messages/) if any.
68 |
69 | Examples:
70 |
71 | ```
72 | docs(readme): update install instructions
73 | ```
74 |
75 | ```
76 | fix: refer to the `entrypoint` instead of the first `module`
77 | ```
78 |
79 | ### Revert
80 |
81 | If the commit reverts a previous commit, it should begin with `revert:`, followed by the header of the reverted commit.
82 | In the body it should say: `This reverts commit .`, where the hash is the SHA of the commit being reverted.
83 |
84 | ### Type
85 |
86 | Must be one of the following:
87 |
88 | - **build**: Changes that affect the build system or external dependencies (example scopes: babel, npm)
89 | - **chore**: Changes that fall outside of build / docs that do not effect source code (example scopes: package, defaults)
90 | - **ci**: Changes to our CI configuration files and scripts (example scopes: circleci, travis)
91 | - **docs**: Documentation only changes (example scopes: readme, changelog)
92 | - **feat**: A new feature
93 | - **fix**: A bug fix
94 | - **perf**: A code change that improves performance
95 | - **refactor**: A code change that neither fixes a bug nor adds a feature
96 | - **revert**: Used when reverting a committed change
97 | - **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons)
98 | - **test**: Addition of or updates to Jest tests
99 |
100 | ### Scope
101 |
102 | The scope is subjective & depends on the `type` see above. A good example would be a change to a particular class / module.
103 |
104 | ### Subject
105 |
106 | The subject contains a succinct description of the change:
107 |
108 | - use the imperative, present tense: "change" not "changed" nor "changes"
109 | - don't capitalize the first letter
110 | - no dot (.) at the end
111 |
112 | ### Body
113 |
114 | Just as in the **subject**, use the imperative, present tense: "change" not "changed" nor "changes".
115 | The body should include the motivation for the change and contrast this with previous behavior.
116 |
117 | ### Footer
118 |
119 | The footer should contain any information about **Breaking Changes** and is also the place to
120 | reference GitHub issues that this commit **Closes**.
121 |
122 | **Breaking Changes** should start with the word `BREAKING CHANGE:` with a space or two newlines. The rest of the commit message is then used for this.
123 |
124 | Example
125 |
126 | ```
127 | BREAKING CHANGE: Updates to `Chunk.mapModules`.
128 |
129 | This release is not backwards compatible with `Webpack 2.x` due to breaking changes in webpack/webpack#4764
130 | Migration: see webpack/webpack#5225
131 |
132 | ```
133 |
134 | ## Testing Your Pull Request
135 |
136 | You may have the need to test your changes in a real-world project or dependent
137 | module. Thankfully, Github provides a means to do this. Add a dependency to the
138 | `package.json` for such a project as follows:
139 |
140 | ```json
141 | {
142 | "devDependencies": {
143 | "url-loader": "webpack-contrib/url-loader#{id}/head"
144 | }
145 | }
146 | ```
147 |
148 | Where `{id}` is the # ID of your Pull Request.
149 |
150 | ## Contributor License Agreement
151 |
152 | When submitting your contribution, a CLA (Contributor License Agreement) bot will come by to verify that you signed the [CLA](https://cla.js.foundation/webpack-contrib/url-loader).
153 | If it is your first time, it will link you to the right place to sign it.
154 | However, if you have committed your contributions using an email that is not the same as your email used on GitHub, the CLA bot can't accept your contribution.
155 |
156 | Run `git config user.email` to see your Git email, and verify it with [your GitHub email](https://github.com/settings/emails).
157 |
158 | ## Thanks
159 |
160 | For your interest, time, understanding, and for following this simple guide.
161 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | open_collective: webpack
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
17 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/BUG.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: 🐛 Bug Report
3 | about: Something went awry and you'd like to tell us about it.
4 | ---
5 |
6 |
16 |
17 | - Operating System:
18 | - Node Version:
19 | - NPM Version:
20 | - webpack Version:
21 | - url-loader Version:
22 |
23 | ### Expected Behavior
24 |
25 |
26 |
27 | ### Actual Behavior
28 |
29 |
30 |
31 | ### Code
32 |
33 | ```js
34 | // webpack.config.js
35 | // If your code blocks are over 20 lines, please paste a link to a gist
36 | // (https://gist.github.com).
37 | ```
38 |
39 | ```js
40 | // additional code, HEY YO remove this block if you don't need it
41 | ```
42 |
43 | ### How Do We Reproduce?
44 |
45 |
51 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/DOCS.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: 📚 Documentation
3 | about: Are the docs lacking or missing something? Do they need some new 🔥 hotness? Tell us here.
4 | ---
5 |
6 |
16 |
17 | Documentation Is:
18 |
19 |
20 |
21 | - [ ] Missing
22 | - [ ] Needed
23 | - [ ] Confusing
24 | - [ ] Not Sure?
25 |
26 | ### Please Explain in Detail...
27 |
28 | ### Your Proposal for Changes
29 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/FEATURE.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: ✨ Feature Request
3 | about: Suggest an idea for this project
4 | ---
5 |
6 |
16 |
17 | - Operating System:
18 | - Node Version:
19 | - NPM Version:
20 | - webpack Version:
21 | - url-loader Version:
22 |
23 | ### Feature Proposal
24 |
25 | ### Feature Use Case
26 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/MODIFICATION.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: 🔧 Modification Request
3 | about: Would you like something work differently? Have an alternative approach? This is the template for you.
4 | ---
5 |
6 |
16 |
17 | - Operating System:
18 | - Node Version:
19 | - NPM Version:
20 | - webpack Version:
21 | - url-loader Version:
22 |
23 | ### Expected Behavior / Situation
24 |
25 | ### Actual Behavior / Situation
26 |
27 | ### Modification Proposal
28 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/SUPPORT.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: 🆘 Support, Help, and Advice
3 | about: 👉🏽 Need support, help, or advice? Don't open an issue! Head to StackOverflow or https://gitter.im/webpack/webpack.
4 | ---
5 |
6 | Hey there! If you need support, help, or advice then this is not the place to ask.
7 | Please visit [StackOverflow](https://stackoverflow.com/questions/tagged/webpack)
8 | or [the Webpack Gitter](https://gitter.im/webpack/webpack) instead.
9 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
10 |
11 | This PR contains a:
12 |
13 | - [ ] **bugfix**
14 | - [ ] new **feature**
15 | - [ ] **code refactor**
16 | - [ ] **test update**
17 | - [ ] **typo fix**
18 | - [ ] **metadata update**
19 |
20 | ### Motivation / Use-Case
21 |
22 |
27 |
28 | ### Breaking Changes
29 |
30 |
34 |
35 | ### Additional Info
36 |
--------------------------------------------------------------------------------
/.github/workflows/nodejs.yml:
--------------------------------------------------------------------------------
1 | name: url-loader
2 |
3 | on:
4 | push:
5 | branches:
6 | - master
7 | - next
8 | pull_request:
9 | branches:
10 | - master
11 | - next
12 |
13 | jobs:
14 | lint:
15 | name: Lint - ${{ matrix.os }} - Node v${{ matrix.node-version }}
16 |
17 | env:
18 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
19 |
20 | strategy:
21 | matrix:
22 | os: [ubuntu-latest]
23 | node-version: [12.x]
24 |
25 | runs-on: ${{ matrix.os }}
26 |
27 | steps:
28 | - uses: actions/checkout@v2
29 | with:
30 | fetch-depth: 0
31 |
32 | - name: Use Node.js ${{ env.node-version }}
33 | uses: actions/setup-node@v1
34 | with:
35 | node-version: ${{ env.node-version }}
36 |
37 | - name: Use latest NPM
38 | run: sudo npm i -g npm
39 |
40 | - name: Install dependencies
41 | run: npm ci
42 |
43 | - name: Lint
44 | run: npm run lint
45 |
46 | - name: Security audit
47 | run: npm run security
48 |
49 | - name: Check commit message
50 | uses: wagoid/commitlint-github-action@v1
51 |
52 | test:
53 | name: Test - ${{ matrix.os }} - Node v${{ matrix.node-version }}, Webpack ${{ matrix.webpack-version }}
54 |
55 | strategy:
56 | matrix:
57 | os: [ubuntu-latest, windows-latest, macos-latest]
58 | node-version: [10.x, 12.x, 14.x]
59 | webpack-version: [4, latest]
60 |
61 | runs-on: ${{ matrix.os }}
62 |
63 | steps:
64 | - name: Setup Git
65 | if: matrix.os == 'windows-latest'
66 | run: git config --global core.autocrlf input
67 |
68 | - uses: actions/checkout@v2
69 |
70 | - name: Use Node.js ${{ matrix.node-version }}
71 | uses: actions/setup-node@v1
72 | with:
73 | node-version: ${{ matrix.node-version }}
74 |
75 | - name: Use latest NPM on ubuntu/macos
76 | if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest'
77 | run: sudo npm i -g npm
78 |
79 | - name: Use latest NPM on windows
80 | if: matrix.os == 'windows-latest'
81 | run: npm i -g npm
82 |
83 | - name: Install dependencies
84 | run: npm ci
85 |
86 | - name: Install webpack ${{ matrix.webpack-version }}
87 | run: npm i webpack@${{ matrix.webpack-version }}
88 |
89 | - name: Run tests for webpack version ${{ matrix.webpack-version }}
90 | run: npm run test:coverage -- --ci
91 |
92 | - name: Submit coverage data to codecov
93 | uses: codecov/codecov-action@v1
94 | with:
95 | token: ${{ secrets.CODECOV_TOKEN }}
96 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | logs
3 | *.log
4 | npm-debug.log*
5 | .eslintcache
6 | /coverage
7 | /dist
8 | /local
9 | /reports
10 | /node_modules
11 | .DS_Store
12 | Thumbs.db
13 | .idea
14 | .vscode
15 | *.sublime-project
16 | *.sublime-workspace
17 | *.iml
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | /coverage
2 | /dist
3 | /node_modules
4 | /test/fixtures
5 | CHANGELOG.md
6 |
--------------------------------------------------------------------------------
/.prettierrc.js:
--------------------------------------------------------------------------------
1 | module.exports = { singleQuote: true };
2 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4 |
5 | ### [4.1.1](https://github.com/webpack-contrib/url-loader/compare/v4.1.0...v4.1.1) (2020-10-09)
6 |
7 | ### Chore
8 |
9 | * update `schema-utils`
10 |
11 | ## [4.1.0](https://github.com/webpack-contrib/url-loader/compare/v4.0.0...v4.1.0) (2020-04-08)
12 |
13 |
14 | ### Features
15 |
16 | * the `mimetype` option can be `Boolean`
17 | * added the `encoding` option
18 | * added the `generator` option
19 |
20 | ## [4.0.0](https://github.com/webpack-contrib/url-loader/compare/v3.0.0...v4.0.0) (2020-03-17)
21 |
22 |
23 | ### ⚠ BREAKING CHANGES
24 |
25 | * **deps:** migrate on `mime-types` package, some rare types may have other mimetype
26 |
27 | ### Bug Fixes
28 |
29 | * description on the `esModule` option ([#204](https://github.com/webpack-contrib/url-loader/issues/204)) ([a2f127d](https://github.com/webpack-contrib/url-loader/commit/a2f127d16b88cda3c38509821a51487a89827c28))
30 |
31 |
32 | * **deps:** migrate on `mime-types` package ([#209](https://github.com/webpack-contrib/url-loader/issues/209)) ([fc8721f](https://github.com/webpack-contrib/url-loader/commit/fc8721f49626360dd81300085a747b3afa5acd38))
33 |
34 | ## [3.0.0](https://github.com/webpack-contrib/url-loader/compare/v2.0.0...v3.0.0) (2019-11-26)
35 |
36 |
37 | ### BREAKING CHANGES
38 |
39 | * minimum required nodejs version is `10.13.0`
40 | * rename the `esModules` option to `esModule`
41 | * switch to ES modules by default (the option `esModule` is `true` by default)
42 |
43 |
44 | ## [2.3.0](https://github.com/webpack-contrib/url-loader/compare/v2.2.0...v2.3.0) (2019-11-21)
45 |
46 |
47 | ### Features
48 |
49 | * new `esModules` option to output ES modules ([0ee2b99](https://github.com/webpack-contrib/url-loader/commit/0ee2b9964f37f4d7c5dd6ea09f8526525e0fab91))
50 |
51 | ### [2.2.0](https://github.com/webpack-contrib/url-loader/compare/v2.1.0...v2.2.0) (2019-10-04)
52 |
53 |
54 | ### Features
55 |
56 | * limit allow using `Infinity` and `Number` ([#192](https://github.com/webpack-contrib/url-loader/issues/192)) ([2bffcfd](https://github.com/webpack-contrib/url-loader/commit/2bffcfd))
57 | * pnp support ([#195](https://github.com/webpack-contrib/url-loader/issues/195)) ([196110e](https://github.com/webpack-contrib/url-loader/commit/196110e))
58 |
59 | ## [2.1.0](https://github.com/webpack-contrib/url-loader/compare/v2.0.1...v2.1.0) (2019-07-18)
60 |
61 |
62 | ### Features
63 |
64 | * improved validation error messages ([#187](https://github.com/webpack-contrib/url-loader/issues/187)) ([f3d4dd2](https://github.com/webpack-contrib/url-loader/commit/f3d4dd2))
65 |
66 |
67 |
68 | ### [2.0.1](https://github.com/webpack-contrib/url-loader/compare/v2.0.0...v2.0.1) (2019-06-25)
69 |
70 |
71 | ### Bug Fixes
72 |
73 | * allow using limit as string when you use loader with query string ([#185](https://github.com/webpack-contrib/url-loader/issues/185)) ([4842f93](https://github.com/webpack-contrib/url-loader/commit/4842f93))
74 |
75 |
76 |
77 | ## [2.0.0](https://github.com/webpack-contrib/url-loader/compare/v1.1.2...v2.0.0) (2019-06-05)
78 |
79 |
80 | ### Bug Fixes
81 |
82 | * rm unnecessary `bin` field ([#163](https://github.com/webpack-contrib/url-loader/issues/163)) ([b603665](https://github.com/webpack-contrib/url-loader/commit/b603665))
83 | * `limit` should always be a number and 0 value handles as number ([#180](https://github.com/webpack-contrib/url-loader/issues/180)) ([d82e453](https://github.com/webpack-contrib/url-loader/commit/d82e453))
84 | * fallback loader will be used than limit is equal or greater ([#179](https://github.com/webpack-contrib/url-loader/issues/179)) ([3c24545](https://github.com/webpack-contrib/url-loader/commit/3c24545))
85 |
86 |
87 | ### Features
88 |
89 | * limit option can be boolean ([#181](https://github.com/webpack-contrib/url-loader/issues/181)) ([60d2cb3](https://github.com/webpack-contrib/url-loader/commit/60d2cb3))
90 |
91 |
92 | ### BREAKING CHANGES
93 |
94 | * minimum required nodejs version is `8.9.0`
95 | * `limit` should always be a number and 0 value handles as number
96 | * fallback loader will be used than limit is equal or greater (before only when greater)
97 |
98 |
99 |
100 |
101 | ## [1.1.2](https://github.com/webpack-contrib/url-loader/compare/v1.1.0...v1.1.2) (2018-10-10)
102 |
103 |
104 | ### Bug Fixes
105 |
106 | * fallback options behaviour ([#145](https://github.com/webpack-contrib/url-loader/issues/145)) ([03e631f](https://github.com/webpack-contrib/url-loader/commit/03e631f))
107 | * **package:** add support for `webpack =< v3.0.0` (`peerDependencies`) ([#150](https://github.com/webpack-contrib/url-loader/issues/150)) ([a6860fc](https://github.com/webpack-contrib/url-loader/commit/a6860fc))
108 | * **package:** relax `node` version range (`engines`) ([#155](https://github.com/webpack-contrib/url-loader/issues/155)) ([d37b108](https://github.com/webpack-contrib/url-loader/commit/d37b108))
109 | * **utils/normalizeFallback:** correctly pass all `options` to the default fallback (`file-loader`) ([#139](https://github.com/webpack-contrib/url-loader/issues/139)) ([401be63](https://github.com/webpack-contrib/url-loader/commit/401be63))
110 |
111 |
112 |
113 |
114 | ## [1.1.1](https://github.com/webpack-contrib/url-loader/compare/v1.1.0...v1.1.1) (2018-08-17)
115 |
116 |
117 | ### Bug Fixes
118 |
119 | * correctly pass all `options` to the fallback ([#143](https://github.com/webpack-contrib/url-loader/issues/143)) ([03e631f](https://github.com/webpack-contrib/url-loader/commit/03e631f))
120 |
121 |
122 |
123 | # [1.1.0](https://github.com/webpack-contrib/url-loader/compare/v1.0.1...v1.1.0) (2018-08-13)
124 |
125 |
126 | ### Features
127 |
128 | * support fallback loader in options.fallback ([#123](https://github.com/webpack-contrib/url-loader/issues/123)) ([017adc7](https://github.com/webpack-contrib/url-loader/commit/017adc7)), closes [#118](https://github.com/webpack-contrib/url-loader/issues/118)
129 |
130 |
131 |
132 |
133 | ## [1.0.1](https://github.com/webpack-contrib/url-loader/compare/v1.0.0...v1.0.1) (2018-03-03)
134 |
135 |
136 | ### Bug Fixes
137 |
138 | * **index:** revert to CJS exports (`module.exports`) ([#116](https://github.com/webpack-contrib/url-loader/issues/116)) ([7b60cc2](https://github.com/webpack-contrib/url-loader/commit/7b60cc2))
139 |
140 |
141 |
142 |
143 | # [1.0.0](https://github.com/webpack-contrib/url-loader/compare/v1.0.0-beta.0...v1.0.0) (2018-03-03)
144 |
145 |
146 | ### Bug Fixes
147 |
148 | * **index:** use `Buffer.from` instead of deprecated `new Buffer` ([#113](https://github.com/webpack-contrib/url-loader/issues/113)) ([457618b](https://github.com/webpack-contrib/url-loader/commit/457618b))
149 |
150 |
151 |
152 |
153 | # [1.0.0-beta.0](https://github.com/webpack-contrib/url-loader/compare/v0.6.2...v1.0.0-beta.0) (2017-12-17)
154 |
155 |
156 | ### Code Refactoring
157 |
158 | * apply `webpack-defaults` ([#102](https://github.com/webpack-contrib/url-loader/issues/102)) ([073b588](https://github.com/webpack-contrib/url-loader/commit/073b588))
159 |
160 |
161 | ### BREAKING CHANGES
162 |
163 | * Sets `engines` to `"node": ">= 6.9.0 || >= 8.9.0"`
164 | * Drops support for `webpack =< v2.0.0`
165 |
166 |
167 |
168 |
169 | ## [0.6.2](https://github.com/webpack-contrib/url-loader/compare/v0.6.1...v0.6.2) (2017-10-04)
170 |
171 |
172 | ### Bug Fixes
173 |
174 | * allow use `limit` as string ([#96](https://github.com/webpack-contrib/url-loader/issues/96)) ([b31684d](https://github.com/webpack-contrib/url-loader/commit/b31684d))
175 |
176 |
177 |
178 |
179 | ## [0.6.1](https://github.com/webpack-contrib/url-loader/compare/v0.6.0...v0.6.1) (2017-10-04)
180 |
181 |
182 | ### Bug Fixes
183 |
184 | * **schema:** allow `additionalProperties` ([#94](https://github.com/webpack-contrib/url-loader/issues/94)) ([2b01ea2](https://github.com/webpack-contrib/url-loader/commit/2b01ea2))
185 |
186 |
187 |
188 |
189 | # [0.6.0](https://github.com/webpack-contrib/url-loader/compare/v0.5.9...v0.6.0) (2017-10-03)
190 |
191 |
192 | ### Features
193 |
194 | * **index:** add options validation (`schema-utils`) ([#78](https://github.com/webpack-contrib/url-loader/issues/78)) ([ced5990](https://github.com/webpack-contrib/url-loader/commit/ced5990))
195 | * add `fallback` option ([#88](https://github.com/webpack-contrib/url-loader/issues/88)) ([636ebed](https://github.com/webpack-contrib/url-loader/commit/636ebed))
196 |
197 | ### Security
198 |
199 | * Updates Mime pacakge due to Regex DOS security vulnerability ([#87](https://github.com/webpack-contrib/url-loader/issues/87)) ([d19ee2d](https://github.com/webpack-contrib/url-loader/commit/d19ee2d))
200 |
201 | - Reference issue https://nodesecurity.io/advisories/535
202 |
203 |
204 |
205 | ## [0.5.9](https://github.com/webpack/url-loader/compare/v0.5.8...v0.5.9) (2017-06-12)
206 |
207 |
208 | ### Bug Fixes
209 |
210 | * `String` not being `base64` encoded ([#67](https://github.com/webpack/url-loader/issues/67)) ([e9496b9](https://github.com/webpack/url-loader/commit/e9496b9))
211 | * don't default to `0` (`options.limit`) ([#74](https://github.com/webpack/url-loader/issues/74)) ([020c2a8](https://github.com/webpack/url-loader/commit/020c2a8))
212 |
213 |
214 |
215 | # Change Log
216 |
217 | All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
218 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright JS Foundation and other contributors
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining
4 | a copy of this software and associated documentation files (the
5 | 'Software'), to deal in the Software without restriction, including
6 | without limitation the rights to use, copy, modify, merge, publish,
7 | distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to
9 | the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be
12 | included in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
6 |
7 | [![npm][npm]][npm-url]
8 | [![node][node]][node-url]
9 | [![deps][deps]][deps-url]
10 | [![tests][tests]][tests-url]
11 | [![chat][chat]][chat-url]
12 | [![size][size]][size-url]
13 |
14 | # url-loader
15 |
16 | **DEPREACTED for v5**: please consider migrating to [`asset modules`](https://webpack.js.org/guides/asset-modules/).
17 |
18 | A loader for webpack which transforms files into base64 URIs.
19 |
20 | ## Getting Started
21 |
22 | To begin, you'll need to install `url-loader`:
23 |
24 | ```console
25 | $ npm install url-loader --save-dev
26 | ```
27 |
28 | `url-loader` works like
29 | [`file-loader`](https://github.com/webpack-contrib/file-loader), but can return
30 | a DataURL if the file is smaller than a byte limit.
31 |
32 | **index.js**
33 |
34 | ```js
35 | import img from './image.png';
36 | ```
37 |
38 | **webpack.config.js**
39 |
40 | ```js
41 | module.exports = {
42 | module: {
43 | rules: [
44 | {
45 | test: /\.(png|jpg|gif)$/i,
46 | use: [
47 | {
48 | loader: 'url-loader',
49 | options: {
50 | limit: 8192,
51 | },
52 | },
53 | ],
54 | },
55 | ],
56 | },
57 | };
58 | ```
59 |
60 | And run `webpack` via your preferred method.
61 |
62 | ## Options
63 |
64 | | Name | Type | Default | Description |
65 | | :---------------------------: | :-------------------------: | :-----------------------------------------------------------: | :---------------------------------------------------------------------------------- |
66 | | **[`limit`](#limit)** | `{Boolean\|Number\|String}` | `true` | Specifying the maximum size of a file in bytes. |
67 | | **[`mimetype`](#mimetype)** | `{Boolean\|String}` | based from [mime-types](https://github.com/jshttp/mime-types) | Sets the MIME type for the file to be transformed. |
68 | | **[`encoding`](#encoding)** | `{Boolean\|String}` | `base64` | Specify the encoding which the file will be inlined with. |
69 | | **[`generator`](#generator)** | `{Function}` | `() => type/subtype;encoding,base64_data` | You can create you own custom implementation for encoding data. |
70 | | **[`fallback`](#fallback)** | `{String}` | `file-loader` | Specifies an alternative loader to use when a target file's size exceeds the limit. |
71 | | **[`esModule`](#esmodule)** | `{Boolean}` | `true` | Use ES modules syntax. |
72 |
73 | ### `limit`
74 |
75 | Type: `Boolean|Number|String`
76 | Default: `true`
77 |
78 | The limit can be specified via loader options and defaults to no limit.
79 |
80 | #### `Boolean`
81 |
82 | Enable or disable transform files into base64.
83 |
84 | **webpack.config.js**
85 |
86 | ```js
87 | module.exports = {
88 | module: {
89 | rules: [
90 | {
91 | test: /\.(png|jpg|gif)$/i,
92 | use: [
93 | {
94 | loader: 'url-loader',
95 | options: {
96 | limit: false,
97 | },
98 | },
99 | ],
100 | },
101 | ],
102 | },
103 | };
104 | ```
105 |
106 | #### `Number|String`
107 |
108 | A `Number` or `String` specifying the maximum size of a file in bytes.
109 | If the file size is **equal** or **greater** than the limit [`file-loader`](https://github.com/webpack-contrib/file-loader) will be used (by default) and all query parameters are passed to it.
110 |
111 | Using an alternative to `file-loader` is enabled via the `fallback` option.
112 |
113 | **webpack.config.js**
114 |
115 | ```js
116 | module.exports = {
117 | module: {
118 | rules: [
119 | {
120 | test: /\.(png|jpg|gif)$/i,
121 | use: [
122 | {
123 | loader: 'url-loader',
124 | options: {
125 | limit: 8192,
126 | },
127 | },
128 | ],
129 | },
130 | ],
131 | },
132 | };
133 | ```
134 |
135 | ### `mimetype`
136 |
137 | Type: `Boolean|String`
138 | Default: based from [mime-types](https://github.com/jshttp/mime-types)
139 |
140 | Specify the `mimetype` which the file will be inlined with.
141 | If unspecified the `mimetype` value will be used from [mime-types](https://github.com/jshttp/mime-types).
142 |
143 | #### `Boolean`
144 |
145 | The `true` value allows to generation the `mimetype` part from [mime-types](https://github.com/jshttp/mime-types).
146 | The `false` value removes the `mediatype` part from a Data URL (if omitted, defaults to `text/plain;charset=US-ASCII`).
147 |
148 | **webpack.config.js**
149 |
150 | ```js
151 | module.exports = {
152 | module: {
153 | rules: [
154 | {
155 | test: /\.(png|jpg|gif)$/i,
156 | use: [
157 | {
158 | loader: 'url-loader',
159 | options: {
160 | mimetype: false,
161 | },
162 | },
163 | ],
164 | },
165 | ],
166 | },
167 | };
168 | ```
169 |
170 | #### `String`
171 |
172 | Sets the MIME type for the file to be transformed.
173 |
174 | **webpack.config.js**
175 |
176 | ```js
177 | module.exports = {
178 | module: {
179 | rules: [
180 | {
181 | test: /\.(png|jpg|gif)$/i,
182 | use: [
183 | {
184 | loader: 'url-loader',
185 | options: {
186 | mimetype: 'image/png',
187 | },
188 | },
189 | ],
190 | },
191 | ],
192 | },
193 | };
194 | ```
195 |
196 | ### `encoding`
197 |
198 | Type: `Boolean|String`
199 | Default: `base64`
200 |
201 | Specify the `encoding` which the file will be inlined with.
202 | If unspecified the `encoding` will be `base64`.
203 |
204 | #### `Boolean`
205 |
206 | If you don't want to use any encoding you can set `encoding` to `false` however if you set it to `true` it will use the default encoding `base64`.
207 |
208 | **webpack.config.js**
209 |
210 | ```js
211 | module.exports = {
212 | module: {
213 | rules: [
214 | {
215 | test: /\.svg$/i,
216 | use: [
217 | {
218 | loader: 'url-loader',
219 | options: {
220 | encoding: false,
221 | },
222 | },
223 | ],
224 | },
225 | ],
226 | },
227 | };
228 | ```
229 |
230 | #### `String`
231 |
232 | It supports [Node.js Buffers and Character Encodings](https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings) which are `["utf8","utf16le","latin1","base64","hex","ascii","binary","ucs2"]`.
233 |
234 | **webpack.config.js**
235 |
236 | ```js
237 | module.exports = {
238 | module: {
239 | rules: [
240 | {
241 | test: /\.svg$/i,
242 | use: [
243 | {
244 | loader: 'url-loader',
245 | options: {
246 | encoding: 'utf8',
247 | },
248 | },
249 | ],
250 | },
251 | ],
252 | },
253 | };
254 | ```
255 |
256 | ### `generator`
257 |
258 | Type: `Function`
259 | Default: `(mimetype, encoding, content, resourcePath) => mimetype;encoding,base64_content`
260 |
261 | You can create you own custom implementation for encoding data.
262 |
263 | **webpack.config.js**
264 |
265 | ```js
266 | module.exports = {
267 | module: {
268 | rules: [
269 | {
270 | test: /\.(png|html)$/i,
271 | use: [
272 | {
273 | loader: 'url-loader',
274 | options: {
275 | // The `mimetype` and `encoding` arguments will be obtained from your options
276 | // The `resourcePath` argument is path to file.
277 | generator: (content, mimetype, encoding, resourcePath) => {
278 | if (/\.html$/i.test(resourcePath)) {
279 | return `data:${mimetype},${content.toString()}`;
280 | }
281 |
282 | return `data:${mimetype}${
283 | encoding ? `;${encoding}` : ''
284 | },${content.toString(encoding)}`;
285 | },
286 | },
287 | },
288 | ],
289 | },
290 | ],
291 | },
292 | };
293 | ```
294 |
295 | ### `fallback`
296 |
297 | Type: `String`
298 | Default: `'file-loader'`
299 |
300 | Specifies an alternative loader to use when a target file's size exceeds the limit set in the `limit` option.
301 |
302 | **webpack.config.js**
303 |
304 | ```js
305 | module.exports = {
306 | module: {
307 | rules: [
308 | {
309 | test: /\.(png|jpg|gif)$/i,
310 | use: [
311 | {
312 | loader: 'url-loader',
313 | options: {
314 | fallback: require.resolve('responsive-loader'),
315 | },
316 | },
317 | ],
318 | },
319 | ],
320 | },
321 | };
322 | ```
323 |
324 | The fallback loader will receive the same configuration options as url-loader.
325 |
326 | For example, to set the quality option of a responsive-loader above use:
327 |
328 | **webpack.config.js**
329 |
330 | ```js
331 | module.exports = {
332 | module: {
333 | rules: [
334 | {
335 | test: /\.(png|jpg|gif)$/i,
336 | use: [
337 | {
338 | loader: 'url-loader',
339 | options: {
340 | fallback: require.resolve('responsive-loader'),
341 | quality: 85,
342 | },
343 | },
344 | ],
345 | },
346 | ],
347 | },
348 | };
349 | ```
350 |
351 | ### `esModule`
352 |
353 | Type: `Boolean`
354 | Default: `true`
355 |
356 | By default, `file-loader` generates JS modules that use the ES modules syntax.
357 | There are some cases in which using ES modules is beneficial, like in the case of [module concatenation](https://webpack.js.org/plugins/module-concatenation-plugin/) and [tree shaking](https://webpack.js.org/guides/tree-shaking/).
358 |
359 | You can enable a CommonJS module syntax using:
360 |
361 | **webpack.config.js**
362 |
363 | ```js
364 | module.exports = {
365 | module: {
366 | rules: [
367 | {
368 | test: /\.css$/,
369 | use: [
370 | {
371 | loader: 'url-loader',
372 | options: {
373 | esModule: false,
374 | },
375 | },
376 | ],
377 | },
378 | ],
379 | },
380 | };
381 | ```
382 |
383 | ## Examples
384 |
385 | ### SVG
386 |
387 | SVG can be compressed into a more compact output, avoiding `base64`.
388 | You can read about it more [here](https://css-tricks.com/probably-dont-base64-svg/).
389 | You can do it using [mini-svg-data-uri](https://github.com/tigt/mini-svg-data-uri) package.
390 |
391 | **webpack.config.js**
392 |
393 | ```js
394 | const svgToMiniDataURI = require('mini-svg-data-uri');
395 |
396 | module.exports = {
397 | module: {
398 | rules: [
399 | {
400 | test: /\.svg$/i,
401 | use: [
402 | {
403 | loader: 'url-loader',
404 | options: {
405 | generator: (content) => svgToMiniDataURI(content.toString()),
406 | },
407 | },
408 | ],
409 | },
410 | ],
411 | },
412 | };
413 | ```
414 |
415 | ## Contributing
416 |
417 | Please take a moment to read our contributing guidelines if you haven't yet done so.
418 |
419 | [CONTRIBUTING](./.github/CONTRIBUTING.md)
420 |
421 | ## License
422 |
423 | [MIT](./LICENSE)
424 |
425 | [npm]: https://img.shields.io/npm/v/url-loader.svg
426 | [npm-url]: https://npmjs.com/package/url-loader
427 | [node]: https://img.shields.io/node/v/url-loader.svg
428 | [node-url]: https://nodejs.org
429 | [deps]: https://david-dm.org/webpack-contrib/url-loader.svg
430 | [deps-url]: https://david-dm.org/webpack-contrib/url-loader
431 | [tests]: https://github.com/webpack-contrib/url-loader/workflows/url-loader/badge.svg
432 | [tests-url]: https://github.com/webpack-contrib/url-loader/actions
433 | [cover]: https://codecov.io/gh/webpack-contrib/url-loader/branch/master/graph/badge.svg
434 | [cover-url]: https://codecov.io/gh/webpack-contrib/url-loader
435 | [chat]: https://img.shields.io/badge/gitter-webpack%2Fwebpack-brightgreen.svg
436 | [chat-url]: https://gitter.im/webpack/webpack
437 | [size]: https://packagephobia.now.sh/badge?p=url-loader
438 | [size-url]: https://packagephobia.now.sh/result?p=url-loader
439 |
440 | ```
441 |
442 | ```
443 |
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | const MIN_BABEL_VERSION = 7;
2 |
3 | module.exports = (api) => {
4 | api.assertVersion(MIN_BABEL_VERSION);
5 | api.cache(true);
6 |
7 | return {
8 | presets: [
9 | [
10 | '@babel/preset-env',
11 | {
12 | targets: {
13 | node: '10.13.0',
14 | },
15 | },
16 | ],
17 | ],
18 | };
19 | };
20 |
--------------------------------------------------------------------------------
/commitlint.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | extends: ['@commitlint/config-conventional'],
3 | };
4 |
--------------------------------------------------------------------------------
/husky.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | hooks: {
3 | 'pre-commit': 'lint-staged',
4 | 'commit-msg': 'commitlint -E HUSKY_GIT_PARAMS',
5 | },
6 | };
7 |
--------------------------------------------------------------------------------
/lint-staged.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | '*.js': ['prettier --write', 'eslint --fix'],
3 | '*.{json,md,yml,css,ts}': ['prettier --write'],
4 | };
5 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "url-loader",
3 | "version": "4.1.1",
4 | "description": "A loader for webpack which transforms files into base64 URIs",
5 | "license": "MIT",
6 | "repository": "webpack-contrib/url-loader",
7 | "author": "Tobias Koppers @sokra",
8 | "homepage": "https://github.com/webpack-contrib/url-loader",
9 | "bugs": "https://github.com/webpack-contrib/url-loader/issues",
10 | "funding": {
11 | "type": "opencollective",
12 | "url": "https://opencollective.com/webpack"
13 | },
14 | "main": "dist/cjs.js",
15 | "engines": {
16 | "node": ">= 10.13.0"
17 | },
18 | "scripts": {
19 | "start": "npm run build -- -w",
20 | "clean": "del-cli dist",
21 | "prebuild": "npm run clean",
22 | "build": "cross-env NODE_ENV=production babel src -d dist --copy-files",
23 | "commitlint": "commitlint --from=master",
24 | "security": "npm audit",
25 | "lint:prettier": "prettier --list-different .",
26 | "lint:js": "eslint --cache .",
27 | "lint": "npm-run-all -l -p \"lint:**\"",
28 | "test:only": "cross-env NODE_ENV=test jest",
29 | "test:watch": "npm run test:only -- --watch",
30 | "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
31 | "pretest": "npm run lint",
32 | "test": "npm run test:coverage",
33 | "prepare": "npm run build",
34 | "release": "standard-version",
35 | "defaults": "webpack-defaults"
36 | },
37 | "files": [
38 | "dist"
39 | ],
40 | "peerDependencies": {
41 | "webpack": "^4.0.0 || ^5.0.0",
42 | "file-loader": "*"
43 | },
44 | "peerDependenciesMeta": {
45 | "file-loader": {
46 | "optional": true
47 | }
48 | },
49 | "dependencies": {
50 | "loader-utils": "^2.0.0",
51 | "mime-types": "^2.1.27",
52 | "schema-utils": "^3.0.0"
53 | },
54 | "devDependencies": {
55 | "@babel/cli": "^7.11.6",
56 | "@babel/core": "^7.11.6",
57 | "@babel/preset-env": "^7.11.5",
58 | "@commitlint/cli": "^11.0.0",
59 | "@commitlint/config-conventional": "^11.0.0",
60 | "@webpack-contrib/defaults": "^6.3.0",
61 | "@webpack-contrib/eslint-config-webpack": "^3.0.0",
62 | "babel-jest": "^26.5.2",
63 | "cross-env": "^7.0.2",
64 | "del": "^6.0.0",
65 | "del-cli": "^3.0.1",
66 | "eslint": "^7.10.0",
67 | "eslint-config-prettier": "^6.12.0",
68 | "eslint-plugin-import": "^2.22.1",
69 | "file-loader": "^6.1.0",
70 | "husky": "^4.3.0",
71 | "jest": "^26.5.2",
72 | "lint-staged": "^10.4.0",
73 | "memfs": "^3.2.0",
74 | "mini-svg-data-uri": "^1.2.3",
75 | "npm-run-all": "^4.1.5",
76 | "prettier": "^2.1.2",
77 | "standard-version": "^9.0.0",
78 | "webpack": "^4.44.2"
79 | },
80 | "keywords": [
81 | "webpack"
82 | ]
83 | }
84 |
--------------------------------------------------------------------------------
/src/cjs.js:
--------------------------------------------------------------------------------
1 | const loader = require('./index');
2 |
3 | module.exports = loader.default;
4 | module.exports.raw = loader.raw;
5 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import path from 'path';
2 |
3 | import { getOptions } from 'loader-utils';
4 | import { validate } from 'schema-utils';
5 | import mime from 'mime-types';
6 |
7 | import normalizeFallback from './utils/normalizeFallback';
8 | import schema from './options.json';
9 |
10 | function shouldTransform(limit, size) {
11 | if (typeof limit === 'boolean') {
12 | return limit;
13 | }
14 |
15 | if (typeof limit === 'string') {
16 | return size <= parseInt(limit, 10);
17 | }
18 |
19 | if (typeof limit === 'number') {
20 | return size <= limit;
21 | }
22 |
23 | return true;
24 | }
25 |
26 | function getMimetype(mimetype, resourcePath) {
27 | if (typeof mimetype === 'boolean') {
28 | if (mimetype) {
29 | const resolvedMimeType = mime.contentType(path.extname(resourcePath));
30 |
31 | if (!resolvedMimeType) {
32 | return '';
33 | }
34 |
35 | return resolvedMimeType.replace(/;\s+charset/i, ';charset');
36 | }
37 |
38 | return '';
39 | }
40 |
41 | if (typeof mimetype === 'string') {
42 | return mimetype;
43 | }
44 |
45 | const resolvedMimeType = mime.contentType(path.extname(resourcePath));
46 |
47 | if (!resolvedMimeType) {
48 | return '';
49 | }
50 |
51 | return resolvedMimeType.replace(/;\s+charset/i, ';charset');
52 | }
53 |
54 | function getEncoding(encoding) {
55 | if (typeof encoding === 'boolean') {
56 | return encoding ? 'base64' : '';
57 | }
58 |
59 | if (typeof encoding === 'string') {
60 | return encoding;
61 | }
62 |
63 | return 'base64';
64 | }
65 |
66 | function getEncodedData(generator, mimetype, encoding, content, resourcePath) {
67 | if (generator) {
68 | return generator(content, mimetype, encoding, resourcePath);
69 | }
70 |
71 | return `data:${mimetype}${encoding ? `;${encoding}` : ''},${content.toString(
72 | // eslint-disable-next-line no-undefined
73 | encoding || undefined
74 | )}`;
75 | }
76 |
77 | export default function loader(content) {
78 | // Loader Options
79 | const options = getOptions(this) || {};
80 |
81 | validate(schema, options, {
82 | name: 'URL Loader',
83 | baseDataPath: 'options',
84 | });
85 |
86 | // No limit or within the specified limit
87 | if (shouldTransform(options.limit, content.length)) {
88 | const { resourcePath } = this;
89 | const mimetype = getMimetype(options.mimetype, resourcePath);
90 | const encoding = getEncoding(options.encoding);
91 |
92 | if (typeof content === 'string') {
93 | // eslint-disable-next-line no-param-reassign
94 | content = Buffer.from(content);
95 | }
96 |
97 | const encodedData = getEncodedData(
98 | options.generator,
99 | mimetype,
100 | encoding,
101 | content,
102 | resourcePath
103 | );
104 |
105 | const esModule =
106 | typeof options.esModule !== 'undefined' ? options.esModule : true;
107 |
108 | return `${
109 | esModule ? 'export default' : 'module.exports ='
110 | } ${JSON.stringify(encodedData)}`;
111 | }
112 |
113 | // Normalize the fallback.
114 | const {
115 | loader: fallbackLoader,
116 | options: fallbackOptions,
117 | } = normalizeFallback(options.fallback, options);
118 |
119 | // Require the fallback.
120 | // eslint-disable-next-line global-require, import/no-dynamic-require
121 | const fallback = require(fallbackLoader);
122 |
123 | // Call the fallback, passing a copy of the loader context. The copy has the query replaced. This way, the fallback
124 | // loader receives the query which was intended for it instead of the query which was intended for url-loader.
125 | const fallbackLoaderContext = Object.assign({}, this, {
126 | query: fallbackOptions,
127 | });
128 |
129 | return fallback.call(fallbackLoaderContext, content);
130 | }
131 |
132 | // Loader Mode
133 | export const raw = true;
134 |
--------------------------------------------------------------------------------
/src/options.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "object",
3 | "properties": {
4 | "limit": {
5 | "description": "Enables/Disables transformation target file into base64 URIs (https://github.com/webpack-contrib/url-loader#limit).",
6 | "type": ["boolean", "number", "string"]
7 | },
8 | "encoding": {
9 | "description": "Specify the encoding which the file will be in-lined with.",
10 | "oneOf": [
11 | {
12 | "type": "boolean"
13 | },
14 | {
15 | "enum": [
16 | "utf8",
17 | "utf16le",
18 | "latin1",
19 | "base64",
20 | "hex",
21 | "ascii",
22 | "binary",
23 | "ucs2"
24 | ]
25 | }
26 | ]
27 | },
28 | "mimetype": {
29 | "description": "The MIME type for the file to be transformed (https://github.com/webpack-contrib/url-loader#mimetype).",
30 | "oneOf": [
31 | {
32 | "type": "boolean"
33 | },
34 | {
35 | "type": "string"
36 | }
37 | ]
38 | },
39 | "generator": {
40 | "description": "Adding custom implementation for encoding files.",
41 | "instanceof": "Function"
42 | },
43 | "fallback": {
44 | "description": "An alternative loader to use when a target file's size exceeds the limit set in the limit option (https://github.com/webpack-contrib/url-loader#fallback).",
45 | "anyOf": [
46 | {
47 | "type": "string"
48 | },
49 | {
50 | "additionalProperties": false,
51 | "properties": {
52 | "loader": {
53 | "description": "Fallback loader name.",
54 | "type": "string"
55 | },
56 | "options": {
57 | "description": "Fallback loader options.",
58 | "anyOf": [
59 | {
60 | "type": "object"
61 | },
62 | {
63 | "type": "string"
64 | }
65 | ]
66 | }
67 | },
68 | "type": "object"
69 | }
70 | ]
71 | },
72 | "esModule": {
73 | "description": "By default, url-loader generates JS modules that use the ES modules syntax.",
74 | "type": "boolean"
75 | }
76 | },
77 | "additionalProperties": true
78 | }
79 |
--------------------------------------------------------------------------------
/src/utils/normalizeFallback.js:
--------------------------------------------------------------------------------
1 | import loaderUtils from 'loader-utils';
2 |
3 | export default function normalizeFallback(fallback, originalOptions) {
4 | let loader = 'file-loader';
5 | let options = {};
6 |
7 | if (typeof fallback === 'string') {
8 | loader = fallback;
9 |
10 | const index = fallback.indexOf('?');
11 |
12 | if (index >= 0) {
13 | loader = fallback.substr(0, index);
14 | options = loaderUtils.parseQuery(fallback.substr(index));
15 | }
16 | }
17 |
18 | if (fallback !== null && typeof fallback === 'object') {
19 | ({ loader, options } = fallback);
20 | }
21 |
22 | options = Object.assign({}, originalOptions, options);
23 |
24 | delete options.fallback;
25 |
26 | return { loader, options };
27 | }
28 |
--------------------------------------------------------------------------------
/test/__snapshots__/esModule-options.test.js.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`"esModule" option should work with "Boolean" value equal "false": errors 1`] = `Array []`;
4 |
5 | exports[`"esModule" option should work with "Boolean" value equal "false": result 1`] = `"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAAAXNSR0IArs4c6QAAGjNJREFUeAHtnQewFMXWx/uSxZxRUTGAAcyYnwpiJhgRFRCM6GeBZaklopaUWoUo9cwIqPhhAjGAWRQTRjAgijnnLOqnAgL3fv3rR+/r29uzO7t3e3Z2t0/V1uzM9Mx0n/nP6dPnnD4tRKDAgcCBwIFK4UCdq6JDhw5dZeHChRfKc4c2NDR0kNtWrnLhWE1woKGuru4X2dKX5fbym2666aU4rc4C1pAhQ/ZetmzZ7RJQG8W5QShTOxyQwKqXuPj3hhtueN7IkSPrc7W8uXny1FNPXa++vv55eXE783j4HziwnAMIoj3+T9Ibb7zxci6uNDNPSkk1VoJqdfNY+B84YHNAYuQyKYQ2s4+b+xlgyYJrSVHXxzwZ/gcORHCgjezZjos4pw630Cdlwa0kEjNA4/hqq60mLrzwQrXV5cK2tjggcSGmTp0qZs6caTe8s33A3DeBtLJ5gv8bbbRRAJXNlBrbb9asmejcORtDUm1q161bt8333XffDfr27buCzRYTWPa5sB84kJMDzZs3bybVpxV//fXXDQ8++OC1ZY+XsTIEYOVkXTgZlwP//PPP6gcddFBm4BeAFZdzoVxeDkh9bE3ZLSpjegBWXnaFAnE5IIFVJ7tFpasHYMXlWigXiwNS2W9NwQCsWOwKheJyoHXr1kqBD8CKy7FQriAOBGAVxK5QOC4HArDiciqUK4gDAVgFsSsUjsuBAKy4nArlCuJAAFZB7AqF43IgE90Q94JaKifdFGLRokVi6dKlolWrVqJNmzaiRYvAsjgYqFkuSe+8+OGHH8T333/f6LdgwQIFpsWLFwtCRmwCWNJWI1ZYYQWx1lpriXbt2jX6cSyQEDUDLOl5F19++aV4//331e/DDz8UgKdQQnrx++uvv8TPP/+s7mXeY9VVVxVbbLGF2HLLLdVvnXXWMU/XzP+qBhZgeu+998TLL78s5s2bJ/7++2/vL/b3338Xc+bMUT8etuaaa4qddtpJ7LHHHqJ9+/ben5+WB1QlsL799lvx0ksviVdeeUX89ttvZeX1L7/8Ip544gn1A1gAbNdddxVItmqmqgIW3dsjjzwi3nnnnZK8M3QprbBrRX7JkiVF3/vrr79WYb7333+/2G233cQhhxwiqrWrrApgzZ8/XwHqo48+Kuilr7zyyir8GgV83XXXVUo42xVXXFEp6DI6Mut+KP3oZnIGVCOln0EAOlwcvQ0d7YUXXlBStWvXrqJnz55igw02yHpWJR+oaGB99dVX4o477hCffPJJrHfASM5UrIvReWQ4rmjbtq36AcLtttsu82xA9+mnnyq9jkEC/wFRFDHqRB979dVXlQSTQXJilVVWiSpeUccrEljYlqZPny6efvppp0nAfAOYB7bddlul22yzzTYCYPgi7t2xY0f169Onj5BpChRoGDzkkqYMMvQA47DDDhPdu3cXLmnpq94+7ltxwOLrnjJlimD0lYvWW2890aNHD7Hzzjurri1XWV/nkJB77723+mGaYEDxzDPPqG7U9UxGrXfddZfqJgcNGiQ23nhjV7GKOFYxwEJ5vvPOO8WLL76Yk7FMWUMpZojv+urpPuX0cPHWW28pSXbooYfmvF+pTmI4RYrJCQfiueeeEzNmzIgcsaKrjRo1Shx55JFi//33L1UVEr1PRQAL88G4ceME2yhC+T3qqKME3Z1N2vzw+uuvi59++ilzGqU9acI1BFjo7lDgH3jgAacEQze7++67xQcffCBOOOGEskndYvmTemChe6CgR422MAcgCfbbbz/B5EqTGC0++eSTjcwPzO7eYYcdlERDkS8XofvJCZ+qq542bZqYNWuWU1988803xSWXXCJOO+00sckmm5SrugU/N9XAevjhh5WSHtUqhurHHHNMo9naKMLoMnQ1WsIBPgyTu+yyi9hss82cXWTUM3wfx7QxYMAAseeee6oP6Isvvsh6JEbWMWPGKHC5JHLWBSk4kEpgAY7JkyerUZ+LRxgueRm77757o9MYSLkOPQpaY401lAKPAo0inWZCGo0YMUJgPMVSDw9MQmJff/31AqWejyTtlDpgYQuSWePEa6+95uQduhTdAqM+TXzR99xzT+YaFOXDDz9cdTN296ivSeMWcwW2LLroiRMnij///LNRNeHNrbfeqnSyAw88sNG5tO2kClh8pTfeeKNAr3AREur4448XLVu2zJx+/vnnlZRi1IgkY0QI0ys5bgq728UXXyxuuOEG8fnnn2fayh94xEeEcVXmS2h0Lk07qQLWbbfdFgkqmMjwWxPGx0mTJmWkFL43vvZqce6uvvrq4txzzxVjx45tNPjQ7b/vvvuUlR7dLI2UGmAxMkL6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"`;
6 |
7 | exports[`"esModule" option should work with "Boolean" value equal "false": warnings 1`] = `Array []`;
8 |
9 | exports[`"esModule" option should work with "Boolean" value equal "true": errors 1`] = `Array []`;
10 |
11 | exports[`"esModule" option should work with "Boolean" value equal "true": result 1`] = `"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAAAXNSR0IArs4c6QAAGjNJREFUeAHtnQewFMXWx/uSxZxRUTGAAcyYnwpiJhgRFRCM6GeBZaklopaUWoUo9cwIqPhhAjGAWRQTRjAgijnnLOqnAgL3fv3rR+/r29uzO7t3e3Z2t0/V1uzM9Mx0n/nP6dPnnD4tRKDAgcCBwIFK4UCdq6JDhw5dZeHChRfKc4c2NDR0kNtWrnLhWE1woKGuru4X2dKX5fbym2666aU4rc4C1pAhQ/ZetmzZ7RJQG8W5QShTOxyQwKqXuPj3hhtueN7IkSPrc7W8uXny1FNPXa++vv55eXE783j4HziwnAMIoj3+T9Ibb7zxci6uNDNPSkk1VoJqdfNY+B84YHNAYuQyKYQ2s4+b+xlgyYJrSVHXxzwZ/gcORHCgjezZjos4pw630Cdlwa0kEjNA4/hqq60mLrzwQrXV5cK2tjggcSGmTp0qZs6caTe8s33A3DeBtLJ5gv8bbbRRAJXNlBrbb9asmejcORtDUm1q161bt8333XffDfr27buCzRYTWPa5sB84kJMDzZs3bybVpxV//fXXDQ8++OC1ZY+XsTIEYOVkXTgZlwP//PPP6gcddFBm4BeAFZdzoVxeDkh9bE3ZLSpjegBWXnaFAnE5IIFVJ7tFpasHYMXlWigXiwNS2W9NwQCsWOwKheJyoHXr1kqBD8CKy7FQriAOBGAVxK5QOC4HArDiciqUK4gDAVgFsSsUjsuBAKy4nArlCuJAAFZB7AqF43IgE90Q94JaKifdFGLRokVi6dKlolWrVqJNmzaiRYvAsjgYqFkuSe+8+OGHH8T333/f6LdgwQIFpsWLFwtCRmwCWNJWI1ZYYQWx1lpriXbt2jX6cSyQEDUDLOl5F19++aV4//331e/DDz8UgKdQQnrx++uvv8TPP/+s7mXeY9VVVxVbbLGF2HLLLdVvnXXWMU/XzP+qBhZgeu+998TLL78s5s2bJ/7++2/vL/b3338Xc+bMUT8etuaaa4qddtpJ7LHHHqJ9+/ben5+WB1QlsL799lvx0ksviVdeeUX89ttvZeX1L7/8Ip544gn1A1gAbNdddxVItmqmqgIW3dsjjzwi3nnnnZK8M3QprbBrRX7JkiVF3/vrr79WYb7333+/2G233cQhhxwiqrWrrApgzZ8/XwHqo48+Kuilr7zyyir8GgV83XXXVUo42xVXXFEp6DI6Mut+KP3oZnIGVCOln0EAOlwcvQ0d7YUXXlBStWvXrqJnz55igw02yHpWJR+oaGB99dVX4o477hCffPJJrHfASM5UrIvReWQ4rmjbtq36AcLtttsu82xA9+mnnyq9jkEC/wFRFDHqRB979dVXlQSTQXJilVVWiSpeUccrEljYlqZPny6efvppp0nAfAOYB7bddlul22yzzTYCYPgi7t2xY0f169Onj5BpChRoGDzkkqYMMvQA47DDDhPdu3cXLmnpq94+7ltxwOLrnjJlimD0lYvWW2890aNHD7Hzzjurri1XWV/nkJB77723+mGaYEDxzDPPqG7U9UxGrXfddZfqJgcNGiQ23nhjV7GKOFYxwEJ5vvPOO8WLL76Yk7FMWUMpZojv+urpPuX0cPHWW28pSXbooYfmvF+pTmI4RYrJCQfiueeeEzNmzIgcsaKrjRo1Shx55JFi//33L1UVEr1PRQAL88G4ceME2yhC+T3qqKME3Z1N2vzw+uuvi59++ilzGqU9acI1BFjo7lDgH3jgAacEQze7++67xQcffCBOOOGEskndYvmTemChe6CgR422MAcgCfbbbz/B5EqTGC0++eSTjcwPzO7eYYcdlERDkS8XofvJCZ+qq542bZqYNWuWU1988803xSWXXCJOO+00sckmm5SrugU/N9XAevjhh5WSHtUqhurHHHNMo9naKMLoMnQ1WsIBPgyTu+yyi9hss82cXWTUM3wfx7QxYMAAseeee6oP6Isvvsh6JEbWMWPGKHC5JHLWBSk4kEpgAY7JkyerUZ+LRxgueRm77757o9MYSLkOPQpaY401lAKPAo0inWZCGo0YMUJgPMVSDw9MQmJff/31AqWejyTtlDpgYQuSWePEa6+95uQduhTdAqM+TXzR99xzT+YaFOXDDz9cdTN296ivSeMWcwW2LLroiRMnij///LNRNeHNrbfeqnSyAw88sNG5tO2kClh8pTfeeKNAr3AREur4448XLVu2zJx+/vnnlZRi1IgkY0QI0ys5bgq728UXXyxuuOEG8fnnn2fayh94xEeEcVXmS2h0Lk07qQLWbbfdFgkqmMjwWxPGx0mTJmWkFL43vvZqce6uvvrq4txzzxVjx45tNPjQ7b/vvvuUlR7dLI2UGmAxMkL6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"`;
12 |
13 | exports[`"esModule" option should work with "Boolean" value equal "true": warnings 1`] = `Array []`;
14 |
15 | exports[`"esModule" option should work without value: errors 1`] = `Array []`;
16 |
17 | exports[`"esModule" option should work without value: result 1`] = `"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAAAXNSR0IArs4c6QAAGjNJREFUeAHtnQewFMXWx/uSxZxRUTGAAcyYnwpiJhgRFRCM6GeBZaklopaUWoUo9cwIqPhhAjGAWRQTRjAgijnnLOqnAgL3fv3rR+/r29uzO7t3e3Z2t0/V1uzM9Mx0n/nP6dPnnD4tRKDAgcCBwIFK4UCdq6JDhw5dZeHChRfKc4c2NDR0kNtWrnLhWE1woKGuru4X2dKX5fbym2666aU4rc4C1pAhQ/ZetmzZ7RJQG8W5QShTOxyQwKqXuPj3hhtueN7IkSPrc7W8uXny1FNPXa++vv55eXE783j4HziwnAMIoj3+T9Ibb7zxci6uNDNPSkk1VoJqdfNY+B84YHNAYuQyKYQ2s4+b+xlgyYJrSVHXxzwZ/gcORHCgjezZjos4pw630Cdlwa0kEjNA4/hqq60mLrzwQrXV5cK2tjggcSGmTp0qZs6caTe8s33A3DeBtLJ5gv8bbbRRAJXNlBrbb9asmejcORtDUm1q161bt8333XffDfr27buCzRYTWPa5sB84kJMDzZs3bybVpxV//fXXDQ8++OC1ZY+XsTIEYOVkXTgZlwP//PPP6gcddFBm4BeAFZdzoVxeDkh9bE3ZLSpjegBWXnaFAnE5IIFVJ7tFpasHYMXlWigXiwNS2W9NwQCsWOwKheJyoHXr1kqBD8CKy7FQriAOBGAVxK5QOC4HArDiciqUK4gDAVgFsSsUjsuBAKy4nArlCuJAAFZB7AqF43IgE90Q94JaKifdFGLRokVi6dKlolWrVqJNmzaiRYvAsjgYqFkuSe+8+OGHH8T333/f6LdgwQIFpsWLFwtCRmwCWNJWI1ZYYQWx1lpriXbt2jX6cSyQEDUDLOl5F19++aV4//331e/DDz8UgKdQQnrx++uvv8TPP/+s7mXeY9VVVxVbbLGF2HLLLdVvnXXWMU/XzP+qBhZgeu+998TLL78s5s2bJ/7++2/vL/b3338Xc+bMUT8etuaaa4qddtpJ7LHHHqJ9+/ben5+WB1QlsL799lvx0ksviVdeeUX89ttvZeX1L7/8Ip544gn1A1gAbNdddxVItmqmqgIW3dsjjzwi3nnnnZK8M3QprbBrRX7JkiVF3/vrr79WYb7333+/2G233cQhhxwiqrWrrApgzZ8/XwHqo48+Kuilr7zyyir8GgV83XXXVUo42xVXXFEp6DI6Mut+KP3oZnIGVCOln0EAOlwcvQ0d7YUXXlBStWvXrqJnz55igw02yHpWJR+oaGB99dVX4o477hCffPJJrHfASM5UrIvReWQ4rmjbtq36AcLtttsu82xA9+mnnyq9jkEC/wFRFDHqRB979dVXlQSTQXJilVVWiSpeUccrEljYlqZPny6efvppp0nAfAOYB7bddlul22yzzTYCYPgi7t2xY0f169Onj5BpChRoGDzkkqYMMvQA47DDDhPdu3cXLmnpq94+7ltxwOLrnjJlimD0lYvWW2890aNHD7Hzzjurri1XWV/nkJB77723+mGaYEDxzDPPqG7U9UxGrXfddZfqJgcNGiQ23nhjV7GKOFYxwEJ5vvPOO8WLL76Yk7FMWUMpZojv+urpPuX0cPHWW28pSXbooYfmvF+pTmI4RYrJCQfiueeeEzNmzIgcsaKrjRo1Shx55JFi//33L1UVEr1PRQAL88G4ceME2yhC+T3qqKME3Z1N2vzw+uuvi59++ilzGqU9acI1BFjo7lDgH3jgAacEQze7++67xQcffCBOOOGEskndYvmTemChe6CgR422MAcgCfbbbz/B5EqTGC0++eSTjcwPzO7eYYcdlERDkS8XofvJCZ+qq542bZqYNWuWU1988803xSWXXCJOO+00sckmm5SrugU/N9XAevjhh5WSHtUqhurHHHNMo9naKMLoMnQ1WsIBPgyTu+yyi9hss82cXWTUM3wfx7QxYMAAseeee6oP6Isvvsh6JEbWMWPGKHC5JHLWBSk4kEpgAY7JkyerUZ+LRxgueRm77757o9MYSLkOPQpaY401lAKPAo0inWZCGo0YMUJgPMVSDw9MQmJff/31AqWejyTtlDpgYQuSWePEa6+95uQduhTdAqM+TXzR99xzT+YaFOXDDz9cdTN296ivSeMWcwW2LLroiRMnij///LNRNeHNrbfeqnSyAw88sNG5tO2kClh8pTfeeKNAr3AREur4448XLVu2zJx+/vnnlZRi1IgkY0QI0ys5bgq728UXXyxuuOEG8fnnn2fayh94xEeEcVXmS2h0Lk07qQLWbbfdFgkqmMjwWxPGx0mTJmWkFL43vvZqce6uvvrq4txzzxVjx45tNPjQ7b/vvvuUlR7dLI2UGmAxMkL6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"`;
18 |
19 | exports[`"esModule" option should work without value: warnings 1`] = `Array []`;
20 |
--------------------------------------------------------------------------------
/test/__snapshots__/fallback-option.test.js.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`"fallback" option should work with "Object" value and require.resolve: assets 1`] = `
4 | Array [
5 | "main.bundle.js",
6 | ]
7 | `;
8 |
9 | exports[`"fallback" option should work with "Object" value and require.resolve: errors 1`] = `Array []`;
10 |
11 | exports[`"fallback" option should work with "Object" value and require.resolve: result 1`] = `
12 | Object {
13 | "limit": -9007199254740991,
14 | "name": "fallback-[hash].[ext]",
15 | "unknown": "fallback-other-value",
16 | }
17 | `;
18 |
19 | exports[`"fallback" option should work with "Object" value and require.resolve: warnings 1`] = `Array []`;
20 |
21 | exports[`"fallback" option should work with "Object" value: assets 1`] = `
22 | Array [
23 | "main.bundle.js",
24 | ]
25 | `;
26 |
27 | exports[`"fallback" option should work with "Object" value: errors 1`] = `Array []`;
28 |
29 | exports[`"fallback" option should work with "Object" value: result 1`] = `
30 | Object {
31 | "limit": -9007199254740991,
32 | "name": "fallback-[hash].[ext]",
33 | "unknown": "fallback-other-value",
34 | }
35 | `;
36 |
37 | exports[`"fallback" option should work with "Object" value: warnings 1`] = `Array []`;
38 |
39 | exports[`"fallback" option should work with "String" value and require.resolve: assets 1`] = `
40 | Array [
41 | "main.bundle.js",
42 | ]
43 | `;
44 |
45 | exports[`"fallback" option should work with "String" value and require.resolve: errors 1`] = `Array []`;
46 |
47 | exports[`"fallback" option should work with "String" value and require.resolve: result 1`] = `
48 | Object {
49 | "limit": -9007199254740991,
50 | "name": "[name].[hash].[ext]",
51 | "unknown": "value",
52 | }
53 | `;
54 |
55 | exports[`"fallback" option should work with "String" value and require.resolve: warnings 1`] = `Array []`;
56 |
57 | exports[`"fallback" option should work with "String" value and with query: assets 1`] = `
58 | Array [
59 | "main.bundle.js",
60 | ]
61 | `;
62 |
63 | exports[`"fallback" option should work with "String" value and with query: errors 1`] = `Array []`;
64 |
65 | exports[`"fallback" option should work with "String" value and with query: result 1`] = `
66 | Object {
67 | "limit": -9007199254740991,
68 | "name": "fallback-[hash].[ext]",
69 | "unknown": "fallback-value",
70 | }
71 | `;
72 |
73 | exports[`"fallback" option should work with "String" value and with query: warnings 1`] = `Array []`;
74 |
75 | exports[`"fallback" option should work with "String" value, with query and require.resolve: assets 1`] = `
76 | Array [
77 | "main.bundle.js",
78 | ]
79 | `;
80 |
81 | exports[`"fallback" option should work with "String" value, with query and require.resolve: errors 1`] = `Array []`;
82 |
83 | exports[`"fallback" option should work with "String" value, with query and require.resolve: result 1`] = `
84 | Object {
85 | "limit": -9007199254740991,
86 | "name": "fallback-[hash].[ext]",
87 | "unknown": "fallback-value",
88 | }
89 | `;
90 |
91 | exports[`"fallback" option should work with "String" value, with query and require.resolve: warnings 1`] = `Array []`;
92 |
93 | exports[`"fallback" option should work with "String" value: assets 1`] = `
94 | Array [
95 | "main.bundle.js",
96 | ]
97 | `;
98 |
99 | exports[`"fallback" option should work with "String" value: errors 1`] = `Array []`;
100 |
101 | exports[`"fallback" option should work with "String" value: result 1`] = `
102 | Object {
103 | "limit": -9007199254740991,
104 | "name": "[name].[hash].[ext]",
105 | "unknown": "value",
106 | }
107 | `;
108 |
109 | exports[`"fallback" option should work with "String" value: warnings 1`] = `Array []`;
110 |
111 | exports[`"fallback" option should work with unspecified value: assets 1`] = `
112 | Array [
113 | "main.bundle.js",
114 | ]
115 | `;
116 |
117 | exports[`"fallback" option should work with unspecified value: errors 1`] = `Array []`;
118 |
119 | exports[`"fallback" option should work with unspecified value: result 1`] = `"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAAAXNSR0IArs4c6QAAGjNJREFUeAHtnQewFMXWx/uSxZxRUTGAAcyYnwpiJhgRFRCM6GeBZaklopaUWoUo9cwIqPhhAjGAWRQTRjAgijnnLOqnAgL3fv3rR+/r29uzO7t3e3Z2t0/V1uzM9Mx0n/nP6dPnnD4tRKDAgcCBwIFK4UCdq6JDhw5dZeHChRfKc4c2NDR0kNtWrnLhWE1woKGuru4X2dKX5fbym2666aU4rc4C1pAhQ/ZetmzZ7RJQG8W5QShTOxyQwKqXuPj3hhtueN7IkSPrc7W8uXny1FNPXa++vv55eXE783j4HziwnAMIoj3+T9Ibb7zxci6uNDNPSkk1VoJqdfNY+B84YHNAYuQyKYQ2s4+b+xlgyYJrSVHXxzwZ/gcORHCgjezZjos4pw630Cdlwa0kEjNA4/hqq60mLrzwQrXV5cK2tjggcSGmTp0qZs6caTe8s33A3DeBtLJ5gv8bbbRRAJXNlBrbb9asmejcORtDUm1q161bt8333XffDfr27buCzRYTWPa5sB84kJMDzZs3bybVpxV//fXXDQ8++OC1ZY+XsTIEYOVkXTgZlwP//PPP6gcddFBm4BeAFZdzoVxeDkh9bE3ZLSpjegBWXnaFAnE5IIFVJ7tFpasHYMXlWigXiwNS2W9NwQCsWOwKheJyoHXr1kqBD8CKy7FQriAOBGAVxK5QOC4HArDiciqUK4gDAVgFsSsUjsuBAKy4nArlCuJAAFZB7AqF43IgE90Q94JaKifdFGLRokVi6dKlolWrVqJNmzaiRYvAsjgYqFkuSe+8+OGHH8T333/f6LdgwQIFpsWLFwtCRmwCWNJWI1ZYYQWx1lpriXbt2jX6cSyQEDUDLOl5F19++aV4//331e/DDz8UgKdQQnrx++uvv8TPP/+s7mXeY9VVVxVbbLGF2HLLLdVvnXXWMU/XzP+qBhZgeu+998TLL78s5s2bJ/7++2/vL/b3338Xc+bMUT8etuaaa4qddtpJ7LHHHqJ9+/ben5+WB1QlsL799lvx0ksviVdeeUX89ttvZeX1L7/8Ip544gn1A1gAbNdddxVItmqmqgIW3dsjjzwi3nnnnZK8M3QprbBrRX7JkiVF3/vrr79WYb7333+/2G233cQhhxwiqrWrrApgzZ8/XwHqo48+Kuilr7zyyir8GgV83XXXVUo42xVXXFEp6DI6Mut+KP3oZnIGVCOln0EAOlwcvQ0d7YUXXlBStWvXrqJnz55igw02yHpWJR+oaGB99dVX4o477hCffPJJrHfASM5UrIvReWQ4rmjbtq36AcLtttsu82xA9+mnnyq9jkEC/wFRFDHqRB979dVXlQSTQXJilVVWiSpeUccrEljYlqZPny6efvppp0nAfAOYB7bddlul22yzzTYCYPgi7t2xY0f169Onj5BpChRoGDzkkqYMMvQA47DDDhPdu3cXLmnpq94+7ltxwOLrnjJlimD0lYvWW2890aNHD7Hzzjurri1XWV/nkJB77723+mGaYEDxzDPPqG7U9UxGrXfddZfqJgcNGiQ23nhjV7GKOFYxwEJ5vvPOO8WLL76Yk7FMWUMpZojv+urpPuX0cPHWW28pSXbooYfmvF+pTmI4RYrJCQfiueeeEzNmzIgcsaKrjRo1Shx55JFi//33L1UVEr1PRQAL88G4ceME2yhC+T3qqKME3Z1N2vzw+uuvi59++ilzGqU9acI1BFjo7lDgH3jgAacEQze7++67xQcffCBOOOGEskndYvmTemChe6CgR422MAcgCfbbbz/B5EqTGC0++eSTjcwPzO7eYYcdlERDkS8XofvJCZ+qq542bZqYNWuWU1988803xSWXXCJOO+00sckmm5SrugU/N9XAevjhh5WSHtUqhurHHHNMo9naKMLoMnQ1WsIBPgyTu+yyi9hss82cXWTUM3wfx7QxYMAAseeee6oP6Isvvsh6JEbWMWPGKHC5JHLWBSk4kEpgAY7JkyerUZ+LRxgueRm77757o9MYSLkOPQpaY401lAKPAo0inWZCGo0YMUJgPMVSDw9MQmJff/31AqWejyTtlDpgYQuSWePEa6+95uQduhTdAqM+TXzR99xzT+YaFOXDDz9cdTN296ivSeMWcwW2LLroiRMnij///LNRNeHNrbfeqnSyAw88sNG5tO2kClh8pTfeeKNAr3AREur4448XLVu2zJx+/vnnlZRi1IgkY0QI0ys5bgq728UXXyxuuOEG8fnnn2fayh94xEeEcVXmS2h0Lk07qQLWbbfdFgkqmMjwWxPGx0mTJmWkFL43vvZqce6uvvrq4txzzxVjx45tNPjQ7b/vvvuUlR7dLI2UGmAxMkL6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"`;
120 |
121 | exports[`"fallback" option should work with unspecified value: warnings 1`] = `Array []`;
122 |
--------------------------------------------------------------------------------
/test/__snapshots__/generator-option.test.js.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`"generator" option should work with "Function" generating encoded file manually without "encoding": assets 1`] = `
4 | Array [
5 | "main.bundle.js",
6 | ]
7 | `;
8 |
9 | exports[`"generator" option should work with "Function" generating encoded file manually without "encoding": errors 1`] = `Array []`;
10 |
11 | exports[`"generator" option should work with "Function" generating encoded file manually without "encoding": result 1`] = `
12 | "data:text/html;charset=utf-8,Hello, World! Привет мир!
13 | "
14 | `;
15 |
16 | exports[`"generator" option should work with "Function" generating encoded file manually without "encoding": warnings 1`] = `Array []`;
17 |
18 | exports[`"generator" option should work with "Function" generating encoded file manually without "mimetype" and "encoding": assets 1`] = `
19 | Array [
20 | "main.bundle.js",
21 | ]
22 | `;
23 |
24 | exports[`"generator" option should work with "Function" generating encoded file manually without "mimetype" and "encoding": errors 1`] = `Array []`;
25 |
26 | exports[`"generator" option should work with "Function" generating encoded file manually without "mimetype" and "encoding": result 1`] = `
27 | "data:,Hello, World! Привет мир!
28 | "
29 | `;
30 |
31 | exports[`"generator" option should work with "Function" generating encoded file manually without "mimetype" and "encoding": warnings 1`] = `Array []`;
32 |
33 | exports[`"generator" option should work with "Function" generating encoded file manually without "mimetype": assets 1`] = `
34 | Array [
35 | "main.bundle.js",
36 | ]
37 | `;
38 |
39 | exports[`"generator" option should work with "Function" generating encoded file manually without "mimetype": errors 1`] = `Array []`;
40 |
41 | exports[`"generator" option should work with "Function" generating encoded file manually without "mimetype": result 1`] = `"data:;base64,PGgxPkhlbGxvLCBXb3JsZCEg0J/RgNC40LLQtdGCINC80LjRgCE8L2gxPgo="`;
42 |
43 | exports[`"generator" option should work with "Function" generating encoded file manually without "mimetype": warnings 1`] = `Array []`;
44 |
45 | exports[`"generator" option should work with "Function" generating encoded file manually: assets 1`] = `
46 | Array [
47 | "main.bundle.js",
48 | ]
49 | `;
50 |
51 | exports[`"generator" option should work with "Function" generating encoded file manually: errors 1`] = `Array []`;
52 |
53 | exports[`"generator" option should work with "Function" generating encoded file manually: result 1`] = `"data:text/html;charset=utf-8;base64,PGgxPkhlbGxvLCBXb3JsZCEg0J/RgNC40LLQtdGCINC80LjRgCE8L2gxPgo="`;
54 |
55 | exports[`"generator" option should work with "Function" generating encoded file manually: warnings 1`] = `Array []`;
56 |
57 | exports[`"generator" option should work with "Function" mini-svg-data-uri generator: assets 1`] = `
58 | Array [
59 | "main.bundle.js",
60 | ]
61 | `;
62 |
63 | exports[`"generator" option should work with "Function" mini-svg-data-uri generator: errors 1`] = `Array []`;
64 |
65 | exports[`"generator" option should work with "Function" mini-svg-data-uri generator: result 1`] = `"data:image/svg+xml,%3c%3fxml version='1.0' encoding='UTF-8' standalone='no'%3f%3e %3csvg width='75px' height='75px' viewBox='0 0 75 75' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e %3c!-- Generator: Sketch 3.7.1 (28215) - http://www.bohemiancoding.com/sketch --%3e %3ctitle%3emochi%3c/title%3e %3cdesc%3eCreated with Sketch.%3c/desc%3e %3cdefs%3e %3crect id='path-1' x='0' y='0' width='70' height='70' rx='3'%3e%3c/rect%3e %3cmask id='mask-2' maskContentUnits='userSpaceOnUse' maskUnits='objectBoundingBox' x='0' y='0' width='70' height='70' fill='white'%3e %3cuse xlink:href='%23path-1'%3e%3c/use%3e %3c/mask%3e %3c/defs%3e %3cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e %3cg id='mochi'%3e %3cg id='Group-15' transform='translate(1.000000%2c 1.000000)'%3e %3crect id='Rectangle-68-Copy-7' fill='%23414141' opacity='0.149055504' x='3' y='3' width='70' height='70' rx='3'%3e%3c/rect%3e %3cuse id='Rectangle-68' stroke='%23636363' mask='url(%23mask-2)' stroke-width='5' stroke-linecap='round' stroke-linejoin='round' fill='white' xlink:href='%23path-1'%3e%3c/use%3e %3cg id='Group-9' transform='translate(7.000000%2c 8.000000)'%3e %3cpath d='M12.7087955%2c2.76166786 L41.7087955%2c2.76166786 L12.7087955%2c2.76166786 Z' id='Path-41' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round' transform='translate(27.208795%2c 2.761668) scale(-1%2c 1) translate(-27.208795%2c -2.761668) '%3e%3c/path%3e %3cg id='Group-7'%3e %3cpath d='M31.3359142%2c55.5629258 C44.9723574%2c55.5629258 56.0268789%2c44.5084044 56.0268789%2c30.8719611 C56.0268789%2c17.2355178 44.9723574%2c6.18099642 31.3359142%2c6.18099642 C17.6994709%2c6.18099642 6.6449495%2c17.2355178 6.6449495%2c30.8719611 C6.6449495%2c44.5084044 17.6994709%2c55.5629258 31.3359142%2c55.5629258 Z' id='Oval-31-Copy-5' fill='%23414141' opacity='0.149055504'%3e%3c/path%3e %3cpath d='M28.3359142%2c52.5629258 C41.9723574%2c52.5629258 53.0268789%2c41.5084044 53.0268789%2c27.8719611 C53.0268789%2c14.2355178 41.9723574%2c3.18099642 28.3359142%2c3.18099642 C14.6994709%2c3.18099642 3.6449495%2c14.2355178 3.6449495%2c27.8719611 C3.6449495%2c41.5084044 14.6994709%2c52.5629258 28.3359142%2c52.5629258 Z' id='Oval-31' stroke='%23636363' stroke-width='2.5' fill='white'%3e%3c/path%3e %3cpath d='M23.0794925%2c7.04758997 C16.7071225%2c8.74491579 11.6454525%2c12.970402 8.98981238%2c18.4999219' id='Path-21' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round'%3e%3c/path%3e %3cellipse id='Oval-32' fill='%23F3A5A5' cx='40.8211184' cy='28.6625021' rx='3.57559958' ry='2.31226622'%3e%3c/ellipse%3e %3cellipse id='Oval-32' fill='%23F3A5A5' cx='17.5314022' cy='28.4940298' rx='3.57559958' ry='2.31226622'%3e%3c/ellipse%3e %3cpath d='M39.3706572%2c27 L68.3706572%2c27 L39.3706572%2c27 Z' id='Path-41' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round' transform='translate(53.870657%2c 27.000000) rotate(-270.000000) translate(-53.870657%2c -27.000000) '%3e%3c/path%3e %3cpath d='M52.4161117%2c26.882831 C53.1433844%2c26.1555583 54.5979299%2c26.1555583 55.3252026%2c26.882831 C56.0524753%2c27.6101037 56.0524753%2c29.0646492 55.3252026%2c29.7919219 C54.5979299%2c30.5191946 53.1433844%2c30.5191946 52.4161117%2c29.7919219 C51.688839%2c29.0646492 51.688839%2c27.6101037 52.4161117%2c26.882831 Z' id='Rectangle-30' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round' fill='white' transform='translate(53.870657%2c 28.337376) rotate(-270.000000) translate(-53.870657%2c -28.337376) '%3e%3c/path%3e %3cpath d='M52.4161117%2c11.882831 C53.1433844%2c11.1555583 54.5979299%2c11.1555583 55.3252026%2c11.882831 C56.0524753%2c12.6101037 56.0524753%2c14.0646492 55.3252026%2c14.7919219 C54.5979299%2c15.5191946 53.1433844%2c15.5191946 52.4161117%2c14.7919219 C51.688839%2c14.0646492 51.688839%2c12.6101037 52.4161117%2c11.882831 Z' id='Rectangle-30' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round' fill='white' transform='translate(53.870657%2c 13.337376) rotate(-270.000000) translate(-53.870657%2c -13.337376) '%3e%3c/path%3e %3cpath d='M52.4161117%2c41.882831 C53.1433844%2c41.1555583 54.5979299%2c41.1555583 55.3252026%2c41.882831 C56.0524753%2c42.6101037 56.0524753%2c44.0646492 55.3252026%2c44.7919219 C54.5979299%2c45.5191946 53.1433844%2c45.5191946 52.4161117%2c44.7919219 C51.688839%2c44.0646492 51.688839%2c42.6101037 52.4161117%2c41.882831 Z' id='Rectangle-30' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round' fill='white' transform='translate(53.870657%2c 43.337376) rotate(-270.000000) translate(-53.870657%2c -43.337376) '%3e%3c/path%3e %3cpath d='M-11.6293428%2c27 L17.3706572%2c27 L-11.6293428%2c27 Z' id='Path-41' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round' transform='translate(2.870657%2c 27.000000) rotate(-270.000000) translate(-2.870657%2c -27.000000) '%3e%3c/path%3e %3cpath d='M1.4161117%2c26.882831 C2.14338442%2c26.1555583 3.59792988%2c26.1555583 4.32520261%2c26.882831 C5.05247533%2c27.6101037 5.05247533%2c29.0646492 4.32520261%2c29.7919219 C3.59792988%2c30.5191946 2.14338442%2c30.5191946 1.4161117%2c29.7919219 C0.688838969%2c29.0646492 0.688838969%2c27.6101037 1.4161117%2c26.882831 Z' id='Rectangle-30' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round' fill='white' transform='translate(2.870657%2c 28.337376) rotate(-270.000000) translate(-2.870657%2c -28.337376) '%3e%3c/path%3e %3cpath d='M1.4161117%2c11.882831 C2.14338442%2c11.1555583 3.59792988%2c11.1555583 4.32520261%2c11.882831 C5.05247533%2c12.6101037 5.05247533%2c14.0646492 4.32520261%2c14.7919219 C3.59792988%2c15.5191946 2.14338442%2c15.5191946 1.4161117%2c14.7919219 C0.688838969%2c14.0646492 0.688838969%2c12.6101037 1.4161117%2c11.882831 Z' id='Rectangle-30' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round' fill='white' transform='translate(2.870657%2c 13.337376) rotate(-270.000000) translate(-2.870657%2c -13.337376) '%3e%3c/path%3e %3cpath d='M1.4161117%2c41.882831 C2.14338442%2c41.1555583 3.59792988%2c41.1555583 4.32520261%2c41.882831 C5.05247533%2c42.6101037 5.05247533%2c44.0646492 4.32520261%2c44.7919219 C3.59792988%2c45.5191946 2.14338442%2c45.5191946 1.4161117%2c44.7919219 C0.688838969%2c44.0646492 0.688838969%2c42.6101037 1.4161117%2c41.882831 Z' id='Rectangle-30' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round' fill='white' transform='translate(2.870657%2c 43.337376) rotate(-270.000000) translate(-2.870657%2c -43.337376) '%3e%3c/path%3e %3cpath d='M12.7087955%2c52.7616679 L41.7087955%2c52.7616679 L12.7087955%2c52.7616679 Z' id='Path-41' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round' transform='translate(27.208795%2c 52.761668) scale(-1%2c 1) translate(-27.208795%2c -52.761668) '%3e%3c/path%3e %3cpath d='M26.794633%2c51.3071224 C27.5219057%2c50.5798497 28.9764511%2c50.5798497 29.7037239%2c51.3071224 C30.4309966%2c52.0343951 30.4309966%2c53.4889406 29.7037239%2c54.2162133 C28.9764511%2c54.943486 27.5219057%2c54.943486 26.794633%2c54.2162133 C26.0673602%2c53.4889406 26.0673602%2c52.0343951 26.794633%2c51.3071224 Z' id='Rectangle-30' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round' fill='white' transform='translate(28.249178%2c 52.761668) scale(-1%2c 1) translate(-28.249178%2c -52.761668) '%3e%3c/path%3e %3cpath d='M41.79675%2c51.3071224 C42.5240228%2c50.5798497 43.9785682%2c50.5798497 44.7058409%2c51.3071224 C45.4331137%2c52.0343951 45.4331137%2c53.4889406 44.7058409%2c54.2162133 C43.9785682%2c54.943486 42.5240228%2c54.943486 41.79675%2c54.2162133 C41.0694773%2c53.4889406 41.0694773%2c52.0343951 41.79675%2c51.3071224 Z' id='Rectangle-30' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round' fill='white' transform='translate(43.251295%2c 52.761668) scale(-1%2c 1) translate(-43.251295%2c -52.761668) '%3e%3c/path%3e %3cpath d='M10.79675%2c51.3071224 C11.5240228%2c50.5798497 12.9785682%2c50.5798497 13.7058409%2c51.3071224 C14.4331137%2c52.0343951 14.4331137%2c53.4889406 13.7058409%2c54.2162133 C12.9785682%2c54.943486 11.5240228%2c54.943486 10.79675%2c54.2162133 C10.0694773%2c53.4889406 10.0694773%2c52.0343951 10.79675%2c51.3071224 Z' id='Rectangle-30' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round' fill='white' transform='translate(12.251295%2c 52.761668) scale(-1%2c 1) translate(-12.251295%2c -52.761668) '%3e%3c/path%3e %3cpath d='M26.794633%2c1.30712241 C27.5219057%2c0.579849678 28.9764511%2c0.579849678 29.7037239%2c1.30712241 C30.4309966%2c2.03439513 30.4309966%2c3.48894059 29.7037239%2c4.21621331 C28.9764511%2c4.94348604 27.5219057%2c4.94348604 26.794633%2c4.21621331 C26.0673602%2c3.48894059 26.0673602%2c2.03439513 26.794633%2c1.30712241 Z' id='Rectangle-30' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round' fill='white' transform='translate(28.249178%2c 2.761668) scale(-1%2c 1) translate(-28.249178%2c -2.761668) '%3e%3c/path%3e %3cpath d='M41.79675%2c1.30712241 C42.5240228%2c0.579849678 43.9785682%2c0.579849678 44.7058409%2c1.30712241 C45.4331137%2c2.03439513 45.4331137%2c3.48894059 44.7058409%2c4.21621331 C43.9785682%2c4.94348604 42.5240228%2c4.94348604 41.79675%2c4.21621331 C41.0694773%2c3.48894059 41.0694773%2c2.03439513 41.79675%2c1.30712241 Z' id='Rectangle-30' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round' fill='white' transform='translate(43.251295%2c 2.761668) scale(-1%2c 1) translate(-43.251295%2c -2.761668) '%3e%3c/path%3e %3cpath d='M10.79675%2c1.30712241 C11.5240228%2c0.579849678 12.9785682%2c0.579849678 13.7058409%2c1.30712241 C14.4331137%2c2.03439513 14.4331137%2c3.48894059 13.7058409%2c4.21621331 C12.9785682%2c4.94348604 11.5240228%2c4.94348604 10.79675%2c4.21621331 C10.0694773%2c3.48894059 10.0694773%2c2.03439513 10.79675%2c1.30712241 Z' id='Rectangle-30' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round' fill='white' transform='translate(12.251295%2c 2.761668) scale(-1%2c 1) translate(-12.251295%2c -2.761668) '%3e%3c/path%3e %3cpath d='M26.8573052%2c31.9032203 C26.8573052%2c30.8244029 27.715362%2c29.7537529 29.1641302%2c29.753753 C30.6128985%2c29.753753 31.4952154%2c30.8648768 31.4952154%2c31.9845914' id='Path-185-Copy' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round' transform='translate(29.176260%2c 30.869172) rotate(-180.000000) translate(-29.176260%2c -30.869172) '%3e%3c/path%3e %3cpath d='M17.7408648%2c25.0760063 C17.7408648%2c25.0760063 17.4799907%2c21.5368219 20.2364086%2c21.5368221 C22.780818%2c21.5368223 22.7319523%2c25.0760063 22.7319523%2c25.0760063' id='Path-71-Copy-2' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round'%3e%3c/path%3e %3cpath d='M35.0054141%2c25.0760063 C35.0054141%2c25.0760063 34.74454%2c21.5368219 37.5009578%2c21.5368221 C40.0453672%2c21.5368223 39.9965015%2c25.0760063 39.9965015%2c25.0760063' id='Path-71-Copy' stroke='%23636363' stroke-linecap='round' stroke-linejoin='round'%3e%3c/path%3e %3c/g%3e %3c/g%3e %3c/g%3e %3c/g%3e %3c/g%3e %3c/svg%3e"`;
66 |
67 | exports[`"generator" option should work with "Function" mini-svg-data-uri generator: warnings 1`] = `Array []`;
68 |
69 | exports[`"generator" option should work with unspecified value with the default base64 encoding: assets 1`] = `
70 | Array [
71 | "main.bundle.js",
72 | ]
73 | `;
74 |
75 | exports[`"generator" option should work with unspecified value with the default base64 encoding: errors 1`] = `Array []`;
76 |
77 | exports[`"generator" option should work with unspecified value with the default base64 encoding: result 1`] = `"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9Ijc1cHgiIGhlaWdodD0iNzVweCIgdmlld0JveD0iMCAwIDc1IDc1IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCAzLjcuMSAoMjgyMTUpIC0gaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoIC0tPgogICAgPHRpdGxlPm1vY2hpPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGRlZnM+CiAgICAgICAgPHJlY3QgaWQ9InBhdGgtMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjcwIiBoZWlnaHQ9IjcwIiByeD0iMyI+PC9yZWN0PgogICAgICAgIDxtYXNrIGlkPSJtYXNrLTIiIG1hc2tDb250ZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBtYXNrVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIwIiB5PSIwIiB3aWR0aD0iNzAiIGhlaWdodD0iNzAiIGZpbGw9IndoaXRlIj4KICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICA8L21hc2s+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ibW9jaGkiPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuMDAwMDAwLCAxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZS02OC1Db3B5LTciIGZpbGw9IiM0MTQxNDEiIG9wYWNpdHk9IjAuMTQ5MDU1NTA0IiB4PSIzIiB5PSIzIiB3aWR0aD0iNzAiIGhlaWdodD0iNzAiIHJ4PSIzIj48L3JlY3Q+CiAgICAgICAgICAgICAgICA8dXNlIGlkPSJSZWN0YW5nbGUtNjgiIHN0cm9rZT0iIzYzNjM2MyIgbWFzaz0idXJsKCNtYXNrLTIpIiBzdHJva2Utd2lkdGg9IjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsbD0iI0ZGRkZGRiIgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+CiAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtOSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNy4wMDAwMDAsIDguMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEyLjcwODc5NTUsMi43NjE2Njc4NiBMNDEuNzA4Nzk1NSwyLjc2MTY2Nzg2IEwxMi43MDg3OTU1LDIuNzYxNjY3ODYgWiIgaWQ9IlBhdGgtNDEiIHN0cm9rZT0iIzYzNjM2MyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNy4yMDg3OTUsIDIuNzYxNjY4KSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC0yNy4yMDg3OTUsIC0yLjc2MTY2OCkgIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwLTciPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMzEuMzM1OTE0Miw1NS41NjI5MjU4IEM0NC45NzIzNTc0LDU1LjU2MjkyNTggNTYuMDI2ODc4OSw0NC41MDg0MDQ0IDU2LjAyNjg3ODksMzAuODcxOTYxMSBDNTYuMDI2ODc4OSwxNy4yMzU1MTc4IDQ0Ljk3MjM1NzQsNi4xODA5OTY0MiAzMS4zMzU5MTQyLDYuMTgwOTk2NDIgQzE3LjY5OTQ3MDksNi4xODA5OTY0MiA2LjY0NDk0OTUsMTcuMjM1NTE3OCA2LjY0NDk0OTUsMzAuODcxOTYxMSBDNi42NDQ5NDk1LDQ0LjUwODQwNDQgMTcuNjk5NDcwOSw1NS41NjI5MjU4IDMxLjMzNTkxNDIsNTUuNTYyOTI1OCBaIiBpZD0iT3ZhbC0zMS1Db3B5LTUiIGZpbGw9IiM0MTQxNDEiIG9wYWNpdHk9IjAuMTQ5MDU1NTA0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4zMzU5MTQyLDUyLjU2MjkyNTggQzQxLjk3MjM1NzQsNTIuNTYyOTI1OCA1My4wMjY4Nzg5LDQxLjUwODQwNDQgNTMuMDI2ODc4OSwyNy44NzE5NjExIEM1My4wMjY4Nzg5LDE0LjIzNTUxNzggNDEuOTcyMzU3NCwzLjE4MDk5NjQyIDI4LjMzNTkxNDIsMy4xODA5OTY0MiBDMTQuNjk5NDcwOSwzLjE4MDk5NjQyIDMuNjQ0OTQ5NSwxNC4yMzU1MTc4IDMuNjQ0OTQ5NSwyNy44NzE5NjExIEMzLjY0NDk0OTUsNDEuNTA4NDA0NCAxNC42OTk0NzA5LDUyLjU2MjkyNTggMjguMzM1OTE0Miw1Mi41NjI5MjU4IFoiIGlkPSJPdmFsLTMxIiBzdHJva2U9IiM2MzYzNjMiIHN0cm9rZS13aWR0aD0iMi41IiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4wNzk0OTI1LDcuMDQ3NTg5OTcgQzE2LjcwNzEyMjUsOC43NDQ5MTU3OSAxMS42NDU0NTI1LDEyLjk3MDQwMiA4Ljk4OTgxMjM4LDE4LjQ5OTkyMTkiIGlkPSJQYXRoLTIxIiBzdHJva2U9IiM2MzYzNjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8ZWxsaXBzZSBpZD0iT3ZhbC0zMiIgZmlsbD0iI0YzQTVBNSIgY3g9IjQwLjgyMTExODQiIGN5PSIyOC42NjI1MDIxIiByeD0iMy41NzU1OTk1OCIgcnk9IjIuMzEyMjY2MjIiPjwvZWxsaXBzZT4KICAgICAgICAgICAgICAgICAgICAgICAgPGVsbGlwc2UgaWQ9Ik92YWwtMzIiIGZpbGw9IiNGM0E1QTUiIGN4PSIxNy41MzE0MDIyIiBjeT0iMjguNDk0MDI5OCIgcng9IjMuNTc1NTk5NTgiIHJ5PSIyLjMxMjI2NjIyIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOS4zNzA2NTcyLDI3IEw2OC4zNzA2NTcyLDI3IEwzOS4zNzA2NTcyLDI3IFoiIGlkPSJQYXRoLTQxIiBzdHJva2U9IiM2MzYzNjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTMuODcwNjU3LCAyNy4wMDAwMDApIHJvdGF0ZSgtMjcwLjAwMDAwMCkgdHJhbnNsYXRlKC01My44NzA2NTcsIC0yNy4wMDAwMDApICI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNTIuNDE2MTExNywyNi44ODI4MzEgQzUzLjE0MzM4NDQsMjYuMTU1NTU4MyA1NC41OTc5Mjk5LDI2LjE1NTU1ODMgNTUuMzI1MjAyNiwyNi44ODI4MzEgQzU2LjA1MjQ3NTMsMjcuNjEwMTAzNyA1Ni4wNTI0NzUzLDI5LjA2NDY0OTIgNTUuMzI1MjAyNiwyOS43OTE5MjE5IEM1NC41OTc5Mjk5LDMwLjUxOTE5NDYgNTMuMTQzMzg0NCwzMC41MTkxOTQ2IDUyLjQxNjExMTcsMjkuNzkxOTIxOSBDNTEuNjg4ODM5LDI5LjA2NDY0OTIgNTEuNjg4ODM5LDI3LjYxMDEwMzcgNTIuNDE2MTExNywyNi44ODI4MzEgWiIgaWQ9IlJlY3RhbmdsZS0zMCIgc3Ryb2tlPSIjNjM2MzYzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGw9IiNGRkZGRkYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUzLjg3MDY1NywgMjguMzM3Mzc2KSByb3RhdGUoLTI3MC4wMDAwMDApIHRyYW5zbGF0ZSgtNTMuODcwNjU3LCAtMjguMzM3Mzc2KSAiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTUyLjQxNjExMTcsMTEuODgyODMxIEM1My4xNDMzODQ0LDExLjE1NTU1ODMgNTQuNTk3OTI5OSwxMS4xNTU1NTgzIDU1LjMyNTIwMjYsMTEuODgyODMxIEM1Ni4wNTI0NzUzLDEyLjYxMDEwMzcgNTYuMDUyNDc1MywxNC4wNjQ2NDkyIDU1LjMyNTIwMjYsMTQuNzkxOTIxOSBDNTQuNTk3OTI5OSwxNS41MTkxOTQ2IDUzLjE0MzM4NDQsMTUuNTE5MTk0NiA1Mi40MTYxMTE3LDE0Ljc5MTkyMTkgQzUxLjY4ODgzOSwxNC4wNjQ2NDkyIDUxLjY4ODgzOSwxMi42MTAxMDM3IDUyLjQxNjExMTcsMTEuODgyODMxIFoiIGlkPSJSZWN0YW5nbGUtMzAiIHN0cm9rZT0iIzYzNjM2MyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBmaWxsPSIjRkZGRkZGIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1My44NzA2NTcsIDEzLjMzNzM3Nikgcm90YXRlKC0yNzAuMDAwMDAwKSB0cmFuc2xhdGUoLTUzLjg3MDY1NywgLTEzLjMzNzM3NikgIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Mi40MTYxMTE3LDQxLjg4MjgzMSBDNTMuMTQzMzg0NCw0MS4xNTU1NTgzIDU0LjU5NzkyOTksNDEuMTU1NTU4MyA1NS4zMjUyMDI2LDQxLjg4MjgzMSBDNTYuMDUyNDc1Myw0Mi42MTAxMDM3IDU2LjA1MjQ3NTMsNDQuMDY0NjQ5MiA1NS4zMjUyMDI2LDQ0Ljc5MTkyMTkgQzU0LjU5NzkyOTksNDUuNTE5MTk0NiA1My4xNDMzODQ0LDQ1LjUxOTE5NDYgNTIuNDE2MTExNyw0NC43OTE5MjE5IEM1MS42ODg4MzksNDQuMDY0NjQ5MiA1MS42ODg4MzksNDIuNjEwMTAzNyA1Mi40MTYxMTE3LDQxLjg4MjgzMSBaIiBpZD0iUmVjdGFuZ2xlLTMwIiBzdHJva2U9IiM2MzYzNjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsbD0iI0ZGRkZGRiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTMuODcwNjU3LCA0My4zMzczNzYpIHJvdGF0ZSgtMjcwLjAwMDAwMCkgdHJhbnNsYXRlKC01My44NzA2NTcsIC00My4zMzczNzYpICI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNLTExLjYyOTM0MjgsMjcgTDE3LjM3MDY1NzIsMjcgTC0xMS42MjkzNDI4LDI3IFoiIGlkPSJQYXRoLTQxIiBzdHJva2U9IiM2MzYzNjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMi44NzA2NTcsIDI3LjAwMDAwMCkgcm90YXRlKC0yNzAuMDAwMDAwKSB0cmFuc2xhdGUoLTIuODcwNjU3LCAtMjcuMDAwMDAwKSAiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEuNDE2MTExNywyNi44ODI4MzEgQzIuMTQzMzg0NDIsMjYuMTU1NTU4MyAzLjU5NzkyOTg4LDI2LjE1NTU1ODMgNC4zMjUyMDI2MSwyNi44ODI4MzEgQzUuMDUyNDc1MzMsMjcuNjEwMTAzNyA1LjA1MjQ3NTMzLDI5LjA2NDY0OTIgNC4zMjUyMDI2MSwyOS43OTE5MjE5IEMzLjU5NzkyOTg4LDMwLjUxOTE5NDYgMi4xNDMzODQ0MiwzMC41MTkxOTQ2IDEuNDE2MTExNywyOS43OTE5MjE5IEMwLjY4ODgzODk2OSwyOS4wNjQ2NDkyIDAuNjg4ODM4OTY5LDI3LjYxMDEwMzcgMS40MTYxMTE3LDI2Ljg4MjgzMSBaIiBpZD0iUmVjdGFuZ2xlLTMwIiBzdHJva2U9IiM2MzYzNjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsbD0iI0ZGRkZGRiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMi44NzA2NTcsIDI4LjMzNzM3Nikgcm90YXRlKC0yNzAuMDAwMDAwKSB0cmFuc2xhdGUoLTIuODcwNjU3LCAtMjguMzM3Mzc2KSAiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEuNDE2MTExNywxMS44ODI4MzEgQzIuMTQzMzg0NDIsMTEuMTU1NTU4MyAzLjU5NzkyOTg4LDExLjE1NTU1ODMgNC4zMjUyMDI2MSwxMS44ODI4MzEgQzUuMDUyNDc1MzMsMTIuNjEwMTAzNyA1LjA1MjQ3NTMzLDE0LjA2NDY0OTIgNC4zMjUyMDI2MSwxNC43OTE5MjE5IEMzLjU5NzkyOTg4LDE1LjUxOTE5NDYgMi4xNDMzODQ0MiwxNS41MTkxOTQ2IDEuNDE2MTExNywxNC43OTE5MjE5IEMwLjY4ODgzODk2OSwxNC4wNjQ2NDkyIDAuNjg4ODM4OTY5LDEyLjYxMDEwMzcgMS40MTYxMTE3LDExLjg4MjgzMSBaIiBpZD0iUmVjdGFuZ2xlLTMwIiBzdHJva2U9IiM2MzYzNjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsbD0iI0ZGRkZGRiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMi44NzA2NTcsIDEzLjMzNzM3Nikgcm90YXRlKC0yNzAuMDAwMDAwKSB0cmFuc2xhdGUoLTIuODcwNjU3LCAtMTMuMzM3Mzc2KSAiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEuNDE2MTExNyw0MS44ODI4MzEgQzIuMTQzMzg0NDIsNDEuMTU1NTU4MyAzLjU5NzkyOTg4LDQxLjE1NTU1ODMgNC4zMjUyMDI2MSw0MS44ODI4MzEgQzUuMDUyNDc1MzMsNDIuNjEwMTAzNyA1LjA1MjQ3NTMzLDQ0LjA2NDY0OTIgNC4zMjUyMDI2MSw0NC43OTE5MjE5IEMzLjU5NzkyOTg4LDQ1LjUxOTE5NDYgMi4xNDMzODQ0Miw0NS41MTkxOTQ2IDEuNDE2MTExNyw0NC43OTE5MjE5IEMwLjY4ODgzODk2OSw0NC4wNjQ2NDkyIDAuNjg4ODM4OTY5LDQyLjYxMDEwMzcgMS40MTYxMTE3LDQxLjg4MjgzMSBaIiBpZD0iUmVjdGFuZ2xlLTMwIiBzdHJva2U9IiM2MzYzNjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsbD0iI0ZGRkZGRiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMi44NzA2NTcsIDQzLjMzNzM3Nikgcm90YXRlKC0yNzAuMDAwMDAwKSB0cmFuc2xhdGUoLTIuODcwNjU3LCAtNDMuMzM3Mzc2KSAiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEyLjcwODc5NTUsNTIuNzYxNjY3OSBMNDEuNzA4Nzk1NSw1Mi43NjE2Njc5IEwxMi43MDg3OTU1LDUyLjc2MTY2NzkgWiIgaWQ9IlBhdGgtNDEiIHN0cm9rZT0iIzYzNjM2MyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNy4yMDg3OTUsIDUyLjc2MTY2OCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtMjcuMjA4Nzk1LCAtNTIuNzYxNjY4KSAiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljc5NDYzMyw1MS4zMDcxMjI0IEMyNy41MjE5MDU3LDUwLjU3OTg0OTcgMjguOTc2NDUxMSw1MC41Nzk4NDk3IDI5LjcwMzcyMzksNTEuMzA3MTIyNCBDMzAuNDMwOTk2Niw1Mi4wMzQzOTUxIDMwLjQzMDk5NjYsNTMuNDg4OTQwNiAyOS43MDM3MjM5LDU0LjIxNjIxMzMgQzI4Ljk3NjQ1MTEsNTQuOTQzNDg2IDI3LjUyMTkwNTcsNTQuOTQzNDg2IDI2Ljc5NDYzMyw1NC4yMTYyMTMzIEMyNi4wNjczNjAyLDUzLjQ4ODk0MDYgMjYuMDY3MzYwMiw1Mi4wMzQzOTUxIDI2Ljc5NDYzMyw1MS4zMDcxMjI0IFoiIGlkPSJSZWN0YW5nbGUtMzAiIHN0cm9rZT0iIzYzNjM2MyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBmaWxsPSIjRkZGRkZGIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyOC4yNDkxNzgsIDUyLjc2MTY2OCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtMjguMjQ5MTc4LCAtNTIuNzYxNjY4KSAiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQxLjc5Njc1LDUxLjMwNzEyMjQgQzQyLjUyNDAyMjgsNTAuNTc5ODQ5NyA0My45Nzg1NjgyLDUwLjU3OTg0OTcgNDQuNzA1ODQwOSw1MS4zMDcxMjI0IEM0NS40MzMxMTM3LDUyLjAzNDM5NTEgNDUuNDMzMTEzNyw1My40ODg5NDA2IDQ0LjcwNTg0MDksNTQuMjE2MjEzMyBDNDMuOTc4NTY4Miw1NC45NDM0ODYgNDIuNTI0MDIyOCw1NC45NDM0ODYgNDEuNzk2NzUsNTQuMjE2MjEzMyBDNDEuMDY5NDc3Myw1My40ODg5NDA2IDQxLjA2OTQ3NzMsNTIuMDM0Mzk1MSA0MS43OTY3NSw1MS4zMDcxMjI0IFoiIGlkPSJSZWN0YW5nbGUtMzAiIHN0cm9rZT0iIzYzNjM2MyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBmaWxsPSIjRkZGRkZGIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0My4yNTEyOTUsIDUyLjc2MTY2OCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtNDMuMjUxMjk1LCAtNTIuNzYxNjY4KSAiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEwLjc5Njc1LDUxLjMwNzEyMjQgQzExLjUyNDAyMjgsNTAuNTc5ODQ5NyAxMi45Nzg1NjgyLDUwLjU3OTg0OTcgMTMuNzA1ODQwOSw1MS4zMDcxMjI0IEMxNC40MzMxMTM3LDUyLjAzNDM5NTEgMTQuNDMzMTEzNyw1My40ODg5NDA2IDEzLjcwNTg0MDksNTQuMjE2MjEzMyBDMTIuOTc4NTY4Miw1NC45NDM0ODYgMTEuNTI0MDIyOCw1NC45NDM0ODYgMTAuNzk2NzUsNTQuMjE2MjEzMyBDMTAuMDY5NDc3Myw1My40ODg5NDA2IDEwLjA2OTQ3NzMsNTIuMDM0Mzk1MSAxMC43OTY3NSw1MS4zMDcxMjI0IFoiIGlkPSJSZWN0YW5nbGUtMzAiIHN0cm9rZT0iIzYzNjM2MyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBmaWxsPSIjRkZGRkZGIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMi4yNTEyOTUsIDUyLjc2MTY2OCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtMTIuMjUxMjk1LCAtNTIuNzYxNjY4KSAiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljc5NDYzMywxLjMwNzEyMjQxIEMyNy41MjE5MDU3LDAuNTc5ODQ5Njc4IDI4Ljk3NjQ1MTEsMC41Nzk4NDk2NzggMjkuNzAzNzIzOSwxLjMwNzEyMjQxIEMzMC40MzA5OTY2LDIuMDM0Mzk1MTMgMzAuNDMwOTk2NiwzLjQ4ODk0MDU5IDI5LjcwMzcyMzksNC4yMTYyMTMzMSBDMjguOTc2NDUxMSw0Ljk0MzQ4NjA0IDI3LjUyMTkwNTcsNC45NDM0ODYwNCAyNi43OTQ2MzMsNC4yMTYyMTMzMSBDMjYuMDY3MzYwMiwzLjQ4ODk0MDU5IDI2LjA2NzM2MDIsMi4wMzQzOTUxMyAyNi43OTQ2MzMsMS4zMDcxMjI0MSBaIiBpZD0iUmVjdGFuZ2xlLTMwIiBzdHJva2U9IiM2MzYzNjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsbD0iI0ZGRkZGRiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjguMjQ5MTc4LCAyLjc2MTY2OCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtMjguMjQ5MTc4LCAtMi43NjE2NjgpICI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEuNzk2NzUsMS4zMDcxMjI0MSBDNDIuNTI0MDIyOCwwLjU3OTg0OTY3OCA0My45Nzg1NjgyLDAuNTc5ODQ5Njc4IDQ0LjcwNTg0MDksMS4zMDcxMjI0MSBDNDUuNDMzMTEzNywyLjAzNDM5NTEzIDQ1LjQzMzExMzcsMy40ODg5NDA1OSA0NC43MDU4NDA5LDQuMjE2MjEzMzEgQzQzLjk3ODU2ODIsNC45NDM0ODYwNCA0Mi41MjQwMjI4LDQuOTQzNDg2MDQgNDEuNzk2NzUsNC4yMTYyMTMzMSBDNDEuMDY5NDc3MywzLjQ4ODk0MDU5IDQxLjA2OTQ3NzMsMi4wMzQzOTUxMyA0MS43OTY3NSwxLjMwNzEyMjQxIFoiIGlkPSJSZWN0YW5nbGUtMzAiIHN0cm9rZT0iIzYzNjM2MyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBmaWxsPSIjRkZGRkZGIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0My4yNTEyOTUsIDIuNzYxNjY4KSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC00My4yNTEyOTUsIC0yLjc2MTY2OCkgIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC43OTY3NSwxLjMwNzEyMjQxIEMxMS41MjQwMjI4LDAuNTc5ODQ5Njc4IDEyLjk3ODU2ODIsMC41Nzk4NDk2NzggMTMuNzA1ODQwOSwxLjMwNzEyMjQxIEMxNC40MzMxMTM3LDIuMDM0Mzk1MTMgMTQuNDMzMTEzNywzLjQ4ODk0MDU5IDEzLjcwNTg0MDksNC4yMTYyMTMzMSBDMTIuOTc4NTY4Miw0Ljk0MzQ4NjA0IDExLjUyNDAyMjgsNC45NDM0ODYwNCAxMC43OTY3NSw0LjIxNjIxMzMxIEMxMC4wNjk0NzczLDMuNDg4OTQwNTkgMTAuMDY5NDc3MywyLjAzNDM5NTEzIDEwLjc5Njc1LDEuMzA3MTIyNDEgWiIgaWQ9IlJlY3RhbmdsZS0zMCIgc3Ryb2tlPSIjNjM2MzYzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGw9IiNGRkZGRkYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyLjI1MTI5NSwgMi43NjE2NjgpIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTEyLjI1MTI5NSwgLTIuNzYxNjY4KSAiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1NzMwNTIsMzEuOTAzMjIwMyBDMjYuODU3MzA1MiwzMC44MjQ0MDI5IDI3LjcxNTM2MiwyOS43NTM3NTI5IDI5LjE2NDEzMDIsMjkuNzUzNzUzIEMzMC42MTI4OTg1LDI5Ljc1Mzc1MyAzMS40OTUyMTU0LDMwLjg2NDg3NjggMzEuNDk1MjE1NCwzMS45ODQ1OTE0IiBpZD0iUGF0aC0xODUtQ29weSIgc3Ryb2tlPSIjNjM2MzYzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI5LjE3NjI2MCwgMzAuODY5MTcyKSByb3RhdGUoLTE4MC4wMDAwMDApIHRyYW5zbGF0ZSgtMjkuMTc2MjYwLCAtMzAuODY5MTcyKSAiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE3Ljc0MDg2NDgsMjUuMDc2MDA2MyBDMTcuNzQwODY0OCwyNS4wNzYwMDYzIDE3LjQ3OTk5MDcsMjEuNTM2ODIxOSAyMC4yMzY0MDg2LDIxLjUzNjgyMjEgQzIyLjc4MDgxOCwyMS41MzY4MjIzIDIyLjczMTk1MjMsMjUuMDc2MDA2MyAyMi43MzE5NTIzLDI1LjA3NjAwNjMiIGlkPSJQYXRoLTcxLUNvcHktMiIgc3Ryb2tlPSIjNjM2MzYzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTM1LjAwNTQxNDEsMjUuMDc2MDA2MyBDMzUuMDA1NDE0MSwyNS4wNzYwMDYzIDM0Ljc0NDU0LDIxLjUzNjgyMTkgMzcuNTAwOTU3OCwyMS41MzY4MjIxIEM0MC4wNDUzNjcyLDIxLjUzNjgyMjMgMzkuOTk2NTAxNSwyNS4wNzYwMDYzIDM5Ljk5NjUwMTUsMjUuMDc2MDA2MyIgaWQ9IlBhdGgtNzEtQ29weSIgc3Ryb2tlPSIjNjM2MzYzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="`;
78 |
79 | exports[`"generator" option should work with unspecified value with the default base64 encoding: warnings 1`] = `Array []`;
80 |
--------------------------------------------------------------------------------
/test/__snapshots__/mimetype-option.test.js.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`"mimetype" option should work for unknown mimetype when value is false and encoding is false: assets 1`] = `
4 | Array [
5 | "main.bundle.js",
6 | ]
7 | `;
8 |
9 | exports[`"mimetype" option should work for unknown mimetype when value is false and encoding is false: errors 1`] = `Array []`;
10 |
11 | exports[`"mimetype" option should work for unknown mimetype when value is false and encoding is false: result 1`] = `
12 | "data:,test
13 | "
14 | `;
15 |
16 | exports[`"mimetype" option should work for unknown mimetype when value is false and encoding is false: warnings 1`] = `Array []`;
17 |
18 | exports[`"mimetype" option should work for unknown mimetype when value is true and encoding is true: assets 1`] = `
19 | Array [
20 | "main.bundle.js",
21 | ]
22 | `;
23 |
24 | exports[`"mimetype" option should work for unknown mimetype when value is true and encoding is true: errors 1`] = `Array []`;
25 |
26 | exports[`"mimetype" option should work for unknown mimetype when value is true and encoding is true: result 1`] = `"data:;base64,dGVzdAo="`;
27 |
28 | exports[`"mimetype" option should work for unknown mimetype when value is true and encoding is true: warnings 1`] = `Array []`;
29 |
30 | exports[`"mimetype" option should work for unknown mimetype when value is true: assets 1`] = `
31 | Array [
32 | "main.bundle.js",
33 | ]
34 | `;
35 |
36 | exports[`"mimetype" option should work for unknown mimetype when value is true: errors 1`] = `Array []`;
37 |
38 | exports[`"mimetype" option should work for unknown mimetype when value is true: result 1`] = `"data:;base64,dGVzdAo="`;
39 |
40 | exports[`"mimetype" option should work for unknown mimetype when value is true: warnings 1`] = `Array []`;
41 |
42 | exports[`"mimetype" option should work for unknown mimetype: assets 1`] = `
43 | Array [
44 | "main.bundle.js",
45 | ]
46 | `;
47 |
48 | exports[`"mimetype" option should work for unknown mimetype: errors 1`] = `Array []`;
49 |
50 | exports[`"mimetype" option should work for unknown mimetype: result 1`] = `"data:;base64,dGVzdAo="`;
51 |
52 | exports[`"mimetype" option should work for unknown mimetype: warnings 1`] = `Array []`;
53 |
54 | exports[`"mimetype" option should work with "Boolean" false: assets 1`] = `
55 | Array [
56 | "main.bundle.js",
57 | ]
58 | `;
59 |
60 | exports[`"mimetype" option should work with "Boolean" false: errors 1`] = `Array []`;
61 |
62 | exports[`"mimetype" option should work with "Boolean" false: result 1`] = `"data:;base64,PGgxPkhlbGxvLCBXb3JsZCEg0J/RgNC40LLQtdGCINC80LjRgCE8L2gxPgo="`;
63 |
64 | exports[`"mimetype" option should work with "Boolean" false: warnings 1`] = `Array []`;
65 |
66 | exports[`"mimetype" option should work with "Boolean" true: assets 1`] = `
67 | Array [
68 | "main.bundle.js",
69 | ]
70 | `;
71 |
72 | exports[`"mimetype" option should work with "Boolean" true: errors 1`] = `Array []`;
73 |
74 | exports[`"mimetype" option should work with "Boolean" true: result 1`] = `"data:text/html;charset=utf-8;base64,PGgxPkhlbGxvLCBXb3JsZCEg0J/RgNC40LLQtdGCINC80LjRgCE8L2gxPgo="`;
75 |
76 | exports[`"mimetype" option should work with "Boolean" true: warnings 1`] = `Array []`;
77 |
78 | exports[`"mimetype" option should work with "String" value equal to unknown/unknown: assets 1`] = `
79 | Array [
80 | "main.bundle.js",
81 | ]
82 | `;
83 |
84 | exports[`"mimetype" option should work with "String" value equal to unknown/unknown: errors 1`] = `Array []`;
85 |
86 | exports[`"mimetype" option should work with "String" value equal to unknown/unknown: result 1`] = `"data:unknown/unknown;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAAAXNSR0IArs4c6QAAGjNJREFUeAHtnQewFMXWx/uSxZxRUTGAAcyYnwpiJhgRFRCM6GeBZaklopaUWoUo9cwIqPhhAjGAWRQTRjAgijnnLOqnAgL3fv3rR+/r29uzO7t3e3Z2t0/V1uzM9Mx0n/nP6dPnnD4tRKDAgcCBwIFK4UCdq6JDhw5dZeHChRfKc4c2NDR0kNtWrnLhWE1woKGuru4X2dKX5fbym2666aU4rc4C1pAhQ/ZetmzZ7RJQG8W5QShTOxyQwKqXuPj3hhtueN7IkSPrc7W8uXny1FNPXa++vv55eXE783j4HziwnAMIoj3+T9Ibb7zxci6uNDNPSkk1VoJqdfNY+B84YHNAYuQyKYQ2s4+b+xlgyYJrSVHXxzwZ/gcORHCgjezZjos4pw630Cdlwa0kEjNA4/hqq60mLrzwQrXV5cK2tjggcSGmTp0qZs6caTe8s33A3DeBtLJ5gv8bbbRRAJXNlBrbb9asmejcORtDUm1q161bt8333XffDfr27buCzRYTWPa5sB84kJMDzZs3bybVpxV//fXXDQ8++OC1ZY+XsTIEYOVkXTgZlwP//PPP6gcddFBm4BeAFZdzoVxeDkh9bE3ZLSpjegBWXnaFAnE5IIFVJ7tFpasHYMXlWigXiwNS2W9NwQCsWOwKheJyoHXr1kqBD8CKy7FQriAOBGAVxK5QOC4HArDiciqUK4gDAVgFsSsUjsuBAKy4nArlCuJAAFZB7AqF43IgE90Q94JaKifdFGLRokVi6dKlolWrVqJNmzaiRYvAsjgYqFkuSe+8+OGHH8T333/f6LdgwQIFpsWLFwtCRmwCWNJWI1ZYYQWx1lpriXbt2jX6cSyQEDUDLOl5F19++aV4//331e/DDz8UgKdQQnrx++uvv8TPP/+s7mXeY9VVVxVbbLGF2HLLLdVvnXXWMU/XzP+qBhZgeu+998TLL78s5s2bJ/7++2/vL/b3338Xc+bMUT8etuaaa4qddtpJ7LHHHqJ9+/ben5+WB1QlsL799lvx0ksviVdeeUX89ttvZeX1L7/8Ip544gn1A1gAbNdddxVItmqmqgIW3dsjjzwi3nnnnZK8M3QprbBrRX7JkiVF3/vrr79WYb7333+/2G233cQhhxwiqrWrrApgzZ8/XwHqo48+Kuilr7zyyir8GgV83XXXVUo42xVXXFEp6DI6Mut+KP3oZnIGVCOln0EAOlwcvQ0d7YUXXlBStWvXrqJnz55igw02yHpWJR+oaGB99dVX4o477hCffPJJrHfASM5UrIvReWQ4rmjbtq36AcLtttsu82xA9+mnnyq9jkEC/wFRFDHqRB979dVXlQSTQXJilVVWiSpeUccrEljYlqZPny6efvppp0nAfAOYB7bddlul22yzzTYCYPgi7t2xY0f169Onj5BpChRoGDzkkqYMMvQA47DDDhPdu3cXLmnpq94+7ltxwOLrnjJlimD0lYvWW2890aNHD7Hzzjurri1XWV/nkJB77723+mGaYEDxzDPPqG7U9UxGrXfddZfqJgcNGiQ23nhjV7GKOFYxwEJ5vvPOO8WLL76Yk7FMWUMpZojv+urpPuX0cPHWW28pSXbooYfmvF+pTmI4RYrJCQfiueeeEzNmzIgcsaKrjRo1Shx55JFi//33L1UVEr1PRQAL88G4ceME2yhC+T3qqKME3Z1N2vzw+uuvi59++ilzGqU9acI1BFjo7lDgH3jgAacEQze7++67xQcffCBOOOGEskndYvmTemChe6CgR422MAcgCfbbbz/B5EqTGC0++eSTjcwPzO7eYYcdlERDkS8XofvJCZ+qq542bZqYNWuWU1988803xSWXXCJOO+00sckmm5SrugU/N9XAevjhh5WSHtUqhurHHHNMo9naKMLoMnQ1WsIBPgyTu+yyi9hss82cXWTUM3wfx7QxYMAAseeee6oP6Isvvsh6JEbWMWPGKHC5JHLWBSk4kEpgAY7JkyerUZ+LRxgueRm77757o9MYSLkOPQpaY401lAKPAo0inWZCGo0YMUJgPMVSDw9MQmJff/31AqWejyTtlDpgYQuSWePEa6+95uQduhTdAqM+TXzR99xzT+YaFOXDDz9cdTN296ivSeMWcwW2LLroiRMnij///LNRNeHNrbfeqnSyAw88sNG5tO2kClh8pTfeeKNAr3AREur4448XLVu2zJx+/vnnlZRi1IgkY0QI0ys5bgq728UXXyxuuOEG8fnnn2fayh94xEeEcVXmS2h0Lk07qQLWbbfdFgkqmMjwWxPGx0mTJmWkFL43vvZqce6uvvrq4txzzxVjx45tNPjQ7b/vvvuUlR7dLI2UGmAxMkL6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"`;
87 |
88 | exports[`"mimetype" option should work with "String" value equal to unknown/unknown: warnings 1`] = `Array []`;
89 |
90 | exports[`"mimetype" option should work with "String" value: assets 1`] = `
91 | Array [
92 | "main.bundle.js",
93 | ]
94 | `;
95 |
96 | exports[`"mimetype" option should work with "String" value: errors 1`] = `Array []`;
97 |
98 | exports[`"mimetype" option should work with "String" value: result 1`] = `"data:image/x-custom;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAAAXNSR0IArs4c6QAAGjNJREFUeAHtnQewFMXWx/uSxZxRUTGAAcyYnwpiJhgRFRCM6GeBZaklopaUWoUo9cwIqPhhAjGAWRQTRjAgijnnLOqnAgL3fv3rR+/r29uzO7t3e3Z2t0/V1uzM9Mx0n/nP6dPnnD4tRKDAgcCBwIFK4UCdq6JDhw5dZeHChRfKc4c2NDR0kNtWrnLhWE1woKGuru4X2dKX5fbym2666aU4rc4C1pAhQ/ZetmzZ7RJQG8W5QShTOxyQwKqXuPj3hhtueN7IkSPrc7W8uXny1FNPXa++vv55eXE783j4HziwnAMIoj3+T9Ibb7zxci6uNDNPSkk1VoJqdfNY+B84YHNAYuQyKYQ2s4+b+xlgyYJrSVHXxzwZ/gcORHCgjezZjos4pw630Cdlwa0kEjNA4/hqq60mLrzwQrXV5cK2tjggcSGmTp0qZs6caTe8s33A3DeBtLJ5gv8bbbRRAJXNlBrbb9asmejcORtDUm1q161bt8333XffDfr27buCzRYTWPa5sB84kJMDzZs3bybVpxV//fXXDQ8++OC1ZY+XsTIEYOVkXTgZlwP//PPP6gcddFBm4BeAFZdzoVxeDkh9bE3ZLSpjegBWXnaFAnE5IIFVJ7tFpasHYMXlWigXiwNS2W9NwQCsWOwKheJyoHXr1kqBD8CKy7FQriAOBGAVxK5QOC4HArDiciqUK4gDAVgFsSsUjsuBAKy4nArlCuJAAFZB7AqF43IgE90Q94JaKifdFGLRokVi6dKlolWrVqJNmzaiRYvAsjgYqFkuSe+8+OGHH8T333/f6LdgwQIFpsWLFwtCRmwCWNJWI1ZYYQWx1lpriXbt2jX6cSyQEDUDLOl5F19++aV4//331e/DDz8UgKdQQnrx++uvv8TPP/+s7mXeY9VVVxVbbLGF2HLLLdVvnXXWMU/XzP+qBhZgeu+998TLL78s5s2bJ/7++2/vL/b3338Xc+bMUT8etuaaa4qddtpJ7LHHHqJ9+/ben5+WB1QlsL799lvx0ksviVdeeUX89ttvZeX1L7/8Ip544gn1A1gAbNdddxVItmqmqgIW3dsjjzwi3nnnnZK8M3QprbBrRX7JkiVF3/vrr79WYb7333+/2G233cQhhxwiqrWrrApgzZ8/XwHqo48+Kuilr7zyyir8GgV83XXXVUo42xVXXFEp6DI6Mut+KP3oZnIGVCOln0EAOlwcvQ0d7YUXXlBStWvXrqJnz55igw02yHpWJR+oaGB99dVX4o477hCffPJJrHfASM5UrIvReWQ4rmjbtq36AcLtttsu82xA9+mnnyq9jkEC/wFRFDHqRB979dVXlQSTQXJilVVWiSpeUccrEljYlqZPny6efvppp0nAfAOYB7bddlul22yzzTYCYPgi7t2xY0f169Onj5BpChRoGDzkkqYMMvQA47DDDhPdu3cXLmnpq94+7ltxwOLrnjJlimD0lYvWW2890aNHD7Hzzjurri1XWV/nkJB77723+mGaYEDxzDPPqG7U9UxGrXfddZfqJgcNGiQ23nhjV7GKOFYxwEJ5vvPOO8WLL76Yk7FMWUMpZojv+urpPuX0cPHWW28pSXbooYfmvF+pTmI4RYrJCQfiueeeEzNmzIgcsaKrjRo1Shx55JFi//33L1UVEr1PRQAL88G4ceME2yhC+T3qqKME3Z1N2vzw+uuvi59++ilzGqU9acI1BFjo7lDgH3jgAacEQze7++67xQcffCBOOOGEskndYvmTemChe6CgR422MAcgCfbbbz/B5EqTGC0++eSTjcwPzO7eYYcdlERDkS8XofvJCZ+qq542bZqYNWuWU1988803xSWXXCJOO+00sckmm5SrugU/N9XAevjhh5WSHtUqhurHHHNMo9naKMLoMnQ1WsIBPgyTu+yyi9hss82cXWTUM3wfx7QxYMAAseeee6oP6Isvvsh6JEbWMWPGKHC5JHLWBSk4kEpgAY7JkyerUZ+LRxgueRm77757o9MYSLkOPQpaY401lAKPAo0inWZCGo0YMUJgPMVSDw9MQmJff/31AqWejyTtlDpgYQuSWePEa6+95uQduhTdAqM+TXzR99xzT+YaFOXDDz9cdTN296ivSeMWcwW2LLroiRMnij///LNRNeHNrbfeqnSyAw88sNG5tO2kClh8pTfeeKNAr3AREur4448XLVu2zJx+/vnnlZRi1IgkY0QI0ys5bgq728UXXyxuuOEG8fnnn2fayh94xEeEcVXmS2h0Lk07qQLWbbfdFgkqmMjwWxPGx0mTJmWkFL43vvZqce6uvvrq4txzzxVjx45tNPjQ7b/vvvuUlR7dLI2UGmAxMkL6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"`;
99 |
100 | exports[`"mimetype" option should work with "String" value: warnings 1`] = `Array []`;
101 |
102 | exports[`"mimetype" option should work with unspecified value: assets 1`] = `
103 | Array [
104 | "main.bundle.js",
105 | ]
106 | `;
107 |
108 | exports[`"mimetype" option should work with unspecified value: errors 1`] = `Array []`;
109 |
110 | exports[`"mimetype" option should work with unspecified value: result 1`] = `"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAAAXNSR0IArs4c6QAAGjNJREFUeAHtnQewFMXWx/uSxZxRUTGAAcyYnwpiJhgRFRCM6GeBZaklopaUWoUo9cwIqPhhAjGAWRQTRjAgijnnLOqnAgL3fv3rR+/r29uzO7t3e3Z2t0/V1uzM9Mx0n/nP6dPnnD4tRKDAgcCBwIFK4UCdq6JDhw5dZeHChRfKc4c2NDR0kNtWrnLhWE1woKGuru4X2dKX5fbym2666aU4rc4C1pAhQ/ZetmzZ7RJQG8W5QShTOxyQwKqXuPj3hhtueN7IkSPrc7W8uXny1FNPXa++vv55eXE783j4HziwnAMIoj3+T9Ibb7zxci6uNDNPSkk1VoJqdfNY+B84YHNAYuQyKYQ2s4+b+xlgyYJrSVHXxzwZ/gcORHCgjezZjos4pw630Cdlwa0kEjNA4/hqq60mLrzwQrXV5cK2tjggcSGmTp0qZs6caTe8s33A3DeBtLJ5gv8bbbRRAJXNlBrbb9asmejcORtDUm1q161bt8333XffDfr27buCzRYTWPa5sB84kJMDzZs3bybVpxV//fXXDQ8++OC1ZY+XsTIEYOVkXTgZlwP//PPP6gcddFBm4BeAFZdzoVxeDkh9bE3ZLSpjegBWXnaFAnE5IIFVJ7tFpasHYMXlWigXiwNS2W9NwQCsWOwKheJyoHXr1kqBD8CKy7FQriAOBGAVxK5QOC4HArDiciqUK4gDAVgFsSsUjsuBAKy4nArlCuJAAFZB7AqF43IgE90Q94JaKifdFGLRokVi6dKlolWrVqJNmzaiRYvAsjgYqFkuSe+8+OGHH8T333/f6LdgwQIFpsWLFwtCRmwCWNJWI1ZYYQWx1lpriXbt2jX6cSyQEDUDLOl5F19++aV4//331e/DDz8UgKdQQnrx++uvv8TPP/+s7mXeY9VVVxVbbLGF2HLLLdVvnXXWMU/XzP+qBhZgeu+998TLL78s5s2bJ/7++2/vL/b3338Xc+bMUT8etuaaa4qddtpJ7LHHHqJ9+/ben5+WB1QlsL799lvx0ksviVdeeUX89ttvZeX1L7/8Ip544gn1A1gAbNdddxVItmqmqgIW3dsjjzwi3nnnnZK8M3QprbBrRX7JkiVF3/vrr79WYb7333+/2G233cQhhxwiqrWrrApgzZ8/XwHqo48+Kuilr7zyyir8GgV83XXXVUo42xVXXFEp6DI6Mut+KP3oZnIGVCOln0EAOlwcvQ0d7YUXXlBStWvXrqJnz55igw02yHpWJR+oaGB99dVX4o477hCffPJJrHfASM5UrIvReWQ4rmjbtq36AcLtttsu82xA9+mnnyq9jkEC/wFRFDHqRB979dVXlQSTQXJilVVWiSpeUccrEljYlqZPny6efvppp0nAfAOYB7bddlul22yzzTYCYPgi7t2xY0f169Onj5BpChRoGDzkkqYMMvQA47DDDhPdu3cXLmnpq94+7ltxwOLrnjJlimD0lYvWW2890aNHD7Hzzjurri1XWV/nkJB77723+mGaYEDxzDPPqG7U9UxGrXfddZfqJgcNGiQ23nhjV7GKOFYxwEJ5vvPOO8WLL76Yk7FMWUMpZojv+urpPuX0cPHWW28pSXbooYfmvF+pTmI4RYrJCQfiueeeEzNmzIgcsaKrjRo1Shx55JFi//33L1UVEr1PRQAL88G4ceME2yhC+T3qqKME3Z1N2vzw+uuvi59++ilzGqU9acI1BFjo7lDgH3jgAacEQze7++67xQcffCBOOOGEskndYvmTemChe6CgR422MAcgCfbbbz/B5EqTGC0++eSTjcwPzO7eYYcdlERDkS8XofvJCZ+qq542bZqYNWuWU1988803xSWXXCJOO+00sckmm5SrugU/N9XAevjhh5WSHtUqhurHHHNMo9naKMLoMnQ1WsIBPgyTu+yyi9hss82cXWTUM3wfx7QxYMAAseeee6oP6Isvvsh6JEbWMWPGKHC5JHLWBSk4kEpgAY7JkyerUZ+LRxgueRm77757o9MYSLkOPQpaY401lAKPAo0inWZCGo0YMUJgPMVSDw9MQmJff/31AqWejyTtlDpgYQuSWePEa6+95uQduhTdAqM+TXzR99xzT+YaFOXDDz9cdTN296ivSeMWcwW2LLroiRMnij///LNRNeHNrbfeqnSyAw88sNG5tO2kClh8pTfeeKNAr3AREur4448XLVu2zJx+/vnnlZRi1IgkY0QI0ys5bgq728UXXyxuuOEG8fnnn2fayh94xEeEcVXmS2h0Lk07qQLWbbfdFgkqmMjwWxPGx0mTJmWkFL43vvZqce6uvvrq4txzzxVjx45tNPjQ7b/vvvuUlR7dLI2UGmAxMkL6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"`;
111 |
112 | exports[`"mimetype" option should work with unspecified value: warnings 1`] = `Array []`;
113 |
--------------------------------------------------------------------------------
/test/__snapshots__/validate-options.test.js.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`validate options should throw an error on the "esModule" option with "true" value 1`] = `
4 | "Invalid options object. URL Loader has been initialized using an options object that does not match the API schema.
5 | - options.esModule should be a boolean.
6 | -> By default, url-loader generates JS modules that use the ES modules syntax."
7 | `;
8 |
9 | exports[`validate options should throw an error on the "fallback" option with "true" value 1`] = `
10 | "Invalid options object. URL Loader has been initialized using an options object that does not match the API schema.
11 | - options.fallback should be one of these:
12 | string | object { loader?, options? }
13 | -> An alternative loader to use when a target file's size exceeds the limit set in the limit option (https://github.com/webpack-contrib/url-loader#fallback).
14 | Details:
15 | * options.fallback should be a string.
16 | * options.fallback should be an object:
17 | object { loader?, options? }"
18 | `;
19 |
20 | exports[`validate options should throw an error on the "limit" option with "[]" value 1`] = `
21 | "Invalid options object. URL Loader has been initialized using an options object that does not match the API schema.
22 | - options.limit should be:
23 | boolean | number | string
24 | -> Enables/Disables transformation target file into base64 URIs (https://github.com/webpack-contrib/url-loader#limit)."
25 | `;
26 |
27 | exports[`validate options should throw an error on the "limit" option with "{}" value 1`] = `
28 | "Invalid options object. URL Loader has been initialized using an options object that does not match the API schema.
29 | - options.limit should be:
30 | boolean | number | string
31 | -> Enables/Disables transformation target file into base64 URIs (https://github.com/webpack-contrib/url-loader#limit)."
32 | `;
33 |
34 | exports[`validate options should throw an error on the "mimetype" option with "() => {}" value 1`] = `
35 | "Invalid options object. URL Loader has been initialized using an options object that does not match the API schema.
36 | - options.mimetype should be one of these:
37 | boolean | string
38 | -> The MIME type for the file to be transformed (https://github.com/webpack-contrib/url-loader#mimetype).
39 | Details:
40 | * options.mimetype should be a boolean.
41 | * options.mimetype should be a string."
42 | `;
43 |
--------------------------------------------------------------------------------
/test/cjs.test.js:
--------------------------------------------------------------------------------
1 | import src from '../src';
2 | import cjs from '../src/cjs';
3 |
4 | describe('CJS', () => {
5 | it('should export loader', () => {
6 | expect(cjs).toEqual(src);
7 | });
8 |
9 | it('should export "raw" flag', () => {
10 | expect(cjs.raw).toEqual(true);
11 | });
12 | });
13 |
--------------------------------------------------------------------------------
/test/encoding-option.test.js:
--------------------------------------------------------------------------------
1 | import {
2 | compile,
3 | execute,
4 | getCompiler,
5 | normalizeErrors,
6 | readAsset,
7 | } from './helpers';
8 |
9 | describe('"encoding" option', () => {
10 | it('should work with unspecified value with the default base64 encoding', async () => {
11 | const compiler = getCompiler('simple-svg.js');
12 | const stats = await compile(compiler);
13 |
14 | expect(
15 | execute(readAsset('main.bundle.js', compiler, stats))
16 | ).toMatchSnapshot('result');
17 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
18 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
19 | 'warnings'
20 | );
21 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
22 | });
23 |
24 | it('should work with "Boolean" true (default base64)', async () => {
25 | const compiler = getCompiler('simple-svg.js', {
26 | encoding: true,
27 | });
28 | const stats = await compile(compiler);
29 |
30 | expect(
31 | execute(readAsset('main.bundle.js', compiler, stats))
32 | ).toMatchSnapshot('result');
33 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
34 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
35 | 'warnings'
36 | );
37 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
38 | });
39 |
40 | it('should work with "Boolean" false (no encoding)', async () => {
41 | const compiler = getCompiler('simple-svg.js', {
42 | encoding: false,
43 | });
44 | const stats = await compile(compiler);
45 |
46 | expect(
47 | execute(readAsset('main.bundle.js', compiler, stats))
48 | ).toMatchSnapshot('result');
49 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
50 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
51 | 'warnings'
52 | );
53 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
54 | });
55 |
56 | it('should work with "String" right encoding value (utf8)', async () => {
57 | const compiler = getCompiler('simple-svg.js', {
58 | encoding: 'utf8',
59 | });
60 | const stats = await compile(compiler);
61 |
62 | expect(
63 | execute(readAsset('main.bundle.js', compiler, stats))
64 | ).toMatchSnapshot('result');
65 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
66 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
67 | 'warnings'
68 | );
69 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
70 | });
71 |
72 | it('should work with "String" right encoding value (hex)', async () => {
73 | const compiler = getCompiler('simple-svg.js', {
74 | encoding: 'hex',
75 | });
76 | const stats = await compile(compiler);
77 |
78 | expect(
79 | execute(readAsset('main.bundle.js', compiler, stats))
80 | ).toMatchSnapshot('result');
81 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
82 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
83 | 'warnings'
84 | );
85 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
86 | });
87 |
88 | it('should work with "String" right encoding value (utf16le)', async () => {
89 | const compiler = getCompiler('simple-svg.js', {
90 | encoding: 'utf16le',
91 | });
92 | const stats = await compile(compiler);
93 |
94 | expect(
95 | execute(readAsset('main.bundle.js', compiler, stats))
96 | ).toMatchSnapshot('result');
97 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
98 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
99 | 'warnings'
100 | );
101 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
102 | });
103 |
104 | it('should work with "String" right encoding value (latin1)', async () => {
105 | const compiler = getCompiler('simple-svg.js', {
106 | encoding: 'latin1',
107 | });
108 | const stats = await compile(compiler);
109 |
110 | expect(
111 | execute(readAsset('main.bundle.js', compiler, stats))
112 | ).toMatchSnapshot('result');
113 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
114 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
115 | 'warnings'
116 | );
117 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
118 | });
119 |
120 | it('should work with "String" right encoding value (base64)', async () => {
121 | const compiler = getCompiler('simple-svg.js', {
122 | encoding: 'base64',
123 | });
124 | const stats = await compile(compiler);
125 |
126 | expect(
127 | execute(readAsset('main.bundle.js', compiler, stats))
128 | ).toMatchSnapshot('result');
129 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
130 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
131 | 'warnings'
132 | );
133 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
134 | });
135 |
136 | it('should work with "String" right encoding value (ascii)', async () => {
137 | const compiler = getCompiler('simple-svg.js', {
138 | encoding: 'ascii',
139 | });
140 | const stats = await compile(compiler);
141 |
142 | expect(
143 | execute(readAsset('main.bundle.js', compiler, stats))
144 | ).toMatchSnapshot('result');
145 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
146 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
147 | 'warnings'
148 | );
149 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
150 | });
151 |
152 | it('should work with "String" right encoding value (binary)', async () => {
153 | const compiler = getCompiler('simple-svg.js', {
154 | encoding: 'binary',
155 | });
156 | const stats = await compile(compiler);
157 |
158 | expect(
159 | execute(readAsset('main.bundle.js', compiler, stats))
160 | ).toMatchSnapshot('result');
161 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
162 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
163 | 'warnings'
164 | );
165 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
166 | });
167 |
168 | it('should work with "String" right encoding value (ucs2)', async () => {
169 | const compiler = getCompiler('simple-svg.js', {
170 | encoding: 'ucs2',
171 | });
172 | const stats = await compile(compiler);
173 |
174 | expect(
175 | execute(readAsset('main.bundle.js', compiler, stats))
176 | ).toMatchSnapshot('result');
177 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
178 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
179 | 'warnings'
180 | );
181 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
182 | });
183 |
184 | it('should throw an error with "String" wrong encoding value equal to xyz', async () => {
185 | const compiler = getCompiler('simple-svg.js', {
186 | encoding: 'xyz',
187 | });
188 | const stats = await compile(compiler);
189 |
190 | try {
191 | execute(readAsset('main.bundle.js', compiler, stats));
192 | expect(true).toBe(false);
193 | } catch (err) {
194 | expect(err.message.indexOf('ValidationError')).not.toBe(-1);
195 | }
196 | });
197 | });
198 |
--------------------------------------------------------------------------------
/test/esModule-options.test.js:
--------------------------------------------------------------------------------
1 | import {
2 | compile,
3 | execute,
4 | getCompiler,
5 | normalizeErrors,
6 | readAsset,
7 | } from './helpers';
8 |
9 | // TODO
10 | describe('"esModule" option', () => {
11 | it('should work without value', async () => {
12 | const compiler = getCompiler('simple.js');
13 | const stats = await compile(compiler);
14 |
15 | expect(
16 | execute(readAsset('main.bundle.js', compiler, stats))
17 | ).toMatchSnapshot('result');
18 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
19 | 'warnings'
20 | );
21 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
22 | });
23 |
24 | it('should work with "Boolean" value equal "true"', async () => {
25 | const compiler = getCompiler('simple.js', {
26 | esModule: true,
27 | });
28 | const stats = await compile(compiler);
29 |
30 | expect(
31 | execute(readAsset('main.bundle.js', compiler, stats))
32 | ).toMatchSnapshot('result');
33 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
34 | 'warnings'
35 | );
36 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
37 | });
38 |
39 | it('should work with "Boolean" value equal "false"', async () => {
40 | const compiler = getCompiler('simple.js', {
41 | esModule: false,
42 | });
43 | const stats = await compile(compiler);
44 |
45 | expect(
46 | execute(readAsset('main.bundle.js', compiler, stats))
47 | ).toMatchSnapshot('result');
48 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
49 | 'warnings'
50 | );
51 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
52 | });
53 | });
54 |
--------------------------------------------------------------------------------
/test/fallback-option.test.js:
--------------------------------------------------------------------------------
1 | import path from 'path';
2 |
3 | import {
4 | compile,
5 | execute,
6 | getCompiler,
7 | normalizeErrors,
8 | readAsset,
9 | } from './helpers';
10 |
11 | describe('"fallback" option', () => {
12 | it('should work with unspecified value', async () => {
13 | const compiler = getCompiler('simple.js');
14 | const stats = await compile(compiler);
15 |
16 | expect(
17 | execute(readAsset('main.bundle.js', compiler, stats))
18 | ).toMatchSnapshot('result');
19 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
20 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
21 | 'warnings'
22 | );
23 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
24 | });
25 |
26 | it('should work with "String" value', async () => {
27 | const compiler = getCompiler('simple.js', {
28 | limit: Number.MIN_SAFE_INTEGER,
29 | name: '[name].[hash].[ext]',
30 | unknown: 'value',
31 | fallback: path.join(__dirname, 'fixtures/x-custom-loader'),
32 | });
33 | const stats = await compile(compiler);
34 |
35 | expect(
36 | execute(readAsset('main.bundle.js', compiler, stats))
37 | ).toMatchSnapshot('result');
38 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
39 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
40 | 'warnings'
41 | );
42 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
43 | });
44 |
45 | it('should work with "String" value and require.resolve', async () => {
46 | const compiler = getCompiler('simple.js', {
47 | limit: Number.MIN_SAFE_INTEGER,
48 | name: '[name].[hash].[ext]',
49 | unknown: 'value',
50 | fallback: require.resolve('./fixtures/x-custom-loader'),
51 | });
52 | const stats = await compile(compiler);
53 |
54 | expect(
55 | execute(readAsset('main.bundle.js', compiler, stats))
56 | ).toMatchSnapshot('result');
57 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
58 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
59 | 'warnings'
60 | );
61 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
62 | });
63 |
64 | it('should work with "String" value and with query', async () => {
65 | const compiler = getCompiler('simple.js', {
66 | limit: Number.MIN_SAFE_INTEGER,
67 | name: '[name].[hash].[ext]',
68 | unknown: 'value',
69 | fallback: `${path.join(
70 | __dirname,
71 | 'fixtures/x-custom-loader'
72 | )}?name=fallback-[hash].[ext]&unknown=fallback-value`,
73 | });
74 | const stats = await compile(compiler);
75 |
76 | expect(
77 | execute(readAsset('main.bundle.js', compiler, stats))
78 | ).toMatchSnapshot('result');
79 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
80 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
81 | 'warnings'
82 | );
83 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
84 | });
85 |
86 | it('should work with "String" value, with query and require.resolve', async () => {
87 | const compiler = getCompiler('simple.js', {
88 | limit: Number.MIN_SAFE_INTEGER,
89 | name: '[name].[hash].[ext]',
90 | unknown: 'value',
91 | fallback: `${require.resolve(
92 | './fixtures/x-custom-loader'
93 | )}?name=fallback-[hash].[ext]&unknown=fallback-value`,
94 | });
95 | const stats = await compile(compiler);
96 |
97 | expect(
98 | execute(readAsset('main.bundle.js', compiler, stats))
99 | ).toMatchSnapshot('result');
100 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
101 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
102 | 'warnings'
103 | );
104 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
105 | });
106 |
107 | it('should work with "Object" value', async () => {
108 | const compiler = getCompiler('simple.js', {
109 | limit: Number.MIN_SAFE_INTEGER,
110 | name: '[name].[hash].[ext]',
111 | unknown: 'value',
112 | fallback: {
113 | loader: path.join(__dirname, 'fixtures/x-custom-loader'),
114 | options: {
115 | name: 'fallback-[hash].[ext]',
116 | unknown: 'fallback-other-value',
117 | },
118 | },
119 | });
120 | const stats = await compile(compiler);
121 |
122 | expect(
123 | execute(readAsset('main.bundle.js', compiler, stats))
124 | ).toMatchSnapshot('result');
125 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
126 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
127 | 'warnings'
128 | );
129 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
130 | });
131 |
132 | it('should work with "Object" value and require.resolve', async () => {
133 | const compiler = getCompiler('simple.js', {
134 | limit: Number.MIN_SAFE_INTEGER,
135 | name: '[name].[hash].[ext]',
136 | unknown: 'value',
137 | fallback: {
138 | loader: require.resolve('./fixtures/x-custom-loader'),
139 | options: {
140 | name: 'fallback-[hash].[ext]',
141 | unknown: 'fallback-other-value',
142 | },
143 | },
144 | });
145 | const stats = await compile(compiler);
146 |
147 | expect(
148 | execute(readAsset('main.bundle.js', compiler, stats))
149 | ).toMatchSnapshot('result');
150 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
151 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
152 | 'warnings'
153 | );
154 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
155 | });
156 | });
157 |
--------------------------------------------------------------------------------
/test/fixtures/concated.js:
--------------------------------------------------------------------------------
1 | import png from './file.png';
2 |
3 | export default ' ';
4 |
--------------------------------------------------------------------------------
/test/fixtures/file.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webpack-contrib/url-loader/62dac864f8cf4d2a4ab3cd6642650db6896d9017/test/fixtures/file.gif
--------------------------------------------------------------------------------
/test/fixtures/file.html:
--------------------------------------------------------------------------------
1 | Hello, World! Привет мир!
2 |
--------------------------------------------------------------------------------
/test/fixtures/file.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webpack-contrib/url-loader/62dac864f8cf4d2a4ab3cd6642650db6896d9017/test/fixtures/file.jpg
--------------------------------------------------------------------------------
/test/fixtures/file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webpack-contrib/url-loader/62dac864f8cf4d2a4ab3cd6642650db6896d9017/test/fixtures/file.png
--------------------------------------------------------------------------------
/test/fixtures/file.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | mochi
5 | Created with Sketch.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/test/fixtures/file.unknown:
--------------------------------------------------------------------------------
1 | test
2 |
--------------------------------------------------------------------------------
/test/fixtures/simple-html.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | import html from './file.html';
3 |
4 | export default html;
5 |
--------------------------------------------------------------------------------
/test/fixtures/simple-svg.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | import svg from './file.svg';
3 |
4 | export default svg;
5 |
--------------------------------------------------------------------------------
/test/fixtures/simple-unknown.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | import unknown from './file.unknown';
3 |
4 | export default unknown;
5 |
--------------------------------------------------------------------------------
/test/fixtures/simple.js:
--------------------------------------------------------------------------------
1 | import png from './file.png';
2 |
3 | export default png;
4 |
--------------------------------------------------------------------------------
/test/fixtures/string-raw-loader/index.js:
--------------------------------------------------------------------------------
1 | module.exports = () => {
2 | return 'string';
3 | };
4 |
--------------------------------------------------------------------------------
/test/fixtures/x-custom-loader/index.js:
--------------------------------------------------------------------------------
1 | const utils = require('loader-utils');
2 |
3 | module.exports = function loader() {
4 | const options = utils.getOptions(this);
5 |
6 | return `module.exports = ${JSON.stringify(options)}`;
7 | };
8 |
--------------------------------------------------------------------------------
/test/generator-option.test.js:
--------------------------------------------------------------------------------
1 | import {
2 | compile,
3 | execute,
4 | getCompiler,
5 | normalizeErrors,
6 | readAsset,
7 | } from './helpers';
8 |
9 | const svgToMiniDataURI = require('mini-svg-data-uri');
10 |
11 | describe('"generator" option', () => {
12 | it('should work with unspecified value with the default base64 encoding', async () => {
13 | const compiler = getCompiler('simple-svg.js');
14 | const stats = await compile(compiler);
15 |
16 | expect(
17 | execute(readAsset('main.bundle.js', compiler, stats))
18 | ).toMatchSnapshot('result');
19 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
20 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
21 | 'warnings'
22 | );
23 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
24 | });
25 |
26 | it('should work with "Function" mini-svg-data-uri generator', async () => {
27 | const compiler = getCompiler('simple-svg.js', {
28 | generator: (content) => svgToMiniDataURI(content.toString()),
29 | });
30 | const stats = await compile(compiler);
31 |
32 | expect(
33 | execute(readAsset('main.bundle.js', compiler, stats))
34 | ).toMatchSnapshot('result');
35 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
36 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
37 | 'warnings'
38 | );
39 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
40 | });
41 |
42 | it('should work with "Function" generating encoded file manually', async () => {
43 | const compiler = getCompiler('file.html', {
44 | generator: (content, mimetype, encoding) => {
45 | return `data:${mimetype}${
46 | encoding ? `;${encoding}` : ''
47 | },${content.toString(encoding)}`;
48 | },
49 | });
50 | const stats = await compile(compiler);
51 |
52 | expect(
53 | execute(readAsset('main.bundle.js', compiler, stats))
54 | ).toMatchSnapshot('result');
55 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
56 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
57 | 'warnings'
58 | );
59 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
60 | });
61 |
62 | it('should work with "Function" generating encoded file manually without "mimetype"', async () => {
63 | const compiler = getCompiler('file.html', {
64 | mimetype: false,
65 | generator: (content, mimetype, encoding) => {
66 | return `data:${mimetype}${
67 | encoding ? `;${encoding}` : ''
68 | },${content.toString(encoding || 'utf-8')}`;
69 | },
70 | });
71 | const stats = await compile(compiler);
72 |
73 | expect(
74 | execute(readAsset('main.bundle.js', compiler, stats))
75 | ).toMatchSnapshot('result');
76 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
77 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
78 | 'warnings'
79 | );
80 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
81 | });
82 |
83 | it('should work with "Function" generating encoded file manually without "encoding"', async () => {
84 | const compiler = getCompiler('file.html', {
85 | encoding: false,
86 | generator: (content, mimetype, encoding) => {
87 | return `data:${mimetype}${
88 | encoding ? `;${encoding}` : ''
89 | },${content.toString(encoding || 'utf-8')}`;
90 | },
91 | });
92 | const stats = await compile(compiler);
93 |
94 | expect(
95 | execute(readAsset('main.bundle.js', compiler, stats))
96 | ).toMatchSnapshot('result');
97 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
98 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
99 | 'warnings'
100 | );
101 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
102 | });
103 |
104 | it('should work with "Function" generating encoded file manually without "mimetype" and "encoding"', async () => {
105 | const compiler = getCompiler('file.html', {
106 | mimetype: false,
107 | encoding: false,
108 | generator: (content, mimetype, encoding) => {
109 | return `data:${mimetype}${
110 | encoding ? `;${encoding}` : ''
111 | },${content.toString(encoding || 'utf-8')}`;
112 | },
113 | });
114 | const stats = await compile(compiler);
115 |
116 | expect(
117 | execute(readAsset('main.bundle.js', compiler, stats))
118 | ).toMatchSnapshot('result');
119 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
120 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
121 | 'warnings'
122 | );
123 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
124 | });
125 | });
126 |
--------------------------------------------------------------------------------
/test/helpers/compile.js:
--------------------------------------------------------------------------------
1 | export default (compiler) => {
2 | return new Promise((resolve, reject) => {
3 | compiler.run((error, stats) => {
4 | if (error) {
5 | return reject(error);
6 | }
7 |
8 | return resolve(stats);
9 | });
10 | });
11 | };
12 |
--------------------------------------------------------------------------------
/test/helpers/execute.js:
--------------------------------------------------------------------------------
1 | import Module from 'module';
2 | import path from 'path';
3 |
4 | const parentModule = module;
5 |
6 | export default (code) => {
7 | const resource = 'test.js';
8 | const module = new Module(resource, parentModule);
9 | // eslint-disable-next-line no-underscore-dangle
10 | module.paths = Module._nodeModulePaths(
11 | path.resolve(__dirname, '../fixtures')
12 | );
13 | module.filename = resource;
14 |
15 | // eslint-disable-next-line no-underscore-dangle
16 | module._compile(code, resource);
17 |
18 | // eslint-disable-next-line no-underscore-dangle
19 | return module.exports.__esModule ? module.exports.default : module.exports;
20 | };
21 |
--------------------------------------------------------------------------------
/test/helpers/getCompiler.js:
--------------------------------------------------------------------------------
1 | import path from 'path';
2 |
3 | import webpack from 'webpack';
4 | import { createFsFromVolume, Volume } from 'memfs';
5 |
6 | export default (fixture, loaderOptions = {}, config = {}) => {
7 | const fullConfig = {
8 | mode: 'development',
9 | devtool: config.devtool || false,
10 | context: path.resolve(__dirname, '../fixtures'),
11 | entry: path.resolve(__dirname, '../fixtures', fixture),
12 | output: {
13 | publicPath: '',
14 | path: path.resolve(__dirname, '../outputs'),
15 | filename: '[name].bundle.js',
16 | chunkFilename: '[name].chunk.js',
17 | libraryTarget: 'commonjs2',
18 | },
19 | module: {
20 | rules: [
21 | {
22 | test: /\.(gif|jpg|png|svg|html|unknown)$/i,
23 | rules: [
24 | {
25 | loader: path.resolve(__dirname, '../../src'),
26 | options: loaderOptions || {},
27 | },
28 | ],
29 | },
30 | ],
31 | },
32 | plugins: [],
33 | ...config,
34 | };
35 |
36 | const compiler = webpack(fullConfig);
37 |
38 | if (!config.outputFileSystem) {
39 | const outputFileSystem = createFsFromVolume(new Volume());
40 | // Todo remove when we drop webpack@4 support
41 | outputFileSystem.join = path.join.bind(path);
42 |
43 | compiler.outputFileSystem = outputFileSystem;
44 | }
45 |
46 | return compiler;
47 | };
48 |
--------------------------------------------------------------------------------
/test/helpers/index.js:
--------------------------------------------------------------------------------
1 | import compile from './compile';
2 | import execute from './execute';
3 | import getCompiler from './getCompiler';
4 | import normalizeErrors from './normalizeErrors';
5 | import readAsset from './readAsset';
6 |
7 | export { compile, execute, getCompiler, normalizeErrors, readAsset };
8 |
--------------------------------------------------------------------------------
/test/helpers/normalizeErrors.js:
--------------------------------------------------------------------------------
1 | function removeCWD(str) {
2 | const isWin = process.platform === 'win32';
3 | let cwd = process.cwd();
4 |
5 | if (isWin) {
6 | // eslint-disable-next-line no-param-reassign
7 | str = str.replace(/\\/g, '/');
8 | // eslint-disable-next-line no-param-reassign
9 | cwd = cwd.replace(/\\/g, '/');
10 | }
11 |
12 | return str.replace(new RegExp(cwd, 'g'), '');
13 | }
14 |
15 | export default (errors) => {
16 | return errors.map((error) =>
17 | removeCWD(error.toString().split('\n').slice(0, 2).join('\n'))
18 | );
19 | };
20 |
--------------------------------------------------------------------------------
/test/helpers/readAsset.js:
--------------------------------------------------------------------------------
1 | import path from 'path';
2 |
3 | export default (asset, compiler, stats) => {
4 | const usedFs = compiler.outputFileSystem;
5 | const outputPath = stats.compilation.outputOptions.path;
6 | let data = '';
7 |
8 | try {
9 | data = usedFs.readFileSync(path.join(outputPath, asset)).toString();
10 | } catch (error) {
11 | data = error.toString();
12 | }
13 |
14 | return data;
15 | };
16 |
--------------------------------------------------------------------------------
/test/limit-option.test.js:
--------------------------------------------------------------------------------
1 | import {
2 | compile,
3 | execute,
4 | getCompiler,
5 | normalizeErrors,
6 | readAsset,
7 | } from './helpers';
8 |
9 | describe('"limit" option', () => {
10 | it('should work with unspecified value', async () => {
11 | const compiler = getCompiler('simple.js');
12 | const stats = await compile(compiler);
13 |
14 | expect(
15 | execute(readAsset('main.bundle.js', compiler, stats))
16 | ).toMatchSnapshot('result');
17 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
18 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
19 | 'warnings'
20 | );
21 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
22 | });
23 |
24 | it('should work with "Number" value equal to 0', async () => {
25 | const compiler = getCompiler('simple.js', {
26 | limit: 0,
27 | });
28 | const stats = await compile(compiler);
29 |
30 | expect(
31 | execute(readAsset('main.bundle.js', compiler, stats))
32 | ).toMatchSnapshot('result');
33 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
34 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
35 | 'warnings'
36 | );
37 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
38 | });
39 |
40 | it('should work with "Number" value equal to 0.1', async () => {
41 | const compiler = getCompiler('simple.js', {
42 | limit: 0.1,
43 | });
44 | const stats = await compile(compiler);
45 |
46 | expect(
47 | execute(readAsset('main.bundle.js', compiler, stats))
48 | ).toMatchSnapshot('result');
49 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
50 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
51 | 'warnings'
52 | );
53 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
54 | });
55 |
56 | it('should work with "Number" value equal to 6776', async () => {
57 | const compiler = getCompiler('simple.js', {
58 | limit: 6776,
59 | });
60 | const stats = await compile(compiler);
61 |
62 | expect(
63 | execute(readAsset('main.bundle.js', compiler, stats))
64 | ).toMatchSnapshot('result');
65 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
66 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
67 | 'warnings'
68 | );
69 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
70 | });
71 |
72 | it('should work with "Number" value equal to 6777', async () => {
73 | const compiler = getCompiler('simple.js', {
74 | limit: 6777,
75 | });
76 | const stats = await compile(compiler);
77 |
78 | expect(
79 | execute(readAsset('main.bundle.js', compiler, stats))
80 | ).toMatchSnapshot('result');
81 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
82 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
83 | 'warnings'
84 | );
85 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
86 | });
87 |
88 | it('should work with "Number" value equal to 6778', async () => {
89 | const compiler = getCompiler('simple.js', {
90 | limit: 6778,
91 | });
92 | const stats = await compile(compiler);
93 |
94 | expect(
95 | execute(readAsset('main.bundle.js', compiler, stats))
96 | ).toMatchSnapshot('result');
97 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
98 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
99 | 'warnings'
100 | );
101 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
102 | });
103 |
104 | it('should work with "Number" value equal to Number.MAX_SAFE_INTEGER', async () => {
105 | const compiler = getCompiler('simple.js', {
106 | limit: Number.MAX_SAFE_INTEGER,
107 | });
108 | const stats = await compile(compiler);
109 |
110 | expect(
111 | execute(readAsset('main.bundle.js', compiler, stats))
112 | ).toMatchSnapshot('result');
113 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
114 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
115 | 'warnings'
116 | );
117 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
118 | });
119 |
120 | it('should work with "Number" value equal to Number.MIN_SAFE_INTEGER', async () => {
121 | const compiler = getCompiler('simple.js', {
122 | limit: Number.MIN_SAFE_INTEGER,
123 | });
124 | const stats = await compile(compiler);
125 |
126 | expect(
127 | execute(readAsset('main.bundle.js', compiler, stats))
128 | ).toMatchSnapshot('result');
129 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
130 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
131 | 'warnings'
132 | );
133 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
134 | });
135 |
136 | it('should work with "Number" value equal to Number.MAX_VALUE', async () => {
137 | const compiler = getCompiler('simple.js', {
138 | limit: Number.MAX_VALUE,
139 | });
140 | const stats = await compile(compiler);
141 |
142 | expect(
143 | execute(readAsset('main.bundle.js', compiler, stats))
144 | ).toMatchSnapshot('result');
145 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
146 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
147 | 'warnings'
148 | );
149 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
150 | });
151 |
152 | it('should work with "Number" value equal to Infinity', async () => {
153 | const compiler = getCompiler('simple.js', {
154 | limit: Infinity,
155 | });
156 | const stats = await compile(compiler);
157 |
158 | expect(
159 | execute(readAsset('main.bundle.js', compiler, stats))
160 | ).toMatchSnapshot('result');
161 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
162 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
163 | 'warnings'
164 | );
165 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
166 | });
167 |
168 | it('should work with "Boolean" value equal to true', async () => {
169 | const compiler = getCompiler('simple.js', {
170 | limit: true,
171 | });
172 | const stats = await compile(compiler);
173 |
174 | expect(
175 | execute(readAsset('main.bundle.js', compiler, stats))
176 | ).toMatchSnapshot('result');
177 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
178 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
179 | 'warnings'
180 | );
181 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
182 | });
183 |
184 | it('should work with "Boolean" value equal to false', async () => {
185 | const compiler = getCompiler('simple.js', {
186 | limit: false,
187 | });
188 | const stats = await compile(compiler);
189 |
190 | expect(
191 | execute(readAsset('main.bundle.js', compiler, stats))
192 | ).toMatchSnapshot('result');
193 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
194 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
195 | 'warnings'
196 | );
197 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
198 | });
199 |
200 | it('should work with "String" value equal to 0', async () => {
201 | const compiler = getCompiler('simple.js', {
202 | limit: '0',
203 | });
204 | const stats = await compile(compiler);
205 |
206 | expect(
207 | execute(readAsset('main.bundle.js', compiler, stats))
208 | ).toMatchSnapshot('result');
209 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
210 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
211 | 'warnings'
212 | );
213 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
214 | });
215 |
216 | it('should work with "String" value equal to 0.1', async () => {
217 | const compiler = getCompiler('simple.js', {
218 | limit: '0.1',
219 | });
220 | const stats = await compile(compiler);
221 |
222 | expect(
223 | execute(readAsset('main.bundle.js', compiler, stats))
224 | ).toMatchSnapshot('result');
225 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
226 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
227 | 'warnings'
228 | );
229 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
230 | });
231 |
232 | it('should work with "String" value equal to 6776', async () => {
233 | const compiler = getCompiler('simple.js', {
234 | limit: '6776',
235 | });
236 | const stats = await compile(compiler);
237 |
238 | expect(
239 | execute(readAsset('main.bundle.js', compiler, stats))
240 | ).toMatchSnapshot('result');
241 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
242 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
243 | 'warnings'
244 | );
245 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
246 | });
247 |
248 | it('should work with "String" value equal to 6777', async () => {
249 | const compiler = getCompiler('simple.js', {
250 | limit: '6777',
251 | });
252 | const stats = await compile(compiler);
253 |
254 | expect(
255 | execute(readAsset('main.bundle.js', compiler, stats))
256 | ).toMatchSnapshot('result');
257 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
258 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
259 | 'warnings'
260 | );
261 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
262 | });
263 |
264 | it('should work with "String" value equal to 6778', async () => {
265 | const compiler = getCompiler('simple.js', {
266 | limit: '6778',
267 | });
268 | const stats = await compile(compiler);
269 |
270 | expect(
271 | execute(readAsset('main.bundle.js', compiler, stats))
272 | ).toMatchSnapshot('result');
273 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
274 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
275 | 'warnings'
276 | );
277 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
278 | });
279 | });
280 |
--------------------------------------------------------------------------------
/test/loader.test.js:
--------------------------------------------------------------------------------
1 | import path from 'path';
2 |
3 | import {
4 | compile,
5 | execute,
6 | getCompiler,
7 | normalizeErrors,
8 | readAsset,
9 | } from './helpers';
10 |
11 | describe('loader', () => {
12 | it('should work with unspecified value', async () => {
13 | const compiler = getCompiler('simple.js');
14 | const stats = await compile(compiler);
15 |
16 | expect(
17 | execute(readAsset('main.bundle.js', compiler, stats))
18 | ).toMatchSnapshot('result');
19 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
20 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
21 | 'warnings'
22 | );
23 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
24 | });
25 |
26 | it('should work with SVG', async () => {
27 | const compiler = getCompiler('simple-svg.js');
28 | const stats = await compile(compiler);
29 |
30 | expect(
31 | execute(readAsset('main.bundle.js', compiler, stats))
32 | ).toMatchSnapshot('result');
33 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
34 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
35 | 'warnings'
36 | );
37 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
38 | });
39 |
40 | it('should work with loader that exported string', async () => {
41 | const compiler = getCompiler(
42 | 'simple.js',
43 | {},
44 | {
45 | module: {
46 | rules: [
47 | {
48 | test: /\.(gif|jpg|png|svg)$/i,
49 | rules: [
50 | {
51 | loader: path.resolve(__dirname, '../src'),
52 | },
53 | {
54 | loader: path.resolve(__dirname, 'fixtures/string-raw-loader'),
55 | },
56 | ],
57 | },
58 | ],
59 | },
60 | }
61 | );
62 | const stats = await compile(compiler);
63 |
64 | expect(
65 | execute(readAsset('main.bundle.js', compiler, stats))
66 | ).toMatchSnapshot('result');
67 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
68 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
69 | 'warnings'
70 | );
71 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
72 | });
73 |
74 | it('should work with ModuleConcatenationPlugin', async () => {
75 | const compiler = getCompiler(
76 | 'concated.js',
77 | {},
78 | {
79 | mode: 'production',
80 | optimization: {
81 | minimize: false,
82 | },
83 | }
84 | );
85 | const stats = await compile(compiler);
86 |
87 | expect(
88 | execute(readAsset('main.bundle.js', compiler, stats))
89 | ).toMatchSnapshot('result');
90 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
91 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
92 | 'warnings'
93 | );
94 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
95 | });
96 |
97 | it('should work with ModuleConcatenationPlugin with fallback', async () => {
98 | const compiler = getCompiler(
99 | 'concated.js',
100 | {
101 | limit: 10,
102 | },
103 | {
104 | mode: 'production',
105 | optimization: {
106 | minimize: false,
107 | },
108 | }
109 | );
110 | const stats = await compile(compiler);
111 |
112 | expect(
113 | execute(readAsset('main.bundle.js', compiler, stats))
114 | ).toMatchSnapshot('result');
115 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
116 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
117 | 'warnings'
118 | );
119 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
120 | });
121 | });
122 |
--------------------------------------------------------------------------------
/test/mimetype-option.test.js:
--------------------------------------------------------------------------------
1 | import {
2 | compile,
3 | execute,
4 | getCompiler,
5 | normalizeErrors,
6 | readAsset,
7 | } from './helpers';
8 |
9 | describe('"mimetype" option', () => {
10 | it('should work with unspecified value', async () => {
11 | const compiler = getCompiler('simple.js');
12 | const stats = await compile(compiler);
13 |
14 | expect(
15 | execute(readAsset('main.bundle.js', compiler, stats))
16 | ).toMatchSnapshot('result');
17 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
18 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
19 | 'warnings'
20 | );
21 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
22 | });
23 |
24 | it('should work with "Boolean" true', async () => {
25 | const compiler = getCompiler('simple-html.js', {
26 | mimetype: true,
27 | });
28 | const stats = await compile(compiler);
29 |
30 | expect(
31 | execute(readAsset('main.bundle.js', compiler, stats))
32 | ).toMatchSnapshot('result');
33 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
34 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
35 | 'warnings'
36 | );
37 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
38 | });
39 |
40 | it('should work with "Boolean" false', async () => {
41 | const compiler = getCompiler('simple-html.js', {
42 | mimetype: false,
43 | });
44 | const stats = await compile(compiler);
45 |
46 | expect(
47 | execute(readAsset('main.bundle.js', compiler, stats))
48 | ).toMatchSnapshot('result');
49 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
50 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
51 | 'warnings'
52 | );
53 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
54 | });
55 |
56 | it('should work with "String" value', async () => {
57 | const compiler = getCompiler('simple.js', {
58 | mimetype: 'image/x-custom',
59 | });
60 | const stats = await compile(compiler);
61 |
62 | expect(
63 | execute(readAsset('main.bundle.js', compiler, stats))
64 | ).toMatchSnapshot('result');
65 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
66 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
67 | 'warnings'
68 | );
69 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
70 | });
71 |
72 | it('should work with "String" value equal to unknown/unknown', async () => {
73 | const compiler = getCompiler('simple.js', {
74 | mimetype: 'unknown/unknown',
75 | });
76 | const stats = await compile(compiler);
77 |
78 | expect(
79 | execute(readAsset('main.bundle.js', compiler, stats))
80 | ).toMatchSnapshot('result');
81 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
82 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
83 | 'warnings'
84 | );
85 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
86 | });
87 |
88 | it('should work for unknown mimetype', async () => {
89 | const compiler = getCompiler('simple-unknown.js');
90 | const stats = await compile(compiler);
91 |
92 | expect(
93 | execute(readAsset('main.bundle.js', compiler, stats))
94 | ).toMatchSnapshot('result');
95 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
96 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
97 | 'warnings'
98 | );
99 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
100 | });
101 |
102 | it('should work for unknown mimetype when value is true', async () => {
103 | const compiler = getCompiler('simple-unknown.js', {
104 | mimetype: true,
105 | });
106 | const stats = await compile(compiler);
107 |
108 | expect(
109 | execute(readAsset('main.bundle.js', compiler, stats))
110 | ).toMatchSnapshot('result');
111 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
112 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
113 | 'warnings'
114 | );
115 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
116 | });
117 |
118 | it('should work for unknown mimetype when value is false and encoding is false', async () => {
119 | const compiler = getCompiler('simple-unknown.js', {
120 | mimetype: false,
121 | encoding: false,
122 | });
123 | const stats = await compile(compiler);
124 |
125 | expect(
126 | execute(readAsset('main.bundle.js', compiler, stats))
127 | ).toMatchSnapshot('result');
128 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
129 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
130 | 'warnings'
131 | );
132 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
133 | });
134 |
135 | it('should work for unknown mimetype when value is true and encoding is true', async () => {
136 | const compiler = getCompiler('simple-unknown.js', {
137 | mimetype: true,
138 | encoding: true,
139 | });
140 | const stats = await compile(compiler);
141 |
142 | expect(
143 | execute(readAsset('main.bundle.js', compiler, stats))
144 | ).toMatchSnapshot('result');
145 | expect(Object.keys(stats.compilation.assets)).toMatchSnapshot('assets');
146 | expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
147 | 'warnings'
148 | );
149 | expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
150 | });
151 | });
152 |
--------------------------------------------------------------------------------
/test/utils/__snapshots__/normalizeFallback.test.js.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`normalizeFallback object 1`] = `
4 | Object {
5 | "loader": "file-loader",
6 | "options": Object {
7 | "limit": 8192,
8 | "name": "name-for-url-loader.[ext]",
9 | },
10 | }
11 | `;
12 |
13 | exports[`normalizeFallback object-with-options 1`] = `
14 | Object {
15 | "loader": "file-loader",
16 | "options": Object {
17 | "limit": 8192,
18 | "name": "name-for-file-loader.[ext]",
19 | },
20 | }
21 | `;
22 |
23 | exports[`normalizeFallback string 1`] = `
24 | Object {
25 | "loader": "file-loader",
26 | "options": Object {
27 | "limit": 8192,
28 | "name": "name-for-url-loader.[ext]",
29 | },
30 | }
31 | `;
32 |
33 | exports[`normalizeFallback string-with-query 1`] = `
34 | Object {
35 | "loader": "file-loader",
36 | "options": Object {
37 | "limit": 8192,
38 | "name": "name-for-file-loader.[ext]",
39 | },
40 | }
41 | `;
42 |
43 | exports[`normalizeFallback undefined 1`] = `
44 | Object {
45 | "loader": "file-loader",
46 | "options": Object {
47 | "limit": 8192,
48 | "name": "name-for-url-loader.[ext]",
49 | },
50 | }
51 | `;
52 |
--------------------------------------------------------------------------------
/test/utils/normalizeFallback.test.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable
2 | prefer-destructuring,
3 | */
4 | import normalizeFallback from '../../src/utils/normalizeFallback';
5 |
6 | describe('normalizeFallback', () => {
7 | test('undefined', () => {
8 | // eslint-disable-next-line no-undefined
9 | const result = normalizeFallback(undefined, {
10 | limit: 8192,
11 | name: 'name-for-url-loader.[ext]',
12 | });
13 |
14 | expect(result).toMatchSnapshot();
15 | });
16 |
17 | test('string', () => {
18 | const result = normalizeFallback('file-loader', {
19 | limit: 8192,
20 | name: 'name-for-url-loader.[ext]',
21 | });
22 |
23 | expect(result).toMatchSnapshot();
24 | });
25 |
26 | test('string-with-query', () => {
27 | const result = normalizeFallback(
28 | 'file-loader?name=name-for-file-loader.[ext]',
29 | { limit: 8192, name: 'name-for-url-loader.[ext]' }
30 | );
31 |
32 | expect(result).toMatchSnapshot();
33 | });
34 |
35 | test('object', () => {
36 | const result = normalizeFallback(
37 | { loader: 'file-loader' },
38 | { limit: 8192, name: 'name-for-url-loader.[ext]' }
39 | );
40 |
41 | expect(result).toMatchSnapshot();
42 | });
43 |
44 | test('object-with-options', () => {
45 | const result = normalizeFallback(
46 | {
47 | loader: 'file-loader',
48 | options: { name: 'name-for-file-loader.[ext]' },
49 | },
50 | { limit: 8192, name: 'name-for-url-loader.[ext]' }
51 | );
52 |
53 | expect(result).toMatchSnapshot();
54 | });
55 | });
56 |
--------------------------------------------------------------------------------
/test/validate-options.test.js:
--------------------------------------------------------------------------------
1 | import { getCompiler, compile } from './helpers';
2 |
3 | describe('validate options', () => {
4 | const tests = {
5 | limit: {
6 | success: [8192, true, '8192'],
7 | failure: [{}, []],
8 | },
9 | mimetype: {
10 | success: ['image/png', 'unknown/unknown', true, false],
11 | failure: [() => {}],
12 | },
13 | fallback: {
14 | success: [
15 | // 'custom-loader',
16 | { loader: 'custom-loader' },
17 | {
18 | loader: 'custom-loader',
19 | options: { unknown: 'unknown' },
20 | },
21 | ],
22 | failure: [true],
23 | },
24 | esModule: {
25 | success: [true, false],
26 | failure: ['true'],
27 | },
28 | unknown: {
29 | success: [1, true, false, 'test', /test/, [], {}, { foo: 'bar' }],
30 | failure: [],
31 | },
32 | };
33 |
34 | function stringifyValue(value) {
35 | if (
36 | Array.isArray(value) ||
37 | (value && typeof value === 'object' && value.constructor === Object)
38 | ) {
39 | return JSON.stringify(value);
40 | }
41 |
42 | return value;
43 | }
44 |
45 | async function createTestCase(key, value, type) {
46 | it(`should ${
47 | type === 'success' ? 'successfully validate' : 'throw an error on'
48 | } the "${key}" option with "${stringifyValue(value)}" value`, async () => {
49 | const compiler = getCompiler('simple.js', { [key]: value });
50 |
51 | let stats;
52 |
53 | try {
54 | stats = await compile(compiler);
55 | } finally {
56 | if (type === 'success') {
57 | expect(stats.hasErrors()).toBe(false);
58 | } else if (type === 'failure') {
59 | const {
60 | compilation: { errors },
61 | } = stats;
62 |
63 | expect(errors).toHaveLength(1);
64 | expect(() => {
65 | throw new Error(errors[0].error.message);
66 | }).toThrowErrorMatchingSnapshot();
67 | }
68 | }
69 | });
70 | }
71 |
72 | for (const [key, values] of Object.entries(tests)) {
73 | for (const type of Object.keys(values)) {
74 | for (const value of values[type]) {
75 | createTestCase(key, value, type);
76 | }
77 | }
78 | }
79 | });
80 |
--------------------------------------------------------------------------------