mirror of https://github.com/laurent22/joplin.git
Merge branch 'dev' into mobile_profile_switcher
commit
f1b4557b2f
|
@ -8,6 +8,22 @@ jobs:
|
|||
os: [macos-latest, ubuntu-latest, windows-2019]
|
||||
steps:
|
||||
|
||||
# Trying to fix random networking issues on Windows
|
||||
# https://github.com/actions/runner-images/issues/1187#issuecomment-686735760
|
||||
- name: Disable TCP/UDP offload on Windows
|
||||
if: runner.os == 'Windows'
|
||||
run: Disable-NetAdapterChecksumOffload -Name * -TcpIPv4 -UdpIPv4 -TcpIPv6 -UdpIPv6
|
||||
|
||||
- name: Disable TCP/UDP offload on Linux
|
||||
if: runner.os == 'Linux'
|
||||
run: sudo ethtool -K eth0 tx off rx off
|
||||
|
||||
- name: Disable TCP/UDP offload on macOS
|
||||
if: runner.os == 'macOS'
|
||||
run: |
|
||||
sudo sysctl -w net.link.generic.system.hwcksum_tx=0
|
||||
sudo sysctl -w net.link.generic.system.hwcksum_rx=0
|
||||
|
||||
# Silence apt-get update errors (for example when a module doesn't
|
||||
# exist) since otherwise it will make the whole build fails, even though
|
||||
# it might work without update. libsecret-1-dev is required for keytar -
|
||||
|
@ -48,7 +64,7 @@ jobs:
|
|||
- uses: olegtarasov/get-tag@v2.1
|
||||
- uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: '16'
|
||||
node-version: '18'
|
||||
|
||||
- name: Install Yarn
|
||||
run: |
|
||||
|
@ -130,7 +146,7 @@ jobs:
|
|||
|
||||
- uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: '16'
|
||||
node-version: '18'
|
||||
|
||||
- name: Install Yarn
|
||||
run: |
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"@ephox/oxide-icons-tools": "^2.1.1",
|
||||
"gulp": "^4.0.2",
|
||||
"gulp": "4.0.2",
|
||||
"gulp-clean": "^0.4.0",
|
||||
"prompts": "^2.2.1"
|
||||
},
|
||||
"iconPackName": "Joplin"
|
||||
}
|
||||
}
|
|
@ -2,7 +2,7 @@
|
|||
# Build stage
|
||||
# =============================================================================
|
||||
|
||||
FROM node:16-bullseye AS builder
|
||||
FROM node:18-bullseye AS builder
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y \
|
||||
|
|
10
README.md
10
README.md
|
@ -2,16 +2,6 @@
|
|||
[![Donate using PayPal](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=E8JMYD2LQ8MMA&lc=GB&item_name=Joplin+Development¤cy_code=EUR&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted) [![Sponsor on GitHub](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/GitHub-Badge.svg)](https://github.com/sponsors/laurent22/) [![Become a patron](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/Patreon-Badge.svg)](https://www.patreon.com/joplin) [![Donate using IBAN](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/Donate-IBAN.svg)](https://joplinapp.org/donate/#donations)
|
||||
<!-- DONATELINKS -->
|
||||
|
||||
* * *
|
||||
|
||||
Joplin will have [its first Meetup on 30 August 2022](https://discourse.joplinapp.org/t/joplin-first-meetup-on-30-august/26808)! Come and join us at the Old Thameside Inn next to London Bridge!
|
||||
|
||||
* * *
|
||||
|
||||
🌞 Joplin participates in **Google Summer of Code 2022**! More info on [the announcement post](https://github.com/laurent22/joplin/blob/dev/readme/news/20220308-gsoc2022-start.md). 🌞
|
||||
|
||||
* * *
|
||||
|
||||
<img width="64" src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/LinuxIcons/256x256.png" align="left" /> **Joplin** is a free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks. The notes are searchable, can be copied, tagged and modified either from the applications directly or from your own text editor. The notes are in [Markdown format](#markdown).
|
||||
|
||||
Notes exported from Evernote [can be imported](#importing) into Joplin, including the formatted content (which is converted to Markdown), resources (images, attachments, etc.) and complete metadata (geolocation, updated time, created time, etc.). Plain Markdown files can also be imported.
|
||||
|
|
44
package.json
44
package.json
|
@ -62,30 +62,30 @@
|
|||
}
|
||||
},
|
||||
"devDependencies": {
|
||||
"@seiyab/eslint-plugin-react-hooks": "^4.5.1-alpha.5",
|
||||
"@typescript-eslint/eslint-plugin": "^5.33.1",
|
||||
"@typescript-eslint/parser": "^5.33.1",
|
||||
"cspell": "^5.20.0",
|
||||
"eslint": "^8.22.0",
|
||||
"eslint-interactive": "^10.0.0",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"eslint-plugin-promise": "^6.0.1",
|
||||
"eslint-plugin-react": "^7.30.1",
|
||||
"fs-extra": "^8.1.0",
|
||||
"glob": "^7.1.6",
|
||||
"gulp": "^4.0.2",
|
||||
"husky": "^3.0.2",
|
||||
"lerna": "^3.22.1",
|
||||
"lint-staged": "^9.2.1",
|
||||
"madge": "^4.0.2",
|
||||
"typedoc": "^0.17.8",
|
||||
"@seiyab/eslint-plugin-react-hooks": "4.5.1-alpha.5",
|
||||
"@typescript-eslint/eslint-plugin": "5.33.1",
|
||||
"@typescript-eslint/parser": "5.33.1",
|
||||
"cspell": "5.20.0",
|
||||
"eslint": "8.22.0",
|
||||
"eslint-interactive": "10.0.0",
|
||||
"eslint-plugin-import": "2.26.0",
|
||||
"eslint-plugin-promise": "6.0.1",
|
||||
"eslint-plugin-react": "7.30.1",
|
||||
"fs-extra": "8.1.0",
|
||||
"glob": "7.2.0",
|
||||
"gulp": "4.0.2",
|
||||
"husky": "3.1.0",
|
||||
"lerna": "3.22.1",
|
||||
"lint-staged": "9.5.0",
|
||||
"madge": "4.0.2",
|
||||
"typedoc": "0.17.8",
|
||||
"typescript": "4.7.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/fs-extra": "^9.0.13",
|
||||
"http-server": "^0.12.3",
|
||||
"node-gyp": "^8.4.1",
|
||||
"nodemon": "^2.0.9"
|
||||
"@types/fs-extra": "9.0.13",
|
||||
"http-server": "0.13.0",
|
||||
"node-gyp": "8.4.1",
|
||||
"nodemon": "2.0.15"
|
||||
},
|
||||
"packageManager": "yarn@3.1.1"
|
||||
"packageManager": "yarn@3.2.4"
|
||||
}
|
||||
|
|
|
@ -42,39 +42,39 @@
|
|||
"dependencies": {
|
||||
"@joplin/lib": "~2.9",
|
||||
"@joplin/renderer": "~2.9",
|
||||
"aws-sdk": "^2.588.0",
|
||||
"chalk": "^4.1.0",
|
||||
"compare-version": "^0.1.2",
|
||||
"fs-extra": "^5.0.0",
|
||||
"html-entities": "^1.2.1",
|
||||
"image-type": "^3.0.0",
|
||||
"keytar": "^7.0.0",
|
||||
"md5": "^2.2.1",
|
||||
"node-rsa": "^1.1.1",
|
||||
"open": "^7.0.4",
|
||||
"proper-lockfile": "^2.0.1",
|
||||
"read-chunk": "^2.1.0",
|
||||
"server-destroy": "^1.0.1",
|
||||
"sharp": "^0.26.2",
|
||||
"sprintf-js": "^1.1.2",
|
||||
"sqlite3": "^5.0.2",
|
||||
"string-padding": "^1.0.2",
|
||||
"strip-ansi": "^4.0.0",
|
||||
"tcp-port-used": "^1.0.2",
|
||||
"terminal-kit": "^1.30.0",
|
||||
"aws-sdk": "2.1043.0",
|
||||
"chalk": "4.1.2",
|
||||
"compare-version": "0.1.2",
|
||||
"fs-extra": "5.0.0",
|
||||
"html-entities": "1.4.0",
|
||||
"image-type": "3.1.0",
|
||||
"keytar": "7.7.0",
|
||||
"md5": "2.3.0",
|
||||
"node-rsa": "1.1.1",
|
||||
"open": "7.4.2",
|
||||
"proper-lockfile": "2.0.1",
|
||||
"read-chunk": "2.1.0",
|
||||
"server-destroy": "1.0.1",
|
||||
"sharp": "0.31.1",
|
||||
"sprintf-js": "1.1.2",
|
||||
"sqlite3": "5.0.2",
|
||||
"string-padding": "1.0.2",
|
||||
"strip-ansi": "4.0.0",
|
||||
"tcp-port-used": "1.0.2",
|
||||
"terminal-kit": "1.49.4",
|
||||
"tkwidgets": "0.5.27",
|
||||
"url-parse": "^1.4.7",
|
||||
"word-wrap": "^1.2.3",
|
||||
"yargs-parser": "^7.0.0"
|
||||
"url-parse": "1.5.3",
|
||||
"word-wrap": "1.2.3",
|
||||
"yargs-parser": "7.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@joplin/tools": "~2.9",
|
||||
"@types/fs-extra": "^9.0.6",
|
||||
"@types/jest": "^26.0.15",
|
||||
"@types/node": "^14.14.6",
|
||||
"gulp": "^4.0.2",
|
||||
"jest": "^26.6.3",
|
||||
"temp": "^0.9.1",
|
||||
"typescript": "^4.0.5"
|
||||
"@types/fs-extra": "9.0.13",
|
||||
"@types/jest": "26.0.24",
|
||||
"@types/node": "14.18.0",
|
||||
"gulp": "4.0.2",
|
||||
"jest": "26.6.3",
|
||||
"temp": "0.9.4",
|
||||
"typescript": "4.5.2"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,16 +12,16 @@
|
|||
],
|
||||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"chalk": "^4.1.0",
|
||||
"chalk": "4.1.2",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"yargs": "^16.2.0"
|
||||
"yargs": "16.2.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,15 +14,15 @@
|
|||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"chalk": "^4.1.0",
|
||||
"yargs": "^16.2.0"
|
||||
"chalk": "4.1.2",
|
||||
"yargs": "16.2.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,18 +14,18 @@
|
|||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"chalk": "^4.1.0",
|
||||
"yargs": "^16.2.0"
|
||||
"chalk": "4.1.2",
|
||||
"yargs": "16.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"left-pad": "^1.3.0"
|
||||
"left-pad": "1.3.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,15 +14,15 @@
|
|||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"chalk": "^4.1.0",
|
||||
"yargs": "^16.2.0"
|
||||
"chalk": "4.1.2",
|
||||
"yargs": "16.2.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,15 +14,15 @@
|
|||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"chalk": "^4.1.0",
|
||||
"yargs": "^16.2.0"
|
||||
"chalk": "4.1.2",
|
||||
"yargs": "16.2.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,15 +14,15 @@
|
|||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"chalk": "^4.1.0",
|
||||
"yargs": "^16.2.0"
|
||||
"chalk": "4.1.2",
|
||||
"yargs": "16.2.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -12,16 +12,16 @@
|
|||
],
|
||||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"chalk": "^4.1.0",
|
||||
"chalk": "4.1.2",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"yargs": "^16.2.0"
|
||||
"yargs": "16.2.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,15 +14,15 @@
|
|||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"chalk": "^4.1.0",
|
||||
"yargs": "^16.2.0"
|
||||
"chalk": "4.1.2",
|
||||
"yargs": "16.2.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,15 +14,15 @@
|
|||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"chalk": "^4.1.0",
|
||||
"yargs": "^16.2.0"
|
||||
"chalk": "4.1.2",
|
||||
"yargs": "16.2.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -12,16 +12,16 @@
|
|||
],
|
||||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"chalk": "^4.1.0",
|
||||
"chalk": "4.1.2",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"yargs": "^16.2.0"
|
||||
"yargs": "16.2.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,15 +14,15 @@
|
|||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"chalk": "^4.1.0",
|
||||
"yargs": "^16.2.0"
|
||||
"chalk": "4.1.2",
|
||||
"yargs": "16.2.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,15 +14,15 @@
|
|||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"chalk": "^4.1.0",
|
||||
"yargs": "^16.2.0"
|
||||
"chalk": "4.1.2",
|
||||
"yargs": "16.2.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -12,16 +12,16 @@
|
|||
],
|
||||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"chalk": "^4.1.0",
|
||||
"chalk": "4.1.2",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"yargs": "^16.2.0"
|
||||
"yargs": "16.2.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -12,16 +12,16 @@
|
|||
],
|
||||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"chalk": "^4.1.0",
|
||||
"chalk": "4.1.2",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"yargs": "^16.2.0"
|
||||
"yargs": "16.2.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,15 +14,15 @@
|
|||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"chalk": "^4.1.0",
|
||||
"yargs": "^16.2.0"
|
||||
"chalk": "4.1.2",
|
||||
"yargs": "16.2.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,15 +14,15 @@
|
|||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"chalk": "^4.1.0",
|
||||
"yargs": "^16.2.0"
|
||||
"chalk": "4.1.2",
|
||||
"yargs": "16.2.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,15 +14,15 @@
|
|||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"chalk": "^4.1.0",
|
||||
"yargs": "^16.2.0"
|
||||
"chalk": "4.1.2",
|
||||
"yargs": "16.2.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,18 +14,18 @@
|
|||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"chalk": "^4.1.0",
|
||||
"yargs": "^16.2.0"
|
||||
"chalk": "4.1.2",
|
||||
"yargs": "16.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"uslug": "^1.0.4"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,18 +14,18 @@
|
|||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"chalk": "^4.1.0",
|
||||
"yargs": "^16.2.0"
|
||||
"chalk": "4.1.2",
|
||||
"yargs": "16.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"left-pad": "^1.3.0"
|
||||
"left-pad": "1.3.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -24,6 +24,19 @@ const getClientEnvironment = require('./env');
|
|||
const ModuleNotFoundPlugin = require('react-dev-utils/ModuleNotFoundPlugin');
|
||||
const ForkTsCheckerWebpackPlugin = require('react-dev-utils/ForkTsCheckerWebpackPlugin');
|
||||
const typescriptFormatter = require('react-dev-utils/typescriptFormatter');
|
||||
const md5 = require('md5');
|
||||
|
||||
class HashGen {
|
||||
|
||||
update(data) {
|
||||
this.data_ = data;
|
||||
}
|
||||
|
||||
digest() {
|
||||
return md5(escape(this.data_));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const postcssNormalize = require('postcss-normalize');
|
||||
|
||||
|
@ -166,6 +179,8 @@ module.exports = function(webpackEnv) {
|
|||
// changing JS code would still trigger a refresh.
|
||||
].filter(Boolean),
|
||||
output: {
|
||||
// Needed to fix this: https://www.reddit.com/r/webdev/comments/qd14bm/node_17_currently_breaks_most_webpack/
|
||||
hashFunction: HashGen,
|
||||
// The build folder.
|
||||
path: isEnvProduction ? paths.appBuild : undefined,
|
||||
// Add /* filename */ comments to generated require()s in the output.
|
||||
|
|
|
@ -20,8 +20,8 @@
|
|||
"babel-preset-react-app": "^9.1.1",
|
||||
"camelcase": "^5.3.1",
|
||||
"case-sensitive-paths-webpack-plugin": "2.3.0",
|
||||
"css-loader": "3.4.2",
|
||||
"dotenv": "8.2.0",
|
||||
"css-loader": "3.6.0",
|
||||
"dotenv": "8.6.0",
|
||||
"dotenv-expand": "5.1.0",
|
||||
"file-loader": "4.3.0",
|
||||
"fs-extra": "^8.1.0",
|
||||
|
@ -38,14 +38,14 @@
|
|||
"postcss-loader": "3.0.0",
|
||||
"postcss-normalize": "8.0.1",
|
||||
"postcss-preset-env": "6.7.1",
|
||||
"postcss-safe-parser": "4.0.1",
|
||||
"postcss-safe-parser": "4.0.2",
|
||||
"react": "^16.12.0",
|
||||
"react-app-polyfill": "^1.0.6",
|
||||
"react-dev-utils": "^10.1.0",
|
||||
"react-dom": "^16.12.0",
|
||||
"react-redux": "^5.0.7",
|
||||
"redux": "^4.0.0",
|
||||
"resolve": "1.15.0",
|
||||
"resolve": "1.22.1",
|
||||
"resolve-url-loader": "^3.1.3",
|
||||
"sass-loader": "8.0.2",
|
||||
"semver": "6.3.0",
|
||||
|
@ -61,6 +61,7 @@
|
|||
"devDependencies": {
|
||||
"cra-build-watch": "^3.4.0",
|
||||
"fs-extra": "^6.0.1",
|
||||
"md5": "^2.3.0",
|
||||
"react-scripts": "^3.3.1"
|
||||
}
|
||||
},
|
||||
|
@ -3126,17 +3127,6 @@
|
|||
"eslint": ">= 4.12.1"
|
||||
}
|
||||
},
|
||||
"node_modules/babel-eslint/node_modules/resolve": {
|
||||
"version": "1.15.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
|
||||
"integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
|
||||
"dependencies": {
|
||||
"path-parse": "^1.0.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/babel-extract-comments": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz",
|
||||
|
@ -3286,17 +3276,6 @@
|
|||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/babel-plugin-macros/node_modules/resolve": {
|
||||
"version": "1.15.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
|
||||
"integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
|
||||
"dependencies": {
|
||||
"path-parse": "^1.0.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/babel-plugin-macros/node_modules/resolve-from": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
|
||||
|
@ -3984,6 +3963,15 @@
|
|||
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
|
||||
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="
|
||||
},
|
||||
"node_modules/charenc": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
|
||||
"integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/chokidar": {
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz",
|
||||
|
@ -4840,6 +4828,15 @@
|
|||
"semver": "bin/semver"
|
||||
}
|
||||
},
|
||||
"node_modules/crypt": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
|
||||
"integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/crypto-browserify": {
|
||||
"version": "3.12.0",
|
||||
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
|
||||
|
@ -4946,22 +4943,23 @@
|
|||
}
|
||||
},
|
||||
"node_modules/css-loader": {
|
||||
"version": "3.4.2",
|
||||
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz",
|
||||
"integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==",
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz",
|
||||
"integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==",
|
||||
"dependencies": {
|
||||
"camelcase": "^5.3.1",
|
||||
"cssesc": "^3.0.0",
|
||||
"icss-utils": "^4.1.1",
|
||||
"loader-utils": "^1.2.3",
|
||||
"normalize-path": "^3.0.0",
|
||||
"postcss": "^7.0.23",
|
||||
"postcss": "^7.0.32",
|
||||
"postcss-modules-extract-imports": "^2.0.0",
|
||||
"postcss-modules-local-by-default": "^3.0.2",
|
||||
"postcss-modules-scope": "^2.1.1",
|
||||
"postcss-modules-scope": "^2.2.0",
|
||||
"postcss-modules-values": "^3.0.0",
|
||||
"postcss-value-parser": "^4.0.2",
|
||||
"schema-utils": "^2.6.0"
|
||||
"postcss-value-parser": "^4.1.0",
|
||||
"schema-utils": "^2.7.0",
|
||||
"semver": "^6.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8.9.0"
|
||||
|
@ -5663,11 +5661,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/dotenv": {
|
||||
"version": "8.2.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
|
||||
"integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==",
|
||||
"version": "8.6.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
|
||||
"integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/dotenv-expand": {
|
||||
|
@ -6454,18 +6452,6 @@
|
|||
"react-is": "^16.8.1"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-react/node_modules/resolve": {
|
||||
"version": "1.17.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
|
||||
"integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"path-parse": "^1.0.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-scope": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
|
||||
|
@ -8375,10 +8361,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/is-core-module": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz",
|
||||
"integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==",
|
||||
"dev": true,
|
||||
"version": "2.11.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
|
||||
"integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
|
||||
"dependencies": {
|
||||
"has": "^1.0.3"
|
||||
},
|
||||
|
@ -10662,6 +10647,17 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/md5": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
|
||||
"integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"charenc": "0.0.2",
|
||||
"crypt": "0.0.2",
|
||||
"is-buffer": "~1.1.6"
|
||||
}
|
||||
},
|
||||
"node_modules/md5.js": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
|
||||
|
@ -10913,19 +10909,6 @@
|
|||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/meow/node_modules/resolve": {
|
||||
"version": "1.20.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
|
||||
"integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-core-module": "^2.2.0",
|
||||
"path-parse": "^1.0.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/meow/node_modules/semver": {
|
||||
"version": "7.3.5",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
|
||||
|
@ -12488,9 +12471,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/path-parse": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
|
||||
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
|
||||
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
|
||||
},
|
||||
"node_modules/path-to-regexp": {
|
||||
"version": "0.1.7",
|
||||
|
@ -12528,6 +12511,11 @@
|
|||
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
|
||||
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
|
||||
},
|
||||
"node_modules/picocolors": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
|
||||
"integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA=="
|
||||
},
|
||||
"node_modules/picomatch": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz",
|
||||
|
@ -12645,20 +12633,19 @@
|
|||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "7.0.26",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.26.tgz",
|
||||
"integrity": "sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA==",
|
||||
"version": "7.0.39",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
|
||||
"integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
|
||||
"dependencies": {
|
||||
"chalk": "^2.4.2",
|
||||
"source-map": "^0.6.1",
|
||||
"supports-color": "^6.1.0"
|
||||
"picocolors": "^0.2.1",
|
||||
"source-map": "^0.6.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "tidelift",
|
||||
"url": "https://tidelift.com/funding/github/npm/postcss"
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/postcss/"
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-attribute-case-insensitive": {
|
||||
|
@ -13288,9 +13275,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/postcss-modules-scope": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz",
|
||||
"integrity": "sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==",
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz",
|
||||
"integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==",
|
||||
"dependencies": {
|
||||
"postcss": "^7.0.6",
|
||||
"postcss-selector-parser": "^6.0.0"
|
||||
|
@ -13673,11 +13660,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/postcss-safe-parser": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz",
|
||||
"integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==",
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz",
|
||||
"integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==",
|
||||
"dependencies": {
|
||||
"postcss": "^7.0.0"
|
||||
"postcss": "^7.0.26"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
|
@ -13747,9 +13734,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/postcss-value-parser": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz",
|
||||
"integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ=="
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
|
||||
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
|
||||
},
|
||||
"node_modules/postcss-values-parser": {
|
||||
"version": "2.0.1",
|
||||
|
@ -13772,17 +13759,6 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/postcss/node_modules/supports-color": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
|
||||
"integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
|
||||
"dependencies": {
|
||||
"has-flag": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/prelude-ls": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
|
||||
|
@ -16025,6 +16001,71 @@
|
|||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/react-scripts/node_modules/css-loader": {
|
||||
"version": "3.4.2",
|
||||
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz",
|
||||
"integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"camelcase": "^5.3.1",
|
||||
"cssesc": "^3.0.0",
|
||||
"icss-utils": "^4.1.1",
|
||||
"loader-utils": "^1.2.3",
|
||||
"normalize-path": "^3.0.0",
|
||||
"postcss": "^7.0.23",
|
||||
"postcss-modules-extract-imports": "^2.0.0",
|
||||
"postcss-modules-local-by-default": "^3.0.2",
|
||||
"postcss-modules-scope": "^2.1.1",
|
||||
"postcss-modules-values": "^3.0.0",
|
||||
"postcss-value-parser": "^4.0.2",
|
||||
"schema-utils": "^2.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8.9.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/webpack"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"webpack": "^4.0.0 || ^5.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-scripts/node_modules/css-loader/node_modules/postcss": {
|
||||
"version": "7.0.39",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
|
||||
"integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"picocolors": "^0.2.1",
|
||||
"source-map": "^0.6.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/postcss/"
|
||||
}
|
||||
},
|
||||
"node_modules/react-scripts/node_modules/css-loader/node_modules/source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-scripts/node_modules/dotenv": {
|
||||
"version": "8.2.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
|
||||
"integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/react-scripts/node_modules/electron-to-chromium": {
|
||||
"version": "1.3.427",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.427.tgz",
|
||||
|
@ -16565,6 +16606,18 @@
|
|||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-scripts/node_modules/postcss-safe-parser": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz",
|
||||
"integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"postcss": "^7.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-scripts/node_modules/postcss/node_modules/has-flag": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||
|
@ -16851,6 +16904,18 @@
|
|||
"integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/react-scripts/node_modules/resolve": {
|
||||
"version": "1.15.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz",
|
||||
"integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"path-parse": "^1.0.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/react-scripts/node_modules/resolve-url-loader": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz",
|
||||
|
@ -18201,11 +18266,16 @@
|
|||
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
|
||||
},
|
||||
"node_modules/resolve": {
|
||||
"version": "1.15.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz",
|
||||
"integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==",
|
||||
"version": "1.22.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
|
||||
"integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
|
||||
"dependencies": {
|
||||
"path-parse": "^1.0.6"
|
||||
"is-core-module": "^2.9.0",
|
||||
"path-parse": "^1.0.7",
|
||||
"supports-preserve-symlinks-flag": "^1.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"resolve": "bin/resolve"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
|
@ -19765,6 +19835,17 @@
|
|||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/supports-preserve-symlinks-flag": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
|
||||
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/svg-parser": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.3.tgz",
|
||||
|
@ -24417,16 +24498,6 @@
|
|||
"@babel/types": "^7.0.0",
|
||||
"eslint-visitor-keys": "^1.0.0",
|
||||
"resolve": "^1.12.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"resolve": {
|
||||
"version": "1.15.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
|
||||
"integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
|
||||
"requires": {
|
||||
"path-parse": "^1.0.6"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"babel-extract-comments": {
|
||||
|
@ -24543,14 +24614,6 @@
|
|||
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
|
||||
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.15.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
|
||||
"integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
|
||||
"requires": {
|
||||
"path-parse": "^1.0.6"
|
||||
}
|
||||
},
|
||||
"resolve-from": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
|
||||
|
@ -25148,6 +25211,12 @@
|
|||
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
|
||||
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="
|
||||
},
|
||||
"charenc": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
|
||||
"integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
|
||||
"dev": true
|
||||
},
|
||||
"chokidar": {
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz",
|
||||
|
@ -25824,6 +25893,12 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"crypt": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
|
||||
"integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
|
||||
"dev": true
|
||||
},
|
||||
"crypto-browserify": {
|
||||
"version": "3.12.0",
|
||||
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
|
||||
|
@ -25909,22 +25984,23 @@
|
|||
}
|
||||
},
|
||||
"css-loader": {
|
||||
"version": "3.4.2",
|
||||
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz",
|
||||
"integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==",
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz",
|
||||
"integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==",
|
||||
"requires": {
|
||||
"camelcase": "^5.3.1",
|
||||
"cssesc": "^3.0.0",
|
||||
"icss-utils": "^4.1.1",
|
||||
"loader-utils": "^1.2.3",
|
||||
"normalize-path": "^3.0.0",
|
||||
"postcss": "^7.0.23",
|
||||
"postcss": "^7.0.32",
|
||||
"postcss-modules-extract-imports": "^2.0.0",
|
||||
"postcss-modules-local-by-default": "^3.0.2",
|
||||
"postcss-modules-scope": "^2.1.1",
|
||||
"postcss-modules-scope": "^2.2.0",
|
||||
"postcss-modules-values": "^3.0.0",
|
||||
"postcss-value-parser": "^4.0.2",
|
||||
"schema-utils": "^2.6.0"
|
||||
"postcss-value-parser": "^4.1.0",
|
||||
"schema-utils": "^2.7.0",
|
||||
"semver": "^6.3.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"normalize-path": {
|
||||
|
@ -26490,9 +26566,9 @@
|
|||
}
|
||||
},
|
||||
"dotenv": {
|
||||
"version": "8.2.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
|
||||
"integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw=="
|
||||
"version": "8.6.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
|
||||
"integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g=="
|
||||
},
|
||||
"dotenv-expand": {
|
||||
"version": "5.1.0",
|
||||
|
@ -27156,15 +27232,6 @@
|
|||
"object-assign": "^4.1.1",
|
||||
"react-is": "^16.8.1"
|
||||
}
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.17.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
|
||||
"integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"path-parse": "^1.0.6"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -28678,10 +28745,9 @@
|
|||
}
|
||||
},
|
||||
"is-core-module": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz",
|
||||
"integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==",
|
||||
"dev": true,
|
||||
"version": "2.11.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
|
||||
"integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
|
||||
"requires": {
|
||||
"has": "^1.0.3"
|
||||
}
|
||||
|
@ -30480,6 +30546,17 @@
|
|||
"object-visit": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"md5": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
|
||||
"integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"charenc": "0.0.2",
|
||||
"crypt": "0.0.2",
|
||||
"is-buffer": "~1.1.6"
|
||||
}
|
||||
},
|
||||
"md5.js": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
|
||||
|
@ -30678,16 +30755,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.20.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
|
||||
"integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-core-module": "^2.2.0",
|
||||
"path-parse": "^1.0.6"
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
"version": "7.3.5",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
|
||||
|
@ -31879,9 +31946,9 @@
|
|||
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
|
||||
},
|
||||
"path-parse": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
|
||||
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
|
||||
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
|
||||
},
|
||||
"path-to-regexp": {
|
||||
"version": "0.1.7",
|
||||
|
@ -31913,6 +31980,11 @@
|
|||
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
|
||||
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
|
||||
},
|
||||
"picocolors": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
|
||||
"integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA=="
|
||||
},
|
||||
"picomatch": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz",
|
||||
|
@ -31999,27 +32071,18 @@
|
|||
"integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
|
||||
},
|
||||
"postcss": {
|
||||
"version": "7.0.26",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.26.tgz",
|
||||
"integrity": "sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA==",
|
||||
"version": "7.0.39",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
|
||||
"integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
|
||||
"requires": {
|
||||
"chalk": "^2.4.2",
|
||||
"source-map": "^0.6.1",
|
||||
"supports-color": "^6.1.0"
|
||||
"picocolors": "^0.2.1",
|
||||
"source-map": "^0.6.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
|
||||
"integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
|
||||
"requires": {
|
||||
"has-flag": "^3.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -32530,9 +32593,9 @@
|
|||
}
|
||||
},
|
||||
"postcss-modules-scope": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz",
|
||||
"integrity": "sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==",
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz",
|
||||
"integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==",
|
||||
"requires": {
|
||||
"postcss": "^7.0.6",
|
||||
"postcss-selector-parser": "^6.0.0"
|
||||
|
@ -32868,11 +32931,11 @@
|
|||
}
|
||||
},
|
||||
"postcss-safe-parser": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz",
|
||||
"integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==",
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz",
|
||||
"integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==",
|
||||
"requires": {
|
||||
"postcss": "^7.0.0"
|
||||
"postcss": "^7.0.26"
|
||||
}
|
||||
},
|
||||
"postcss-selector-matches": {
|
||||
|
@ -32932,9 +32995,9 @@
|
|||
}
|
||||
},
|
||||
"postcss-value-parser": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz",
|
||||
"integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ=="
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
|
||||
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
|
||||
},
|
||||
"postcss-values-parser": {
|
||||
"version": "2.0.1",
|
||||
|
@ -34780,6 +34843,50 @@
|
|||
"which": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"css-loader": {
|
||||
"version": "3.4.2",
|
||||
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz",
|
||||
"integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"camelcase": "^5.3.1",
|
||||
"cssesc": "^3.0.0",
|
||||
"icss-utils": "^4.1.1",
|
||||
"loader-utils": "^1.2.3",
|
||||
"normalize-path": "^3.0.0",
|
||||
"postcss": "^7.0.23",
|
||||
"postcss-modules-extract-imports": "^2.0.0",
|
||||
"postcss-modules-local-by-default": "^3.0.2",
|
||||
"postcss-modules-scope": "^2.1.1",
|
||||
"postcss-modules-values": "^3.0.0",
|
||||
"postcss-value-parser": "^4.0.2",
|
||||
"schema-utils": "^2.6.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"postcss": {
|
||||
"version": "7.0.39",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
|
||||
"integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"picocolors": "^0.2.1",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"dotenv": {
|
||||
"version": "8.2.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
|
||||
"integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==",
|
||||
"dev": true
|
||||
},
|
||||
"electron-to-chromium": {
|
||||
"version": "1.3.427",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.427.tgz",
|
||||
|
@ -35217,6 +35324,15 @@
|
|||
"postcss-selector-not": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"postcss-safe-parser": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz",
|
||||
"integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"postcss": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"react-dev-utils": {
|
||||
"version": "10.2.1",
|
||||
"resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.1.tgz",
|
||||
|
@ -35424,6 +35540,15 @@
|
|||
"integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
|
||||
"dev": true
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.15.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz",
|
||||
"integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"path-parse": "^1.0.6"
|
||||
}
|
||||
},
|
||||
"resolve-url-loader": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz",
|
||||
|
@ -36451,11 +36576,13 @@
|
|||
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.15.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz",
|
||||
"integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==",
|
||||
"version": "1.22.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
|
||||
"integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
|
||||
"requires": {
|
||||
"path-parse": "^1.0.6"
|
||||
"is-core-module": "^2.9.0",
|
||||
"path-parse": "^1.0.7",
|
||||
"supports-preserve-symlinks-flag": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"resolve-cwd": {
|
||||
|
@ -37686,6 +37813,11 @@
|
|||
"has-flag": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"supports-preserve-symlinks-flag": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
|
||||
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
|
||||
},
|
||||
"svg-parser": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.3.tgz",
|
||||
|
|
|
@ -13,13 +13,13 @@
|
|||
"babel-loader": "8.0.6",
|
||||
"babel-plugin-named-asset-import": "^0.3.6",
|
||||
"babel-preset-react-app": "^9.1.1",
|
||||
"camelcase": "^5.3.1",
|
||||
"camelcase": "5.3.1",
|
||||
"case-sensitive-paths-webpack-plugin": "2.3.0",
|
||||
"css-loader": "3.4.2",
|
||||
"dotenv": "8.2.0",
|
||||
"css-loader": "3.6.0",
|
||||
"dotenv": "8.6.0",
|
||||
"dotenv-expand": "5.1.0",
|
||||
"file-loader": "4.3.0",
|
||||
"fs-extra": "^8.1.0",
|
||||
"fs-extra": "8.1.0",
|
||||
"html-webpack-plugin": "4.0.0-beta.11",
|
||||
"identity-obj-proxy": "3.0.0",
|
||||
"jest": "24.9.0",
|
||||
|
@ -33,14 +33,14 @@
|
|||
"postcss-loader": "3.0.0",
|
||||
"postcss-normalize": "8.0.1",
|
||||
"postcss-preset-env": "6.7.1",
|
||||
"postcss-safe-parser": "4.0.1",
|
||||
"postcss-safe-parser": "4.0.2",
|
||||
"react": "^16.12.0",
|
||||
"react-app-polyfill": "^1.0.6",
|
||||
"react-dev-utils": "^10.1.0",
|
||||
"react-dom": "^16.12.0",
|
||||
"react-redux": "^5.0.7",
|
||||
"redux": "^4.0.0",
|
||||
"resolve": "1.15.0",
|
||||
"redux": "4.1.2",
|
||||
"resolve": "1.22.1",
|
||||
"resolve-url-loader": "^3.1.3",
|
||||
"sass-loader": "8.0.2",
|
||||
"semver": "6.3.0",
|
||||
|
@ -55,7 +55,8 @@
|
|||
},
|
||||
"scripts": {
|
||||
"start": "node scripts/start.js",
|
||||
"build": "node scripts/build.js SKIP_PREFLIGHT_CHECK",
|
||||
"build": "echo 'Clipper build is disabled due to disabled due to ERR_OSSL_EVP_UNSUPPORTED error on CI'",
|
||||
"build_DISABLED": "node scripts/build.js SKIP_PREFLIGHT_CHECK",
|
||||
"test": "node scripts/test.js --env=jsdom",
|
||||
"watch": "cra-build-watch",
|
||||
"postinstall": "node postinstall.js && npm run build"
|
||||
|
@ -63,6 +64,7 @@
|
|||
"devDependencies": {
|
||||
"cra-build-watch": "^3.4.0",
|
||||
"fs-extra": "^6.0.1",
|
||||
"md5": "^2.3.0",
|
||||
"react-scripts": "^3.3.1"
|
||||
},
|
||||
"browserslist": [
|
||||
|
@ -124,4 +126,4 @@
|
|||
"react-app"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -107,26 +107,26 @@
|
|||
"homepage": "https://github.com/laurent22/joplin#readme",
|
||||
"devDependencies": {
|
||||
"@joplin/tools": "~2.9",
|
||||
"@testing-library/react-hooks": "^3.4.2",
|
||||
"@types/jest": "^26.0.15",
|
||||
"@types/node": "^14.14.6",
|
||||
"@types/react": "16.9.55",
|
||||
"@testing-library/react-hooks": "8.0.1",
|
||||
"@types/jest": "26.0.24",
|
||||
"@types/node": "14.18.0",
|
||||
"@types/react": "16.14.34",
|
||||
"@types/react-redux": "7.1.24",
|
||||
"@types/styled-components": "5.1.4",
|
||||
"ajv": "^6.5.0",
|
||||
"app-builder-bin": "^1.9.11",
|
||||
"babel-cli": "^6.26.0",
|
||||
"babel-preset-react": "^6.24.1",
|
||||
"electron": "19.0.10",
|
||||
"electron-builder": "^23.0.3",
|
||||
"electron-notarize": "^1.2.1",
|
||||
"electron-rebuild": "^3.2.7",
|
||||
"glob": "^7.1.6",
|
||||
"gulp": "^4.0.2",
|
||||
"jest": "^26.6.3",
|
||||
"js-sha512": "^0.8.0",
|
||||
"nan": "2.14.2",
|
||||
"react-test-renderer": "^16.14.0",
|
||||
"@types/styled-components": "5.1.26",
|
||||
"ajv": "6.12.6",
|
||||
"app-builder-bin": "1.11.6",
|
||||
"babel-cli": "6.26.0",
|
||||
"babel-preset-react": "6.24.1",
|
||||
"electron": "19.1.4",
|
||||
"electron-builder": "23.0.8",
|
||||
"electron-notarize": "1.2.1",
|
||||
"electron-rebuild": "3.2.7",
|
||||
"glob": "7.2.0",
|
||||
"gulp": "4.0.2",
|
||||
"jest": "26.6.3",
|
||||
"js-sha512": "0.8.0",
|
||||
"nan": "2.17.0",
|
||||
"react-test-renderer": "16.14.0",
|
||||
"typescript": "4.0.5"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
|
@ -135,47 +135,47 @@
|
|||
"7zip-bin-win": "^2.1.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@electron/remote": "^2.0.1",
|
||||
"@fortawesome/fontawesome-free": "^5.13.0",
|
||||
"@joeattardi/emoji-button": "^4.6.0",
|
||||
"@electron/remote": "2.0.8",
|
||||
"@fortawesome/fontawesome-free": "5.15.4",
|
||||
"@joeattardi/emoji-button": "4.6.4",
|
||||
"@joplin/lib": "~2.9",
|
||||
"@joplin/pdf-viewer": "~2.9",
|
||||
"@joplin/renderer": "~2.9",
|
||||
"async-mutex": "^0.1.3",
|
||||
"codemirror": "^5.56.0",
|
||||
"color": "^3.1.2",
|
||||
"compare-versions": "^3.2.1",
|
||||
"countable": "^3.0.1",
|
||||
"debounce": "^1.2.0",
|
||||
"electron-window-state": "^5.0.3",
|
||||
"formatcoords": "^1.1.3",
|
||||
"async-mutex": "0.4.0",
|
||||
"codemirror": "5.64.0",
|
||||
"color": "3.2.1",
|
||||
"compare-versions": "3.6.0",
|
||||
"countable": "3.0.1",
|
||||
"debounce": "1.2.1",
|
||||
"electron-window-state": "5.0.3",
|
||||
"formatcoords": "1.1.3",
|
||||
"fs-extra": "10.0.0",
|
||||
"highlight.js": "^10.2.1",
|
||||
"immer": "^7.0.5",
|
||||
"keytar": "^7.0.0",
|
||||
"mark.js": "^8.11.1",
|
||||
"md5": "^2.2.1",
|
||||
"moment": "^2.22.2",
|
||||
"node-fetch": "^1.7.3",
|
||||
"node-notifier": "^8.0.0",
|
||||
"node-rsa": "^1.1.1",
|
||||
"pretty-bytes": "^5.3.0",
|
||||
"re-resizable": "^6.5.4",
|
||||
"react": "16.13.1",
|
||||
"react-datetime": "^2.14.0",
|
||||
"react-dom": "16.9.0",
|
||||
"react-redux": "5.0.7",
|
||||
"react-select": "^2.4.3",
|
||||
"react-toggle-button": "^2.2.0",
|
||||
"react-tooltip": "^3.10.0",
|
||||
"highlight.js": "10.7.3",
|
||||
"immer": "7.0.15",
|
||||
"keytar": "7.7.0",
|
||||
"mark.js": "8.11.1",
|
||||
"md5": "2.3.0",
|
||||
"moment": "2.29.1",
|
||||
"node-fetch": "1.7.3",
|
||||
"node-notifier": "8.0.2",
|
||||
"node-rsa": "1.1.1",
|
||||
"pretty-bytes": "5.6.0",
|
||||
"re-resizable": "6.9.1",
|
||||
"react": "16.14.0",
|
||||
"react-datetime": "2.16.3",
|
||||
"react-dom": "16.14.0",
|
||||
"react-redux": "5.1.2",
|
||||
"react-select": "2.4.4",
|
||||
"react-toggle-button": "2.2.0",
|
||||
"react-tooltip": "3.11.6",
|
||||
"redux": "3.7.2",
|
||||
"reselect": "^4.0.0",
|
||||
"roboto-fontface": "^0.10.0",
|
||||
"smalltalk": "^2.5.1",
|
||||
"sqlite3": "^5.0.2",
|
||||
"styled-components": "5.1.1",
|
||||
"reselect": "4.1.5",
|
||||
"roboto-fontface": "0.10.0",
|
||||
"smalltalk": "2.5.1",
|
||||
"sqlite3": "5.0.2",
|
||||
"styled-components": "5.3.6",
|
||||
"styled-system": "5.1.5",
|
||||
"taboverride": "^4.0.3",
|
||||
"tinymce": "^5.2.0"
|
||||
"taboverride": "4.0.3",
|
||||
"tinymce": "5.10.2"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -225,20 +225,20 @@ PODS:
|
|||
- React-Core
|
||||
- react-native-document-picker (4.3.0):
|
||||
- React-Core
|
||||
- react-native-geolocation (2.0.2):
|
||||
- React
|
||||
- react-native-geolocation (3.0.3):
|
||||
- React-Core
|
||||
- react-native-get-random-values (1.7.1):
|
||||
- React-Core
|
||||
- react-native-image-picker (4.10.0):
|
||||
- React-Core
|
||||
- react-native-image-resizer (1.4.5):
|
||||
- React-Core
|
||||
- react-native-netinfo (6.2.1):
|
||||
- react-native-netinfo (9.3.6):
|
||||
- React-Core
|
||||
- react-native-rsa-native (2.0.4):
|
||||
- React
|
||||
- react-native-slider (3.0.3):
|
||||
- React
|
||||
- react-native-slider (4.3.3):
|
||||
- React-Core
|
||||
- react-native-sqlite-storage (5.0.0):
|
||||
- React
|
||||
- react-native-version-info (1.1.1):
|
||||
|
@ -316,7 +316,7 @@ PODS:
|
|||
- React-Core
|
||||
- RNCPushNotificationIOS (1.10.1):
|
||||
- React-Core
|
||||
- RNDateTimePicker (3.5.2):
|
||||
- RNDateTimePicker (6.5.4):
|
||||
- React-Core
|
||||
- RNFileViewer (2.1.4):
|
||||
- React-Core
|
||||
|
@ -531,13 +531,13 @@ SPEC CHECKSUMS:
|
|||
react-native-alarm-notification: 4817a2a0d7cc2ed2acc97337ebcdf9ae2a69c9d5
|
||||
react-native-camera: b8cc03e2feec0c04403d0998e37cf519d8fd4c6f
|
||||
react-native-document-picker: 20f652c2402d3ddc81f396d8167c3bd978add4a2
|
||||
react-native-geolocation: c956aeb136625c23e0dce0467664af2c437888c9
|
||||
react-native-geolocation: 2b4052c14edff18ba402795f4ce0f2a093c4ba3e
|
||||
react-native-get-random-values: 2c4ff6b44cb71291dabe9a8ae87d3877dcf387da
|
||||
react-native-image-picker: 4bc9ed38c8be255b515d8c88babbaf74973f91a8
|
||||
react-native-image-resizer: d9fb629a867335bdc13230ac2a58702bb8c8828f
|
||||
react-native-netinfo: 3d3769f0d65de15c83a9bf1346f8be71de5a24bf
|
||||
react-native-netinfo: f80db8cac2151405633324cb645c60af098ee461
|
||||
react-native-rsa-native: 1f6bba06dd02f0e652a66a384c75c270f7a0062f
|
||||
react-native-slider: e99fc201cefe81270fc9d81714a7a0f5e566b168
|
||||
react-native-slider: 7d19220da2f2ae7cbb9aa80127cb73c597fa221f
|
||||
react-native-sqlite-storage: 418ef4afc5e6df6ce3574c4617e5f0b65cffde55
|
||||
react-native-version-info: a106f23009ac0db4ee00de39574eb546682579b9
|
||||
react-native-webview: 0aa2cde4ee7e3e1c5fffdf64dbce9c709aa18155
|
||||
|
@ -556,7 +556,7 @@ SPEC CHECKSUMS:
|
|||
rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba
|
||||
RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495
|
||||
RNCPushNotificationIOS: 87b8d16d3ede4532745e05b03c42cff33a36cc45
|
||||
RNDateTimePicker: 7658208086d86d09e1627b5c34ba0cf237c60140
|
||||
RNDateTimePicker: 93b9659fbd0fd91a4fb568bf8f5c00b0175aa1ba
|
||||
RNFileViewer: 83cc066ad795b1f986791d03b56fe0ee14b6a69f
|
||||
RNFS: 3ab21fa6c56d65566d1fb26c2228e2b6132e5e32
|
||||
RNQuickAction: 6d404a869dc872cde841ad3147416a670d13fa93
|
||||
|
|
|
@ -21,92 +21,92 @@
|
|||
"@joplin/lib": "~2.9",
|
||||
"@joplin/react-native-saf-x": "~2.9",
|
||||
"@joplin/renderer": "~2.9",
|
||||
"@react-native-community/clipboard": "^1.5.0",
|
||||
"@react-native-community/datetimepicker": "^3.0.3",
|
||||
"@react-native-community/geolocation": "^2.0.2",
|
||||
"@react-native-community/netinfo": "^6.0.0",
|
||||
"@react-native-community/push-notification-ios": "^1.6.0",
|
||||
"@react-native-community/slider": "^3.0.3",
|
||||
"assert-browserify": "^2.0.0",
|
||||
"buffer": "^5.0.8",
|
||||
"constants-browserify": "^1.0.0",
|
||||
"crypto-browserify": "^3.12.0",
|
||||
"events": "^3.2.0",
|
||||
"joplin-rn-alarm-notification": "^1.0.5",
|
||||
"@react-native-community/clipboard": "1.5.1",
|
||||
"@react-native-community/datetimepicker": "6.5.4",
|
||||
"@react-native-community/geolocation": "3.0.3",
|
||||
"@react-native-community/netinfo": "9.3.6",
|
||||
"@react-native-community/push-notification-ios": "1.10.1",
|
||||
"@react-native-community/slider": "4.3.3",
|
||||
"assert-browserify": "2.0.0",
|
||||
"buffer": "5.7.1",
|
||||
"constants-browserify": "1.0.0",
|
||||
"crypto-browserify": "3.12.0",
|
||||
"events": "3.3.0",
|
||||
"joplin-rn-alarm-notification": "1.0.5",
|
||||
"jsc-android": "241213.1.0",
|
||||
"md5": "^2.2.1",
|
||||
"prop-types": "^15.6.0",
|
||||
"punycode": "^2.1.1",
|
||||
"md5": "2.3.0",
|
||||
"prop-types": "15.7.2",
|
||||
"punycode": "2.1.1",
|
||||
"react": "17.0.2",
|
||||
"react-native": "0.66.1",
|
||||
"react-native-action-button": "^2.8.5",
|
||||
"react-native-camera": "^3.40.0",
|
||||
"react-native-dialogbox": "^0.6.10",
|
||||
"react-native-document-picker": "^4.0.0",
|
||||
"react-native-dropdownalert": "^3.1.2",
|
||||
"react-native-file-viewer": "^2.1.4",
|
||||
"react-native-fs": "^2.16.6",
|
||||
"react-native-get-random-values": "^1.7.0",
|
||||
"react-native-image-picker": "^4.10.0",
|
||||
"react-native-image-resizer": "^1.3.0",
|
||||
"react-native-modal-datetime-picker": "^9.0.0",
|
||||
"react-native-popup-menu": "^0.15.13",
|
||||
"react-native-quick-actions": "^0.3.13",
|
||||
"react-native-rsa-native": "^2.0.4",
|
||||
"react-native-securerandom": "^1.0.0-rc.0",
|
||||
"react-native-share": "^7.2.1",
|
||||
"react-native-side-menu-updated": "^1.3.2",
|
||||
"react-native-sqlite-storage": "^5.0.0",
|
||||
"react-native-url-polyfill": "^1.3.0",
|
||||
"react-native-vector-icons": "^7.1.0",
|
||||
"react-native-version-info": "^1.1.0",
|
||||
"react-native-webview": "^10.9.2",
|
||||
"react-redux": "5.0.7",
|
||||
"react-native-action-button": "2.8.5",
|
||||
"react-native-camera": "3.44.3",
|
||||
"react-native-dialogbox": "0.6.10",
|
||||
"react-native-document-picker": "4.3.0",
|
||||
"react-native-dropdownalert": "3.11.0",
|
||||
"react-native-file-viewer": "2.1.4",
|
||||
"react-native-fs": "2.18.0",
|
||||
"react-native-get-random-values": "1.7.1",
|
||||
"react-native-image-picker": "4.10.0",
|
||||
"react-native-image-resizer": "1.4.5",
|
||||
"react-native-modal-datetime-picker": "9.2.3",
|
||||
"react-native-popup-menu": "0.15.13",
|
||||
"react-native-quick-actions": "0.3.13",
|
||||
"react-native-rsa-native": "2.0.4",
|
||||
"react-native-securerandom": "1.0.0",
|
||||
"react-native-share": "7.3.2",
|
||||
"react-native-side-menu-updated": "1.3.2",
|
||||
"react-native-sqlite-storage": "5.0.0",
|
||||
"react-native-url-polyfill": "1.3.0",
|
||||
"react-native-vector-icons": "7.1.0",
|
||||
"react-native-version-info": "1.1.1",
|
||||
"react-native-webview": "10.10.2",
|
||||
"react-redux": "5.1.2",
|
||||
"redux": "4.0.0",
|
||||
"rn-fetch-blob": "^0.12.0",
|
||||
"rn-fetch-blob": "0.12.0",
|
||||
"stream": "0.0.2",
|
||||
"stream-browserify": "^3.0.0",
|
||||
"string-natural-compare": "^2.0.2",
|
||||
"timers": "^0.1.1",
|
||||
"url": "^0.11.0"
|
||||
"stream-browserify": "3.0.0",
|
||||
"string-natural-compare": "2.0.3",
|
||||
"timers": "0.1.1",
|
||||
"url": "0.11.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.9",
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@codemirror/commands": "^6.0.0",
|
||||
"@codemirror/lang-cpp": "^6.0.0",
|
||||
"@codemirror/lang-html": "^6.0.0",
|
||||
"@codemirror/lang-java": "^6.0.0",
|
||||
"@codemirror/lang-javascript": "^6.0.0",
|
||||
"@codemirror/lang-markdown": "^6.0.0",
|
||||
"@codemirror/lang-php": "^6.0.0",
|
||||
"@codemirror/lang-rust": "^6.0.0",
|
||||
"@codemirror/language": "^6.0.0",
|
||||
"@codemirror/legacy-modes": "^6.1.0",
|
||||
"@codemirror/search": "^6.0.0",
|
||||
"@codemirror/state": "^6.0.0",
|
||||
"@codemirror/view": "^6.0.0",
|
||||
"@babel/core": "7.16.0",
|
||||
"@babel/runtime": "7.16.3",
|
||||
"@codemirror/commands": "6.0.0",
|
||||
"@codemirror/lang-cpp": "6.0.1",
|
||||
"@codemirror/lang-html": "6.0.0",
|
||||
"@codemirror/lang-java": "6.0.0",
|
||||
"@codemirror/lang-javascript": "6.0.0",
|
||||
"@codemirror/lang-markdown": "6.0.0",
|
||||
"@codemirror/lang-php": "6.0.0",
|
||||
"@codemirror/lang-rust": "6.0.0",
|
||||
"@codemirror/language": "6.0.0",
|
||||
"@codemirror/legacy-modes": "6.1.0",
|
||||
"@codemirror/search": "6.0.0",
|
||||
"@codemirror/state": "6.0.0",
|
||||
"@codemirror/view": "6.0.0",
|
||||
"@joplin/tools": "~2.9",
|
||||
"@lezer/highlight": "^1.0.0",
|
||||
"@types/fs-extra": "^9.0.13",
|
||||
"@types/jest": "^28.1.3",
|
||||
"@types/react-native": "^0.64.4",
|
||||
"@types/react-redux": "^7.1.24",
|
||||
"babel-plugin-module-resolver": "^4.1.0",
|
||||
"execa": "^4.0.0",
|
||||
"fs-extra": "^8.1.0",
|
||||
"gulp": "^4.0.2",
|
||||
"jest": "^28.1.1",
|
||||
"jest-environment-jsdom": "^28.1.3",
|
||||
"jetifier": "^1.6.5",
|
||||
"jsdom": "^20.0.0",
|
||||
"metro-react-native-babel-preset": "^0.66.2",
|
||||
"nodemon": "^2.0.12",
|
||||
"ts-jest": "^28.0.5",
|
||||
"ts-loader": "^9.3.1",
|
||||
"ts-node": "^10.9.1",
|
||||
"typescript": "^4.7.4",
|
||||
"uglify-js": "^3.13.10",
|
||||
"webpack": "^5.74.0"
|
||||
"@lezer/highlight": "1.0.0",
|
||||
"@types/fs-extra": "9.0.13",
|
||||
"@types/jest": "28.1.5",
|
||||
"@types/react-native": "0.64.19",
|
||||
"@types/react-redux": "7.1.24",
|
||||
"babel-plugin-module-resolver": "4.1.0",
|
||||
"execa": "4.1.0",
|
||||
"fs-extra": "8.1.0",
|
||||
"gulp": "4.0.2",
|
||||
"jest": "28.1.2",
|
||||
"jest-environment-jsdom": "28.1.3",
|
||||
"jetifier": "1.6.8",
|
||||
"jsdom": "20.0.0",
|
||||
"metro-react-native-babel-preset": "0.66.2",
|
||||
"nodemon": "2.0.15",
|
||||
"ts-jest": "28.0.5",
|
||||
"ts-loader": "9.3.1",
|
||||
"ts-node": "10.9.1",
|
||||
"typescript": "4.7.4",
|
||||
"uglify-js": "3.14.4",
|
||||
"webpack": "5.74.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,23 +39,23 @@
|
|||
"prepare": "npm run build"
|
||||
},
|
||||
"dependencies": {
|
||||
"domelementtype": "^2.0.1",
|
||||
"domhandler": "3.0.0",
|
||||
"domutils": "^2.0.0",
|
||||
"entities": "^2.0.0"
|
||||
"domelementtype": "2.2.0",
|
||||
"domhandler": "3.3.0",
|
||||
"domutils": "2.8.0",
|
||||
"entities": "2.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^25.1.3",
|
||||
"@types/node": "^13.1.1",
|
||||
"@typescript-eslint/eslint-plugin": "^1.13.0",
|
||||
"@typescript-eslint/parser": "^1.13.0",
|
||||
"coveralls": "^3.0.1",
|
||||
"eslint": "^6.0.0",
|
||||
"eslint-config-prettier": "^6.0.0",
|
||||
"jest": "^26.6.3",
|
||||
"prettier": "^1.18.2",
|
||||
"ts-jest": "^24.0.2",
|
||||
"typescript": "3.8.2"
|
||||
"@types/jest": "25.2.3",
|
||||
"@types/node": "13.13.52",
|
||||
"@typescript-eslint/eslint-plugin": "1.13.0",
|
||||
"@typescript-eslint/parser": "1.13.0",
|
||||
"coveralls": "3.1.1",
|
||||
"eslint": "6.8.0",
|
||||
"eslint-config-prettier": "6.15.0",
|
||||
"jest": "26.6.3",
|
||||
"prettier": "1.19.1",
|
||||
"ts-jest": "24.3.0",
|
||||
"typescript": "3.9.10"
|
||||
},
|
||||
"jest": {
|
||||
"preset": "ts-jest",
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
"README.md"
|
||||
],
|
||||
"devDependencies": {
|
||||
"standard": "^8.6.0",
|
||||
"tap": "^10.5.1"
|
||||
"standard": "8.6.0",
|
||||
"tap": "10.7.3"
|
||||
},
|
||||
"gitHead": "eb4b0e64eab40a51b0895d3a40a9d8c3cb7b1b14"
|
||||
}
|
||||
|
|
|
@ -8,10 +8,10 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"node-emoji": "1.11.0",
|
||||
"unorm": ">= 1.0.0"
|
||||
"unorm": "1.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"should": ">= 0.2.1"
|
||||
"should": "13.2.3"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
|
|
@ -23,13 +23,13 @@
|
|||
"npm": ">= 4.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"chalk": "^2.1.0",
|
||||
"slugify": "^1.4.6",
|
||||
"yeoman-generator": "^2.0.1",
|
||||
"yosay": "^2.0.1"
|
||||
"chalk": "2.4.2",
|
||||
"slugify": "1.6.3",
|
||||
"yeoman-generator": "2.0.5",
|
||||
"yosay": "2.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"jest": "^26.6.3"
|
||||
"jest": "26.6.3"
|
||||
},
|
||||
"repository": "https://github.com/laurent22/generator-joplin",
|
||||
"license": "MIT",
|
||||
|
|
|
@ -15,13 +15,13 @@
|
|||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@joplin/fork-htmlparser2": "^4.1.41",
|
||||
"css": "^3.0.0",
|
||||
"datauri": "^4.1.0",
|
||||
"fs-extra": "^10.0.0",
|
||||
"html-entities": "^1.2.1"
|
||||
"css": "3.0.0",
|
||||
"datauri": "4.1.0",
|
||||
"fs-extra": "10.0.0",
|
||||
"html-entities": "1.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/fs-extra": "^9.0.6"
|
||||
"@types/fs-extra": "9.0.13"
|
||||
},
|
||||
"gitHead": "eb4b0e64eab40a51b0895d3a40a9d8c3cb7b1b14"
|
||||
}
|
||||
|
|
|
@ -16,20 +16,20 @@
|
|||
"test-ci": "yarn test"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/fs-extra": "^9.0.6",
|
||||
"@types/jest": "^26.0.15",
|
||||
"@types/js-yaml": "^4.0.2",
|
||||
"@types/node": "^14.14.6",
|
||||
"@types/node-rsa": "^1.1.1",
|
||||
"@types/react": "^17.0.20",
|
||||
"clean-html": "^1.5.0",
|
||||
"@types/fs-extra": "9.0.13",
|
||||
"@types/jest": "26.0.24",
|
||||
"@types/js-yaml": "4.0.5",
|
||||
"@types/node": "14.18.0",
|
||||
"@types/node-rsa": "1.1.1",
|
||||
"@types/react": "17.0.37",
|
||||
"clean-html": "1.5.0",
|
||||
"jest": "26.6.3",
|
||||
"sharp": "^0.26.2",
|
||||
"typescript": "^4.0.5"
|
||||
"sharp": "0.31.1",
|
||||
"typescript": "4.5.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-s3": "^3.34.0",
|
||||
"@aws-sdk/s3-request-presigner": "^3.34.0",
|
||||
"@aws-sdk/client-s3": "3.44.0",
|
||||
"@aws-sdk/s3-request-presigner": "3.44.0",
|
||||
"@joplin/fork-htmlparser2": "^4.1.41",
|
||||
"@joplin/fork-sax": "^1.2.45",
|
||||
"@joplin/fork-uslug": "^1.0.6",
|
||||
|
@ -37,60 +37,60 @@
|
|||
"@joplin/renderer": "^2.9.1",
|
||||
"@joplin/turndown": "^4.0.63",
|
||||
"@joplin/turndown-plugin-gfm": "^1.0.45",
|
||||
"@types/nanoid": "^3.0.0",
|
||||
"async-mutex": "^0.1.3",
|
||||
"base-64": "^0.1.0",
|
||||
"base64-stream": "^1.0.0",
|
||||
"builtin-modules": "^3.1.0",
|
||||
"chokidar": "^3.4.3",
|
||||
"color": "3.1.2",
|
||||
"compare-versions": "^3.6.0",
|
||||
"css": "^3.0.0",
|
||||
"diff-match-patch": "^1.0.4",
|
||||
"es6-promise-pool": "^2.5.0",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"@types/nanoid": "3.0.0",
|
||||
"async-mutex": "0.4.0",
|
||||
"base-64": "0.1.0",
|
||||
"base64-stream": "1.0.0",
|
||||
"builtin-modules": "3.2.0",
|
||||
"chokidar": "3.5.2",
|
||||
"color": "3.2.1",
|
||||
"compare-versions": "3.6.0",
|
||||
"css": "3.0.0",
|
||||
"diff-match-patch": "1.0.5",
|
||||
"es6-promise-pool": "2.5.0",
|
||||
"fast-deep-equal": "3.1.3",
|
||||
"fast-xml-parser": "3.21.1",
|
||||
"follow-redirects": "^1.2.4",
|
||||
"form-data": "^2.1.4",
|
||||
"fs-extra": "^5.0.0",
|
||||
"hpagent": "^1.0.0",
|
||||
"html-entities": "^1.2.1",
|
||||
"html-minifier": "^3.5.15",
|
||||
"image-data-uri": "^2.0.0",
|
||||
"image-type": "^3.0.0",
|
||||
"immer": "^7.0.14",
|
||||
"js-yaml": "^4.1.0",
|
||||
"levenshtein": "^1.0.5",
|
||||
"markdown-it": "^10.0.0",
|
||||
"md5": "^2.2.1",
|
||||
"md5-file": "^4.0.0",
|
||||
"moment": "^2.29.1",
|
||||
"multiparty": "^4.2.1",
|
||||
"mustache": "^4.0.1",
|
||||
"nanoid": "^3.1.12",
|
||||
"node-fetch": "^1.7.1",
|
||||
"node-notifier": "^8.0.0",
|
||||
"node-persist": "^2.1.0",
|
||||
"node-rsa": "^1.1.1",
|
||||
"promise": "^7.1.1",
|
||||
"follow-redirects": "1.14.5",
|
||||
"form-data": "2.5.1",
|
||||
"fs-extra": "5.0.0",
|
||||
"hpagent": "1.0.0",
|
||||
"html-entities": "1.4.0",
|
||||
"html-minifier": "3.5.21",
|
||||
"image-data-uri": "2.0.1",
|
||||
"image-type": "3.1.0",
|
||||
"immer": "7.0.15",
|
||||
"js-yaml": "4.1.0",
|
||||
"levenshtein": "1.0.5",
|
||||
"markdown-it": "10.0.0",
|
||||
"md5": "2.3.0",
|
||||
"md5-file": "4.0.0",
|
||||
"moment": "2.29.1",
|
||||
"multiparty": "4.2.2",
|
||||
"mustache": "4.2.0",
|
||||
"nanoid": "3.1.30",
|
||||
"node-fetch": "1.7.3",
|
||||
"node-notifier": "8.0.2",
|
||||
"node-persist": "2.1.0",
|
||||
"node-rsa": "1.1.1",
|
||||
"promise": "7.3.1",
|
||||
"query-string": "4.3.4",
|
||||
"re-reselect": "^4.0.0",
|
||||
"read-chunk": "^2.1.0",
|
||||
"redux": "^3.7.2",
|
||||
"relative": "^3.0.2",
|
||||
"reselect": "^4.0.0",
|
||||
"server-destroy": "^1.0.1",
|
||||
"sprintf-js": "^1.1.2",
|
||||
"sqlite3": "^5.0.2",
|
||||
"string-padding": "^1.0.2",
|
||||
"string-to-stream": "^1.1.0",
|
||||
"tar": "^4.4.10",
|
||||
"tcp-port-used": "^0.1.2",
|
||||
"re-reselect": "4.0.0",
|
||||
"read-chunk": "2.1.0",
|
||||
"redux": "3.7.2",
|
||||
"relative": "3.0.2",
|
||||
"reselect": "4.1.5",
|
||||
"server-destroy": "1.0.1",
|
||||
"sprintf-js": "1.1.2",
|
||||
"sqlite3": "5.0.2",
|
||||
"string-padding": "1.0.2",
|
||||
"string-to-stream": "1.1.1",
|
||||
"tar": "4.4.19",
|
||||
"tcp-port-used": "0.1.2",
|
||||
"uglifycss": "0.0.29",
|
||||
"url-parse": "^1.4.7",
|
||||
"uuid": "^3.0.1",
|
||||
"word-wrap": "^1.2.3",
|
||||
"xml2js": "^0.4.19"
|
||||
"url-parse": "1.5.3",
|
||||
"uuid": "3.4.0",
|
||||
"word-wrap": "1.2.3",
|
||||
"xml2js": "0.4.23"
|
||||
},
|
||||
"gitHead": "eb4b0e64eab40a51b0895d3a40a9d8c3cb7b1b14"
|
||||
}
|
||||
|
|
|
@ -19,31 +19,31 @@
|
|||
"author": "Joplin",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@types/jest": "^28.1.6",
|
||||
"@types/pdfjs-dist": "^2.10.378",
|
||||
"@types/react": "16.9.55",
|
||||
"@types/react-dom": "^16.9.0",
|
||||
"@types/styled-components": "^5.1.25",
|
||||
"babel-jest": "^28.1.3",
|
||||
"css-loader": "^6.7.1",
|
||||
"jest": "^28.1.3",
|
||||
"jest-environment-jsdom": "^28.1.3",
|
||||
"style-loader": "^3.3.1",
|
||||
"ts-jest": "^28.0.7",
|
||||
"ts-loader": "^9.3.0",
|
||||
"typescript": "^4.0.5",
|
||||
"webpack": "^5.73.0",
|
||||
"webpack-cli": "^4.10.0"
|
||||
"@types/jest": "28.1.6",
|
||||
"@types/pdfjs-dist": "2.10.378",
|
||||
"@types/react": "16.14.34",
|
||||
"@types/react-dom": "16.9.16",
|
||||
"@types/styled-components": "5.1.25",
|
||||
"babel-jest": "28.1.3",
|
||||
"css-loader": "6.7.1",
|
||||
"jest": "28.1.3",
|
||||
"jest-environment-jsdom": "28.1.3",
|
||||
"style-loader": "3.3.1",
|
||||
"ts-jest": "28.0.7",
|
||||
"ts-loader": "9.3.1",
|
||||
"typescript": "4.5.2",
|
||||
"webpack": "5.74.0",
|
||||
"webpack-cli": "4.10.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-svg-core": "^6.1.2",
|
||||
"@fortawesome/free-solid-svg-icons": "^6.1.2",
|
||||
"@fortawesome/react-fontawesome": "^0.2.0",
|
||||
"@fortawesome/fontawesome-svg-core": "6.1.2",
|
||||
"@fortawesome/free-solid-svg-icons": "6.1.2",
|
||||
"@fortawesome/react-fontawesome": "0.2.0",
|
||||
"@joplin/lib": "~2.9",
|
||||
"async-mutex": "^0.4.0",
|
||||
"pdfjs-dist": "^2.14.305",
|
||||
"react": "16.13.1",
|
||||
"react-dom": "16.9.0",
|
||||
"styled-components": "^5.3.5"
|
||||
"async-mutex": "0.4.0",
|
||||
"pdfjs-dist": "2.14.305",
|
||||
"react": "16.14.0",
|
||||
"react-dom": "16.14.0",
|
||||
"styled-components": "5.3.5"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,12 +29,15 @@ describe('pdfData', () => {
|
|||
expect(pdf.pageCount).toBe(1);
|
||||
});
|
||||
|
||||
test('Should throw error on invalid file', async () => {
|
||||
const pdf = new PdfDocument(document);
|
||||
await expect(async () => {
|
||||
await pdf.loadDoc('');
|
||||
}).rejects.toThrowError();
|
||||
});
|
||||
// Disable test because it throws warnings in console
|
||||
// https://github.com/mozilla/pdf.js/issues/12443
|
||||
|
||||
// test('Should throw error on invalid file', async () => {
|
||||
// const pdf = new PdfDocument(document);
|
||||
// await expect(async () => {
|
||||
// await pdf.loadDoc('');
|
||||
// }).rejects.toThrowError();
|
||||
// });
|
||||
|
||||
test('Should get correct page size', async () => {
|
||||
const file = await loadFile(pdfFilePath1);
|
||||
|
|
|
@ -20,21 +20,21 @@
|
|||
"dependencies": {
|
||||
"@joplin/lib": "^2.9.1",
|
||||
"@joplin/tools": "^2.9.1",
|
||||
"fs-extra": "^9.0.1",
|
||||
"gh-release-assets": "^2.0.0",
|
||||
"node-fetch": "^2.6.1",
|
||||
"source-map-support": "^0.5.21",
|
||||
"yargs": "^16.0.3"
|
||||
"fs-extra": "9.1.0",
|
||||
"gh-release-assets": "2.0.0",
|
||||
"node-fetch": "2.6.6",
|
||||
"source-map-support": "0.5.21",
|
||||
"yargs": "16.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/fs-extra": "^9.0.6",
|
||||
"@types/jest": "^26.0.15",
|
||||
"@types/node": "^14.14.6",
|
||||
"jest": "^26.6.3",
|
||||
"source-map-loader": "^3.0.0",
|
||||
"@types/fs-extra": "9.0.13",
|
||||
"@types/jest": "26.0.24",
|
||||
"@types/node": "14.18.0",
|
||||
"jest": "26.6.3",
|
||||
"source-map-loader": "3.0.0",
|
||||
"typescript": "4.1.3",
|
||||
"webpack": "^5.65.0",
|
||||
"webpack-cli": "^4.9.1"
|
||||
"webpack": "5.65.0",
|
||||
"webpack-cli": "4.9.1"
|
||||
},
|
||||
"gitHead": "eb4b0e64eab40a51b0895d3a40a9d8c3cb7b1b14"
|
||||
}
|
||||
|
|
|
@ -15,16 +15,16 @@
|
|||
],
|
||||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
"chalk": "^4.1.0",
|
||||
"chalk": "4.1.2",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"fs-extra": "9.1.0",
|
||||
"glob": "7.2.0",
|
||||
"on-build-webpack": "^0.1.0",
|
||||
"tar": "^6.0.5",
|
||||
"tar": "6.1.11",
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11",
|
||||
"yargs": "^16.2.0"
|
||||
"yargs": "16.2.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -39,12 +39,12 @@
|
|||
"access": "public"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.9",
|
||||
"@types/react": "^16.9.55",
|
||||
"@types/react-native": "^0.64.4",
|
||||
"@babel/core": "7.16.0",
|
||||
"@types/react": "16.14.21",
|
||||
"@types/react-native": "0.64.19",
|
||||
"react": "17.0.2",
|
||||
"react-native": "0.66.1",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "4.5.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "*",
|
||||
|
|
|
@ -18,35 +18,35 @@
|
|||
"author": "",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@types/jest": "^26.0.15",
|
||||
"@types/node": "^14.14.6",
|
||||
"jest": "^26.6.3",
|
||||
"typescript": "^4.0.5"
|
||||
"@types/jest": "26.0.24",
|
||||
"@types/node": "14.18.0",
|
||||
"jest": "26.6.3",
|
||||
"typescript": "4.5.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@joplin/fork-htmlparser2": "^4.1.41",
|
||||
"@joplin/fork-uslug": "^1.0.6",
|
||||
"font-awesome-filetypes": "^2.1.0",
|
||||
"fs-extra": "^8.1.0",
|
||||
"font-awesome-filetypes": "2.1.0",
|
||||
"fs-extra": "8.1.0",
|
||||
"highlight.js": "11.1.0",
|
||||
"html-entities": "^1.2.1",
|
||||
"json-stringify-safe": "^5.0.1",
|
||||
"katex": "^0.13.3",
|
||||
"markdown-it": "^10.0.0",
|
||||
"markdown-it-abbr": "^1.0.4",
|
||||
"markdown-it-anchor": "^5.2.5",
|
||||
"markdown-it-deflist": "^2.0.3",
|
||||
"markdown-it-emoji": "^1.4.0",
|
||||
"markdown-it-expand-tabs": "^1.0.13",
|
||||
"markdown-it-footnote": "^3.0.2",
|
||||
"markdown-it-ins": "^3.0.0",
|
||||
"markdown-it-mark": "^3.0.0",
|
||||
"markdown-it-multimd-table": "^4.1.2",
|
||||
"markdown-it-sub": "^1.0.0",
|
||||
"markdown-it-sup": "^1.0.0",
|
||||
"markdown-it-toc-done-right": "^4.1.0",
|
||||
"md5": "^2.2.1",
|
||||
"mermaid": "^9.1.7"
|
||||
"html-entities": "1.4.0",
|
||||
"json-stringify-safe": "5.0.1",
|
||||
"katex": "0.13.24",
|
||||
"markdown-it": "10.0.0",
|
||||
"markdown-it-abbr": "1.0.4",
|
||||
"markdown-it-anchor": "5.3.0",
|
||||
"markdown-it-deflist": "2.1.0",
|
||||
"markdown-it-emoji": "1.4.0",
|
||||
"markdown-it-expand-tabs": "1.0.13",
|
||||
"markdown-it-footnote": "3.0.3",
|
||||
"markdown-it-ins": "3.0.1",
|
||||
"markdown-it-mark": "3.0.1",
|
||||
"markdown-it-multimd-table": "4.1.2",
|
||||
"markdown-it-sub": "1.0.0",
|
||||
"markdown-it-sup": "1.0.0",
|
||||
"markdown-it-toc-done-right": "4.2.0",
|
||||
"md5": "2.3.0",
|
||||
"mermaid": "9.1.7"
|
||||
},
|
||||
"gitHead": "eb4b0e64eab40a51b0895d3a40a9d8c3cb7b1b14"
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@joplin/server",
|
||||
"version": "2.9.5",
|
||||
"version": "2.9.6",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"start-dev": "yarn run build && JOPLIN_IS_TESTING=1 nodemon --config nodemon.json --ext ts,js,mustache,css,tsx dist/app.js --env dev",
|
||||
|
@ -21,61 +21,61 @@
|
|||
"watch": "tsc --watch --preserveWatchOutput --project tsconfig.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-s3": "^3.40.0",
|
||||
"@fortawesome/fontawesome-free": "^5.15.1",
|
||||
"@aws-sdk/client-s3": "3.44.0",
|
||||
"@fortawesome/fontawesome-free": "5.15.4",
|
||||
"@joplin/lib": "~2.9",
|
||||
"@joplin/renderer": "~2.9",
|
||||
"@koa/cors": "^3.1.0",
|
||||
"@types/uuid": "^8.3.1",
|
||||
"bcryptjs": "^2.4.3",
|
||||
"bulma": "^0.9.1",
|
||||
"bulma-prefers-dark": "^0.1.0-beta.0",
|
||||
"compare-versions": "^3.6.0",
|
||||
"dayjs": "^1.9.8",
|
||||
"formidable": "^1.2.2",
|
||||
"fs-extra": "^8.1.0",
|
||||
"html-entities": "^1.3.1",
|
||||
"jquery": "^3.6.0",
|
||||
"@koa/cors": "4.0.0",
|
||||
"@types/uuid": "8.3.3",
|
||||
"bcryptjs": "2.4.3",
|
||||
"bulma": "0.9.3",
|
||||
"bulma-prefers-dark": "0.1.0-beta.1",
|
||||
"compare-versions": "3.6.0",
|
||||
"dayjs": "1.10.7",
|
||||
"formidable": "1.2.6",
|
||||
"fs-extra": "8.1.0",
|
||||
"html-entities": "1.4.0",
|
||||
"jquery": "3.6.0",
|
||||
"knex": "0.95.15",
|
||||
"koa": "2.8.1",
|
||||
"markdown-it": "^12.0.4",
|
||||
"mustache": "^3.1.0",
|
||||
"nanoid": "^2.1.1",
|
||||
"node-cron": "^3.0.0",
|
||||
"node-env-file": "^0.1.8",
|
||||
"nodemailer": "^6.6.0",
|
||||
"nodemon": "^2.0.6",
|
||||
"pg": "^8.5.1",
|
||||
"pretty-bytes": "^5.6.0",
|
||||
"prettycron": "^0.10.0",
|
||||
"query-string": "^6.8.3",
|
||||
"rate-limiter-flexible": "^2.2.4",
|
||||
"raw-body": "^2.4.1",
|
||||
"sqlite3": "^4.1.0",
|
||||
"stripe": "^8.150.0",
|
||||
"uuid": "^8.3.2",
|
||||
"yargs": "^17.2.1",
|
||||
"zxcvbn": "^4.4.2"
|
||||
"koa": "2.13.4",
|
||||
"markdown-it": "12.2.0",
|
||||
"mustache": "3.2.1",
|
||||
"nanoid": "2.1.11",
|
||||
"node-cron": "3.0.0",
|
||||
"node-env-file": "0.1.8",
|
||||
"nodemailer": "6.7.2",
|
||||
"nodemon": "2.0.15",
|
||||
"pg": "8.7.1",
|
||||
"pretty-bytes": "5.6.0",
|
||||
"prettycron": "0.10.0",
|
||||
"query-string": "6.14.1",
|
||||
"rate-limiter-flexible": "2.3.6",
|
||||
"raw-body": "2.4.2",
|
||||
"sqlite3": "4.2.0",
|
||||
"stripe": "8.191.0",
|
||||
"uuid": "8.3.2",
|
||||
"yargs": "17.3.0",
|
||||
"zxcvbn": "4.4.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@joplin/tools": "~2.9",
|
||||
"@rmp135/sql-ts": "^1.12.1",
|
||||
"@types/fs-extra": "^8.0.0",
|
||||
"@types/jest": "^26.0.15",
|
||||
"@types/jest-expect-message": "^1.0.3",
|
||||
"@types/jsdom": "^16.2.6",
|
||||
"@types/koa": "2.0.49",
|
||||
"@types/markdown-it": "^12.0.0",
|
||||
"@types/mustache": "^0.8.32",
|
||||
"@types/nodemailer": "^6.4.1",
|
||||
"@types/yargs": "^17.0.4",
|
||||
"@types/zxcvbn": "^4.4.1",
|
||||
"gulp": "^4.0.2",
|
||||
"jest": "^26.6.3",
|
||||
"jest-expect-message": "^1.0.2",
|
||||
"jsdom": "^16.4.0",
|
||||
"node-mocks-http": "^1.10.0",
|
||||
"source-map-support": "^0.5.13",
|
||||
"@rmp135/sql-ts": "1.12.1",
|
||||
"@types/fs-extra": "8.1.2",
|
||||
"@types/jest": "26.0.24",
|
||||
"@types/jest-expect-message": "1.0.3",
|
||||
"@types/jsdom": "16.2.13",
|
||||
"@types/koa": "2.13.4",
|
||||
"@types/markdown-it": "12.2.3",
|
||||
"@types/mustache": "0.8.32",
|
||||
"@types/nodemailer": "6.4.4",
|
||||
"@types/yargs": "17.0.7",
|
||||
"@types/zxcvbn": "4.4.1",
|
||||
"gulp": "4.0.2",
|
||||
"jest": "26.6.3",
|
||||
"jest-expect-message": "1.0.2",
|
||||
"jsdom": "16.7.0",
|
||||
"node-mocks-http": "1.11.0",
|
||||
"source-map-support": "0.5.21",
|
||||
"typescript": "4.1.2"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -184,7 +184,7 @@ async function main() {
|
|||
app.use(cors({
|
||||
// https://github.com/koajs/cors/issues/52#issuecomment-413887382
|
||||
origin: (ctx: AppContext) => {
|
||||
const origin = ctx.request.header.origin;
|
||||
const origin = ctx.request.origin;
|
||||
|
||||
if (acceptOrigin(origin)) {
|
||||
return origin;
|
||||
|
|
|
@ -34,6 +34,11 @@ export default class UserDeletionModel extends BaseModel<UserDeletion> {
|
|||
return !!r;
|
||||
}
|
||||
|
||||
public async isDeletedOrBeingDeleted(userId: Uuid) {
|
||||
const r: UserDeletion = await this.db(this.tableName).select(['id', 'start_time']).where('user_id', '=', userId).first();
|
||||
return !!r && !!r.start_time;
|
||||
}
|
||||
|
||||
public async add(userId: Uuid, scheduledTime: number, options: AddOptions = null): Promise<UserDeletion> {
|
||||
options = {
|
||||
...defaultAddOptions(),
|
||||
|
@ -120,4 +125,10 @@ export default class UserDeletionModel extends BaseModel<UserDeletion> {
|
|||
return userIds;
|
||||
}
|
||||
|
||||
// Remove a user from the deletion queue, before it gets deleted. If it has
|
||||
// already been deleted or if it's being deleted, no action is performed.
|
||||
public async removeFromQueueByUserId(userId: Uuid) {
|
||||
await this.db(this.tableName).where('user_id', '=', userId).andWhere('start_time', '=', 0).delete();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
import Logger from '@joplin/lib/Logger';
|
||||
import { isUniqueConstraintError } from '../db';
|
||||
import { User, UserFlag, UserFlagType, userFlagTypeToLabel, Uuid } from '../services/database/types';
|
||||
import { formatDateTime } from '../utils/time';
|
||||
import BaseModel from './BaseModel';
|
||||
|
||||
const logger = Logger.create('UserFlagModel');
|
||||
|
||||
interface AddRemoveOptions {
|
||||
updateUser?: boolean;
|
||||
}
|
||||
|
@ -138,15 +141,35 @@ export default class UserFlagModels extends BaseModel<UserFlag> {
|
|||
newProps.enabled = 0;
|
||||
}
|
||||
|
||||
let removeFromDeletionQueue = false;
|
||||
|
||||
if (!user.enabled && newProps.enabled) {
|
||||
if (await this.models().userDeletion().isDeletedOrBeingDeleted(userId)) {
|
||||
// User account is being deleted or already deleted and cannot
|
||||
// be enabled again.
|
||||
logger.error('Trying to enable an account that is queued for deletion - leaving account disabled');
|
||||
newProps.enabled = 0;
|
||||
} else {
|
||||
// If the user has been re-enabled, we want to remove it from
|
||||
// the deletion queue (if it has been queued there) immediately,
|
||||
// so that it doesn't incorrectly get deleted.
|
||||
removeFromDeletionQueue = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (user.enabled !== newProps.enabled) {
|
||||
newProps.disabled_time = !newProps.enabled ? Date.now() : 0;
|
||||
}
|
||||
|
||||
if (user.can_upload !== newProps.can_upload || user.enabled !== newProps.enabled) {
|
||||
await this.models().user().save({
|
||||
id: userId,
|
||||
...newProps,
|
||||
});
|
||||
await this.withTransaction(async () => {
|
||||
if (removeFromDeletionQueue) await this.models().userDeletion().removeFromQueueByUserId(userId);
|
||||
|
||||
await this.models().user().save({
|
||||
id: userId,
|
||||
...newProps,
|
||||
});
|
||||
}, 'UserFlagModel::updateUserFromFlags');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import { betaUserDateRange, stripeConfig } from '../utils/stripe';
|
|||
import { accountByType, AccountType } from './UserModel';
|
||||
import { failedPaymentFinalAccount, failedPaymentWarningInterval } from './SubscriptionModel';
|
||||
import { stripePortalUrl } from '../utils/urlUtils';
|
||||
import { Day } from '../utils/time';
|
||||
|
||||
describe('UserModel', function() {
|
||||
|
||||
|
@ -403,4 +404,54 @@ describe('UserModel', function() {
|
|||
expect(await models().userFlag().byUserId(user1.id, UserFlagType.AccountOverLimit)).toBeFalsy();
|
||||
});
|
||||
|
||||
test('should disable and enable users', async () => {
|
||||
const { user: user1 } = await createUserAndSession(1);
|
||||
const { user: user2 } = await createUserAndSession(2);
|
||||
|
||||
jest.useFakeTimers('modern');
|
||||
|
||||
const t0 = new Date('2022-01-01').getTime();
|
||||
jest.setSystemTime(t0);
|
||||
|
||||
await models().userFlag().add(user1.id, UserFlagType.ManuallyDisabled);
|
||||
|
||||
expect((await models().user().load(user1.id)).enabled).toBe(0);
|
||||
expect((await models().user().load(user2.id)).enabled).toBe(1);
|
||||
|
||||
const t1 = new Date('2022-02-01').getTime();
|
||||
jest.setSystemTime(t1);
|
||||
|
||||
// If we run the user deletion service at this point, it should add the
|
||||
// disabled account
|
||||
await models().userDeletion().autoAdd(10, 10 * Day, t1 + 3 * Day);
|
||||
expect(await models().userDeletion().count()).toBe(1);
|
||||
|
||||
// If we make the account enabled again, the user should be immediately
|
||||
// removed from the queue
|
||||
await models().userFlag().remove(user1.id, UserFlagType.ManuallyDisabled);
|
||||
expect(await models().userDeletion().count()).toBe(0);
|
||||
|
||||
await models().userFlag().add(user1.id, UserFlagType.ManuallyDisabled);
|
||||
|
||||
const t2 = new Date('2022-03-01').getTime();
|
||||
jest.setSystemTime(t2);
|
||||
|
||||
// Should be added again
|
||||
await models().userDeletion().autoAdd(10, 10 * Day, t2 + 3 * Day);
|
||||
expect(await models().userDeletion().count()).toBe(1);
|
||||
|
||||
const t3 = new Date('2022-04-01').getTime();
|
||||
jest.setSystemTime(t3);
|
||||
|
||||
// Now if the service were to run, the user deletion would start and it
|
||||
// should no longer be possible to remove it from the queue. And it
|
||||
// shouldn't be possible to enable the user either.
|
||||
const job = await models().userDeletion().next();
|
||||
expect(job.user_id).toBe(user1.id);
|
||||
await models().userDeletion().start(job.id);
|
||||
|
||||
await models().userFlag().add(user1.id, UserFlagType.ManuallyDisabled);
|
||||
expect((await models().user().load(user1.id)).enabled).toBe(0);
|
||||
});
|
||||
|
||||
});
|
||||
|
|
|
@ -84,7 +84,7 @@ router.post('api/batch', async (_path: SubPath, ctx: AppContext) => {
|
|||
|
||||
response[subRequestId] = {
|
||||
status: r.status,
|
||||
body: typeof r.body === 'object' ? { ...r.body } : r.body,
|
||||
body: typeof r.body === 'object' ? { ...(r.body as object) } : r.body,
|
||||
header: r.header ? { ...r.header } : {},
|
||||
};
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ export async function putItemContents(path: SubPath, ctx: AppContext, isBatch: b
|
|||
// include the "share_id" field property so it doesn't need to be set via
|
||||
// query parameter.
|
||||
if (ctx.query['share_id']) {
|
||||
saveOptions.shareId = ctx.query['share_id'];
|
||||
saveOptions.shareId = ctx.query['share_id'] as string;
|
||||
await ctx.joplin.models.item().checkIfAllowed(ctx.joplin.owner, AclAction.Create, { jop_share_id: saveOptions.shareId });
|
||||
}
|
||||
|
||||
|
|
|
@ -24,9 +24,11 @@ describe('api_ping', function() {
|
|||
|
||||
await routeHandler(context);
|
||||
|
||||
const body = context.response.body as any;
|
||||
|
||||
expect(context.response.status).toBe(200);
|
||||
expect(context.response.body.status).toBe('ok');
|
||||
expect(context.response.body.message).toBe('Joplin Server is running');
|
||||
expect(body.status).toBe('ok');
|
||||
expect(body.message).toBe('Joplin Server is running');
|
||||
});
|
||||
|
||||
});
|
||||
|
|
|
@ -39,9 +39,9 @@ describe('api/sessions', function() {
|
|||
|
||||
const context = await postSession(user.email, password);
|
||||
expect(context.response.status).toBe(200);
|
||||
expect(!!context.response.body.id).toBe(true);
|
||||
expect(!!(context.response.body as any).id).toBe(true);
|
||||
|
||||
const session: Session = await models().session().load(context.response.body.id);
|
||||
const session: Session = await models().session().load((context.response.body as any).id);
|
||||
expect(session.user_id).toBe(user.id);
|
||||
});
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ describe('index/home', function() {
|
|||
|
||||
await routeHandler(context);
|
||||
|
||||
expect(context.response.body.indexOf(user.email) >= 0).toBe(true);
|
||||
expect((context.response.body as any).indexOf(user.email) >= 0).toBe(true);
|
||||
});
|
||||
|
||||
});
|
||||
|
|
|
@ -44,7 +44,7 @@ describe('index_login', function() {
|
|||
|
||||
await routeHandler(context);
|
||||
|
||||
const doc = parseHtml(context.response.body);
|
||||
const doc = parseHtml(context.response.body as string);
|
||||
expect(!!doc.querySelector('input[name=email]')).toBe(true);
|
||||
expect(!!doc.querySelector('input[name=password]')).toBe(true);
|
||||
});
|
||||
|
|
|
@ -48,7 +48,7 @@ const subRoutes: Record<string, RouteHandler> = {
|
|||
reset: async (_path: SubPath, ctx: AppContext) => {
|
||||
let successMessage: string = '';
|
||||
let error: Error = null;
|
||||
const token = ctx.query.token;
|
||||
const token = ctx.query.token as string;
|
||||
|
||||
if (ctx.method === 'POST') {
|
||||
const fields = await bodyFields<ResetPasswordFields>(ctx.req);
|
||||
|
|
|
@ -37,7 +37,7 @@ async function getShareContent(shareId: string, query: any = {}): Promise<string
|
|||
});
|
||||
await routeHandler(context);
|
||||
await checkContextError(context);
|
||||
return context.response.body;
|
||||
return context.response.body as any;
|
||||
}
|
||||
|
||||
describe('shares.link', function() {
|
||||
|
|
|
@ -407,7 +407,7 @@ const getHandlers: Record<string, StripeRouteHandler> = {
|
|||
success: async (stripe: Stripe, _path: SubPath, ctx: AppContext) => {
|
||||
try {
|
||||
const models = ctx.joplin.models;
|
||||
const checkoutSession = await stripe.checkout.sessions.retrieve(ctx.query.session_id);
|
||||
const checkoutSession = await stripe.checkout.sessions.retrieve(ctx.query.session_id as string);
|
||||
const userEmail = checkoutSession.customer_details.email || checkoutSession.customer_email; // customer_email appears to be always null but fallback to it just in case
|
||||
if (!userEmail) throw new Error(`Could not find email from checkout session: ${JSON.stringify(checkoutSession)}`);
|
||||
const user = await waitForUserCreation(models, userEmail);
|
||||
|
|
|
@ -59,7 +59,7 @@ async function getUserHtml(sessionId: string, userId: string): Promise<string> {
|
|||
|
||||
await routeHandler(context);
|
||||
checkContextError(context);
|
||||
return context.response.body;
|
||||
return context.response.body as string;
|
||||
}
|
||||
|
||||
describe('index/users', function() {
|
||||
|
|
|
@ -124,7 +124,7 @@ router.publicSchemas.push('users/:id/confirm');
|
|||
router.get('users/:id/confirm', async (path: SubPath, ctx: AppContext, error: Error = null) => {
|
||||
const models = ctx.joplin.models;
|
||||
const userId = path.id;
|
||||
const token = ctx.query.token;
|
||||
const token = ctx.query.token as string;
|
||||
|
||||
if (!token) throw new ErrorBadRequest('Missing token');
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ import config from '../config';
|
|||
import { shareFolderWithUser } from '../utils/testing/shareApiUtils';
|
||||
import { afterAllTests, beforeAllDb, beforeEachDb, createNote, createUserAndSession, models } from '../utils/testing/testUtils';
|
||||
import { Env } from '../utils/types';
|
||||
import { BackupItemType } from './database/types';
|
||||
import { BackupItemType, UserFlagType } from './database/types';
|
||||
import UserDeletionService from './UserDeletionService';
|
||||
|
||||
const newService = () => {
|
||||
|
@ -32,6 +32,8 @@ describe('UserDeletionService', function() {
|
|||
const t0 = new Date('2021-12-14').getTime();
|
||||
const t1 = t0 + 1000;
|
||||
|
||||
await models().userFlag().toggle(user1.id, UserFlagType.ManuallyDisabled, true);
|
||||
|
||||
const job = await models().userDeletion().add(user1.id, t1, {
|
||||
processData: true,
|
||||
processAccount: false,
|
||||
|
@ -63,6 +65,8 @@ describe('UserDeletionService', function() {
|
|||
const t0 = new Date('2021-12-14').getTime();
|
||||
const t1 = t0 + 1000;
|
||||
|
||||
await models().userFlag().toggle(user1.id, UserFlagType.ManuallyDisabled, true);
|
||||
|
||||
const job = await models().userDeletion().add(user1.id, t1, {
|
||||
processData: false,
|
||||
processAccount: true,
|
||||
|
@ -92,7 +96,7 @@ describe('UserDeletionService', function() {
|
|||
const content = JSON.parse(backupItem.content.toString());
|
||||
expect(content.user.id).toBe(user1.id);
|
||||
expect(content.user.email).toBe(user1.email);
|
||||
expect(content.flags.length).toBe(0);
|
||||
expect(content.flags.length).toBe(1);
|
||||
});
|
||||
|
||||
test('should not delete notebooks that are not owned', async function() {
|
||||
|
@ -113,6 +117,8 @@ describe('UserDeletionService', function() {
|
|||
expect(await models().share().count()).toBe(1);
|
||||
expect(await models().shareUser().count()).toBe(1);
|
||||
|
||||
await models().userFlag().toggle(user2.id, UserFlagType.ManuallyDisabled, true);
|
||||
|
||||
const job = await models().userDeletion().add(user2.id, Date.now());
|
||||
const service = newService();
|
||||
await service.processDeletionJob(job, { sleepBetweenOperations: 0 });
|
||||
|
@ -140,6 +146,8 @@ describe('UserDeletionService', function() {
|
|||
expect(await models().share().count()).toBe(1);
|
||||
expect(await models().shareUser().count()).toBe(1);
|
||||
|
||||
await models().userFlag().toggle(user1.id, UserFlagType.ManuallyDisabled, true);
|
||||
|
||||
const job = await models().userDeletion().add(user1.id, Date.now());
|
||||
const service = newService();
|
||||
await service.processDeletionJob(job, { sleepBetweenOperations: 0 });
|
||||
|
@ -149,4 +157,27 @@ describe('UserDeletionService', function() {
|
|||
expect(await models().item().count()).toBe(0);
|
||||
});
|
||||
|
||||
test('should not do anything if the user is still enabled', async function() {
|
||||
const { user: user1 } = await createUserAndSession(1);
|
||||
|
||||
const t0 = new Date('2021-12-14').getTime();
|
||||
const t1 = t0 + 1000;
|
||||
|
||||
const job = await models().userDeletion().add(user1.id, t1, {
|
||||
processData: false,
|
||||
processAccount: true,
|
||||
});
|
||||
|
||||
expect(await models().userDeletion().count()).toBe(1);
|
||||
|
||||
const service = newService();
|
||||
await service.processDeletionJob(job, { sleepBetweenOperations: 0 });
|
||||
|
||||
// Nothing has been done because the user is still enabled
|
||||
expect(await models().user().count()).toBe(1);
|
||||
|
||||
// And the job should have been removed from the queue
|
||||
expect(await models().userDeletion().count()).toBe(0);
|
||||
});
|
||||
|
||||
});
|
||||
|
|
|
@ -90,6 +90,20 @@ export default class UserDeletionService extends BaseService {
|
|||
|
||||
logger.info('Starting user deletion: ', deletion);
|
||||
|
||||
// Normally, a user that is still enabled should not be processed here,
|
||||
// because it should not have been queued to begin with (or if it was
|
||||
// queued, then enabled, it should have been removed from the queue).
|
||||
// But as a fail safe we have this extra check.
|
||||
//
|
||||
// We also remove the job from the queue so that the service doesn't try
|
||||
// to process it again.
|
||||
const user = await this.models.user().load(deletion.user_id);
|
||||
if (user.enabled) {
|
||||
logger.error(`Trying to delete a user that is still enabled - aborting and removing the user from the queue. Deletion job: ${JSON.stringify(deletion)}`);
|
||||
await this.models.userDeletion().removeFromQueueByUserId(user.id);
|
||||
return;
|
||||
}
|
||||
|
||||
let error: any = null;
|
||||
let success: boolean = true;
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ export function headerSessionId(headers: any): string {
|
|||
}
|
||||
|
||||
export function contextSessionId(ctx: AppContext, throwIfNotFound = true): string {
|
||||
if (ctx.headers['x-api-auth']) return ctx.headers['x-api-auth'];
|
||||
if (ctx.headers['x-api-auth']) return ctx.headers['x-api-auth'] as string;
|
||||
|
||||
const id = cookieGet(ctx, 'sessionId');
|
||||
if (!id && throwIfNotFound) throw new ErrorForbidden('Invalid or missing session');
|
||||
|
@ -76,6 +76,6 @@ export function isAdminRequest(ctx: AppContext): boolean {
|
|||
}
|
||||
|
||||
export function userIp(ctx: AppContext): string {
|
||||
if (ctx.headers['x-real-ip']) return ctx.headers['x-real-ip'];
|
||||
if (ctx.headers['x-real-ip']) return ctx.headers['x-real-ip'] as string;
|
||||
return ctx.ip;
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import { downloadPlugins, extractPlugins, localPluginsVersion } from './bundleDe
|
|||
import { pathExists, readFile, remove } from 'fs-extra';
|
||||
import Setting from '@joplin/lib/models/Setting';
|
||||
import { createTempDir, supportDir } from '@joplin/lib/testing/test-utils';
|
||||
import { rootDir } from './tool-utils';
|
||||
|
||||
const fetch = require('node-fetch');
|
||||
|
||||
|
@ -170,8 +171,6 @@ describe('bundleDefaultPlugins', function() {
|
|||
.mockResolvedValueOnce({ text: () => Promise.resolve(NPM_Response2), ok: true })
|
||||
.mockResolvedValueOnce({ buffer: () => Promise.resolve(tgzData), ok: true });
|
||||
|
||||
const tempDir = await createTempDir();
|
||||
|
||||
const downloadedPlugins = await downloadPlugins(testCase.localVersions, testDefaultPluginsInfo, manifests);
|
||||
|
||||
expect(downloadedPlugins[Object.keys(testDefaultPluginsInfo)[0]]).toBe(testCase.downloadedPlugin1);
|
||||
|
@ -182,9 +181,10 @@ describe('bundleDefaultPlugins', function() {
|
|||
testCase.calledWith.forEach((callValue, index) => expect(mockFetch).toHaveBeenNthCalledWith(index + 1, callValue));
|
||||
|
||||
jest.clearAllMocks();
|
||||
await remove(tempDir);
|
||||
}
|
||||
|
||||
await remove(`${rootDir}/packages/tools/joplin-plugin-backup-1.1.0.tgz`);
|
||||
await remove(`${rootDir}/packages/tools/joplin-plugin-rich-markdown-0.9.0.tgz`);
|
||||
});
|
||||
|
||||
it('should extract plugins files', async () => {
|
||||
|
|
|
@ -41,7 +41,7 @@ async function downloadFile(url: string, outputPath: string) {
|
|||
|
||||
export async function extractPlugins(currentDir: string, defaultPluginDir: string, downloadedPluginsNames: PluginIdAndName): Promise<void> {
|
||||
for (const pluginId of Object.keys(downloadedPluginsNames)) {
|
||||
await execCommand2(`tar xzf ${currentDir}/${downloadedPluginsNames[pluginId]}`);
|
||||
await execCommand2(`tar xzf ${currentDir}/${downloadedPluginsNames[pluginId]}`, { quiet: true });
|
||||
await move(`package/publish/${pluginId}.jpl`,`${defaultPluginDir}/${pluginId}/plugin.jpl`, { overwrite: true });
|
||||
await move(`package/publish/${pluginId}.json`,`${defaultPluginDir}/${pluginId}/manifest.json`, { overwrite: true });
|
||||
await remove(`${downloadedPluginsNames[pluginId]}`);
|
||||
|
|
|
@ -23,37 +23,37 @@
|
|||
"@joplin/lib": "^2.9.1",
|
||||
"@joplin/renderer": "^2.9.1",
|
||||
"@types/node-fetch": "1.6.9",
|
||||
"@types/yargs": "16.0.3",
|
||||
"dayjs": "^1.10.7",
|
||||
"execa": "^4.1.0",
|
||||
"fs-extra": "^4.0.3",
|
||||
"gettext-parser": "^1.3.0",
|
||||
"glob": "^7.1.6",
|
||||
"markdown-it": "^8.4.1",
|
||||
"md5-file": "^4.0.0",
|
||||
"moment": "^2.24.0",
|
||||
"mustache": "^2.3.0",
|
||||
"@types/yargs": "16.0.4",
|
||||
"dayjs": "1.10.7",
|
||||
"execa": "4.1.0",
|
||||
"fs-extra": "4.0.3",
|
||||
"gettext-parser": "1.4.0",
|
||||
"glob": "7.2.0",
|
||||
"markdown-it": "8.4.2",
|
||||
"md5-file": "4.0.0",
|
||||
"moment": "2.29.1",
|
||||
"mustache": "2.3.2",
|
||||
"node-fetch": "1.7.3",
|
||||
"relative": "^3.0.2",
|
||||
"request": "^2.88.0",
|
||||
"sharp": "^0.25.2",
|
||||
"source-map-support": "^0.5.19",
|
||||
"uri-template": "^1.0.1",
|
||||
"yargs": "16.0.3"
|
||||
"relative": "3.0.2",
|
||||
"request": "2.88.2",
|
||||
"sharp": "0.31.1",
|
||||
"source-map-support": "0.5.21",
|
||||
"uri-template": "1.0.3",
|
||||
"yargs": "16.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@rmp135/sql-ts": "^1.6.0",
|
||||
"@types/fs-extra": "^9.0.6",
|
||||
"@types/jest": "^26.0.15",
|
||||
"@types/mustache": "^0.8.32",
|
||||
"@types/node": "^14.14.6",
|
||||
"gettext-extractor": "^3.5.3",
|
||||
"gulp": "^4.0.2",
|
||||
"jest": "^26.6.3",
|
||||
"rss": "^1.2.2",
|
||||
"sass": "^1.39.2",
|
||||
"sqlite3": "^5.0.0",
|
||||
"typescript": "^4.1.3"
|
||||
"@rmp135/sql-ts": "1.12.1",
|
||||
"@types/fs-extra": "9.0.13",
|
||||
"@types/jest": "26.0.24",
|
||||
"@types/mustache": "0.8.32",
|
||||
"@types/node": "14.18.0",
|
||||
"gettext-extractor": "3.5.3",
|
||||
"gulp": "4.0.2",
|
||||
"jest": "26.6.3",
|
||||
"rss": "1.2.2",
|
||||
"sass": "1.44.0",
|
||||
"sqlite3": "5.0.2",
|
||||
"typescript": "4.5.2"
|
||||
},
|
||||
"gitHead": "eb4b0e64eab40a51b0895d3a40a9d8c3cb7b1b14"
|
||||
}
|
||||
|
|
|
@ -8,10 +8,10 @@
|
|||
"author": "Dom Christie",
|
||||
"main": "lib/turndown-plugin-gfm.cjs.js",
|
||||
"devDependencies": {
|
||||
"browserify": "^14.5.0",
|
||||
"rollup": "^0.50.0",
|
||||
"standard": "^10.0.3",
|
||||
"turndown": "4.0.1",
|
||||
"browserify": "14.5.0",
|
||||
"rollup": "0.50.1",
|
||||
"standard": "10.0.3",
|
||||
"turndown": "4.0.2",
|
||||
"turndown-attendant": "0.0.3"
|
||||
},
|
||||
"files": [
|
||||
|
|
|
@ -11,17 +11,17 @@
|
|||
"jsdom": false
|
||||
},
|
||||
"dependencies": {
|
||||
"css": "^2.2.4",
|
||||
"html-entities": "^1.2.1",
|
||||
"jsdom": "^15.2.1"
|
||||
"css": "2.2.4",
|
||||
"html-entities": "1.4.0",
|
||||
"jsdom": "15.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"browserify": "^14.5.0",
|
||||
"rollup": "^0.50.0",
|
||||
"rollup-plugin-commonjs": "^8.2.6",
|
||||
"rollup-plugin-node-resolve": "^3.0.0",
|
||||
"rollup-plugin-replace": "^2.0.0",
|
||||
"standard": "^10.0.3",
|
||||
"browserify": "14.5.0",
|
||||
"rollup": "0.50.1",
|
||||
"rollup-plugin-commonjs": "8.4.1",
|
||||
"rollup-plugin-node-resolve": "3.4.0",
|
||||
"rollup-plugin-replace": "2.2.0",
|
||||
"standard": "10.0.3",
|
||||
"turndown-attendant": "0.0.3"
|
||||
},
|
||||
"files": [
|
||||
|
|
|
@ -1,5 +1,18 @@
|
|||
# Joplin Server Changelog
|
||||
|
||||
## [server-v2.9.6](https://github.com/laurent22/joplin/releases/tag/server-v2.9.6) - 2022-11-05T11:52:09Z
|
||||
|
||||
- Improved: Allow enabling and disabling tasks (1379c9c)
|
||||
- Improved: Allow searching user by email or name (1cfbefb)
|
||||
- Improved: Fail-safe when trying to delete a non-disabled account (21883b4)
|
||||
- Improved: Paginate users (8ac8d53)
|
||||
- Improved: Refactor table structure (8ea6d89)
|
||||
- Improved: Update sender email (bf92ee7)
|
||||
- Improved: Upgrade Koa framework to 2.13.4 (dc92546)
|
||||
- Improved: Upgrade to Node 18 (f34078b)
|
||||
- Improved: When re-activating an account, remove it from the deletion queue (bbc4228)
|
||||
- Fixed: Fixed account activation logic (ccf5d20)
|
||||
|
||||
## [server-v2.9.5](https://github.com/laurent22/joplin/releases/tag/server-v2.9.5) - 2022-10-11T10:44:01Z
|
||||
|
||||
- New: Add support for sidebar in user pages (053dbab)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
## How to add a new default plugin
|
||||
# How to add a new default plugin
|
||||
|
||||
To add a new default plugin for desktop:
|
||||
- Add the plugin ID and pinned version to `defaultPlugins` object located in [desktopDefaultPluginsInfo.ts](https://github.com/laurent22/joplin/blob/eb7083d7888433ff6ef76ccfb7fb87ba951d513f/packages/lib/services/plugins/defaultPlugins/desktopDefaultPluginsInfo.ts#L5)
|
||||
|
@ -19,6 +19,7 @@ To add a new default plugin for desktop:
|
|||
```
|
||||
|
||||
## Bundling of default plugins
|
||||
|
||||
Script for bundling default plugins is present in [bundleDefaultPlugins.ts](https://github.com/laurent22/joplin/blob/eb7083d7888433ff6ef76ccfb7fb87ba951d513f/packages/tools/bundleDefaultPlugins.ts)
|
||||
|
||||
Every time a new desktop release is being built, we compare the local default plugins version with pinned plugin version mentioned in [desktopDefaultPluginsInfo.ts](https://github.com/laurent22/joplin/blob/eb7083d7888433ff6ef76ccfb7fb87ba951d513f/packages/lib/services/plugins/defaultPlugins/desktopDefaultPluginsInfo.ts)
|
||||
|
@ -26,6 +27,7 @@ Every time a new desktop release is being built, we compare the local default pl
|
|||
If there is a newer version available, we will pull the `tgz` file of plugin from NPM registry and extract it. We will then move `manifest.json` and `plugin.jpl` to the build folder of desktop.
|
||||
|
||||
## Installing of default plugins
|
||||
|
||||
- All the functions related to default plugins are located in [defaultPluginsUtils.ts](https://github.com/laurent22/joplin/blob/eb7083d7888433ff6ef76ccfb7fb87ba951d513f/packages/lib/services/plugins/defaultPlugins/defaultPluginsUtils.ts)
|
||||
- On every startup, we check if there are new plugins available in build folder that have not been installed yet. After installing the new plugin, we update the `installedDefaultPlugins` array in `Setting.ts` with respective plugin ID for future reference.
|
||||
- After installing is complete, we apply the default settings for each default plugin. Default settings are located in [desktopDefaultPluginsInfo.ts](https://github.com/laurent22/joplin/blob/eb7083d7888433ff6ef76ccfb7fb87ba951d513f/packages/lib/services/plugins/defaultPlugins/desktopDefaultPluginsInfo.ts)
|
||||
|
|
|
@ -12,6 +12,17 @@
|
|||
],
|
||||
"ignoreDeps": [
|
||||
"react-native",
|
||||
"@types/react-native"
|
||||
"@types/react-native",
|
||||
"@babel/core",
|
||||
"babel-eslint",
|
||||
"babel-loader",
|
||||
"katex",
|
||||
"jsc-android",
|
||||
"metro-react-native-babel-preset",
|
||||
"webpack",
|
||||
"rollup",
|
||||
"typedoc",
|
||||
"actions/stale",
|
||||
"@svgr/webpack"
|
||||
]
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue