├── .github
├── ISSUE_TEMPLATE.md
└── PULL_REQUEST_TEMPLATE.md
├── .gitignore
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE.md
├── README.md
├── Thumbnail
├── function.json
└── index.js
├── extensions.csproj
├── host.json
├── package-lock.json
└── package.json
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
4 | > Please provide us with the following information:
5 | > ---------------------------------------------------------------
6 |
7 | ### This issue is for a: (mark with an `x`)
8 | ```
9 | - [ ] bug report -> please search issues before submitting
10 | - [ ] feature request
11 | - [ ] documentation issue or request
12 | - [ ] regression (a behavior that used to work and stopped in a new release)
13 | ```
14 |
15 | ### Minimal steps to reproduce
16 | >
17 |
18 | ### Any log messages given by the failure
19 | >
20 |
21 | ### Expected/desired behavior
22 | >
23 |
24 | ### OS and Version?
25 | > Windows 7, 8 or 10. Linux (which distribution). macOS (Yosemite? El Capitan? Sierra?)
26 |
27 | ### Versions
28 | >
29 |
30 | ### Mention any other details that might be useful
31 |
32 | > ---------------------------------------------------------------
33 | > Thanks! We'll be in touch soon.
34 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | ## Purpose
2 |
3 | * ...
4 |
5 | ## Does this introduce a breaking change?
6 |
7 | ```
8 | [ ] Yes
9 | [ ] No
10 | ```
11 |
12 | ## Pull Request Type
13 | What kind of change does this Pull Request introduce?
14 |
15 |
16 | ```
17 | [ ] Bugfix
18 | [ ] Feature
19 | [ ] Code style update (formatting, local variables)
20 | [ ] Refactoring (no functional changes, no api changes)
21 | [ ] Documentation content changes
22 | [ ] Other... Please describe:
23 | ```
24 |
25 | ## How to Test
26 | * Get the code
27 |
28 | ```
29 | git clone [repo-address]
30 | cd [repo-name]
31 | git checkout [branch-name]
32 | npm install
33 | ```
34 |
35 | * Test the code
36 |
37 | ```
38 | ```
39 |
40 | ## What to Check
41 | Verify that the following are valid
42 | * ...
43 |
44 | ## Other Information
45 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (https://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # TypeScript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | # dotenv environment variables file
58 | .env
59 |
60 | # next.js build output
61 | .next
62 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## [project-title] Changelog
2 |
3 |
4 | # x.y.z (yyyy-mm-dd)
5 |
6 | *Features*
7 | * ...
8 |
9 | *Bug Fixes*
10 | * ...
11 |
12 | *Breaking Changes*
13 | * ...
14 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing to this project
2 |
3 | This project welcomes contributions and suggestions. Most contributions require you to agree to a
4 | Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
5 | the rights to use your contribution. For details, visit https://cla.microsoft.com.
6 |
7 | When you submit a pull request, a CLA-bot will automatically determine whether you need to provide
8 | a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions
9 | provided by the bot. You will only need to do this once across all repos using our CLA.
10 |
11 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
12 | For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
13 | contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
14 |
15 | - [Code of Conduct](#coc)
16 | - [Issues and Bugs](#issue)
17 | - [Feature Requests](#feature)
18 | - [Submission Guidelines](#submit)
19 |
20 | ## Code of Conduct
21 | Help us keep this project open and inclusive. Please read and follow our [Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
22 |
23 | ## Found an Issue?
24 | If you find a bug in the source code or a mistake in the documentation, you can help us by
25 | [submitting an issue](#submit-issue) to the GitHub Repository. Even better, you can
26 | [submit a Pull Request](#submit-pr) with a fix.
27 |
28 | ## Want a Feature?
29 | You can *request* a new feature by [submitting an issue](#submit-issue) to the GitHub
30 | Repository. If you would like to *implement* a new feature, please submit an issue with
31 | a proposal for your work first, to be sure that we can use it.
32 |
33 | * **Small Features** can be crafted and directly [submitted as a Pull Request](#submit-pr).
34 |
35 | ## Submission Guidelines
36 |
37 | ### Submitting an Issue
38 | Before you submit an issue, search the archive, maybe your question was already answered.
39 |
40 | If your issue appears to be a bug, and hasn't been reported, open a new issue.
41 | Help us to maximize the effort we can spend fixing issues and adding new
42 | features, by not reporting duplicate issues. Providing the following information will increase the
43 | chances of your issue being dealt with quickly:
44 |
45 | * **Overview of the Issue** - if an error is being thrown a non-minified stack trace helps
46 | * **Version** - what version is affected (e.g. 0.1.2)
47 | * **Motivation for or Use Case** - explain what are you trying to do and why the current behavior is a bug for you
48 | * **Browsers and Operating System** - is this a problem with all browsers?
49 | * **Reproduce the Error** - provide a live example or a unambiguous set of steps
50 | * **Related Issues** - has a similar issue been reported before?
51 | * **Suggest a Fix** - if you can't fix the bug yourself, perhaps you can point to what might be
52 | causing the problem (line of code or commit)
53 |
54 | You can file new issues by providing the above information at the corresponding repository's issues link: https://github.com/[organization-name]/[repository-name]/issues/new].
55 |
56 | ### Submitting a Pull Request (PR)
57 | Before you submit your Pull Request (PR) consider the following guidelines:
58 |
59 | * Search the repository (https://github.com/[organization-name]/[repository-name]/pulls) for an open or closed PR
60 | that relates to your submission. You don't want to duplicate effort.
61 |
62 | * Make your changes in a new git fork:
63 |
64 | * Commit your changes using a descriptive commit message
65 | * Push your fork to GitHub:
66 | * In GitHub, create a pull request
67 | * If we suggest changes then:
68 | * Make the required updates.
69 | * Rebase your fork and force push to your GitHub repository (this will update your Pull Request):
70 |
71 | ```shell
72 | git rebase master -i
73 | git push -f
74 | ```
75 |
76 | That's it! Thank you for your contribution!
77 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) Microsoft Corporation. All rights reserved.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ---
2 | page_type: sample
3 | languages:
4 | - javascript
5 | - nodejs
6 | products:
7 | - azure-storage
8 | - azure
9 | description: "This sample implements a function triggered by Azure Blob Storage to resize an image in Node.js."
10 | ---
11 |
12 | # Azure Storage Blob Trigger Image Resize Function in Node.js using the v10 SDK
13 |
14 | > IMPORTANT! This sample uses the version 10 of the Storage Blob SDK. Please refer to the sample [storage-blob-resize-function](https://github.com/Azure-Samples/storage-blob-resize-function-node) that uses the latest version of the Storage Blob SDK instead.
15 |
16 | This sample implements a function triggered by Azure Blob Storage to resize an image in Node.js. Once the image is resized, the thumbnail image is uploaded back to blob storage.
17 |
18 | The key aspects of this sample are in the function bindings and implementation.
19 |
20 | This sample is used by the topic [Tutorial: Automate resizing uploaded images using Event Grid](https://docs.microsoft.com/en-us/azure/event-grid/resize-images-on-storage-blob-upload-event?tabs=nodejsv10#deploy-the-function-code/)
21 |
22 | ## Function bindings
23 |
24 | In order to interface with image data, you need to configure the function to process binary data.
25 |
26 | The following code sets the `datatype` parameter to `binary` in the `function.json` file.
27 |
28 | ```javascript
29 | {
30 | "disabled": false,
31 | "bindings": [
32 | {
33 | "type": "eventGridTrigger",
34 | "name": "eventGridEvent",
35 | "direction": "in"
36 | },
37 | {
38 | "type": "blob",
39 | "name": "inputBlob",
40 | "path": "{data.url}",
41 | "connection": "AZURE_STORAGE_CONNECTION_STRING",
42 | "direction": "in",
43 | "datatype": "binary"
44 | }
45 | ]
46 | }
47 | ```
48 |
49 | ## Function implementation
50 |
51 | The sample uses [Jimp](https://github.com/oliver-moran/jimp) to resize an incoming buffer to a thumbnail. The buffer is then converted to a stream and uploaded to Azure Storage.
52 |
53 | ```javascript
54 | const stream = require('stream');
55 | const Jimp = require('jimp');
56 |
57 | const {
58 | Aborter,
59 | BlobURL,
60 | BlockBlobURL,
61 | ContainerURL,
62 | ServiceURL,
63 | SharedKeyCredential,
64 | StorageURL,
65 | uploadStreamToBlockBlob
66 | } = require("@azure/storage-blob");
67 |
68 | const ONE_MEGABYTE = 1024 * 1024;
69 | const ONE_MINUTE = 60 * 1000;
70 | const uploadOptions = { bufferSize: 4 * ONE_MEGABYTE, maxBuffers: 20 };
71 |
72 | const containerName = process.env.BLOB_CONTAINER_NAME;
73 | const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
74 | const accessKey = process.env.AZURE_STORAGE_ACCOUNT_ACCESS_KEY;
75 |
76 | const sharedKeyCredential = new SharedKeyCredential(
77 | accountName,
78 | accessKey);
79 | const pipeline = StorageURL.newPipeline(sharedKeyCredential);
80 | const serviceURL = new ServiceURL(
81 | `https://${accountName}.blob.core.windows.net`,
82 | pipeline
83 | );
84 |
85 | module.exports = (context, eventGridEvent, inputBlob) => {
86 |
87 | const aborter = Aborter.timeout(30 * ONE_MINUTE);
88 | const widthInPixels = 100;
89 | const contentType = context.bindingData.data.contentType;
90 | const blobUrl = context.bindingData.data.url;
91 | const blobName = blobUrl.slice(blobUrl.lastIndexOf("/")+1);
92 |
93 | const image = await Jimp.read(inputBlob);
94 | const thumbnail = image.resize(widthInPixels, Jimp.AUTO);
95 | const thumbnailBuffer = await thumbnail.getBufferAsync(Jimp.AUTO);
96 | const readStream = stream.PassThrough();
97 | readStream.end(thumbnailBuffer);
98 |
99 | const containerURL = ContainerURL.fromServiceURL(serviceURL, containerName);
100 | const blockBlobURL = BlockBlobURL.fromContainerURL(containerURL, blobName);
101 | try {
102 |
103 | await uploadStreamToBlockBlob(aborter, readStream,
104 | blockBlobURL, uploadOptions.bufferSize, uploadOptions.maxBuffers,
105 | { blobHTTPHeaders: { blobContentType: "image/*" } });
106 |
107 | } catch (err) {
108 |
109 | context.log(err.message);
110 |
111 | } finally {
112 |
113 | context.done();
114 |
115 | }
116 | };
117 | ```
118 |
119 | You can use the [Azure Storage Explorer](https://azure.microsoft.com/features/storage-explorer/) to view blob containers and verify the resize is successful.
120 |
--------------------------------------------------------------------------------
/Thumbnail/function.json:
--------------------------------------------------------------------------------
1 | {
2 | "disabled": false,
3 | "bindings": [
4 | {
5 | "type": "eventGridTrigger",
6 | "name": "eventGridEvent",
7 | "direction": "in"
8 | },
9 | {
10 | "type": "blob",
11 | "name": "inputBlob",
12 | "path": "{data.url}",
13 | "connection": "AZURE_STORAGE_CONNECTION_STRING",
14 | "direction": "in",
15 | "datatype": "binary"
16 | }
17 | ]
18 | }
--------------------------------------------------------------------------------
/Thumbnail/index.js:
--------------------------------------------------------------------------------
1 | const stream = require('stream');
2 | const Jimp = require('jimp');
3 |
4 | const {
5 | Aborter,
6 | BlobURL,
7 | BlockBlobURL,
8 | ContainerURL,
9 | ServiceURL,
10 | SharedKeyCredential,
11 | StorageURL,
12 | uploadStreamToBlockBlob
13 | } = require("@azure/storage-blob");
14 |
15 | const ONE_MEGABYTE = 1024 * 1024;
16 | const ONE_MINUTE = 60 * 1000;
17 | const uploadOptions = { bufferSize: 4 * ONE_MEGABYTE, maxBuffers: 20 };
18 |
19 | const containerName = process.env.BLOB_CONTAINER_NAME;
20 | const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
21 | const accessKey = process.env.AZURE_STORAGE_ACCOUNT_ACCESS_KEY;
22 |
23 | const sharedKeyCredential = new SharedKeyCredential(
24 | accountName,
25 | accessKey);
26 | const pipeline = StorageURL.newPipeline(sharedKeyCredential);
27 | const serviceURL = new ServiceURL(
28 | `https://${accountName}.blob.core.windows.net`,
29 | pipeline
30 | );
31 |
32 | module.exports = (context, eventGridEvent, inputBlob) => {
33 |
34 | const aborter = Aborter.timeout(30 * ONE_MINUTE);
35 | const widthInPixels = 100;
36 | const contentType = context.bindingData.data.contentType;
37 | const blobUrl = context.bindingData.data.url;
38 | const blobName = blobUrl.slice(blobUrl.lastIndexOf("/")+1);
39 |
40 | const image = await Jimp.read(inputBlob);
41 | const thumbnail = image.resize(widthInPixels, Jimp.AUTO);
42 | const thumbnailBuffer = await thumbnail.getBufferAsync(Jimp.AUTO);
43 | const readStream = stream.PassThrough();
44 | readStream.end(thumbnailBuffer);
45 |
46 | const containerURL = ContainerURL.fromServiceURL(serviceURL, containerName);
47 | const blockBlobURL = BlockBlobURL.fromContainerURL(containerURL, blobName);
48 | try {
49 |
50 | await uploadStreamToBlockBlob(aborter, readStream,
51 | blockBlobURL, uploadOptions.bufferSize, uploadOptions.maxBuffers,
52 | { blobHTTPHeaders: { blobContentType: "image/*" } });
53 |
54 | } catch (err) {
55 |
56 | context.log(err.message);
57 |
58 | } finally {
59 |
60 | context.done();
61 |
62 | }
63 | };
64 |
--------------------------------------------------------------------------------
/extensions.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | netstandard2.0
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/host.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0"
3 | }
4 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "function-image-upload-resize-node",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@azure/ms-rest-js": {
8 | "version": "2.0.4",
9 | "resolved": "https://registry.npmjs.org/@azure/ms-rest-js/-/ms-rest-js-2.0.4.tgz",
10 | "integrity": "sha512-nSOPt6st0RtxclYBQV65qXZpvMDqiDQssktvB/SMTAJ5bIytSPtBmlttTTigO5qHvwQcfzzpQE0sMceK+dJ/IQ==",
11 | "requires": {
12 | "@types/node-fetch": "^2.3.7",
13 | "@types/tunnel": "0.0.1",
14 | "abort-controller": "^3.0.0",
15 | "form-data": "^2.5.0",
16 | "node-fetch": "^2.6.0",
17 | "tough-cookie": "^3.0.1",
18 | "tslib": "^1.10.0",
19 | "tunnel": "0.0.6",
20 | "uuid": "^3.3.2",
21 | "xml2js": "^0.4.19"
22 | }
23 | },
24 | "@azure/storage-blob": {
25 | "version": "10.5.0",
26 | "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-10.5.0.tgz",
27 | "integrity": "sha512-67+0EP7STy9BQgzvN1RgmSvXhxRd044eDgepX7zBp7XslBxz8YGo2cSLm9w5o5Qf1FLCRlwuziRMikaPCLMpVw==",
28 | "requires": {
29 | "@azure/ms-rest-js": "^2.0.0",
30 | "events": "^3.0.0",
31 | "tslib": "^1.9.3"
32 | }
33 | },
34 | "@babel/runtime": {
35 | "version": "7.10.3",
36 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.3.tgz",
37 | "integrity": "sha512-RzGO0RLSdokm9Ipe/YD+7ww8X2Ro79qiXZF3HU9ljrM+qnJmH1Vqth+hbiQZy761LnMJTMitHDuKVYTk3k4dLw==",
38 | "requires": {
39 | "regenerator-runtime": "^0.13.4"
40 | }
41 | },
42 | "@jimp/bmp": {
43 | "version": "0.13.0",
44 | "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.13.0.tgz",
45 | "integrity": "sha512-7i/XZLoK5JETBKO0VL7qjnr6WDVl1X8mmaUk6Lzq06/veMPC5IwUIZi1JRVAXPEwTf5uUegq0WFnmUS0lVYzFw==",
46 | "requires": {
47 | "@babel/runtime": "^7.7.2",
48 | "@jimp/utils": "^0.13.0",
49 | "bmp-js": "^0.1.0"
50 | }
51 | },
52 | "@jimp/core": {
53 | "version": "0.13.0",
54 | "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.13.0.tgz",
55 | "integrity": "sha512-BMFEUm5HbRP4yCo4Q23CJFx/v6Yr3trw7rERmS1GKUEooDq9ktApZWWTvWq/vggKyysKX0nQ+KT+FaFD/75Q+Q==",
56 | "requires": {
57 | "@babel/runtime": "^7.7.2",
58 | "@jimp/utils": "^0.13.0",
59 | "any-base": "^1.1.0",
60 | "buffer": "^5.2.0",
61 | "exif-parser": "^0.1.12",
62 | "file-type": "^9.0.0",
63 | "load-bmfont": "^1.3.1",
64 | "mkdirp": "^0.5.1",
65 | "phin": "^2.9.1",
66 | "pixelmatch": "^4.0.2",
67 | "tinycolor2": "^1.4.1"
68 | }
69 | },
70 | "@jimp/custom": {
71 | "version": "0.13.0",
72 | "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.13.0.tgz",
73 | "integrity": "sha512-Zir/CHoLRhQDGfPWueCIQbVjVUlayNIUch9fulq4M9V2S+ynHx9BqRn58z8wy+mk8jm1WlpRVhvZ8QUenbL0vg==",
74 | "requires": {
75 | "@babel/runtime": "^7.7.2",
76 | "@jimp/core": "^0.13.0"
77 | }
78 | },
79 | "@jimp/gif": {
80 | "version": "0.13.0",
81 | "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.13.0.tgz",
82 | "integrity": "sha512-7FO2Fa9FZluqGt1MM/L8s6P5UEedxrIQT2eBAxzB8Z82YTTSWQXw4bdrZWCwiQjBFZwKTIaULIfw6+TxA/Q2XA==",
83 | "requires": {
84 | "@babel/runtime": "^7.7.2",
85 | "@jimp/utils": "^0.13.0",
86 | "gifwrap": "^0.9.2",
87 | "omggif": "^1.0.9"
88 | }
89 | },
90 | "@jimp/jpeg": {
91 | "version": "0.13.0",
92 | "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.13.0.tgz",
93 | "integrity": "sha512-Fol/DxA1lnIzCsNx/CckIEoyWImQHiWPgFAWL5s7VIVaJrEFnnbRqfOxmvr8yWg8mh3hWLeXNcxqA82CKXgg+Q==",
94 | "requires": {
95 | "@babel/runtime": "^7.7.2",
96 | "@jimp/utils": "^0.13.0",
97 | "jpeg-js": "^0.4.0"
98 | }
99 | },
100 | "@jimp/plugin-blit": {
101 | "version": "0.13.0",
102 | "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.13.0.tgz",
103 | "integrity": "sha512-roCShFZosJgRMLCLzuOT1pRZysQF/p3avQieZiu9pfg2F9X09f91OauU2Lf3/yOp0TZCWbheqbem9MPlhyED8w==",
104 | "requires": {
105 | "@babel/runtime": "^7.7.2",
106 | "@jimp/utils": "^0.13.0"
107 | }
108 | },
109 | "@jimp/plugin-blur": {
110 | "version": "0.13.0",
111 | "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.13.0.tgz",
112 | "integrity": "sha512-LeBhQe72bRk2fe2AftcqcDaWgSu6vFD0fxiAYYMy3pHa8pnPAwnw2W3u4bV/gc5XJt6AJzoRyc7WVG2pE4A3gg==",
113 | "requires": {
114 | "@babel/runtime": "^7.7.2",
115 | "@jimp/utils": "^0.13.0"
116 | }
117 | },
118 | "@jimp/plugin-circle": {
119 | "version": "0.13.0",
120 | "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.13.0.tgz",
121 | "integrity": "sha512-INwIl8zgWnJYXxYkNhIjG8TXg2Q1nh008SDKyC+Pug4ce/XRJC8w/Gk6HS+U9Z2tIO2/zXv473k/JaiwvDMu1w==",
122 | "requires": {
123 | "@babel/runtime": "^7.7.2",
124 | "@jimp/utils": "^0.13.0"
125 | }
126 | },
127 | "@jimp/plugin-color": {
128 | "version": "0.13.0",
129 | "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.13.0.tgz",
130 | "integrity": "sha512-e71UDivZdZGOhQRLjDo4a0BKgrH858HJ7zFk7/Yti58LwgeIGjYHhuYc+xQOdnBWPzGSD47TuFX5GXmf/x1nmg==",
131 | "requires": {
132 | "@babel/runtime": "^7.7.2",
133 | "@jimp/utils": "^0.13.0",
134 | "tinycolor2": "^1.4.1"
135 | }
136 | },
137 | "@jimp/plugin-contain": {
138 | "version": "0.13.0",
139 | "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.13.0.tgz",
140 | "integrity": "sha512-qPYS+ccMP4mEnf7BB0bcaszUTth8OxeRX0MdMvU6PDEI0nIvVVNwmuI6YtNqqs12PwuYxgPkq6AFenyLyoNP1g==",
141 | "requires": {
142 | "@babel/runtime": "^7.7.2",
143 | "@jimp/utils": "^0.13.0"
144 | }
145 | },
146 | "@jimp/plugin-cover": {
147 | "version": "0.13.0",
148 | "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.13.0.tgz",
149 | "integrity": "sha512-S2GkbXNgIb0afof/NLLq9IJDZPOcFtu1mc32ngt9S8HzXsNHgRAzONW7cg56bwQ6p0+sz/dS5tB4ctOW/pu/Dw==",
150 | "requires": {
151 | "@babel/runtime": "^7.7.2",
152 | "@jimp/utils": "^0.13.0"
153 | }
154 | },
155 | "@jimp/plugin-crop": {
156 | "version": "0.13.0",
157 | "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.13.0.tgz",
158 | "integrity": "sha512-Y1Ug3kOzsq72EjLiWQlwkHuvUvdSmFUDtxpyOXh3RxeWF7wmdjH8FvdhPj8hWvFLsDYFgWGaLI4Z6SXOr+N8nA==",
159 | "requires": {
160 | "@babel/runtime": "^7.7.2",
161 | "@jimp/utils": "^0.13.0"
162 | }
163 | },
164 | "@jimp/plugin-displace": {
165 | "version": "0.13.0",
166 | "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.13.0.tgz",
167 | "integrity": "sha512-c80VIUjIqQoavafthLpYRZdzANCxbOCHzqkFVbZ0kNKJnDDk6fW55mvVW4TJLDToDU81WMlttCmNV0oXcX93gQ==",
168 | "requires": {
169 | "@babel/runtime": "^7.7.2",
170 | "@jimp/utils": "^0.13.0"
171 | }
172 | },
173 | "@jimp/plugin-dither": {
174 | "version": "0.13.0",
175 | "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.13.0.tgz",
176 | "integrity": "sha512-EUz/y/AaQ00TnaiVLVAXLz8n8Nx7S36lKi4VXPeYy5a5FyzBimxNiKxdITVe9zooN7+H4FP++/xGFGFMpfWtRg==",
177 | "requires": {
178 | "@babel/runtime": "^7.7.2",
179 | "@jimp/utils": "^0.13.0"
180 | }
181 | },
182 | "@jimp/plugin-fisheye": {
183 | "version": "0.13.0",
184 | "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.13.0.tgz",
185 | "integrity": "sha512-O7h5pNTk2sYcTKxLvV6+zzUpLx8qzdNl6qiP9x1S0CKy64oZ9IwtK1eR1eLom0YA8tUR7rX5Ra4pB8bhq8Oyqw==",
186 | "requires": {
187 | "@babel/runtime": "^7.7.2",
188 | "@jimp/utils": "^0.13.0"
189 | }
190 | },
191 | "@jimp/plugin-flip": {
192 | "version": "0.13.0",
193 | "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.13.0.tgz",
194 | "integrity": "sha512-gWk+Q0LmCvupUuWRfoGyETmH/+lJKZuPCeA9K6UHJldq5Cdg/3MrlKUNS1HcPCDXjw+dWDGC8QnNslvMTaY5VQ==",
195 | "requires": {
196 | "@babel/runtime": "^7.7.2",
197 | "@jimp/utils": "^0.13.0"
198 | }
199 | },
200 | "@jimp/plugin-gaussian": {
201 | "version": "0.13.0",
202 | "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.13.0.tgz",
203 | "integrity": "sha512-0ctRqbCcLdy8y9IrSIH2McWNPLnEwjoe8qxtqoi51zRsM3z3mwjiTC2q8AWeF0SdIdWwV+YV/eP0494AJqjTsg==",
204 | "requires": {
205 | "@babel/runtime": "^7.7.2",
206 | "@jimp/utils": "^0.13.0"
207 | }
208 | },
209 | "@jimp/plugin-invert": {
210 | "version": "0.13.0",
211 | "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.13.0.tgz",
212 | "integrity": "sha512-k7TWx/la0MrTcT1dMtncV6I9IuGToRm9Q0ekzfb3k8bHzWRYX4SUtt/WrZ/I+/znD/fGorLtFI057v7mcLJc5A==",
213 | "requires": {
214 | "@babel/runtime": "^7.7.2",
215 | "@jimp/utils": "^0.13.0"
216 | }
217 | },
218 | "@jimp/plugin-mask": {
219 | "version": "0.13.0",
220 | "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.13.0.tgz",
221 | "integrity": "sha512-U3OdsgtMNpbCYc1lzzu96zdSgyz7BK9eD8IoFHdw4Ma8gCuM8kp9gdBJlKnzOh8eyYvssdCMZOWz9Xbxc5xH9A==",
222 | "requires": {
223 | "@babel/runtime": "^7.7.2",
224 | "@jimp/utils": "^0.13.0"
225 | }
226 | },
227 | "@jimp/plugin-normalize": {
228 | "version": "0.13.0",
229 | "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.13.0.tgz",
230 | "integrity": "sha512-yKOgZSvOxSHNlh+U9NOQH4Drgca0Dwb7DQRk3vj67gvHQC96JafIpGwN+9V4fP89lA3rkItbw6xgN6C/28HEUQ==",
231 | "requires": {
232 | "@babel/runtime": "^7.7.2",
233 | "@jimp/utils": "^0.13.0"
234 | }
235 | },
236 | "@jimp/plugin-print": {
237 | "version": "0.13.0",
238 | "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.13.0.tgz",
239 | "integrity": "sha512-Tv7r/1t7z63oLeRuEWw9xbm0G5uuBE54986+BOu8OFaHBpV/BbVHrE7ouApA0mKVZqMZCVjhO6Ph8+uFzRjdOw==",
240 | "requires": {
241 | "@babel/runtime": "^7.7.2",
242 | "@jimp/utils": "^0.13.0",
243 | "load-bmfont": "^1.4.0"
244 | }
245 | },
246 | "@jimp/plugin-resize": {
247 | "version": "0.13.0",
248 | "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.13.0.tgz",
249 | "integrity": "sha512-XOo0Skn7aq/aGxV9czFx6EaBUbAsAGCVbAS26fMM0AZ4YAWWUEleKTpHunEo92giIPhvlxeFFjQR2jQ9UcB3uQ==",
250 | "requires": {
251 | "@babel/runtime": "^7.7.2",
252 | "@jimp/utils": "^0.13.0"
253 | }
254 | },
255 | "@jimp/plugin-rotate": {
256 | "version": "0.13.0",
257 | "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.13.0.tgz",
258 | "integrity": "sha512-BaNeh655kF9Rz01ZV+Bkc8hLsHpNu3QnzigruVDjGt9Paoig0EBr+Dgyjje+7eTLu20kyuyxwPUAxLSOiPiraQ==",
259 | "requires": {
260 | "@babel/runtime": "^7.7.2",
261 | "@jimp/utils": "^0.13.0"
262 | }
263 | },
264 | "@jimp/plugin-scale": {
265 | "version": "0.13.0",
266 | "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.13.0.tgz",
267 | "integrity": "sha512-e/f7lvii+DmRMgYF+uBKQy437f+J66WbL0FcFEataCF/W9UkTIQGeXdECwJSPfqr81SxC5mGbSBbsdbMKChzAQ==",
268 | "requires": {
269 | "@babel/runtime": "^7.7.2",
270 | "@jimp/utils": "^0.13.0"
271 | }
272 | },
273 | "@jimp/plugin-shadow": {
274 | "version": "0.13.0",
275 | "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.13.0.tgz",
276 | "integrity": "sha512-qObtH63dmfPLze5wE8XDRjDsBOUnAfEWib4YbjPXGBZVxeKD7+2oPGemsK56HqC/+rYzIynkbi4MUIV1Q0dGjA==",
277 | "requires": {
278 | "@babel/runtime": "^7.7.2",
279 | "@jimp/utils": "^0.13.0"
280 | }
281 | },
282 | "@jimp/plugin-threshold": {
283 | "version": "0.13.0",
284 | "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.13.0.tgz",
285 | "integrity": "sha512-ACF7jk0ogso+2RK+0EsvBupVfE3IMq39wGFQWgpnHR9Tj12mSO279f6i/H8bcj1ZXmHot22nwLOG0wO4AlAaRg==",
286 | "requires": {
287 | "@babel/runtime": "^7.7.2",
288 | "@jimp/utils": "^0.13.0"
289 | }
290 | },
291 | "@jimp/plugins": {
292 | "version": "0.13.0",
293 | "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.13.0.tgz",
294 | "integrity": "sha512-onu8GnSnFjLFuFVFq8+aTYFIDfH8kwZuBHeGaDyScPFFn6QMKsPl4TeLzQ5vwIPvcpkADuFFfuAshE4peutjjA==",
295 | "requires": {
296 | "@babel/runtime": "^7.7.2",
297 | "@jimp/plugin-blit": "^0.13.0",
298 | "@jimp/plugin-blur": "^0.13.0",
299 | "@jimp/plugin-circle": "^0.13.0",
300 | "@jimp/plugin-color": "^0.13.0",
301 | "@jimp/plugin-contain": "^0.13.0",
302 | "@jimp/plugin-cover": "^0.13.0",
303 | "@jimp/plugin-crop": "^0.13.0",
304 | "@jimp/plugin-displace": "^0.13.0",
305 | "@jimp/plugin-dither": "^0.13.0",
306 | "@jimp/plugin-fisheye": "^0.13.0",
307 | "@jimp/plugin-flip": "^0.13.0",
308 | "@jimp/plugin-gaussian": "^0.13.0",
309 | "@jimp/plugin-invert": "^0.13.0",
310 | "@jimp/plugin-mask": "^0.13.0",
311 | "@jimp/plugin-normalize": "^0.13.0",
312 | "@jimp/plugin-print": "^0.13.0",
313 | "@jimp/plugin-resize": "^0.13.0",
314 | "@jimp/plugin-rotate": "^0.13.0",
315 | "@jimp/plugin-scale": "^0.13.0",
316 | "@jimp/plugin-shadow": "^0.13.0",
317 | "@jimp/plugin-threshold": "^0.13.0",
318 | "timm": "^1.6.1"
319 | }
320 | },
321 | "@jimp/png": {
322 | "version": "0.13.0",
323 | "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.13.0.tgz",
324 | "integrity": "sha512-9MVU0BLMQKJ6Kaiwjrq6dLDnDktZzeHtxz4qthRHaGOyHLx3RpxmbhaDuK9dDg6NASX3JuXznEhaOP4lqQODpQ==",
325 | "requires": {
326 | "@babel/runtime": "^7.7.2",
327 | "@jimp/utils": "^0.13.0",
328 | "pngjs": "^3.3.3"
329 | }
330 | },
331 | "@jimp/tiff": {
332 | "version": "0.13.0",
333 | "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.13.0.tgz",
334 | "integrity": "sha512-8lLGgEmhVRRjzZfn/QgpM3+mijq5ORYqRHtLcqDgcQaUY/q/OU1CxLYX777pozyQ3KIq1O+jyyHZm2xu3RZkPA==",
335 | "requires": {
336 | "@babel/runtime": "^7.7.2",
337 | "utif": "^2.0.1"
338 | }
339 | },
340 | "@jimp/types": {
341 | "version": "0.13.0",
342 | "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.13.0.tgz",
343 | "integrity": "sha512-qGq9qVHiRTgtIy061FSBr9l7OFrSiFLkKyQVnOBndEjwls2XLBKXkMmSD2U3oiHcNuf3ACsDSTIzK3KX/hDHvg==",
344 | "requires": {
345 | "@babel/runtime": "^7.7.2",
346 | "@jimp/bmp": "^0.13.0",
347 | "@jimp/gif": "^0.13.0",
348 | "@jimp/jpeg": "^0.13.0",
349 | "@jimp/png": "^0.13.0",
350 | "@jimp/tiff": "^0.13.0",
351 | "timm": "^1.6.1"
352 | }
353 | },
354 | "@jimp/utils": {
355 | "version": "0.13.0",
356 | "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.13.0.tgz",
357 | "integrity": "sha512-zA4573jE4FIpBKiYpPGo66JOAGdv/FS/N9fW9GpkbwJeTu12fV+r4R1ARSyt8UEKdE4DMBatBmQC0U2FGZijOA==",
358 | "requires": {
359 | "@babel/runtime": "^7.7.2",
360 | "regenerator-runtime": "^0.13.3"
361 | }
362 | },
363 | "@types/node": {
364 | "version": "12.7.4",
365 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.4.tgz",
366 | "integrity": "sha512-W0+n1Y+gK/8G2P/piTkBBN38Qc5Q1ZSO6B5H3QmPCUewaiXOo2GCAWZ4ElZCcNhjJuBSUSLGFUJnmlCn5+nxOQ=="
367 | },
368 | "@types/node-fetch": {
369 | "version": "2.5.0",
370 | "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.0.tgz",
371 | "integrity": "sha512-TLFRywthBgL68auWj+ziWu+vnmmcHCDFC/sqCOQf1xTz4hRq8cu79z8CtHU9lncExGBsB8fXA4TiLDLt6xvMzw==",
372 | "requires": {
373 | "@types/node": "*"
374 | }
375 | },
376 | "@types/tunnel": {
377 | "version": "0.0.1",
378 | "resolved": "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.1.tgz",
379 | "integrity": "sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A==",
380 | "requires": {
381 | "@types/node": "*"
382 | }
383 | },
384 | "abort-controller": {
385 | "version": "3.0.0",
386 | "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
387 | "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
388 | "requires": {
389 | "event-target-shim": "^5.0.0"
390 | }
391 | },
392 | "any-base": {
393 | "version": "1.1.0",
394 | "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz",
395 | "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg=="
396 | },
397 | "asynckit": {
398 | "version": "0.4.0",
399 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
400 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
401 | },
402 | "base64-js": {
403 | "version": "1.3.1",
404 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
405 | "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
406 | },
407 | "bmp-js": {
408 | "version": "0.1.0",
409 | "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz",
410 | "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM="
411 | },
412 | "buffer": {
413 | "version": "5.6.0",
414 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
415 | "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
416 | "requires": {
417 | "base64-js": "^1.0.2",
418 | "ieee754": "^1.1.4"
419 | }
420 | },
421 | "buffer-equal": {
422 | "version": "0.0.1",
423 | "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz",
424 | "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs="
425 | },
426 | "combined-stream": {
427 | "version": "1.0.8",
428 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
429 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
430 | "requires": {
431 | "delayed-stream": "~1.0.0"
432 | }
433 | },
434 | "define-properties": {
435 | "version": "1.1.3",
436 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
437 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
438 | "requires": {
439 | "object-keys": "^1.0.12"
440 | }
441 | },
442 | "delayed-stream": {
443 | "version": "1.0.0",
444 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
445 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
446 | },
447 | "dom-walk": {
448 | "version": "0.1.2",
449 | "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
450 | "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
451 | },
452 | "es-abstract": {
453 | "version": "1.14.2",
454 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz",
455 | "integrity": "sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==",
456 | "requires": {
457 | "es-to-primitive": "^1.2.0",
458 | "function-bind": "^1.1.1",
459 | "has": "^1.0.3",
460 | "has-symbols": "^1.0.0",
461 | "is-callable": "^1.1.4",
462 | "is-regex": "^1.0.4",
463 | "object-inspect": "^1.6.0",
464 | "object-keys": "^1.1.1",
465 | "string.prototype.trimleft": "^2.0.0",
466 | "string.prototype.trimright": "^2.0.0"
467 | }
468 | },
469 | "es-to-primitive": {
470 | "version": "1.2.0",
471 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
472 | "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
473 | "requires": {
474 | "is-callable": "^1.1.4",
475 | "is-date-object": "^1.0.1",
476 | "is-symbol": "^1.0.2"
477 | }
478 | },
479 | "event-target-shim": {
480 | "version": "5.0.1",
481 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
482 | "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
483 | },
484 | "events": {
485 | "version": "3.0.0",
486 | "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz",
487 | "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA=="
488 | },
489 | "exif-parser": {
490 | "version": "0.1.12",
491 | "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz",
492 | "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI="
493 | },
494 | "file-type": {
495 | "version": "9.0.0",
496 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz",
497 | "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw=="
498 | },
499 | "form-data": {
500 | "version": "2.5.1",
501 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
502 | "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
503 | "requires": {
504 | "asynckit": "^0.4.0",
505 | "combined-stream": "^1.0.6",
506 | "mime-types": "^2.1.12"
507 | }
508 | },
509 | "function-bind": {
510 | "version": "1.1.1",
511 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
512 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
513 | },
514 | "gifwrap": {
515 | "version": "0.9.2",
516 | "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.2.tgz",
517 | "integrity": "sha512-fcIswrPaiCDAyO8xnWvHSZdWChjKXUanKKpAiWWJ/UTkEi/aYKn5+90e7DE820zbEaVR9CE2y4z9bzhQijZ0BA==",
518 | "requires": {
519 | "image-q": "^1.1.1",
520 | "omggif": "^1.0.10"
521 | }
522 | },
523 | "global": {
524 | "version": "4.3.2",
525 | "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz",
526 | "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=",
527 | "requires": {
528 | "min-document": "^2.19.0",
529 | "process": "~0.5.1"
530 | }
531 | },
532 | "has": {
533 | "version": "1.0.3",
534 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
535 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
536 | "requires": {
537 | "function-bind": "^1.1.1"
538 | }
539 | },
540 | "has-symbols": {
541 | "version": "1.0.0",
542 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
543 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q="
544 | },
545 | "ieee754": {
546 | "version": "1.1.13",
547 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
548 | "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="
549 | },
550 | "image-q": {
551 | "version": "1.1.1",
552 | "resolved": "https://registry.npmjs.org/image-q/-/image-q-1.1.1.tgz",
553 | "integrity": "sha1-/IQJlmRGC5DKhi2TALa/u7+/gFY="
554 | },
555 | "ip-regex": {
556 | "version": "2.1.0",
557 | "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
558 | "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk="
559 | },
560 | "is-callable": {
561 | "version": "1.1.4",
562 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
563 | "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA=="
564 | },
565 | "is-date-object": {
566 | "version": "1.0.1",
567 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
568 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY="
569 | },
570 | "is-function": {
571 | "version": "1.0.2",
572 | "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz",
573 | "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ=="
574 | },
575 | "is-regex": {
576 | "version": "1.0.4",
577 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
578 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
579 | "requires": {
580 | "has": "^1.0.1"
581 | }
582 | },
583 | "is-symbol": {
584 | "version": "1.0.2",
585 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
586 | "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
587 | "requires": {
588 | "has-symbols": "^1.0.0"
589 | }
590 | },
591 | "jimp": {
592 | "version": "0.13.0",
593 | "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.13.0.tgz",
594 | "integrity": "sha512-N/iG8L7Qe+AcHhrgcL0m7PTP/14iybmSIuOqCDvuel9gcIKEzxbbGuPCJVMchwXzusc2E7h9UjO9LZDfXb/09w==",
595 | "requires": {
596 | "@babel/runtime": "^7.7.2",
597 | "@jimp/custom": "^0.13.0",
598 | "@jimp/plugins": "^0.13.0",
599 | "@jimp/types": "^0.13.0",
600 | "regenerator-runtime": "^0.13.3"
601 | }
602 | },
603 | "jpeg-js": {
604 | "version": "0.4.0",
605 | "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.0.tgz",
606 | "integrity": "sha512-960VHmtN1vTpasX/1LupLohdP5odwAT7oK/VSm6mW0M58LbrBnowLAPWAZhWGhDAGjzbMnPXZxzB/QYgBwkN0w=="
607 | },
608 | "load-bmfont": {
609 | "version": "1.4.0",
610 | "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.0.tgz",
611 | "integrity": "sha512-kT63aTAlNhZARowaNYcY29Fn/QYkc52M3l6V1ifRcPewg2lvUZDAj7R6dXjOL9D0sict76op3T5+odumDSF81g==",
612 | "requires": {
613 | "buffer-equal": "0.0.1",
614 | "mime": "^1.3.4",
615 | "parse-bmfont-ascii": "^1.0.3",
616 | "parse-bmfont-binary": "^1.0.5",
617 | "parse-bmfont-xml": "^1.1.4",
618 | "phin": "^2.9.1",
619 | "xhr": "^2.0.1",
620 | "xtend": "^4.0.0"
621 | }
622 | },
623 | "mime": {
624 | "version": "1.6.0",
625 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
626 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
627 | },
628 | "mime-db": {
629 | "version": "1.40.0",
630 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
631 | "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA=="
632 | },
633 | "mime-types": {
634 | "version": "2.1.24",
635 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
636 | "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
637 | "requires": {
638 | "mime-db": "1.40.0"
639 | }
640 | },
641 | "min-document": {
642 | "version": "2.19.0",
643 | "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
644 | "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
645 | "requires": {
646 | "dom-walk": "^0.1.0"
647 | }
648 | },
649 | "minimist": {
650 | "version": "1.2.5",
651 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
652 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
653 | },
654 | "mkdirp": {
655 | "version": "0.5.5",
656 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
657 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
658 | "requires": {
659 | "minimist": "^1.2.5"
660 | }
661 | },
662 | "node-fetch": {
663 | "version": "2.6.1",
664 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
665 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
666 | },
667 | "object-inspect": {
668 | "version": "1.6.0",
669 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
670 | "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ=="
671 | },
672 | "object-keys": {
673 | "version": "1.1.1",
674 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
675 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
676 | },
677 | "object.getownpropertydescriptors": {
678 | "version": "2.0.3",
679 | "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
680 | "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
681 | "requires": {
682 | "define-properties": "^1.1.2",
683 | "es-abstract": "^1.5.1"
684 | }
685 | },
686 | "omggif": {
687 | "version": "1.0.10",
688 | "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz",
689 | "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw=="
690 | },
691 | "pako": {
692 | "version": "1.0.11",
693 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
694 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
695 | },
696 | "parse-bmfont-ascii": {
697 | "version": "1.0.6",
698 | "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz",
699 | "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU="
700 | },
701 | "parse-bmfont-binary": {
702 | "version": "1.0.6",
703 | "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz",
704 | "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY="
705 | },
706 | "parse-bmfont-xml": {
707 | "version": "1.1.4",
708 | "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz",
709 | "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==",
710 | "requires": {
711 | "xml-parse-from-string": "^1.0.0",
712 | "xml2js": "^0.4.5"
713 | }
714 | },
715 | "parse-headers": {
716 | "version": "2.0.3",
717 | "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz",
718 | "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA=="
719 | },
720 | "phin": {
721 | "version": "2.9.3",
722 | "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz",
723 | "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA=="
724 | },
725 | "pixelmatch": {
726 | "version": "4.0.2",
727 | "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz",
728 | "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=",
729 | "requires": {
730 | "pngjs": "^3.0.0"
731 | }
732 | },
733 | "pngjs": {
734 | "version": "3.4.0",
735 | "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
736 | "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="
737 | },
738 | "process": {
739 | "version": "0.5.2",
740 | "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz",
741 | "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8="
742 | },
743 | "psl": {
744 | "version": "1.4.0",
745 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
746 | "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw=="
747 | },
748 | "punycode": {
749 | "version": "2.1.1",
750 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
751 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
752 | },
753 | "regenerator-runtime": {
754 | "version": "0.13.5",
755 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
756 | "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
757 | },
758 | "sax": {
759 | "version": "1.2.4",
760 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
761 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
762 | },
763 | "string.prototype.trimleft": {
764 | "version": "2.1.0",
765 | "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
766 | "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
767 | "requires": {
768 | "define-properties": "^1.1.3",
769 | "function-bind": "^1.1.1"
770 | }
771 | },
772 | "string.prototype.trimright": {
773 | "version": "2.1.0",
774 | "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
775 | "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
776 | "requires": {
777 | "define-properties": "^1.1.3",
778 | "function-bind": "^1.1.1"
779 | }
780 | },
781 | "timm": {
782 | "version": "1.6.2",
783 | "resolved": "https://registry.npmjs.org/timm/-/timm-1.6.2.tgz",
784 | "integrity": "sha512-IH3DYDL1wMUwmIlVmMrmesw5lZD6N+ZOAFWEyLrtpoL9Bcrs9u7M/vyOnHzDD2SMs4irLkVjqxZbHrXStS/Nmw=="
785 | },
786 | "tinycolor2": {
787 | "version": "1.4.1",
788 | "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz",
789 | "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g="
790 | },
791 | "tough-cookie": {
792 | "version": "3.0.1",
793 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz",
794 | "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==",
795 | "requires": {
796 | "ip-regex": "^2.1.0",
797 | "psl": "^1.1.28",
798 | "punycode": "^2.1.1"
799 | }
800 | },
801 | "tslib": {
802 | "version": "1.10.0",
803 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
804 | "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ=="
805 | },
806 | "tunnel": {
807 | "version": "0.0.6",
808 | "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
809 | "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
810 | },
811 | "utif": {
812 | "version": "2.0.1",
813 | "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz",
814 | "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==",
815 | "requires": {
816 | "pako": "^1.0.5"
817 | }
818 | },
819 | "util.promisify": {
820 | "version": "1.0.0",
821 | "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
822 | "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
823 | "requires": {
824 | "define-properties": "^1.1.2",
825 | "object.getownpropertydescriptors": "^2.0.3"
826 | }
827 | },
828 | "uuid": {
829 | "version": "3.3.3",
830 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
831 | "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ=="
832 | },
833 | "xhr": {
834 | "version": "2.5.0",
835 | "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz",
836 | "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==",
837 | "requires": {
838 | "global": "~4.3.0",
839 | "is-function": "^1.0.1",
840 | "parse-headers": "^2.0.0",
841 | "xtend": "^4.0.0"
842 | }
843 | },
844 | "xml-parse-from-string": {
845 | "version": "1.0.1",
846 | "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz",
847 | "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig="
848 | },
849 | "xml2js": {
850 | "version": "0.4.22",
851 | "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.22.tgz",
852 | "integrity": "sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw==",
853 | "requires": {
854 | "sax": ">=0.6.0",
855 | "util.promisify": "~1.0.0",
856 | "xmlbuilder": "~11.0.0"
857 | }
858 | },
859 | "xmlbuilder": {
860 | "version": "11.0.1",
861 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
862 | "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
863 | },
864 | "xtend": {
865 | "version": "4.0.2",
866 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
867 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
868 | }
869 | }
870 | }
871 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "function-image-upload-resize-node",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "dependencies": {
7 | "@azure/storage-blob": "^10.3.0",
8 | "jimp": "^0.13.0"
9 | },
10 | "devDependencies": {},
11 | "scripts": {
12 | "test": "echo \"Error: no test specified\" && exit 1"
13 | },
14 | "repository": {
15 | "type": "git",
16 | "url": "git+https://github.com/Azure-Samples/storage-blob-resize-function-node-v10.git"
17 | },
18 | "author": "",
19 | "license": "ISC",
20 | "bugs": {
21 | "url": "https://github.com/Azure-Samples/storage-blob-resize-function-node-v10/issues"
22 | },
23 | "homepage": "https://github.com/Azure-Samples/storage-blob-resize-function-node-v10#readme"
24 | }
25 |
--------------------------------------------------------------------------------