Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/transloadit/uppy
Browse files Browse the repository at this point in the history
  • Loading branch information
arturi committed Dec 13, 2021
2 parents 975dc2d + 0c794a6 commit 367dd4c
Show file tree
Hide file tree
Showing 42 changed files with 233 additions and 147 deletions.
10 changes: 10 additions & 0 deletions .eslintrc.js
Expand Up @@ -152,6 +152,15 @@ module.exports = {
'no-underscore-dangle': 'off',
},
},
{
files: [
'website/src/examples/*/*.es6',
],
rules: {
'import/no-extraneous-dependencies': 'off',
'no-console': 'off',
},
},
{
files: [
'*.test.js',
Expand All @@ -166,6 +175,7 @@ module.exports = {
{
files: [
'bin/**.js',
'bin/**.mjs',
'examples/**/*.js',
'packages/@uppy/companion/test/**/*.js',
'test/**/*.js',
Expand Down
2 changes: 1 addition & 1 deletion BUNDLE-README.md
@@ -1,7 +1,7 @@
# Uppy

Hi, thanks for trying out the bundled version of the Uppy File Uploader. You can use
this from a CDN (`<script src="https://releases.transloadit.com/uppy/v2.3.0/uppy.min.js"></script>`) or bundle it with your webapp.
this from a CDN (`<script src="https://releases.transloadit.com/uppy/v2.3.1/uppy.min.js"></script>`) or bundle it with your webapp.

Note that the recommended way to use Uppy is to install it with yarn/npm and use a
bundler like Webpack so that you can create a smaller custom build with only the
Expand Down
23 changes: 23 additions & 0 deletions CHANGELOG.md
Expand Up @@ -12,6 +12,29 @@ Please add your entries in this format:

In the current stage we aim to release a new version at least every month.

## 2.3.1

Released: 2021-12-09

| Package | Version | Package | Version |
| ----------------- | ------- | ----------------- | ------- |
| @uppy/angular | 0.2.7 | @uppy/store-redux | 2.0.3 |
| @uppy/audio | 0.2.1 | @uppy/svelte | 1.0.6 |
| @uppy/aws-s3 | 2.0.7 | @uppy/vue | 0.4.4 |
| @uppy/companion | 3.1.3 | @uppy/xhr-upload | 2.0.7 |
| @uppy/core | 2.1.4 | @uppy/robodog | 2.1.5 |
| @uppy/dashboard | 2.1.3 | uppy | 2.3.1 |
| @uppy/locales | 2.0.5 | | |

- meta: update npm deps (Antoine du Hamel / #3352)
- @uppy/companion: fix Dockerfile and deploy automation (Mikael Finstad / #3355)
- @uppy/companion: don’t pin Yarn version in `package.json` (Antoine du Hamel / #3347)
- @uppy/aws-s3,@uppy/core,@uppy/dashboard,@uppy/store-redux,@uppy/xhr-upload: deps: use `nanoid/non-secure` to workaround react-native limitation (Antoine du Hamel / #3350)
- @uppy/audio: showRecordingLength option was removed, always clearInterval (Artur Paikin / #3351)
- meta: drop `stringify-object` dependency to generate locales (Antoine du Hamel / #3344)
- meta: add release automations (Antoine du Hamel / #3304)


## 2.3.0

Released: 2021-12-07
Expand Down
26 changes: 13 additions & 13 deletions README.md
Expand Up @@ -69,18 +69,18 @@ $ npm install @uppy/core @uppy/dashboard @uppy/tus

We recommend installing from npm and then using a module bundler such as [Webpack](https://webpack.js.org/), [Browserify](http://browserify.org/) or [Rollup.js](http://rollupjs.org/).

Add CSS [uppy.min.css](https://releases.transloadit.com/uppy/v2.3.0/uppy.min.css), either to your HTML page’s `<head>` or include in JS, if your bundler of choice supports it — transforms and plugins are available for Browserify and Webpack.
Add CSS [uppy.min.css](https://releases.transloadit.com/uppy/v2.3.1/uppy.min.css), either to your HTML page’s `<head>` or include in JS, if your bundler of choice supports it — transforms and plugins are available for Browserify and Webpack.

Alternatively, you can also use a pre-built bundle from Transloadit’s CDN: Edgly. In that case `Uppy` will attach itself to the global `window.Uppy` object.

> ⚠️ The bundle consists of most Uppy plugins, so this method is not recommended for production, as your users will have to download all plugins when you are likely using only a few.
```html
<!-- 1. Add CSS to `<head>` -->
<link href="https://releases.transloadit.com/uppy/v2.3.0/uppy.min.css" rel="stylesheet">
<link href="https://releases.transloadit.com/uppy/v2.3.1/uppy.min.css" rel="stylesheet">

<!-- 2. Add JS before the closing `</body>` -->
<script src="https://releases.transloadit.com/uppy/v2.3.0/uppy.min.js"></script>
<script src="https://releases.transloadit.com/uppy/v2.3.1/uppy.min.js"></script>

<!-- 3. Initialize -->
<div class="UppyDragDrop"></div>
Expand Down Expand Up @@ -190,7 +190,7 @@ If you’re using Uppy from CDN, those polyfills are already included in the leg
bundle, so no need to include anything additionally:
```html
<script src="https://releases.transloadit.com/uppy/v2.3.0/uppy.legacy.min.js"></script>
<script src="https://releases.transloadit.com/uppy/v2.3.1/uppy.legacy.min.js"></script>
```
## FAQ
Expand Down Expand Up @@ -431,21 +431,21 @@ Use Uppy in your project? [Let us know](https://github.com/transloadit/uppy/issu
:---: |:---: |:---: |:---: |:---: |:---: |
[bdirito](https://github.com/bdirito) |[c0b41](https://github.com/c0b41) |[canvasbh](https://github.com/canvasbh) |[christianwengert](https://github.com/christianwengert) |[craigcbrunner](https://github.com/craigcbrunner) |[darthf1](https://github.com/darthf1) |
[<img alt="dkisic" src="https://avatars.githubusercontent.com/u/32257921?v=4&s=117" width="117">](https://github.com/dkisic) |[<img alt="fingul" src="https://avatars.githubusercontent.com/u/894739?v=4&s=117" width="117">](https://github.com/fingul) |[<img alt="franckl" src="https://avatars.githubusercontent.com/u/3875803?v=4&s=117" width="117">](https://github.com/franckl) |[<img alt="gaelicwinter" src="https://avatars.githubusercontent.com/u/6510266?v=4&s=117" width="117">](https://github.com/gaelicwinter) |[<img alt="green-mike" src="https://avatars.githubusercontent.com/u/5584225?v=4&s=117" width="117">](https://github.com/green-mike) |[<img alt="hxgf" src="https://avatars.githubusercontent.com/u/56104?v=4&s=117" width="117">](https://github.com/hxgf) |
[<img alt="dkisic" src="https://avatars.githubusercontent.com/u/32257921?v=4&s=117" width="117">](https://github.com/dkisic) |[<img alt="fingul" src="https://avatars.githubusercontent.com/u/894739?v=4&s=117" width="117">](https://github.com/fingul) |[<img alt="franckl" src="https://avatars.githubusercontent.com/u/3875803?v=4&s=117" width="117">](https://github.com/franckl) |[<img alt="gaelicwinter" src="https://avatars.githubusercontent.com/u/6510266?v=4&s=117" width="117">](https://github.com/gaelicwinter) |[<img alt="github-actions[bot]" src="https://avatars.githubusercontent.com/in/15368?v=4&s=117" width="117">](https://github.com/apps/github-actions) |[<img alt="green-mike" src="https://avatars.githubusercontent.com/u/5584225?v=4&s=117" width="117">](https://github.com/green-mike) |
:---: |:---: |:---: |:---: |:---: |:---: |
[dkisic](https://github.com/dkisic) |[fingul](https://github.com/fingul) |[franckl](https://github.com/franckl) |[gaelicwinter](https://github.com/gaelicwinter) |[green-mike](https://github.com/green-mike) |[hxgf](https://github.com/hxgf) |
[dkisic](https://github.com/dkisic) |[fingul](https://github.com/fingul) |[franckl](https://github.com/franckl) |[gaelicwinter](https://github.com/gaelicwinter) |[github-actions[bot]](https://github.com/apps/github-actions) |[green-mike](https://github.com/green-mike) |
[<img alt="johnmanjiro13" src="https://avatars.githubusercontent.com/u/28798279?v=4&s=117" width="117">](https://github.com/johnmanjiro13) |[<img alt="kode-ninja" src="https://avatars.githubusercontent.com/u/7857611?v=4&s=117" width="117">](https://github.com/kode-ninja) |[<img alt="magumbo" src="https://avatars.githubusercontent.com/u/6683765?v=4&s=117" width="117">](https://github.com/magumbo) |[<img alt="ninesalt" src="https://avatars.githubusercontent.com/u/7952255?v=4&s=117" width="117">](https://github.com/ninesalt) |[<img alt="phil714" src="https://avatars.githubusercontent.com/u/7584581?v=4&s=117" width="117">](https://github.com/phil714) |[<img alt="luntta" src="https://avatars.githubusercontent.com/u/14221637?v=4&s=117" width="117">](https://github.com/luntta) |
[<img alt="hxgf" src="https://avatars.githubusercontent.com/u/56104?v=4&s=117" width="117">](https://github.com/hxgf) |[<img alt="johnmanjiro13" src="https://avatars.githubusercontent.com/u/28798279?v=4&s=117" width="117">](https://github.com/johnmanjiro13) |[<img alt="kode-ninja" src="https://avatars.githubusercontent.com/u/7857611?v=4&s=117" width="117">](https://github.com/kode-ninja) |[<img alt="magumbo" src="https://avatars.githubusercontent.com/u/6683765?v=4&s=117" width="117">](https://github.com/magumbo) |[<img alt="ninesalt" src="https://avatars.githubusercontent.com/u/7952255?v=4&s=117" width="117">](https://github.com/ninesalt) |[<img alt="phil714" src="https://avatars.githubusercontent.com/u/7584581?v=4&s=117" width="117">](https://github.com/phil714) |
:---: |:---: |:---: |:---: |:---: |:---: |
[johnmanjiro13](https://github.com/johnmanjiro13) |[kode-ninja](https://github.com/kode-ninja) |[magumbo](https://github.com/magumbo) |[ninesalt](https://github.com/ninesalt) |[phil714](https://github.com/phil714) |[luntta](https://github.com/luntta) |
[hxgf](https://github.com/hxgf) |[johnmanjiro13](https://github.com/johnmanjiro13) |[kode-ninja](https://github.com/kode-ninja) |[magumbo](https://github.com/magumbo) |[ninesalt](https://github.com/ninesalt) |[phil714](https://github.com/phil714) |
[<img alt="rhymes" src="https://avatars.githubusercontent.com/u/146201?v=4&s=117" width="117">](https://github.com/rhymes) |[<img alt="rlebosse" src="https://avatars.githubusercontent.com/u/2794137?v=4&s=117" width="117">](https://github.com/rlebosse) |[<img alt="rtaieb" src="https://avatars.githubusercontent.com/u/35224301?v=4&s=117" width="117">](https://github.com/rtaieb) |[<img alt="slawexxx44" src="https://avatars.githubusercontent.com/u/11180644?v=4&s=117" width="117">](https://github.com/slawexxx44) |[<img alt="thanhthot" src="https://avatars.githubusercontent.com/u/50633205?v=4&s=117" width="117">](https://github.com/thanhthot) |[<img alt="tinny77" src="https://avatars.githubusercontent.com/u/1872936?v=4&s=117" width="117">](https://github.com/tinny77) |
[<img alt="luntta" src="https://avatars.githubusercontent.com/u/14221637?v=4&s=117" width="117">](https://github.com/luntta) |[<img alt="rhymes" src="https://avatars.githubusercontent.com/u/146201?v=4&s=117" width="117">](https://github.com/rhymes) |[<img alt="rlebosse" src="https://avatars.githubusercontent.com/u/2794137?v=4&s=117" width="117">](https://github.com/rlebosse) |[<img alt="rtaieb" src="https://avatars.githubusercontent.com/u/35224301?v=4&s=117" width="117">](https://github.com/rtaieb) |[<img alt="slawexxx44" src="https://avatars.githubusercontent.com/u/11180644?v=4&s=117" width="117">](https://github.com/slawexxx44) |[<img alt="thanhthot" src="https://avatars.githubusercontent.com/u/50633205?v=4&s=117" width="117">](https://github.com/thanhthot) |
:---: |:---: |:---: |:---: |:---: |:---: |
[rhymes](https://github.com/rhymes) |[rlebosse](https://github.com/rlebosse) |[rtaieb](https://github.com/rtaieb) |[slawexxx44](https://github.com/slawexxx44) |[thanhthot](https://github.com/thanhthot) |[tinny77](https://github.com/tinny77) |
[luntta](https://github.com/luntta) |[rhymes](https://github.com/rhymes) |[rlebosse](https://github.com/rlebosse) |[rtaieb](https://github.com/rtaieb) |[slawexxx44](https://github.com/slawexxx44) |[thanhthot](https://github.com/thanhthot) |
[<img alt="tusharjkhunt" src="https://avatars.githubusercontent.com/u/31904234?v=4&s=117" width="117">](https://github.com/tusharjkhunt) |[<img alt="vedran555" src="https://avatars.githubusercontent.com/u/38395951?v=4&s=117" width="117">](https://github.com/vedran555) |[<img alt="yoann-hellopret" src="https://avatars.githubusercontent.com/u/46525558?v=4&s=117" width="117">](https://github.com/yoann-hellopret) |[<img alt="olitomas" src="https://avatars.githubusercontent.com/u/6918659?v=4&s=117" width="117">](https://github.com/olitomas) |[<img alt="JimmyLv" src="https://avatars.githubusercontent.com/u/4997466?v=4&s=117" width="117">](https://github.com/JimmyLv) |
:---: |:---: |:---: |:---: |:---: |
[tusharjkhunt](https://github.com/tusharjkhunt) |[vedran555](https://github.com/vedran555) |[yoann-hellopret](https://github.com/yoann-hellopret) |[olitomas](https://github.com/olitomas) |[JimmyLv](https://github.com/JimmyLv) |
[<img alt="tinny77" src="https://avatars.githubusercontent.com/u/1872936?v=4&s=117" width="117">](https://github.com/tinny77) |[<img alt="tusharjkhunt" src="https://avatars.githubusercontent.com/u/31904234?v=4&s=117" width="117">](https://github.com/tusharjkhunt) |[<img alt="vedran555" src="https://avatars.githubusercontent.com/u/38395951?v=4&s=117" width="117">](https://github.com/vedran555) |[<img alt="yoann-hellopret" src="https://avatars.githubusercontent.com/u/46525558?v=4&s=117" width="117">](https://github.com/yoann-hellopret) |[<img alt="olitomas" src="https://avatars.githubusercontent.com/u/6918659?v=4&s=117" width="117">](https://github.com/olitomas) |[<img alt="JimmyLv" src="https://avatars.githubusercontent.com/u/4997466?v=4&s=117" width="117">](https://github.com/JimmyLv) |
:---: |:---: |:---: |:---: |:---: |:---: |
[tinny77](https://github.com/tinny77) |[tusharjkhunt](https://github.com/tusharjkhunt) |[vedran555](https://github.com/vedran555) |[yoann-hellopret](https://github.com/yoann-hellopret) |[olitomas](https://github.com/olitomas) |[JimmyLv](https://github.com/JimmyLv) |
<!--/contributors-->
Expand Down
44 changes: 23 additions & 21 deletions bin/update-contributors.mjs 100644 → 100755
@@ -1,36 +1,38 @@
import { spawn } from "node:child_process"
import fs from "node:fs/promises"
#!/usr/bin/env node

const README_FILE_NAME = new URL("../README.md", import.meta.url)
import { spawn } from 'node:child_process'
import fs from 'node:fs/promises'

const readme = await fs.open(README_FILE_NAME, "r+")
const README_FILE_NAME = new URL('../README.md', import.meta.url)

const readme = await fs.open(README_FILE_NAME, 'r+')
const readmeContent = await readme.readFile()

const githubcontrib = spawn("npx", [
'githubcontrib',
'--owner', 'transloadit',
'--repo', 'uppy',
'--cols', '6',
'--format', 'md',
'--showlogin', 'true',
'--sortOrder', 'desc',
], {
stdio: ['ignore', 'pipe', 'inherit'],
});
const githubcontrib = spawn('npx', [
'githubcontrib',
'--owner', 'transloadit',
'--repo', 'uppy',
'--cols', '6',
'--format', 'md',
'--showlogin', 'true',
'--sortOrder', 'desc',
], {
stdio: ['ignore', 'pipe', 'inherit'],
})

githubcontrib.on('error', console.error)

// Detect start of contributors section.
const START_TAG = Buffer.from("<!--contributors-->\n")
let START_TAG_POSITION = readmeContent.indexOf(START_TAG) + START_TAG.byteLength
const START_TAG = Buffer.from('<!--contributors-->\n')
const START_TAG_POSITION = readmeContent.indexOf(START_TAG) + START_TAG.byteLength

let cursor = START_TAG_POSITION
for await (const data of githubcontrib.stdout) {
const { bytesWritten } = await readme.write(data.toString('utf-8'), cursor, "utf-8")
const { bytesWritten } = await readme.write(data.toString('utf-8'), cursor, 'utf-8')
cursor += bytesWritten
}

if(cursor === START_TAG_POSITION) {
if (cursor === START_TAG_POSITION) {
console.log('Empty response from githubcontrib. GitHub’s rate limit?')
await readme.close()
process.exit(1)
Expand All @@ -39,8 +41,8 @@ if(cursor === START_TAG_POSITION) {
// Write the end of the file.
await readme.write(
readmeContent,
readmeContent.indexOf("<!--/contributors-->"),
readmeContent.indexOf('<!--/contributors-->'),
undefined,
cursor
cursor,
)
await readme.close()
4 changes: 2 additions & 2 deletions examples/cdn-example/index.html
Expand Up @@ -4,11 +4,11 @@
<title></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://releases.transloadit.com/uppy/v2.3.0/uppy.min.css" rel="stylesheet">
<link href="https://releases.transloadit.com/uppy/v2.3.1/uppy.min.css" rel="stylesheet">
</head>
<body>
<button id="uppyModalOpener">Open Modal</button>
<script src="https://releases.transloadit.com/uppy/v2.3.0/uppy.min.js"></script>
<script src="https://releases.transloadit.com/uppy/v2.3.1/uppy.min.js"></script>
<script>
const uppy = new Uppy.Core({debug: true, autoProceed: false})
.use(Uppy.Dashboard, { trigger: '#uppyModalOpener' })
Expand Down
2 changes: 1 addition & 1 deletion examples/transloadit-textarea/index.html
Expand Up @@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://releases.transloadit.com/uppy/robodog/v2.1.4/robodog.css">
<link rel="stylesheet" href="https://releases.transloadit.com/uppy/robodog/v2.1.5/robodog.css">
<style>
body {
font-family: Roboto, Open Sans;
Expand Down
4 changes: 2 additions & 2 deletions examples/uppy-with-companion/client/index.html
Expand Up @@ -4,11 +4,11 @@
<title></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://releases.transloadit.com/uppy/v2.3.0/uppy.min.css" rel="stylesheet">
<link href="https://releases.transloadit.com/uppy/v2.3.1/uppy.min.css" rel="stylesheet">
</head>
<body>
<button id="uppyModalOpener">Open Modal</button>
<script src="https://releases.transloadit.com/uppy/v2.3.0/uppy.min.js"></script>
<script src="https://releases.transloadit.com/uppy/v2.3.1/uppy.min.js"></script>
<script>
const uppy = new Uppy.Core({debug: true, autoProceed: false})
.use(Uppy.Dashboard, { trigger: '#uppyModalOpener' })
Expand Down
4 changes: 2 additions & 2 deletions packages/@uppy/angular/package.json
@@ -1,7 +1,7 @@
{
"name": "@uppy/angular",
"version": "0.2.6",
"module": "dist/angular/esm2015/public-api.js",
"version": "0.2.7",
"module": "dist/angular/esm2020/public-api.mjs",
"types": "dist/angular/uppy-angular.d.ts",
"scripts": {
"ng": "ng",
Expand Down
7 changes: 7 additions & 0 deletions packages/@uppy/audio/CHANGELOG.md
@@ -1,5 +1,12 @@
# @uppy/audio

## 0.2.1

Released: 2021-12-09
Included in: Uppy v2.3.1

- @uppy/audio: showRecordingLength option was removed, always clearInterval (Artur Paikin / #3351)

## 0.2.0

Released: 2021-12-07
Expand Down
2 changes: 1 addition & 1 deletion packages/@uppy/audio/package.json
@@ -1,7 +1,7 @@
{
"name": "@uppy/audio",
"description": "Uppy plugin that records audio using the device’s microphone.",
"version": "0.2.0",
"version": "0.2.1",
"license": "MIT",
"main": "lib/index.js",
"style": "dist/style.min.css",
Expand Down
7 changes: 7 additions & 0 deletions packages/@uppy/aws-s3/CHANGELOG.md
@@ -1,5 +1,12 @@
# @uppy/aws-s3

## 2.0.7

Released: 2021-12-09
Included in: Uppy v2.3.1

- @uppy/aws-s3,@uppy/core,@uppy/dashboard,@uppy/store-redux,@uppy/xhr-upload: deps: use `nanoid/non-secure` to workaround react-native limitation (Antoine du Hamel / #3350)

## 2.0.6

Released: 2021-12-07
Expand Down
2 changes: 1 addition & 1 deletion packages/@uppy/aws-s3/package.json
@@ -1,7 +1,7 @@
{
"name": "@uppy/aws-s3",
"description": "Upload to Amazon S3 with Uppy",
"version": "2.0.6",
"version": "2.0.7",
"license": "MIT",
"main": "lib/index.js",
"types": "types/index.d.ts",
Expand Down
8 changes: 8 additions & 0 deletions packages/@uppy/companion/CHANGELOG.md
@@ -1,5 +1,13 @@
# @uppy/companion

## 3.1.3

Released: 2021-12-09
Included in: Uppy v2.3.1

- @uppy/companion: fix Dockerfile and deploy automation (Mikael Finstad / #3355)
- @uppy/companion: don't pin Yarn version in `package.json` (Antoine du Hamel / #3347)

## 3.1.2

Released: 2021-12-07
Expand Down
2 changes: 1 addition & 1 deletion packages/@uppy/companion/package.json
@@ -1,6 +1,6 @@
{
"name": "@uppy/companion",
"version": "3.1.2",
"version": "3.1.3",
"description": "OAuth helper and remote fetcher for Uppy's (https://uppy.io) extensible file upload widget with support for drag&drop, resumable uploads, previews, restrictions, file processing/encoding, remote providers like Dropbox and Google Drive, S3 and more :dog:",
"main": "lib/companion.js",
"types": "lib/companion.d.ts",
Expand Down
7 changes: 7 additions & 0 deletions packages/@uppy/core/CHANGELOG.md
@@ -1,5 +1,12 @@
# @uppy/core

## 2.1.4

Released: 2021-12-09
Included in: Uppy v2.3.1

- @uppy/aws-s3,@uppy/core,@uppy/dashboard,@uppy/store-redux,@uppy/xhr-upload: deps: use `nanoid/non-secure` to workaround react-native limitation (Antoine du Hamel / #3350)

## 2.1.3

Released: 2021-12-07
Expand Down
2 changes: 1 addition & 1 deletion packages/@uppy/core/package.json
@@ -1,7 +1,7 @@
{
"name": "@uppy/core",
"description": "Core module for the extensible JavaScript file upload widget with support for drag&drop, resumable uploads, previews, restrictions, file processing/encoding, remote providers like Instagram, Dropbox, Google Drive, S3 and more :dog:",
"version": "2.1.3",
"version": "2.1.4",
"license": "MIT",
"main": "lib/index.js",
"style": "dist/style.min.css",
Expand Down
7 changes: 7 additions & 0 deletions packages/@uppy/dashboard/CHANGELOG.md
@@ -1,5 +1,12 @@
# @uppy/dashboard

## 2.1.3

Released: 2021-12-09
Included in: Uppy v2.3.1

- @uppy/aws-s3,@uppy/core,@uppy/dashboard,@uppy/store-redux,@uppy/xhr-upload: deps: use `nanoid/non-secure` to workaround react-native limitation (Antoine du Hamel / #3350)

## 2.1.2

Released: 2021-12-07
Expand Down

0 comments on commit 367dd4c

Please sign in to comment.