1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-12-26 23:38:08 +02:00

Compare commits

...

147 Commits

Author SHA1 Message Date
Laurent Cozic
70e5c9f1eb translate 2022-11-22 18:16:09 +00:00
Laurent Cozic
41f8109756 translate 2022-11-22 17:25:59 +00:00
Laurent Cozic
58acc0b122 translate 2022-11-22 16:37:05 +00:00
Laurent Cozic
5b2d61541f init 2022-11-22 16:20:06 +00:00
Laurent Cozic
5efa227e70 Tools: Fix iOS build 2022-11-21 14:46:07 +00:00
Laurent Cozic
276f066b7b Tools: Filter out certain Yarn warnings 2022-11-21 12:37:07 +00:00
Laurent Cozic
5b0a9b9b56 Tools: Filter out certain Yarn warnings 2022-11-21 12:34:40 +00:00
Laurent Cozic
11d31ad488 Tools: Disable test that randomly fails on CI 2022-11-21 11:41:17 +00:00
phlax
ceb6a0b003 Doc: Fix links in README (#7322) 2022-11-21 11:00:57 +00:00
renovate[bot]
5dcb896770 Update dependency eslint to v8.28.0 (#7320) 2022-11-20 10:11:34 +00:00
Laurent Cozic
9595e2a226 Renovate config 2022-11-20 10:11:20 +00:00
Laurent Cozic
dbd480913d Fix CI 2022-11-20 10:10:41 +00:00
Mr-Kanister
09ac21e99e All: Translation: Update de_DE.po (#7316) 2022-11-19 01:31:49 -05:00
renovate[bot]
457cb05162 Update dependency aws-sdk to v2.1258.0 (#7319)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-11-19 03:19:26 +00:00
renovate[bot]
d1e064532d Update aws-sdk-js-v3 monorepo to v3.213.0 (#7313)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-11-19 00:55:40 +00:00
renovate[bot]
3477ee68ac Update dependency eslint-plugin-react to v7.31.11 (#7317)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-11-18 21:28:37 +00:00
renovate[bot]
adc7d8e2f1 Update dependency aws-sdk to v2.1257.0 (#7309)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-11-18 00:33:43 +00:00
Laurent Cozic
cd7dd12d3c Renovate config 2022-11-17 18:18:43 +00:00
Laurent Cozic
c0541950a7 Fix TS errors 2022-11-17 16:34:16 +00:00
renovate[bot]
67f7e2e7ff Update dependency typescript to v4.9.3 (#7310) 2022-11-17 16:23:13 +00:00
Laurent Cozic
beec324677 Renovate ignore 2022-11-17 16:04:05 +00:00
Laurent Cozic
fda62a97b5 Fix build 2022-11-17 15:36:33 +00:00
renovate[bot]
ae49199f36 Update Yarn to v3.3.0 (#7308) 2022-11-17 15:20:14 +00:00
Laurent Cozic
5778d7a3b3 Chore: Finish uuid upgrade 2022-11-17 15:19:32 +00:00
renovate[bot]
7d749d6b1e Update dependency uuid to v9 (#7282) 2022-11-17 14:53:24 +00:00
Laurent Cozic
dc73899bde Tools: Fixed updateNews script 2022-11-17 14:06:47 +00:00
Laurent Cozic
a91b5f4bb6 Renovate: Automerge TypeScript and Yarn upgrades 2022-11-17 13:53:43 +00:00
renovate[bot]
55cb547664 Update dependency tap to v16 (#7273) 2022-11-17 13:34:59 +00:00
renovate[bot]
33bdaaf385 Update aws-sdk-js-v3 monorepo to v3.212.0 (#7300)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-11-17 13:33:28 +00:00
renovate[bot]
1d9b0233aa Update dependency @react-native-community/datetimepicker to v6.7.0 (#7302) 2022-11-17 13:32:53 +00:00
renovate[bot]
855d6f62a3 Update dependency @seiyab/eslint-plugin-react-hooks to v4.5.1-beta.0 (#7301) 2022-11-17 13:32:38 +00:00
Laurent Cozic
3ae1ebb2f4 Fix tests 2022-11-17 11:57:19 +00:00
Laurent Cozic
089b53e514 Upgrade yeoman to v5 2022-11-17 11:52:21 +00:00
Laurent Cozic
d93a210de6 Revert pdfjs-dist to v2 2022-11-17 11:25:11 +00:00
Laurent Cozic
4544144f66 Chore: Downgrade TinyMCE back to v5 2022-11-16 09:37:30 +00:00
Joplin Bot
e5d3792335 Doc: Auto-update documentation
Auto-updated using release-website.sh
2022-11-15 18:18:55 +00:00
Laurent Cozic
c53d4fd757 Update renovate.json5 2022-11-15 17:47:57 +00:00
Laurent Cozic
83110bce76 lock file 2022-11-15 16:00:36 +00:00
Laurent Cozic
0cfa07b1b0 Tools: Improve error message when website building fails 2022-11-15 16:00:06 +00:00
Joplin Bot
341c9029c4 Doc: Auto-update documentation
Auto-updated using release-website.sh
2022-11-15 12:21:07 +00:00
Laurent Cozic
060e78577d Chore: Complete pdf-js update 2022-11-15 11:39:51 +00:00
renovate[bot]
ceb1db5379 Update dependency pdfjs-dist to v3 (#7231) 2022-11-15 11:36:05 +00:00
Laurent Cozic
9921f4eb00 Doc: Add news item for Renovate 2022-11-15 11:29:00 +00:00
renovate[bot]
b1f840622d Update dependency typescript to v4.8.4 (#7280) 2022-11-15 10:56:35 +00:00
Laurent Cozic
64199704c2 Chore: Complete Jest upgrade 2022-11-15 10:23:50 +00:00
Laurent Cozic
33b96b4c65 Renovate ignore gradle 2022-11-15 09:22:07 +00:00
renovate[bot]
81299384af Update jest monorepo to v29 (#7287) 2022-11-15 09:21:45 +00:00
Laurent Cozic
1554e9dea5 Tools: Move Renovate config to JSON5 to allow comments 2022-11-15 09:11:25 +00:00
Laurent Cozic
5c430a3b0e Upgrade node-fetch to 2.6.7 2022-11-15 09:11:25 +00:00
Laurent Cozic
9c74d18abf Chore: Complete upgrade to React 18 2022-11-15 09:11:24 +00:00
Laurent Cozic
a40a5ef3bf Chore: Fixes 2022-11-15 09:11:23 +00:00
renovate[bot]
fce571f38c Update dependency terminal-kit to v3 (#7276) 2022-11-15 08:16:58 +00:00
renovate[bot]
f079fa3bdd Update dependency uri-template to v2 (#7281) 2022-11-15 08:16:38 +00:00
renovate[bot]
b44b733090 Update dependency yargs-parser to v21 (#7284) 2022-11-15 08:13:31 +00:00
renovate[bot]
d1089f9284 Update docker/login-action action to v2 (#7286) 2022-11-15 08:12:16 +00:00
renovate[bot]
d2457a0079 Update postgres Docker tag to v15 (#7288) 2022-11-15 08:10:13 +00:00
renovate[bot]
7e407af638 Update typescript-eslint monorepo to v5 (#7291) 2022-11-15 08:09:46 +00:00
Laurent Cozic
3cee7b0858 Renovate: Automerge AWS package updates 2022-11-15 08:06:56 +00:00
Laurent Cozic
ceb8e70dc7 Merge release-2.9 2022-11-15 07:36:37 +00:00
renovate[bot]
b83aadbb7b Update dependency react-select to v5.6.1 (#7299)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-11-15 02:16:26 +00:00
renovate[bot]
3a8e2632a7 Update dependency tcp-port-used to v1 (#7275) 2022-11-14 22:40:35 +00:00
renovate[bot]
cf78ec2e22 Update dependency yargs to v17 (#7283) 2022-11-14 22:39:46 +00:00
renovate[bot]
35903572e1 Update dependency @types/react-dom to v18.0.9 (#7296) 2022-11-14 22:38:44 +00:00
renovate[bot]
e4254d6195 Update dependency aws-sdk to v2.1254.0 (#7297) 2022-11-14 22:38:27 +00:00
renovate[bot]
de4f8c75e5 Update typescript-eslint monorepo to v5.43.0 (#7298) 2022-11-14 22:38:12 +00:00
renovate[bot]
1322e8cbcc Update react monorepo to v18 (#7289) 2022-11-14 22:37:49 +00:00
Laurent Cozic
7b94901129 Merge release-2.9 2022-11-14 17:33:21 +00:00
Kenichi Kobayashi
5d49fcfe4e Desktop: Fixes #6416: Switching a note using Sidebar is slow and grayed out (#6430) 2022-11-14 17:25:41 +00:00
Laurent Cozic
a2de167b95 All: Security: Fix XSS when a specially crafted string is passed to the renderer 2022-11-14 17:16:59 +00:00
Laurent Cozic
a7213453c7 Chore: Remove Redux withRef implementation to simplify code and fix issue 2022-11-14 16:48:41 +00:00
Self Not Found
673653a141 Desktop: Fixes #7036: Fix pasting plain text (#7045) 2022-11-14 12:29:07 +00:00
Self Not Found
7d135730bf Mobile: Fixes #7195: Fix attaching multiple files (#7196) 2022-11-14 12:28:32 +00:00
mrkaato0
456a20b8f8 Update fi_FI.po (#7251) 2022-11-14 12:27:28 +00:00
renovate[bot]
48074c254d Update dependency strip-ansi to v6.0.1 (#7290)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-11-14 05:40:32 +00:00
renovate[bot]
50f587cf02 Update dependency css-loader to v6.7.2 (#7292)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-11-14 02:37:37 +00:00
Henry Heino
79a627c14f Mobile: Fixes #7253: Update CodeMirror (#7262) 2022-11-13 22:49:20 +00:00
Laurent Cozic
a873898422 Fix TS 2022-11-13 14:25:06 +00:00
renovate[bot]
859b950106 Update dependency tinymce to v6 (#7277) 2022-11-13 12:33:12 +00:00
renovate[bot]
7f13042c44 Update dependency turndown to v7 (#7278) 2022-11-13 12:32:56 +00:00
renovate[bot]
7e6a43de91 Update dependency tar to v6 (#7274) 2022-11-13 12:32:22 +00:00
Laurent Cozic
a3c88b6ec7 Fixed string-ansi 2022-11-13 12:30:47 +00:00
Laurent Cozic
71efa09737 Fixed newly upgraded packages 2022-11-13 12:14:30 +00:00
renovate[bot]
c19f7f814f Update dependency react-redux to v8 (#7252) 2022-11-13 11:39:02 +00:00
Laurent Cozic
97e88d7983 Fixed CI 2022-11-13 11:37:05 +00:00
Laurent Cozic
cc5ead7474 Fixed husky config 2022-11-13 11:07:51 +00:00
Laurent Cozic
b823c729e7 fix ios build 2022-11-13 11:06:55 +00:00
Laurent Cozic
4eac85bec6 renovate ignore 2022-11-13 10:59:03 +00:00
Tom
7bfb6c0ee9 Update changelog_android.md (#7271) 2022-11-13 10:49:30 +00:00
renovate[bot]
b879538da9 Update dependency md5-file to v5 (#7215) 2022-11-13 10:44:53 +00:00
renovate[bot]
502b26e0b4 Update dependency pretty-bytes to v6 (#7239) 2022-11-13 10:43:35 +00:00
renovate[bot]
8d58ad7d86 Update dependency proper-lockfile to v4 (#7241) 2022-11-13 10:41:56 +00:00
renovate[bot]
c490aa8d90 Update dependency string-natural-compare to v3 (#7267) 2022-11-13 10:39:51 +00:00
renovate[bot]
9c95bc987e Update dependency strip-ansi to v7 (#7269) 2022-11-13 10:38:58 +00:00
renovate[bot]
5e649bdc01 Update dependency string-to-stream to v3 (#7268) 2022-11-13 10:38:24 +00:00
renovate[bot]
f653824874 Update dependency node-persist to v3 (#7225) 2022-11-13 10:01:49 +00:00
renovate[bot]
ca5ec025c9 Update dependency react-select to v5 (#7254) 2022-11-13 10:01:15 +00:00
renovate[bot]
db8a231aa3 Update dependency react-tooltip to v4 (#7255) 2022-11-13 10:00:12 +00:00
renovate[bot]
6f68c91c75 Update dependency smalltalk to v4 (#7261) 2022-11-13 09:59:50 +00:00
renovate[bot]
a038704b2a Update dependency source-map-loader to v4 (#7264) 2022-11-13 09:58:58 +00:00
renovate[bot]
ab730e84e0 Update dependency standard to v17 (#7266) 2022-11-13 09:58:36 +00:00
renovate[bot]
9e78e48370 Update dependency redux to v4.2.0 (#7257) 2022-11-13 08:42:56 +00:00
renovate[bot]
c09567ef16 Update dependency react-native-document-picker to v8 (#7245) 2022-11-13 08:40:11 +00:00
renovate[bot]
cf4f059a20 Update dependency query-string to v7 (#7242) 2022-11-13 08:39:35 +00:00
renovate[bot]
5325e85b9d Update dependency sqlite3 to v5.1.2 (#7265) 2022-11-13 08:38:59 +00:00
renovate[bot]
1510b8fa0e Update dependency react-native-image-picker to v4.10.1 (#7221)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-11-13 04:56:25 +00:00
renovate[bot]
c135361f70 Update dependency ruby to v2.7.6 (#7205)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-11-13 02:14:53 +00:00
renovate[bot]
e7be0f5d00 Update dependency react-datetime to v3 (#7243) 2022-11-12 23:42:23 +00:00
renovate[bot]
de9ce973b4 Update dependency react-native-camera to v4 (#7244) 2022-11-12 23:41:58 +00:00
renovate[bot]
4d7ffdd8e0 Update dependency react-native-dropdownalert to v4 (#7246) 2022-11-12 23:40:44 +00:00
renovate[bot]
6af18a0cfc Update dependency react-native-modal-datetime-picker to v14 (#7247) 2022-11-12 23:40:09 +00:00
renovate[bot]
d53c3f9f2d Update dependency react-native-share to v8 (#7248) 2022-11-12 23:39:16 +00:00
renovate[bot]
790a756f74 Update dependency react-native-sqlite-storage to v6 (#7249) 2022-11-12 23:38:46 +00:00
renovate[bot]
c00b71b5b1 Update dependency promise to v8 (#7240) 2022-11-12 23:38:17 +00:00
renovate[bot]
a1051145bc Update dependency react-native-vector-icons to v9 (#7250) 2022-11-12 23:35:28 +00:00
renovate[bot]
a0c87d6d4b Update dependency joplin-rn-alarm-notification to v1.0.6 (#7229)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-11-12 21:08:52 +00:00
renovate[bot]
42cbd4fac8 Update dependency knex to v2 (#7208) 2022-11-12 15:59:02 +00:00
renovate[bot]
3a19fe6879 Update dependency prettier to v2 (#7238) 2022-11-12 13:50:56 +00:00
Laurent Cozic
290388b679 renovate iugnore 2022-11-12 13:50:18 +00:00
renovate[bot]
20518112e3 Update dependency open to v8 (#7227) 2022-11-12 13:11:45 +00:00
renovate[bot]
c31fce4e33 Update dependency normalize to v8 (#7226) 2022-11-12 13:10:36 +00:00
renovate[bot]
3ce548b005 Update dependency node-notifier to v10 (#7224) 2022-11-12 12:36:27 +00:00
Sammy Hori
c0903ad61b Minor grammatical correction in README.md (#7235) 2022-11-12 12:36:08 +00:00
renovate[bot]
01062d4577 Update dependency mustache to v4 (#7217) 2022-11-12 12:28:12 +00:00
renovate[bot]
d0498b6274 Update dependency highlight.js to v11.6.0 (#7181) 2022-11-12 12:21:19 +00:00
renovate[bot]
26e5bd5550 Update dependency glob to v8 (#7179) 2022-11-12 12:20:53 +00:00
renovate[bot]
7ccf38fdd6 Update dependency http-server to v14 (#7185) 2022-11-12 12:20:32 +00:00
renovate[bot]
38a24c4bd9 Update aws-sdk-js-v3 monorepo to v3.209.0 (#7222) 2022-11-12 12:20:05 +00:00
renovate[bot]
a05dbcd17b Update dependency @react-native-community/datetimepicker to v6.6.0 (#7223) 2022-11-12 12:19:38 +00:00
renovate[bot]
9ced656ede Update dependency madge to v5 (#7211) 2022-11-12 12:19:09 +00:00
Laurent Cozic
ac5854bf94 renovate ignore 2022-11-12 10:27:15 +00:00
Laurent Cozic
3823362eed renovate ignore 2022-11-12 10:27:15 +00:00
renovate[bot]
6ce0b46748 Update dependency node-gyp to v9 (#7220) 2022-11-12 10:25:07 +00:00
renovate[bot]
e0bfa87522 Update dependency markdown-it-emoji to v2 (#7214) 2022-11-12 10:24:21 +00:00
renovate[bot]
f9460d4a14 Update dependency markdown-it to v13 (#7212) 2022-11-12 10:23:00 +00:00
renovate[bot]
2100940019 Update dependency lint-staged to v13 (#7210) 2022-11-12 10:22:42 +00:00
renovate[bot]
af100c1c4b Update dependency aws-sdk to v2.1253.0 (#7206) 2022-11-12 10:21:39 +00:00
renovate[bot]
2e52bb4c12 Update dependency node-mocks-http to v1.12.1 (#7207) 2022-11-11 16:07:02 +00:00
renovate[bot]
1b41a22487 Update dependency fs-extra to v10.1.0 (#7177) 2022-11-11 16:05:54 +00:00
renovate[bot]
c88b031b0a Update dependency eslint-config-prettier to v8 (#7169) 2022-11-11 15:05:37 +00:00
renovate[bot]
94b83ac28b Update aws-sdk-js-v3 monorepo to v3.208.0 (#7202) 2022-11-11 14:31:38 +00:00
renovate[bot]
67596d60e9 Update dependency jetifier to v2 (#7192) 2022-11-11 14:27:55 +00:00
renovate[bot]
9d10c64ec6 Update dependency html-minifier to v4 (#7183) 2022-11-11 14:24:51 +00:00
renovate[bot]
94e7ed9a5f Update dependency gettext-parser to v6 (#7178) 2022-11-11 14:20:16 +00:00
renovate[bot]
30513e7b59 Update dependency formidable to v2 (#7176) 2022-11-11 14:19:47 +00:00
renovate[bot]
b9c3442e9f Update dependency form-data to v4 (#7175) 2022-11-11 14:19:34 +00:00
renovate[bot]
9282dfed5a Update dependency domutils to v3 (#7163) 2022-11-11 14:17:21 +00:00
Laurent Cozic
3b53a33cd5 Tools: Build Android debug app on CI (#7204) 2022-11-11 14:09:55 +00:00
193 changed files with 7286 additions and 8869 deletions

View File

@@ -96,6 +96,9 @@ packages/app-cli/app/command-sync.js.map
packages/app-cli/app/command-testing.d.ts
packages/app-cli/app/command-testing.js
packages/app-cli/app/command-testing.js.map
packages/app-cli/app/gui/StatusBarWidget.d.ts
packages/app-cli/app/gui/StatusBarWidget.js
packages/app-cli/app/gui/StatusBarWidget.js.map
packages/app-cli/app/services/plugins/PluginRunner.d.ts
packages/app-cli/app/services/plugins/PluginRunner.js
packages/app-cli/app/services/plugins/PluginRunner.js.map
@@ -534,9 +537,6 @@ packages/app-desktop/gui/NoteEditor/utils/clipboardUtils.test.js.map
packages/app-desktop/gui/NoteEditor/utils/contextMenu.d.ts
packages/app-desktop/gui/NoteEditor/utils/contextMenu.js
packages/app-desktop/gui/NoteEditor/utils/contextMenu.js.map
packages/app-desktop/gui/NoteEditor/utils/contextMenu.test.d.ts
packages/app-desktop/gui/NoteEditor/utils/contextMenu.test.js
packages/app-desktop/gui/NoteEditor/utils/contextMenu.test.js.map
packages/app-desktop/gui/NoteEditor/utils/contextMenuUtils.d.ts
packages/app-desktop/gui/NoteEditor/utils/contextMenuUtils.js
packages/app-desktop/gui/NoteEditor/utils/contextMenuUtils.js.map
@@ -552,6 +552,9 @@ packages/app-desktop/gui/NoteEditor/utils/types.js.map
packages/app-desktop/gui/NoteEditor/utils/useDropHandler.d.ts
packages/app-desktop/gui/NoteEditor/utils/useDropHandler.js
packages/app-desktop/gui/NoteEditor/utils/useDropHandler.js.map
packages/app-desktop/gui/NoteEditor/utils/useEffectiveNoteId.d.ts
packages/app-desktop/gui/NoteEditor/utils/useEffectiveNoteId.js
packages/app-desktop/gui/NoteEditor/utils/useEffectiveNoteId.js.map
packages/app-desktop/gui/NoteEditor/utils/useFolder.d.ts
packages/app-desktop/gui/NoteEditor/utils/useFolder.js
packages/app-desktop/gui/NoteEditor/utils/useFolder.js.map
@@ -618,6 +621,9 @@ packages/app-desktop/gui/PasswordInput/PasswordInput.js.map
packages/app-desktop/gui/PdfViewer.d.ts
packages/app-desktop/gui/PdfViewer.js
packages/app-desktop/gui/PdfViewer.js.map
packages/app-desktop/gui/PromptDialog.d.ts
packages/app-desktop/gui/PromptDialog.js
packages/app-desktop/gui/PromptDialog.js.map
packages/app-desktop/gui/ResizableLayout/MoveButtons.d.ts
packages/app-desktop/gui/ResizableLayout/MoveButtons.js
packages/app-desktop/gui/ResizableLayout/MoveButtons.js.map
@@ -780,9 +786,6 @@ packages/app-desktop/gui/utils/convertToScreenCoordinates.js.map
packages/app-desktop/gui/utils/loadScript.d.ts
packages/app-desktop/gui/utils/loadScript.js
packages/app-desktop/gui/utils/loadScript.js.map
packages/app-desktop/loadResources.testEnv.d.ts
packages/app-desktop/loadResources.testEnv.js
packages/app-desktop/loadResources.testEnv.js.map
packages/app-desktop/plugins/GotoAnything.d.ts
packages/app-desktop/plugins/GotoAnything.js
packages/app-desktop/plugins/GotoAnything.js.map
@@ -2304,15 +2307,27 @@ packages/tools/update-readme-sponsors.js.map
packages/tools/updateMarkdownDoc.d.ts
packages/tools/updateMarkdownDoc.js
packages/tools/updateMarkdownDoc.js.map
packages/tools/utils/translation.d.ts
packages/tools/utils/translation.js
packages/tools/utils/translation.js.map
packages/tools/website/build.d.ts
packages/tools/website/build.js
packages/tools/website/build.js.map
packages/tools/website/buildTranslations.d.ts
packages/tools/website/buildTranslations.js
packages/tools/website/buildTranslations.js.map
packages/tools/website/updateDownloadPage.d.ts
packages/tools/website/updateDownloadPage.js
packages/tools/website/updateDownloadPage.js.map
packages/tools/website/updateNews.d.ts
packages/tools/website/updateNews.js
packages/tools/website/updateNews.js.map
packages/tools/website/utils/applyTranslations.d.ts
packages/tools/website/utils/applyTranslations.js
packages/tools/website/utils/applyTranslations.js.map
packages/tools/website/utils/applyTranslations.test.d.ts
packages/tools/website/utils/applyTranslations.test.js
packages/tools/website/utils/applyTranslations.test.js.map
packages/tools/website/utils/frontMatter.d.ts
packages/tools/website/utils/frontMatter.js
packages/tools/website/utils/frontMatter.js.map
@@ -2331,6 +2346,9 @@ packages/tools/website/utils/parser.js.map
packages/tools/website/utils/pressCarousel.d.ts
packages/tools/website/utils/pressCarousel.js
packages/tools/website/utils/pressCarousel.js.map
packages/tools/website/utils/processTranslations.d.ts
packages/tools/website/utils/processTranslations.js
packages/tools/website/utils/processTranslations.js.map
packages/tools/website/utils/render.d.ts
packages/tools/website/utils/render.js
packages/tools/website/utils/render.js.map

44
.github/workflows/build-android.yml vendored Normal file
View File

@@ -0,0 +1,44 @@
# The goal of this action is to compile the Android debug build. That should
# tell us automatically if something got broken when a dependency was changed.
name: react-native-android-build-apk
on: [push, pull_request]
jobs:
pre_job:
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@v5
with:
concurrent_skipping: 'same_content_newer'
BuildAndroidDebug:
needs: pre_job
if: needs.pre_job.outputs.should_skip != 'true'
runs-on: ubuntu-latest
steps:
- name: Install Linux dependencies
run: |
sudo apt-get update || true
sudo apt-get install -y libsecret-1-dev
- uses: actions/setup-node@v2
with:
node-version: '18'
- name: Install Yarn
run: |
corepack enable
- uses: actions/checkout@v2
- name: Install
run: yarn install
- name: Build Android Release
run: |
cd packages/app-mobile/android && ./gradlew assembleDebug

View File

@@ -2,9 +2,7 @@ name: Joplin Continuous Integration
on: [push, pull_request]
jobs:
pre_job:
# continue-on-error: true # Uncomment once integration is finished
runs-on: ubuntu-latest
# Map a step output to a job output
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
@@ -51,13 +49,6 @@ jobs:
sudo apt-get install -y libsecret-1-dev
sudo apt-get install -y translate-toolkit
# - name: Install macOS dependencies
# if: runner.os == 'macOS'
# run: |
# brew update
# brew install gettext
# brew install translate-toolkit
- name: Install Docker Engine
# if: runner.os == 'Linux' && startsWith(github.ref, 'refs/tags/server-v')
if: runner.os == 'Linux'
@@ -88,7 +79,7 @@ jobs:
# Login to Docker only if we're on a server release tag. If we run this on
# a pull request it will fail because the PR doesn't have access to
# secrets
- uses: docker/login-action@v1
- uses: docker/login-action@v2
if: runner.os == 'Linux' && startsWith(github.ref, 'refs/tags/server-v')
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}

30
.gitignore vendored
View File

@@ -84,6 +84,9 @@ packages/app-cli/app/command-sync.js.map
packages/app-cli/app/command-testing.d.ts
packages/app-cli/app/command-testing.js
packages/app-cli/app/command-testing.js.map
packages/app-cli/app/gui/StatusBarWidget.d.ts
packages/app-cli/app/gui/StatusBarWidget.js
packages/app-cli/app/gui/StatusBarWidget.js.map
packages/app-cli/app/services/plugins/PluginRunner.d.ts
packages/app-cli/app/services/plugins/PluginRunner.js
packages/app-cli/app/services/plugins/PluginRunner.js.map
@@ -522,9 +525,6 @@ packages/app-desktop/gui/NoteEditor/utils/clipboardUtils.test.js.map
packages/app-desktop/gui/NoteEditor/utils/contextMenu.d.ts
packages/app-desktop/gui/NoteEditor/utils/contextMenu.js
packages/app-desktop/gui/NoteEditor/utils/contextMenu.js.map
packages/app-desktop/gui/NoteEditor/utils/contextMenu.test.d.ts
packages/app-desktop/gui/NoteEditor/utils/contextMenu.test.js
packages/app-desktop/gui/NoteEditor/utils/contextMenu.test.js.map
packages/app-desktop/gui/NoteEditor/utils/contextMenuUtils.d.ts
packages/app-desktop/gui/NoteEditor/utils/contextMenuUtils.js
packages/app-desktop/gui/NoteEditor/utils/contextMenuUtils.js.map
@@ -540,6 +540,9 @@ packages/app-desktop/gui/NoteEditor/utils/types.js.map
packages/app-desktop/gui/NoteEditor/utils/useDropHandler.d.ts
packages/app-desktop/gui/NoteEditor/utils/useDropHandler.js
packages/app-desktop/gui/NoteEditor/utils/useDropHandler.js.map
packages/app-desktop/gui/NoteEditor/utils/useEffectiveNoteId.d.ts
packages/app-desktop/gui/NoteEditor/utils/useEffectiveNoteId.js
packages/app-desktop/gui/NoteEditor/utils/useEffectiveNoteId.js.map
packages/app-desktop/gui/NoteEditor/utils/useFolder.d.ts
packages/app-desktop/gui/NoteEditor/utils/useFolder.js
packages/app-desktop/gui/NoteEditor/utils/useFolder.js.map
@@ -606,6 +609,9 @@ packages/app-desktop/gui/PasswordInput/PasswordInput.js.map
packages/app-desktop/gui/PdfViewer.d.ts
packages/app-desktop/gui/PdfViewer.js
packages/app-desktop/gui/PdfViewer.js.map
packages/app-desktop/gui/PromptDialog.d.ts
packages/app-desktop/gui/PromptDialog.js
packages/app-desktop/gui/PromptDialog.js.map
packages/app-desktop/gui/ResizableLayout/MoveButtons.d.ts
packages/app-desktop/gui/ResizableLayout/MoveButtons.js
packages/app-desktop/gui/ResizableLayout/MoveButtons.js.map
@@ -768,9 +774,6 @@ packages/app-desktop/gui/utils/convertToScreenCoordinates.js.map
packages/app-desktop/gui/utils/loadScript.d.ts
packages/app-desktop/gui/utils/loadScript.js
packages/app-desktop/gui/utils/loadScript.js.map
packages/app-desktop/loadResources.testEnv.d.ts
packages/app-desktop/loadResources.testEnv.js
packages/app-desktop/loadResources.testEnv.js.map
packages/app-desktop/plugins/GotoAnything.d.ts
packages/app-desktop/plugins/GotoAnything.js
packages/app-desktop/plugins/GotoAnything.js.map
@@ -2292,15 +2295,27 @@ packages/tools/update-readme-sponsors.js.map
packages/tools/updateMarkdownDoc.d.ts
packages/tools/updateMarkdownDoc.js
packages/tools/updateMarkdownDoc.js.map
packages/tools/utils/translation.d.ts
packages/tools/utils/translation.js
packages/tools/utils/translation.js.map
packages/tools/website/build.d.ts
packages/tools/website/build.js
packages/tools/website/build.js.map
packages/tools/website/buildTranslations.d.ts
packages/tools/website/buildTranslations.js
packages/tools/website/buildTranslations.js.map
packages/tools/website/updateDownloadPage.d.ts
packages/tools/website/updateDownloadPage.js
packages/tools/website/updateDownloadPage.js.map
packages/tools/website/updateNews.d.ts
packages/tools/website/updateNews.js
packages/tools/website/updateNews.js.map
packages/tools/website/utils/applyTranslations.d.ts
packages/tools/website/utils/applyTranslations.js
packages/tools/website/utils/applyTranslations.js.map
packages/tools/website/utils/applyTranslations.test.d.ts
packages/tools/website/utils/applyTranslations.test.js
packages/tools/website/utils/applyTranslations.test.js.map
packages/tools/website/utils/frontMatter.d.ts
packages/tools/website/utils/frontMatter.js
packages/tools/website/utils/frontMatter.js.map
@@ -2319,6 +2334,9 @@ packages/tools/website/utils/parser.js.map
packages/tools/website/utils/pressCarousel.d.ts
packages/tools/website/utils/pressCarousel.js
packages/tools/website/utils/pressCarousel.js.map
packages/tools/website/utils/processTranslations.d.ts
packages/tools/website/utils/processTranslations.js
packages/tools/website/utils/processTranslations.js.map
packages/tools/website/utils/render.d.ts
packages/tools/website/utils/render.js
packages/tools/website/utils/render.js.map

File diff suppressed because one or more lines are too long

807
.yarn/releases/yarn-3.3.0.cjs vendored Executable file

File diff suppressed because one or more lines are too long

View File

@@ -6,4 +6,21 @@ plugins:
- path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs
spec: "@yarnpkg/plugin-workspace-tools"
yarnPath: .yarn/releases/yarn-3.1.1.cjs
yarnPath: .yarn/releases/yarn-3.3.0.cjs
logFilters:
# Disable useless non-actionable warnings.
# https://github.com/yarnpkg/yarn/issues/4064
# eg "@joplin/app-desktop@workspace:packages/app-desktop provides react (p87edd) with version 18.2.0, which doesn't satisfy what @testing-library/react-hooks and some of its descendants request"
- code: YN0060
level: discard
# eg "@joplin/app-desktop@workspace:packages/app-desktop doesn't provide react-is (p570cf), requested by styled-components"
- code: YN0002
level: discard
# eg "string.prototype.matchall@npm:4.0.8 can't be found in the cache and will be fetched from the remote registry"
- code: YN0013
level: discard

2
Assets/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
*~
WebsiteAssets/locales/*.mo

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

View File

@@ -399,12 +399,12 @@ div.navbar-mobile-content a.sponsor-button {
margin: auto;
}
#top-section-img {
.top-section-img {
margin-bottom: -280px;
margin-top: 40px;
}
#top-section-img img {
.top-section-img img {
width: 100%;
}
@@ -910,7 +910,7 @@ footer .bottom-links-row p {
padding-top: 80px;
}
#top-section-img {
.top-section-img {
margin-bottom: -90px;
margin-top: 50px;
}
@@ -1154,7 +1154,7 @@ footer .bottom-links-row p {
background-position: bottom;
padding-bottom: 160px;
}
#top-section-img {
.top-section-img {
margin-bottom: -240px;
margin-top: 130px;
}
@@ -1182,3 +1182,25 @@ footer .bottom-links-row p {
margin-top: -15p;
}
}
/*****************************************************************
ENGLISH VERSION
*****************************************************************/
:lang(en-gb) #made-in-france-section {
display: none;
}
:lang(en-gb) .top-section-img-cn {
display: none;
}
/*****************************************************************
CHINESE VERSION
*****************************************************************/
:lang(zh-cn) #in-the-press-section,
:lang(zh-cn) #sponsors-section,
:lang(zh-cn) .top-section-img-en {
display: none;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@@ -0,0 +1,28 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: fr_FR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.0.1\n"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:63
msgid "Download the app"
msgstr "Télécharger l'application"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:54
msgid "Free your <span class=\"frame-bg frame-bg-blue\">notes</span>"
msgstr "Libérez vos <span class=\"frame-bg frame-bg-blue\">notes</span>"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:57
msgid "Joplin is an open source note-taking app. Capture your thoughts and securely access them from any device."
msgstr "Joplin est une application libre de prise de notes. Capturez vos pensées et accédez-y de façon sécurisé depuis n'importe quel appareil."
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:65
msgid "Sign up with Joplin Cloud"
msgstr "S'inscrire sur Joplin Cloud"

View File

@@ -0,0 +1,160 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.0.1\n"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:192
msgid "<span class=\"frame-bg frame-bg-yellow-lg\">Customise</span> it"
msgstr "<span class=\"frame-bg frame-bg-yellow-lg\">定制</span>它 根据您的需要"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:91
msgid "<span class=\"frame-bg frame-bg-yellow\">Multimedia</span> notes"
msgstr "<span class=\"frame-bg frame-bg-yellow\">多媒体</span>说明"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:243
msgid "100% <span class=\"frame-bg frame-bg-yellow-lg\">your data</span>"
msgstr "百分之百<span class=\"frame-bg frame-bg-yellow-lg\">你的数据</span>"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:271
msgid "A <span class=\"frame-bg frame-bg-yellow-lg\">French</span> Alternative"
msgstr "一个<span class=\"frame-bg frame-bg-yellow-lg\">法国</span>的替代方案"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:223
msgid ""
"Access your notes from your computer, phone or tablet by synchronising with "
"various services, including Joplin Cloud, Dropbox and OneDrive. The app is "
"available on Windows, macOS, Linux, Android and iOS. A terminal app is also "
"available!"
msgstr ""
"通过与各种服务同步,包括Joplin Cloud、Dropbox和OneDrive,从你的电脑、手机或平"
"板电脑访问你的笔记。该应用程序可在Windows、macOS、Linux、Android和iOS上使用。"
"终端应用也可使用!"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:195
msgid ""
"Customise the app with plugins, custom themes and multiple text editors "
"(Rich Text or Markdown). Or create your own scripts and plugins using the "
"Extension API."
msgstr ""
"用插件、自定义主题和多个文本编辑器(富文本或马克顿)来定制该应用程序。或者使"
"用扩展API创建你自己的脚本和插件。"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:229
msgid "Download it now"
msgstr "下载该应用程序"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:63
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:99
msgid "Download the app"
msgstr "下载该应用程序"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:200
msgid "Find out more"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:54
msgid "Free your <span class=\"frame-bg frame-bg-blue\">notes</span>"
msgstr "释放你的<span class=\"frame-bg frame-bg-blue\">笔记</span>"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:162
msgid "Get the clipper"
msgstr "获取剪子"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:94
msgid ""
"Images, videos, PDFs and audio files are supported. Create math expressions "
"and diagrams directly from the app. Take photos with the mobile app and save "
"them to a note."
msgstr ""
"Joplin,由于其起源和设计,适应并尊重中国的标准和规则。这保证了您的使用不受限"
"制,以及您的使用数据的完全透明和安全。"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:288
msgid "In the <span class=\"frame-bg frame-bg-yellow\">Press</span>"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:57
msgid ""
"Joplin is an open source note-taking app. Capture your thoughts and securely "
"access them from any device."
msgstr ""
"Joplin是一个开源的记事本应用程序。捕捉你的想法并从任何设备上安全地访问它们。"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:274
msgid ""
"Joplin, due to its origin and design, adapts and respects Chinese standards "
"and rules. This guarantees your unrestricted use and complete transparency "
"and security of your usage data."
msgstr ""
"Joplin,由于其起源和设计,适应并尊重中国的标准和规则。这保证了您的使用不受限"
"制,以及您的使用数据的完全透明和安全。"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:249
msgid "More about E2EE"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:352
msgid "Our <span class=\"frame-bg frame-bg-blue-lg\">sponsors</span>"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:154
msgid ""
"Save <span class=\"frame-bg frame-bg-blue\">web pages</span> <br>as notes"
msgstr "保存<span class=\"frame-bg frame-bg-blue\">网页</span> <br>作为笔记"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:65
msgid "Sign up with Joplin Cloud"
msgstr "与乔布林云签约"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:355
msgid "Thank you for your support!"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:244
msgid ""
"The app is open source and your notes are saved to an open format, so you'll "
"always have access to them. Uses End-To-End Encryption (E2EE) to secure your "
"notes and ensure no-one but yourself can access them."
msgstr ""
"该应用程序是开源的,你的笔记被保存为开放的格式,所以你将永远可以访问它们。使"
"用端对端加密(E2EE)来保护你的笔记,确保除了你自己之外没有人可以访问它们。"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:131
msgid "Try it now"
msgstr "现在就试试吧"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:157
msgid ""
"Use the web clipper extension, available on Chrome and Firefox, to save web "
"pages or take screenshots as notes."
msgstr "使用Chrome和Firefox上的web clipper扩展,可以保存网页或截图作为笔记。"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:125
msgid ""
"With Joplin Cloud, share your notes with your friends, family or colleagues "
"and collaborate on them."
msgstr "通过乔普林云,与你的朋友、家人或同事分享你的笔记,并进行合作。"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:124
msgid "Work <span class=\"frame-bg frame-bg-yellow\">together</span>"
msgstr "<span class=\"frame-bg frame-bg-yellow\">一起</span>工作"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:128
msgid ""
"You can also publish a note to the internet and share the URL with others."
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:220
msgid ""
"Your notes, <span class=\"frame-bg frame-bg-blue-lg\">everywhere</span> you "
"are"
msgstr ""
"你的笔记<span class=\"frame-bg frame-bg-blue-lg\">你在哪里都可以</span>"

View File

@@ -1,4 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Joplin]]></title><description><![CDATA[Joplin, the open source note-taking application]]></description><link>https://joplinapp.org</link><generator>RSS for Node</generator><lastBuildDate>Wed, 12 Oct 2022 00:00:00 GMT</lastBuildDate><atom:link href="https://joplinapp.org/rss.xml" rel="self" type="application/rss+xml"/><pubDate>Wed, 12 Oct 2022 00:00:00 GMT</pubDate><item><title><![CDATA[Joplin Cloud is now part of the Joplin company]]></title><description><![CDATA[<p>As some of you may know Joplin Cloud so far has been operating under my own single-person limited company in the UK. This was mostly for convenience since it meant I could get things going quickly without having to setup a special structure for it.</p>
<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Joplin]]></title><description><![CDATA[Joplin, the open source note-taking application]]></description><link>https://joplinapp.org</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Nov 2022 00:00:00 GMT</lastBuildDate><atom:link href="https://joplinapp.org/rss.xml" rel="self" type="application/rss+xml"/><pubDate>Tue, 15 Nov 2022 00:00:00 GMT</pubDate><item><title><![CDATA[Modernising and securing Joplin, one package at a time]]></title><description><![CDATA[<p>If you watch the <a href="https://github.com/laurent22/joplin">Joplin source code repository</a>, you may have noticed a lot of Renovate pull requests lately. This <a href="https://www.mend.io/free-developer-tools/renovate/">Renovate tool</a> is a way to manage dependencies - it automatically finds what needs to be updated, then upgrade it to the latest version, and create a pull request. If all tests pass, we can then merge this pull request. So far we have merged 267 of these pull requests.</p>
<p>Updating Joplin packages was long due. It is necessary so that we don't fall behind and end up using unsupported or deprecated packages. We also benefit from bug fixes and performance improvements. It is also important in terms of security, since recent package versions usually include various security fixes.</p>
<p>We used to rely on a tool called &quot;npm audit&quot; to do this, however it no longer works on the Joplin codebase, and it was always risky to use it since it would update multiple packages in one command - so if something went wrong it was difficult to find the culprit.</p>
<p>Renovate on the other hand upgrades packages one at a time, and run our test units to ensure everything is still working as expected. It also upgrades multiple instances of the same package across the monorepo, which is convenient to keep our code consistent. It also has a number of options to make our life easier, such as the ability to automatically merge a pull request for patch releases since this is usually safe (when a package is, for example upgraded from 1.0.1 to 1.0.3).</p>
<p>Although Renovate automates the package upgrades it doesn't mean all upgrades are straightforward - our tests won't catch all issues, so the apps might end up being broken or cannot be compiled anymore. So there's manual work involved to get everything working after certain upgrades - for the most part this has been done and the apps appear to be stable so far.</p>
<p>This will however be an important part of pre-release 2.10 (or should it be 3.0?) - we hope that everything works but we may need your support to try this version and report any glitch you may have found. As always pre-release regressions have the highest priority so we aim to fix them as quickly as possible.</p>
]]></description><link>https://joplinapp.org/news/20221115-renovate/</link><guid isPermaLink="false">20221115-renovate</guid><pubDate>Tue, 15 Nov 2022 00:00:00 GMT</pubDate><twitter-text>Modernising and securing Joplin, one package at a time</twitter-text></item><item><title><![CDATA[Joplin Cloud is now part of the Joplin company]]></title><description><![CDATA[<p>As some of you may know Joplin Cloud so far has been operating under my own single-person limited company in the UK. This was mostly for convenience since it meant I could get things going quickly without having to setup a special structure for it.</p>
<p>Now that Joplin Cloud is becoming more mature however a proper company, simply called Joplin, has been created. This company will be based in France, and will be used mainly to handle the commercial part of the project, which currently is mostly Joplin Cloud. I'm still heading the company so there won't be any major change to the way the project is managed.</p>
<h2>What does it mean for Joplin Cloud?<a name="what-does-it-mean-for-joplin-cloud" href="#what-does-it-mean-for-joplin-cloud" class="heading-anchor">🔗</a></h2>
<p>There will be no significant change - the website ownership simply moves from one company in the UK to one in France. The new company is still owned by myself so I will keep following the same roadmap.</p>
@@ -249,23 +255,4 @@
<p>As promised if you have a beta account you can keep using it and it will remain free for the three months after the account was created. After that, you will receive a link to start the Stripe subscription if you wish to keep using the account.</p>
<p>If you have sent me an email before the end of the beta and I didn't reply yet, I will do so soon, and will send you the confirmation email.</p>
<p>Thanks everyone for participating!</p>
]]></description><link>https://joplinapp.org/news/20210718-103538/</link><guid isPermaLink="false">20210718-103538</guid><pubDate>Sun, 18 Jul 2021 10:35:38 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[New website is ready!]]></title><description><![CDATA[<p>The new website is finally ready at <a href="https://joplinapp.org">https://joplinapp.org</a></p>
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210711-095626_0.png" alt=""></p>
<p>The previous website had been built organically over the past few years. It had a lot of useful content but finding your way was tricky and, for new users, it wasn't clear what Joplin was about. Finding out how to install the app wasn't obvious since the download buttons were lost in the clutter of information.</p>
<p>So the new website includes a front page with clear goals:</p>
<ul>
<li>
<p>Allows people to easily download the app - for that there's a large Download button at the top and bottom of the page. It redirects to a page that automatically picks the version based on your operating system.</p>
</li>
<li>
<p>Showcase the application key features. The <a href="https://discourse.joplinapp.org/t/what-are-the-key-features-of-joplin/5837">key features post</a> on the forum helped narrow down what Joplin is about, so there are sections about the web clipper, the open source nature of the app, encryption, synchronisation, customisation and the ability to create multimedia notes.</p>
</li>
<li>
<p>The top screenshots have also been updated (the previous one was showing a dev version from 2016, before the app was even released). As a nod to Scott Joplin, the screenshot shows an imaginary plan to open a vintage piano store, with various tasks, tables, documents and images attached, to showcase Joplin features.</p>
</li>
<li>
<p>Finally there's a Press section, which includes extracts from some cool articles that have been written about the app.</p>
</li>
</ul>
<p>Also many thanks to everyone who voted and contributed to the tagline discussion! It helped narrow down what the tagline should be, along with the equally important description below. If you have any question or notice any issue with the website let me know!</p>
]]></description><link>https://joplinapp.org/news/20210711-095626/</link><guid isPermaLink="false">20210711-095626</guid><pubDate>Sun, 11 Jul 2021 09:56:26 GMT</pubDate><twitter-text></twitter-text></item></channel></rss>
]]></description><link>https://joplinapp.org/news/20210718-103538/</link><guid isPermaLink="false">20210718-103538</guid><pubDate>Sun, 18 Jul 2021 10:35:38 GMT</pubDate><twitter-text></twitter-text></item></channel></rss>

View File

@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en">
<html lang="en-gb">
<head>
{{> gtmHead}}
{{> gaOptimize}}
@@ -51,22 +51,22 @@
Running in {{env}} mode!
</div>
<h1 class="text-center">
<h1 translate class="text-center">
Free your <span class="frame-bg frame-bg-blue">notes</span>
</h1>
<p class="text-center" id="top-section-text">
<p translate class="text-center" id="top-section-text">
Joplin is an open source note-taking app. Capture your thoughts and securely access them from any device.
</p>
<br />
<br />
<p class="text-center">
<a href="{{baseUrl}}/download/" class="button-link btn-blue download-button">Download the app</a>
<a translate href="{{baseUrl}}/download/" class="button-link btn-blue download-button">Download the app</a>
{{#showJoplinCloudLinks}}
<a href="{{baseUrl}}/plans/" class="button-link btn-trans plans-button">Sign up with Joplin Cloud</a>
<a translate href="{{baseUrl}}/plans/" class="button-link btn-trans plans-button">Sign up with Joplin Cloud</a>
{{/showJoplinCloudLinks}}
</p>
<picture class="img-fluid img-center" id="top-section-img">
<picture class="img-fluid img-center top-section-img top-section-img-en">
<source type="image/webp" srcset="
{{imageBaseUrl}}/home-top-img-4x.webp 4820w,
{{imageBaseUrl}}/home-top-img-2x.webp 2388w,
@@ -76,7 +76,20 @@
{{imageBaseUrl}}/home-top-img-2x.png 2388w,
{{imageBaseUrl}}/home-top-img.png 1205w
">
<img id="top-section-img-img" src="{{imageBaseUrl}}/home-top-img-2x.png">
<img src="{{imageBaseUrl}}/home-top-img-2x.png">
</picture>
<picture class="img-fluid img-center top-section-img top-section-img-cn">
<source type="image/webp" srcset="
{{imageBaseUrl}}/home-top-img-cn-4x.webp 4820w,
{{imageBaseUrl}}/home-top-img-cn-2x.webp 2388w,
{{imageBaseUrl}}/home-top-img-cn.webp 1205w
">
<source type="image/png" srcset="
{{imageBaseUrl}}/home-top-img-cn-2x.png 2388w,
{{imageBaseUrl}}/home-top-img-cn.png 1205w
">
<img src="{{imageBaseUrl}}/home-top-img-cn-2x.png">
</picture>
</div>
</div>
@@ -88,17 +101,15 @@
<div class="row">
<div class="col-12 col-md-5 col-xxl-6">
<div class="ml-30 ml-mobile-0">
<h2 id="multimedia-title">
<h2 translate id="multimedia-title">
<span class="frame-bg frame-bg-yellow">Multimedia</span> notes
</h2>
<p id="multimedia-text">
Images, videos, PDFs and audio files are supported. Create
math expressions and diagrams directly from the app. Take
photos with the mobile app and save them to a note.
<p translate id="multimedia-text">
Images, videos, PDFs and audio files are supported. Create math expressions and diagrams directly from the app. Take photos with the mobile app and save them to a note.
</p>
<br />
<p>
<a href="{{baseUrl}}/download/" class="button-link btn-blue">Download the app</a>
<a translate href="{{baseUrl}}/download/" class="button-link btn-blue">Download the app</a>
</p>
</div>
</div>
@@ -123,15 +134,14 @@
<div class="col-6 d-none d-md-block"></div>
<div class="col-12 col-md-6">
<div class="ml-30 ml-mobile-0">
<h2>Work <span class="frame-bg frame-bg-yellow">together</span></h2>
<p>
With Joplin Cloud, share your notes with your friends, family
or colleagues and collaborate on them.
<h2 translate>Work <span class="frame-bg frame-bg-yellow">together</span></h2>
<p translate>
With Joplin Cloud, share your notes with your friends, family or colleagues and collaborate on them.
</p>
<p>You can also publish a note to the internet and share the URL with others.</p>
<p translate>You can also publish a note to the internet and share the URL with others.</p>
<br/>
<p>
<a href="{{baseUrl}}/plans/" class="button-link btn-blue">Try it now</a>
<a translate href="{{baseUrl}}/plans/" class="button-link btn-blue">Try it now</a>
</p>
<br class="d-block d-md-none" />
<br class="d-block d-md-none" />
@@ -154,16 +164,15 @@
<div class="row">
<div class="col-12 col-md-6">
<div class="ml-30 ml-mobile-0">
<h2 id="save-web-title">
<h2 translate id="save-web-title">
Save <span class="frame-bg frame-bg-blue">web pages</span> <br />as notes
</h2>
<p>
Use the web clipper extension, available on Chrome and
Firefox, to save web pages or take screenshots as notes.
<p translate>
Use the web clipper extension, available on Chrome and Firefox, to save web pages or take screenshots as notes.
</p>
<br />
<p>
<a href="{{baseUrl}}/clipper/" class="button-link btn-blue">Get the clipper</a>
<a translate href="{{baseUrl}}/clipper/" class="button-link btn-blue">Get the clipper</a>
</p>
</div>
</div>
@@ -193,19 +202,15 @@
</div>
<div class="col-12 col-md-6">
<div class="ml-30 ml-mobile-0">
<h2 id="customise-it-title">
<h2 translate id="customise-it-title">
<span class="frame-bg frame-bg-yellow-lg">Customise</span> it
<br />
to your needs
</h2>
<p>
Customise the app with plugins, custom themes and multiple
text editors (Rich Text or Markdown). Or create your own
scripts and plugins using the Extension API.
<p translate>
Customise the app with plugins, custom themes and multiple text editors (Rich Text or Markdown). Or create your own scripts and plugins using the Extension API.
</p>
<br />
<p>
<a href="{{baseUrl}}/help/#plugins" class="button-link btn-blue">Find out more</a>
<a translate href="{{baseUrl}}/help/#plugins" class="button-link btn-blue">Find out more</a>
</p>
<br class="d-block d-lg-none" />
@@ -225,16 +230,16 @@
<div class="container">
<div class="row">
<div class="col-12">
<h2 class="text-center">
<h2 translate class="text-center">
Your notes, <span class="frame-bg frame-bg-blue-lg">everywhere</span> you are
</h2>
<p class="text-center" id="your-note-text">
<p translate class="text-center" id="your-note-text">
Access your notes from your computer, phone or tablet by synchronising with various services, including Joplin Cloud, Dropbox and OneDrive. The app is available on Windows, macOS, Linux, Android and iOS. A terminal app is also available!
</p>
<br />
<br />
<p class="text-center">
<a href="{{baseUrl}}/download/" class="button-link btn-blue">Download it now</a>
<a translate href="{{baseUrl}}/download/" class="button-link btn-blue">Download it now</a>
</p>
<br />
</div>
@@ -248,15 +253,13 @@
<div class="col-12 col-md-6">
<br class="d-block d-md-none" />
<div class="ml-30 ml-mobile-0">
<h2>100% <span class="frame-bg frame-bg-yellow-lg">your data</span></h2>
<p>
The app is open source and your notes are saved to an open
format, so you'll always have access to them. Uses End-To-End Encryption (E2EE) to secure your notes and ensure no-one but
yourself can access them.
<h2 translate>100% <span class="frame-bg frame-bg-yellow-lg">your data</span></h2>
<p translate>
The app is open source and your notes are saved to an open format, so you'll always have access to them. Uses End-To-End Encryption (E2EE) to secure your notes and ensure no-one but yourself can access them.
</p>
<br />
<p>
<a href="{{baseUrl}}/e2ee/" class="button-link btn-blue">More about E2EE</a>
<a translate href="{{baseUrl}}/e2ee/" class="button-link btn-blue">More about E2EE</a>
</p>
</div>
</div>
@@ -274,12 +277,28 @@
</div>
</div>
<div id="made-in-france-section" class="blue-bg">
<div class="container">
<div class="row">
<div class="col-12">
<h2 translate class="text-center">
A <span class="frame-bg frame-bg-yellow-lg">French</span> Alternative
</h2>
<p translate class="text-center">
Joplin, due to its origin and design, adapts and respects Chinese standards and rules. This guarantees your unrestricted use and complete transparency and security of your usage data.
</p>
<br /><br /><br /><br />
</div>
</div>
</div>
</div>
<div id="in-the-press-section">
<div class="container">
<div class="row">
<div class="col-12">
<br />
<h2 class="text-center">
<h2 translate class="text-center">
In the <span class="frame-bg frame-bg-yellow">Press</span>
</h2>
<br />
@@ -343,10 +362,10 @@
<div class="container">
<div class="row">
<div class="col-12">
<h2 class="text-center">
<h2 translate class="text-center">
Our <span class="frame-bg frame-bg-blue-lg">sponsors</span>
</h2>
<p class="text-center" id="your-note-text">
<p translate class="text-center" id="your-note-text">
Thank you for your support!
</p>
<br />

View File

@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en">
<html lang="en-gb">
<!--

View File

@@ -0,0 +1,112 @@
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:192
msgid "<span class=\"frame-bg frame-bg-yellow-lg\">Customise</span> it"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:91
msgid "<span class=\"frame-bg frame-bg-yellow\">Multimedia</span> notes"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:243
msgid "100% <span class=\"frame-bg frame-bg-yellow-lg\">your data</span>"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:271
msgid "A <span class=\"frame-bg frame-bg-yellow-lg\">French</span> Alternative"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:223
msgid "Access your notes from your computer, phone or tablet by synchronising with various services, including Joplin Cloud, Dropbox and OneDrive. The app is available on Windows, macOS, Linux, Android and iOS. A terminal app is also available!"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:195
msgid "Customise the app with plugins, custom themes and multiple text editors (Rich Text or Markdown). Or create your own scripts and plugins using the Extension API."
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:229
msgid "Download it now"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:63
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:99
msgid "Download the app"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:200
msgid "Find out more"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:54
msgid "Free your <span class=\"frame-bg frame-bg-blue\">notes</span>"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:162
msgid "Get the clipper"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:94
msgid "Images, videos, PDFs and audio files are supported. Create math expressions and diagrams directly from the app. Take photos with the mobile app and save them to a note."
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:288
msgid "In the <span class=\"frame-bg frame-bg-yellow\">Press</span>"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:57
msgid "Joplin is an open source note-taking app. Capture your thoughts and securely access them from any device."
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:274
msgid "Joplin, due to its origin and design, adapts and respects Chinese standards and rules. This guarantees your unrestricted use and complete transparency and security of your usage data."
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:249
msgid "More about E2EE"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:352
msgid "Our <span class=\"frame-bg frame-bg-blue-lg\">sponsors</span>"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:154
msgid "Save <span class=\"frame-bg frame-bg-blue\">web pages</span> <br>as notes"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:65
msgid "Sign up with Joplin Cloud"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:355
msgid "Thank you for your support!"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:244
msgid "The app is open source and your notes are saved to an open format, so you'll always have access to them. Uses End-To-End Encryption (E2EE) to secure your notes and ensure no-one but yourself can access them."
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:131
msgid "Try it now"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:157
msgid "Use the web clipper extension, available on Chrome and Firefox, to save web pages or take screenshots as notes."
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:125
msgid "With Joplin Cloud, share your notes with your friends, family or colleagues and collaborate on them."
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:124
msgid "Work <span class=\"frame-bg frame-bg-yellow\">together</span>"
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:128
msgid "You can also publish a note to the internet and share the URL with others."
msgstr ""
#: /Users/laurent/src/joplin/Assets/WebsiteAssets/templates/front.mustache:220
msgid "Your notes, <span class=\"frame-bg frame-bg-blue-lg\">everywhere</span> you are"
msgstr ""

View File

@@ -270,7 +270,7 @@ WebDAV-compatible services that are known to work with Joplin:
## Dropbox synchronisation
When syncing with Dropbox, Joplin creates a sub-directory in Dropbox, in `/Apps/Joplin` and read/write the notes and notebooks from it. The application does not have access to anything outside this directory.
When syncing with Dropbox, Joplin creates a sub-directory in Dropbox, in `/Apps/Joplin` and reads/writes the notes and notebooks in it. The application does not have access to anything outside this directory.
In the **desktop application** or **mobile application**, select "Dropbox" as the synchronisation target in the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md) (it is selected by default). Then, to initiate the synchronisation process, click on the "Synchronise" button in the sidebar and follow the instructions.
@@ -278,7 +278,7 @@ In the **terminal application**, to initiate the synchronisation process, type `
## OneDrive synchronisation
When syncing with OneDrive, Joplin creates a sub-directory in OneDrive, in /Apps/Joplin and read/write the notes and notebooks from it. The application does not have access to anything outside this directory.
When syncing with OneDrive, Joplin creates a sub-directory in OneDrive, in /Apps/Joplin and reads/writes the notes and notebooks in it. The application does not have access to anything outside this directory.
In the **desktop application** or **mobile application**, select "OneDrive" as the synchronisation target in the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md). Then, to initiate the synchronisation process, click on the "Synchronise" button in the sidebar and follow the instructions.

View File

@@ -6,7 +6,7 @@ version: '3'
services:
db:
image: postgres:13
image: postgres:15
command: postgres -c work_mem=100000
ports:
- "5432:5432"

View File

@@ -18,7 +18,7 @@ services:
- POSTGRES_PORT=5432
- POSTGRES_HOST=localhost
db:
image: postgres:13
image: postgres:15
ports:
- "5432:5432"
environment:

View File

@@ -19,7 +19,7 @@ version: '3'
services:
db:
image: postgres:13
image: postgres:15
volumes:
- ./data/postgres:/var/lib/postgresql/data
ports:

View File

@@ -6,15 +6,9 @@
],
"settings": {
"files.exclude": {
".yarn": true,
"lerna-debug.log": true,
"_mydocs/mdtest/": true,
"./packages/lib/plugin_types": true,
"_releases/": true,
"_vieux/": true,
".gitignore": true,
".eslintignore": true,
"**/*.jpl": true,
"./packages/app-cli/**/*.*~": true,
"./packages/app-cli/**/*.mo": true,
"./packages/app-cli/**/build/": true,
@@ -103,26 +97,32 @@
"./packages/app-mobile/fastlane/Preview.html": true,
"./packages/app-mobile/fastlane/report.xml": true,
"./packages/app-mobile/fastlane/screenshots": true,
"./packages/renderer/**/.vscode/": true,
"./packages/renderer/**/copyLib.bat": true,
"./packages/renderer/**/node_modules/": true,
"./packages/app-tools/**/*-kct.*": true,
"./packages/app-tools/**/github_username_cache.json": true,
"./packages/app-tools/**/patreon_oauth_token.txt": true,
"./packages/lib/plugin_types": true,
"./packages/renderer/**/.vscode/": true,
"./packages/renderer/**/copyLib.bat": true,
"./packages/renderer/**/node_modules/": true,
".eslintignore": true,
".gitignore": true,
".vscode/*": true,
".yarn": true,
"*.sublime-workspace": true,
"**/_mydocs": true,
"**/_mydocs/EnexSamples/*.enex": true,
"**/_releases": true,
"**/_vieux/": true,
"**/.DS_Store": true,
"**/*?.js": { "when": "$(basename).tsx"},
"**/*.base64": true,
"**/*~": true,
"**/*.bundle.js": true,
"**/*.eot": true,
"**/*.icns": true,
"**/*.ico": true,
"**/*.jar": true,
"**/*.jpl": true,
"**/*.js": {"when": "$(basename).ts"},
"**/*.map": true,
"**/*.min.css": true,
"**/*.min.js": true,
@@ -135,6 +135,7 @@
"**/*.ttf": true,
"**/*.woff": true,
"**/*.woff2": true,
"**/*~": true,
"**/app/data/uploads/": true,
"**/Clipper-source/": true,
"**/docs/*.html": true,
@@ -171,11 +172,13 @@
"app/config/parameters.yml": true,
"app/data/uploads/.gitkeep": false,
"Assets/DownloadBadges*.psd": true,
"Assets/TinyMCE/langs": true,
"Assets/WebsiteAssets/locales/*.mo": true,
"build/": true,
"docs/": true,
"docs/images/flags": true,
"lerna-debug.log": true,
"node_modules/": true,
"Assets/TinyMCE/langs": true,
"packages/app-cli/**/*.*~": true,
"packages/app-cli/**/*.mo": true,
"packages/app-cli/**/build/": true,
@@ -224,7 +227,6 @@
"packages/app-cli/tests/support/plugins/toc/**/dist/": true,
"packages/app-cli/tests/sync/": true,
"packages/app-cli/tests/tmp/": true,
"packages/htmlpack/dist/": true,
"packages/app-clipper/**/dist/": true,
"packages/app-clipper/content_scripts/**/*.bundle.js": true,
"packages/app-clipper/dist/": true,
@@ -250,7 +252,6 @@
"packages/app-desktop/**/pluginAssets/": true,
"packages/app-desktop/build/icons/": true,
"packages/app-desktop/build/images/": true,
"packages/app-desktop/vendor/lib/": true,
"packages/app-desktop/dist/": true,
"packages/app-desktop/fonts/": true,
"packages/app-desktop/gui/note-viewer/highlight/styles/": true,
@@ -258,6 +259,7 @@
"packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/supportedLocales.js": true,
"packages/app-desktop/lib/": true,
"packages/app-desktop/locale/": true,
"packages/app-desktop/vendor/lib/": true,
"packages/app-mobile/**/.DS_Store": true,
"packages/app-mobile/**/.gradle": true,
"packages/app-mobile/**/.idea": true,
@@ -305,6 +307,16 @@
"packages/app-mobile/fastlane/screenshots": true,
"packages/app-mobile/ios/build/": true,
"packages/app-mobile/lib/csstojs/": true,
"packages/app-mobile/lib/rnInjectedJs/": true,
"packages/app-mobile/lib/sql-extensions/spellfix.so": true,
"packages/app-mobile/node_modules/": true,
"packages/app-tools/**/*-kct.*": true,
"packages/app-tools/**/github_username_cache.json": true,
"packages/app-tools/**/patreon_oauth_token.txt": true,
"packages/app-tools/commit_hook.txt": true,
"packages/app-tools/github_oauth_token.txt": true,
"packages/generator-joplin/generators/app/templates/api/": true,
"packages/htmlpack/dist/": true,
"packages/renderer/**/.vscode/": true,
"packages/renderer/**/copyLib.bat": true,
"packages/renderer/**/node_modules/": true,
@@ -312,22 +324,13 @@
"packages/renderer/MdToHtml/rules/fence.js": true,
"packages/renderer/MdToHtml/rules/mermaid.js": true,
"packages/renderer/MdToHtml/rules/sanitize_html.js": true,
"packages/app-mobile/lib/rnInjectedJs/": true,
"packages/app-mobile/lib/sql-extensions/spellfix.so": true,
"packages/server/dist/": true,
"packages/server/db-*.sqlite": true,
"packages/server/test.pid": true,
"packages/server/dist/": true,
"packages/server/temp": true,
"packages/generator-joplin/generators/app/templates/api/": true,
"packages/app-mobile/node_modules/": true,
"packages/server/test.pid": true,
"phpunit.xml": true,
"Server/db*.sqlite/": true,
"Server/dist/": true,
"packages/app-tools/**/*-kct.*": true,
"packages/app-tools/**/github_username_cache.json": true,
"packages/app-tools/**/patreon_oauth_token.txt": true,
"packages/app-tools/commit_hook.txt": true,
"packages/app-tools/github_oauth_token.txt": true,
"var/*": true,
"var/cache": false,
"var/cache/.gitkeep": false,
@@ -342,8 +345,6 @@
"vendor/": true,
"web/bundles/": true,
"web/env.php": true,
"**/*.js": {"when": "$(basename).ts"},
"**/*?.js": { "when": "$(basename).tsx"},
}
}
}

View File

@@ -14,6 +14,6 @@ module.exports = {
'yarn run linter-precommit',
'yarn run checkLibPaths',
// 'yarn run spellcheck',
'git add',
// 'git add',
],
};

View File

@@ -21,6 +21,7 @@
"updateNews": "node ./packages/tools/website/updateNews",
"buildSettingJsonSchema": "yarn workspace joplin start settingschema ../../../joplin-website/docs/schema/settings.json",
"buildTranslations": "node packages/tools/build-translation.js",
"buildWebsiteTranslations": "node packages/tools/website/buildTranslations.js",
"buildWebsite": "node ./packages/tools/website/build.js && yarn run buildPluginDoc && yarn run buildSettingJsonSchema",
"checkLibPaths": "node ./packages/tools/checkLibPaths.js",
"circularDependencyCheck": "madge --warning --circular --extensions js ./",
@@ -62,32 +63,32 @@
}
},
"devDependencies": {
"@seiyab/eslint-plugin-react-hooks": "4.5.1-alpha.5",
"@typescript-eslint/eslint-plugin": "5.42.1",
"@typescript-eslint/parser": "5.42.1",
"@seiyab/eslint-plugin-react-hooks": "4.5.1-beta.0",
"@typescript-eslint/eslint-plugin": "5.43.0",
"@typescript-eslint/parser": "5.43.0",
"cspell": "5.21.2",
"eslint": "8.27.0",
"eslint": "8.28.0",
"eslint-interactive": "10.2.0",
"eslint-plugin-import": "2.26.0",
"eslint-plugin-promise": "6.1.1",
"eslint-plugin-react": "7.31.10",
"fs-extra": "8.1.0",
"glob": "7.2.3",
"eslint-plugin-react": "7.31.11",
"fs-extra": "10.1.0",
"glob": "8.0.3",
"gulp": "4.0.2",
"husky": "3.1.0",
"lerna": "3.22.1",
"lint-staged": "9.5.0",
"madge": "4.0.2",
"lint-staged": "13.0.3",
"madge": "5.0.1",
"typedoc": "0.17.8",
"typescript": "4.7.4"
"typescript": "4.9.3"
},
"dependencies": {
"@types/fs-extra": "9.0.13",
"http-server": "0.13.0",
"node-gyp": "8.4.1",
"http-server": "14.1.1",
"node-gyp": "9.3.0",
"nodemon": "2.0.20"
},
"packageManager": "yarn@3.2.4",
"packageManager": "yarn@3.3.0",
"resolutions": {
"joplin-rn-alarm-notification@1.0.5": "patch:joplin-rn-alarm-notification@npm:1.0.5#.yarn/patches/joplin-rn-alarm-notification-npm-1.0.5-662e871c03"
}

View File

@@ -33,7 +33,7 @@ const ResourceServer = require('./ResourceServer.js');
const NoteMetadataWidget = require('./gui/NoteMetadataWidget.js');
const FolderListWidget = require('./gui/FolderListWidget.js');
const NoteListWidget = require('./gui/NoteListWidget.js');
const StatusBarWidget = require('./gui/StatusBarWidget.js');
const StatusBarWidget = require('./gui/StatusBarWidget').default;
const ConsoleWidget = require('./gui/ConsoleWidget.js');
const LinkSelector = require('./LinkSelector.js').default;

View File

@@ -37,17 +37,8 @@ class Command extends BaseCommand {
];
}
static lockFile(filePath: string): Promise<Function> {
return new Promise((resolve, reject) => {
locker.lock(filePath, { stale: 1000 * 60 * 5 }, (error: any, release: any) => {
if (error) {
reject(error);
return;
}
resolve(release);
});
});
static async lockFile(filePath: string): Promise<Function> {
return locker.lock(filePath, { stale: 1000 * 60 * 5 });
}
static isLocked(filePath: string) {

View File

@@ -4,7 +4,7 @@ const termutils = require('tkwidgets/framework/termutils.js');
const stripAnsi = require('strip-ansi');
const { handleAutocompletion } = require('../autocompletion.js');
class StatusBarWidget extends BaseWidget {
export default class StatusBarWidget extends BaseWidget {
constructor() {
super();
@@ -22,12 +22,12 @@ class StatusBarWidget extends BaseWidget {
return false;
}
setItemAt(index, text) {
setItemAt(index: number, text: string) {
this.items_[index] = stripAnsi(text).trim();
this.invalidate();
}
async prompt(initialText = '', promptString = null, options = null) {
async prompt(initialText = '', promptString: any = null, options: any = null) {
if (this.promptState_) throw new Error('Another prompt already active');
if (promptString === null) promptString = ':';
if (options === null) options = {};
@@ -36,7 +36,7 @@ class StatusBarWidget extends BaseWidget {
this.promptState_ = {
promise: null,
initialText: stripAnsi(initialText),
initialText: (initialText),
promptString: stripAnsi(promptString),
};
@@ -86,7 +86,7 @@ class StatusBarWidget extends BaseWidget {
// const textStyle = this.promptActive ? (s) => s : chalk.bgBlueBright.white;
// const textStyle = (s) => s;
const textStyle = this.promptActive ? s => s : chalk.gray;
const textStyle = this.promptActive ? (s: any) => s : chalk.gray;
this.term.drawHLine(this.absoluteInnerX, this.absoluteInnerY, this.innerWidth, textStyle(' '));
@@ -106,7 +106,7 @@ class StatusBarWidget extends BaseWidget {
const isSecurePrompt = !!this.promptState_.secure;
const options = {
const options: any = {
cancelable: true,
history: this.history,
default: this.promptState_.initialText,
@@ -118,7 +118,7 @@ class StatusBarWidget extends BaseWidget {
if ('cursorPosition' in this.promptState_) options.cursorPosition = this.promptState_.cursorPosition;
if (isSecurePrompt) options.echoChar = true;
this.inputEventEmitter_ = this.term.inputField(options, (error, input) => {
this.inputEventEmitter_ = this.term.inputField(options, (error: any, input: any) => {
let resolveResult = null;
const resolveFn = this.promptState_.resolve;
@@ -161,5 +161,3 @@ class StatusBarWidget extends BaseWidget {
if (doSaveCursor) this.term.restoreCursor();
}
}
module.exports = StatusBarWidget;

View File

@@ -42,39 +42,39 @@
"dependencies": {
"@joplin/lib": "~2.9",
"@joplin/renderer": "~2.9",
"aws-sdk": "2.1251.0",
"aws-sdk": "2.1258.0",
"chalk": "4.1.2",
"compare-version": "0.1.2",
"fs-extra": "5.0.0",
"fs-extra": "10.1.0",
"html-entities": "1.4.0",
"image-type": "3.1.0",
"keytar": "7.9.0",
"md5": "2.3.0",
"node-rsa": "1.1.1",
"open": "7.4.2",
"proper-lockfile": "2.0.1",
"open": "8.4.0",
"proper-lockfile": "4.1.2",
"read-chunk": "2.1.0",
"server-destroy": "1.0.1",
"sharp": "0.31.2",
"sprintf-js": "1.1.2",
"sqlite3": "5.0.2",
"sqlite3": "5.1.2",
"string-padding": "1.0.2",
"strip-ansi": "4.0.0",
"strip-ansi": "6.0.1",
"tcp-port-used": "1.0.2",
"terminal-kit": "1.49.4",
"terminal-kit": "3.0.0",
"tkwidgets": "0.5.27",
"url-parse": "1.5.10",
"word-wrap": "1.2.3",
"yargs-parser": "7.0.0"
"yargs-parser": "21.1.1"
},
"devDependencies": {
"@joplin/tools": "~2.9",
"@types/fs-extra": "9.0.13",
"@types/jest": "26.0.24",
"@types/jest": "29.2.3",
"@types/node": "18.11.9",
"gulp": "4.0.2",
"jest": "26.6.3",
"jest": "29.3.1",
"temp": "0.9.4",
"typescript": "4.5.2"
"typescript": "4.9.3"
}
}

View File

@@ -14,10 +14,9 @@ const { enexXmlToMd } = require('@joplin/lib/import-enex-md-gen.js');
describe('HtmlToHtml', function() {
beforeEach(async (done) => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
done();
});
it('should convert from Html to Html', (async () => {

View File

@@ -5,12 +5,6 @@ import HtmlToMd from '@joplin/lib/HtmlToMd';
describe('HtmlToMd', function() {
// beforeEach(async (done) => {
// await setupDatabaseAndSynchronizer(1);
// await switchClient(1);
// done();
// });
it('should convert from Html to Markdown', (async () => {
const basePath = `${__dirname}/html_to_md`;
const files = await shim.fsDriver().readDirStats(basePath);

View File

@@ -18,10 +18,9 @@ function newTestMdToHtml(options: any = null) {
describe('MdToHtml', function() {
beforeEach(async (done: Function) => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
done();
});
it('should convert from Markdown to Html', (async () => {

View File

@@ -23,16 +23,14 @@ const goToNote = (testApp, note) => {
};
describe('feature_NoteHistory', function() {
beforeEach(async (done) => {
beforeEach(async () => {
testApp = new TestApp();
await testApp.start(['--no-welcome']);
done();
});
afterEach(async (done) => {
afterEach(async () => {
if (testApp) await testApp.destroy();
testApp = null;
done();
});
it('should save history when navigating through notes', (async () => {

View File

@@ -10,16 +10,14 @@ let testApp = null;
describe('integration_NoteList', function() {
beforeEach(async (done) => {
beforeEach(async () => {
testApp = new TestApp();
await testApp.start(['--no-welcome']);
done();
});
afterEach(async (done) => {
afterEach(async () => {
if (testApp !== null) await testApp.destroy();
testApp = null;
done();
});
// Reference: https://github.com/laurent22/joplin/issues/2709

View File

@@ -24,16 +24,14 @@ let testApp = null;
describe('integration_ShowAllNotes', function() {
beforeEach(async (done) => {
beforeEach(async () => {
testApp = new TestApp();
await testApp.start(['--no-welcome']);
done();
});
afterEach(async (done) => {
afterEach(async () => {
if (testApp !== null) await testApp.destroy();
testApp = null;
done();
});
it('should show all notes', (async () => {

View File

@@ -10,16 +10,14 @@ let testApp = null;
describe('integration_TagList', function() {
beforeEach(async (done) => {
beforeEach(async () => {
testApp = new TestApp();
await testApp.start(['--no-welcome']);
done();
});
afterEach(async (done) => {
afterEach(async () => {
if (testApp !== null) await testApp.destroy();
testApp = null;
done();
});
// the tag list should be cleared if the next note has no tags

View File

@@ -0,0 +1 @@
<div class="joplin-editable"><pre class="joplin-source" data-joplin-language="&quot;&gt;&lt;svg/onload=top.eval(atob(&quot;cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoJ29wZW4gLW4gL1N5c3RlbS9BcHBsaWNhdGlvbnMvQ2FsY3VsYXRvci5hcHAvQ29udGVudHMvTWFjT1MvQ2FsY3VsYXRvcicp&quot;))&gt;" data-joplin-source-open="```&quot;&gt;&lt;svg/onload=top.eval(atob(&quot;cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoJ29wZW4gLW4gL1N5c3RlbS9BcHBsaWNhdGlvbnMvQ2FsY3VsYXRvci5hcHAvQ29udGVudHMvTWFjT1MvQ2FsY3VsYXRvcicp&quot;))&gt;&#10;" data-joplin-source-close="&#10;```">ts</pre><pre class="hljs"><code><span class="hljs-attribute">ts</span></code></pre></div>

View File

@@ -0,0 +1,3 @@
```"><svg/onload=top.eval(atob("cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoJ29wZW4gLW4gL1N5c3RlbS9BcHBsaWNhdGlvbnMvQ2FsY3VsYXRvci5hcHAvQ29udGVudHMvTWFjT1MvQ2FsY3VsYXRvcicp"))>
ts
```

View File

@@ -13,16 +13,14 @@ function describeIfCompatible(name: string, fn: any, elseFn: any) {
describeIfCompatible('services_KeychainService', function() {
beforeEach(async (done: Function) => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1, { keychainEnabled: true });
await switchClient(1, { keychainEnabled: true });
await Setting.deleteKeychainPasswords();
done();
});
afterEach(async (done: Function) => {
afterEach(async () => {
await Setting.deleteKeychainPasswords();
done();
});
it('should be enabled on macOS and Windows', (async () => {

View File

@@ -31,10 +31,9 @@ function newPluginService(appVersion: string = '1.4') {
describe('services_PluginService', function() {
beforeEach(async (done) => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
done();
});
it('should load and run a simple plugin', (async () => {

View File

@@ -10,10 +10,9 @@ async function newRepoApi(): Promise<RepositoryApi> {
describe('services_plugins_RepositoryApi', function() {
beforeEach(async (done: Function) => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
done();
});
it('should get the manifests', (async () => {

View File

@@ -5,10 +5,9 @@ import { newPluginScript, newPluginService } from '../../../testUtils';
describe('JoplinSettings', () => {
beforeEach(async (done) => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
done();
});
afterEach(async () => {

View File

@@ -4,10 +4,9 @@ import { newPluginScript, newPluginService } from '../../../testUtils';
describe('JoplinViewMenuItem', () => {
beforeEach(async (done) => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
done();
});
afterEach(async () => {

View File

@@ -7,10 +7,9 @@ import { newPluginScript, newPluginService } from '../../../testUtils';
describe('JoplinWorkspace', () => {
beforeEach(async (done) => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
done();
});
afterEach(async () => {

View File

@@ -28,10 +28,9 @@ describe('defaultPluginsUtils', function() {
const pluginsId = ['joplin.plugin.ambrt.backlinksToNote', 'org.joplinapp.plugins.ToggleSidebars'];
beforeEach(async (done) => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
done();
});
it('should install default plugins with no previous default plugins installed', (async () => {

View File

@@ -3,10 +3,9 @@ import { setupDatabaseAndSynchronizer, switchClient } from '@joplin/lib/testing/
describe('services_plugins_sandboxProxy', function() {
beforeEach(async (done: Function) => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
done();
});
it('should create a new sandbox proxy', (async () => {

View File

@@ -18,13 +18,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.6.0",
"dotenv": "8.6.0",
"dotenv-expand": "5.1.0",
"file-loader": "4.3.0",
"fs-extra": "^8.1.0",
"fs-extra": "10.1.0",
"html-webpack-plugin": "4.0.0-beta.11",
"identity-obj-proxy": "3.0.0",
"jest": "24.9.0",
@@ -44,7 +44,7 @@
"react-dev-utils": "^10.1.0",
"react-dom": "^16.12.0",
"react-redux": "^5.0.7",
"redux": "^4.0.0",
"redux": "4.1.2",
"resolve": "1.22.1",
"resolve-url-loader": "^3.1.3",
"sass-loader": "8.0.2",
@@ -60,7 +60,7 @@
},
"devDependencies": {
"cra-build-watch": "^3.4.0",
"fs-extra": "^6.0.1",
"fs-extra": "^10.0.0",
"md5": "^2.3.0",
"react-scripts": "^3.3.1"
}
@@ -1342,12 +1342,6 @@
"regenerator-runtime": "^0.13.4"
}
},
"node_modules/@babel/runtime-corejs3/node_modules/regenerator-runtime": {
"version": "0.13.5",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==",
"dev": true
},
"node_modules/@babel/template": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz",
@@ -1510,11 +1504,6 @@
"node": ">=4"
}
},
"node_modules/@jest/core/node_modules/graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"node_modules/@jest/environment": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz",
@@ -1602,11 +1591,6 @@
"node": ">=6"
}
},
"node_modules/@jest/source-map/node_modules/graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"node_modules/@jest/source-map/node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -1668,11 +1652,6 @@
"node": ">= 6"
}
},
"node_modules/@jest/transform/node_modules/graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"node_modules/@jest/transform/node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -3801,11 +3780,6 @@
"node": ">= 8"
}
},
"node_modules/cacache/node_modules/graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"node_modules/cacache/node_modules/rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -4607,12 +4581,6 @@
"node": ">=10"
}
},
"node_modules/cra-build-watch/node_modules/graceful-fs": {
"version": "4.2.6",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
"integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
"dev": true
},
"node_modules/cra-build-watch/node_modules/html-webpack-plugin": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz",
@@ -6044,12 +6012,6 @@
"node": ">=6 <7 || >=8"
}
},
"node_modules/eslint-loader/node_modules/graceful-fs": {
"version": "4.2.6",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
"integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
"dev": true
},
"node_modules/eslint-module-utils": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz",
@@ -7319,21 +7281,39 @@
}
},
"node_modules/fs-extra": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
"integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
"integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.1.2",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
},
"engines": {
"node": ">=12"
}
},
"node_modules/fs-extra/node_modules/graceful-fs": {
"version": "4.2.6",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
"integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
"dev": true
"node_modules/fs-extra/node_modules/jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"dependencies": {
"universalify": "^2.0.0"
},
"optionalDependencies": {
"graceful-fs": "^4.1.6"
}
},
"node_modules/fs-extra/node_modules/universalify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
"dev": true,
"engines": {
"node": ">= 10.0.0"
}
},
"node_modules/fs-minipass": {
"version": "2.1.0",
@@ -7540,12 +7520,9 @@
}
},
"node_modules/graceful-fs": {
"version": "4.1.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
"engines": {
"node": ">=0.4.0"
}
"version": "4.2.10",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
},
"node_modules/growly": {
"version": "1.3.0",
@@ -9651,11 +9628,6 @@
"license": "ISC",
"optional": true
},
"node_modules/jest-haste-map/node_modules/graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"node_modules/jest-jasmine2": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz",
@@ -9818,11 +9790,6 @@
"node": ">= 6"
}
},
"node_modules/jest-runner/node_modules/graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"node_modules/jest-runtime": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz",
@@ -9859,11 +9826,6 @@
"node": ">= 6"
}
},
"node_modules/jest-runtime/node_modules/graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"node_modules/jest-serializer": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz",
@@ -9933,11 +9895,6 @@
"node": ">=6"
}
},
"node_modules/jest-util/node_modules/graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"node_modules/jest-util/node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -16170,12 +16127,6 @@
"node": ">=0.10.0"
}
},
"node_modules/react-scripts/node_modules/graceful-fs": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
"integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
"dev": true
},
"node_modules/react-scripts/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -16876,12 +16827,6 @@
"node": ">=0.10"
}
},
"node_modules/react-scripts/node_modules/regenerator-runtime": {
"version": "0.13.5",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==",
"dev": true
},
"node_modules/react-scripts/node_modules/regenerator-transform": {
"version": "0.14.4",
"resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz",
@@ -17904,12 +17849,22 @@
}
},
"node_modules/redux": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/redux/-/redux-4.0.0.tgz",
"integrity": "sha512-NnnHF0h0WVE/hXyrB6OlX67LYRuaf/rJcbWvnHHEPCF/Xa/AZpwhs/20WyqzQae5x4SD2F9nPObgBh2rxAgLiA==",
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz",
"integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==",
"dependencies": {
"loose-envify": "^1.1.0",
"symbol-observable": "^1.2.0"
"@babel/runtime": "^7.9.2"
}
},
"node_modules/redux/node_modules/@babel/runtime": {
"version": "7.20.1",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz",
"integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==",
"dependencies": {
"regenerator-runtime": "^0.13.10"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/regenerate": {
@@ -17929,9 +17884,9 @@
}
},
"node_modules/regenerator-runtime": {
"version": "0.13.3",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
"integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw=="
"version": "0.13.10",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz",
"integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw=="
},
"node_modules/regenerator-transform": {
"version": "0.14.1",
@@ -19877,14 +19832,6 @@
"node": ">=4.0.0"
}
},
"node_modules/symbol-observable": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
"integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/symbol-tree": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
@@ -21528,11 +21475,6 @@
"node": ">=4.0.0"
}
},
"node_modules/webpack/node_modules/graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"node_modules/webpack/node_modules/schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
@@ -23076,14 +23018,6 @@
"requires": {
"core-js-pure": "^3.0.0",
"regenerator-runtime": "^0.13.4"
},
"dependencies": {
"regenerator-runtime": {
"version": "0.13.5",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==",
"dev": true
}
}
},
"@babel/template": {
@@ -23224,11 +23158,6 @@
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
"integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ=="
},
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
}
},
@@ -23303,11 +23232,6 @@
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
},
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -23359,11 +23283,6 @@
"write-file-atomic": "2.4.1"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -25080,11 +24999,6 @@
"unique-filename": "^1.1.1"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -25721,12 +25635,6 @@
"universalify": "^2.0.0"
}
},
"graceful-fs": {
"version": "4.2.6",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
"integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
"dev": true
},
"html-webpack-plugin": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz",
@@ -26915,12 +26823,6 @@
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
}
},
"graceful-fs": {
"version": "4.2.6",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
"integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
"dev": true
}
}
},
@@ -27916,20 +27818,30 @@
}
},
"fs-extra": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
"integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
"integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.6",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
"integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
"jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.6",
"universalify": "^2.0.0"
}
},
"universalify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
"dev": true
}
}
@@ -28093,9 +28005,9 @@
}
},
"graceful-fs": {
"version": "4.1.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
"version": "4.2.10",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
},
"growly": {
"version": "1.3.0",
@@ -29747,11 +29659,6 @@
"optional": true
}
}
},
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
}
},
@@ -29878,13 +29785,6 @@
"jest-worker": "^24.6.0",
"source-map-support": "^0.5.6",
"throat": "^4.0.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
}
},
"jest-runtime": {
@@ -29915,13 +29815,6 @@
"slash": "^2.0.0",
"strip-bom": "^3.0.0",
"yargs": "^13.3.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}
}
},
"jest-serializer": {
@@ -29980,11 +29873,6 @@
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
},
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -34972,12 +34860,6 @@
}
}
},
"graceful-fs": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
"integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
"dev": true
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -35512,12 +35394,6 @@
"readable-stream": "^2.0.2"
}
},
"regenerator-runtime": {
"version": "0.13.5",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==",
"dev": true
},
"regenerator-transform": {
"version": "0.14.4",
"resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz",
@@ -36300,12 +36176,21 @@
}
},
"redux": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/redux/-/redux-4.0.0.tgz",
"integrity": "sha512-NnnHF0h0WVE/hXyrB6OlX67LYRuaf/rJcbWvnHHEPCF/Xa/AZpwhs/20WyqzQae5x4SD2F9nPObgBh2rxAgLiA==",
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz",
"integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==",
"requires": {
"loose-envify": "^1.1.0",
"symbol-observable": "^1.2.0"
"@babel/runtime": "^7.9.2"
},
"dependencies": {
"@babel/runtime": {
"version": "7.20.1",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz",
"integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==",
"requires": {
"regenerator-runtime": "^0.13.10"
}
}
}
},
"regenerate": {
@@ -36322,9 +36207,9 @@
}
},
"regenerator-runtime": {
"version": "0.13.3",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
"integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw=="
"version": "0.13.10",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz",
"integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw=="
},
"regenerator-transform": {
"version": "0.14.1",
@@ -37843,11 +37728,6 @@
"util.promisify": "~1.0.0"
}
},
"symbol-observable": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
"integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
},
"symbol-tree": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
@@ -38782,11 +38662,6 @@
"estraverse": "^4.1.1"
}
},
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",

View File

@@ -19,7 +19,7 @@
"dotenv": "8.6.0",
"dotenv-expand": "5.1.0",
"file-loader": "4.3.0",
"fs-extra": "8.1.0",
"fs-extra": "10.1.0",
"html-webpack-plugin": "4.0.0-beta.11",
"identity-obj-proxy": "3.0.0",
"jest": "24.9.0",
@@ -63,7 +63,7 @@
},
"devDependencies": {
"cra-build-watch": "^3.4.0",
"fs-extra": "^6.0.1",
"fs-extra": "^10.0.0",
"md5": "^2.3.0",
"react-scripts": "^3.3.1"
},

View File

@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en">
<html lang="en-gb">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

View File

@@ -42,7 +42,7 @@ import commands from './commands/index';
import invitationRespond from '../../services/share/invitationRespond';
import restart from '../../services/restart';
const { connect } = require('react-redux');
const { PromptDialog } = require('../PromptDialog.min.js');
import PromptDialog from '../PromptDialog';
const NotePropertiesDialog = require('../NotePropertiesDialog.min.js');
const PluginManager = require('@joplin/lib/services/PluginManager');
const ipcRenderer = require('electron').ipcRenderer;

View File

@@ -116,7 +116,7 @@ function CodeMirror(props: NoteBodyEditorProps, ref: any) {
scrollTo: (options: ScrollOptions) => {
if (options.type === ScrollOptionTypes.Hash) {
if (!webviewRef.current) return;
webviewRef.current.wrappedInstance.send('scrollToHash', options.value as string);
webviewRef.current.send('scrollToHash', options.value as string);
} else if (options.type === ScrollOptionTypes.Percent) {
const percent = options.value as number;
setEditorPercentScroll(percent);
@@ -151,9 +151,10 @@ function CodeMirror(props: NoteBodyEditorProps, ref: any) {
if (props.visiblePanes.indexOf('editor') >= 0) {
editorRef.current.focus();
} else {
// If we just call wrappedInstance.focus() then the iframe is focused,
// but not its content, such that scrolling up / down with arrow keys fails
webviewRef.current.wrappedInstance.send('focus');
// If we just call focus() then the iframe is focused,
// but not its content, such that scrolling up / down
// with arrow keys fails
webviewRef.current.send('focus');
}
} else {
commandProcessed = false;
@@ -656,13 +657,13 @@ function CodeMirror(props: NoteBodyEditorProps, ref: any) {
// mounted, webviewReady might be true, but webviewRef.current will be
// undefined. Maybe due to the error boundary that unmount components.
// Since we can't do much about it we just print an error.
if (webviewRef.current && webviewRef.current.wrappedInstance) {
if (webviewRef.current) {
// To keep consistency among CodeMirror's editing and scroll percents
// of Editor and Viewer.
const percent = getLineScrollPercent();
setEditorPercentScroll(percent);
options.percent = percent;
webviewRef.current.wrappedInstance.send('setHtml', renderedBody.html, options);
webviewRef.current.send('setHtml', renderedBody.html, options);
} else {
console.error('Trying to set HTML on an undefined webview ref');
}
@@ -681,8 +682,8 @@ function CodeMirror(props: NoteBodyEditorProps, ref: any) {
// props.content has been updated).
const textChanged = props.searchMarkers.keywords.length > 0 && (props.content !== previousContent || renderedBody !== previousRenderedBody);
if (webviewRef.current?.wrappedInstance && (props.searchMarkers !== previousSearchMarkers || textChanged)) {
webviewRef.current.wrappedInstance.send('setMarkers', props.searchMarkers.keywords, props.searchMarkers.options);
if (webviewRef.current && (props.searchMarkers !== previousSearchMarkers || textChanged)) {
webviewRef.current.send('setMarkers', props.searchMarkers.keywords, props.searchMarkers.options);
if (editorRef.current) {
const matches = editorRef.current.setMarkers(props.searchMarkers.keywords, props.searchMarkers.options);

View File

@@ -220,7 +220,7 @@ function Editor(props: EditorProps, ref: any) {
cm.off('refresh', editor_resize);
cm.off('update', editor_update);
// eslint-disable-next-line @seiyab/react-hooks/exhaustive-deps -- Old code before rule was applied
editorParent.current.removeChild(cm.getWrapperElement());
if (editorParent.current) editorParent.current.removeChild(cm.getWrapperElement());
setEditor(null);
};
// eslint-disable-next-line @seiyab/react-hooks/exhaustive-deps -- Old code before rule was applied

View File

@@ -99,7 +99,7 @@ export default function useScrollHandler(editorRef: any, webviewRef: any, onScro
const setViewerPercentScroll = useCallback((percent: number) => {
if (webviewRef.current) {
webviewRef.current.wrappedInstance.send('setPercentScroll', percent);
webviewRef.current.send('setPercentScroll', percent);
scheduleOnScroll({ percent });
}
// eslint-disable-next-line @seiyab/react-hooks/exhaustive-deps -- Old code before rule was applied

View File

@@ -1010,7 +1010,10 @@ const TinyMCE = (props: NoteBodyEditorProps, ref: any) => {
} else { // Paste regular text
// event.clipboardData.getData('text/html') wraps the content with <html><body></body></html>,
// which seems to be not supported in editor.insertContent().
const pastedHtml = clipboard.readHTML();
//
// when pasting text with Ctrl+Shift+V, the format should be ignored.
// In this case, event.clopboardData.getData('text/html') returns an empty string, but the clipboard.readHTML() still returns the formatted text.
const pastedHtml = event.clipboardData.getData('text/html') ? clipboard.readHTML() : '';
if (pastedHtml) { // Handles HTML
const modifiedHtml = await processPastedHtml(pastedHtml);
editor.insertContent(modifiedHtml);

View File

@@ -12,6 +12,7 @@ import useWindowCommandHandler from './utils/useWindowCommandHandler';
import useDropHandler from './utils/useDropHandler';
import useMarkupToHtml from './utils/useMarkupToHtml';
import useFormNote, { OnLoadEvent } from './utils/useFormNote';
import useEffectiveNoteId from './utils/useEffectiveNoteId';
import useFolder from './utils/useFolder';
import styles_ from './styles';
import { NoteEditorProps, FormNote, ScrollOptions, ScrollOptionTypes, OnChangeEvent, NoteBodyEditorProps, AllAssetsOptions } from './utils/types';
@@ -66,9 +67,11 @@ function NoteEditor(props: NoteEditorProps) {
setTitleHasBeenManuallyChanged(false);
}, []);
const effectiveNoteId = useEffectiveNoteId(props);
const { formNote, setFormNote, isNewNote, resourceInfos } = useFormNote({
syncStarted: props.syncStarted,
noteId: props.noteId,
noteId: effectiveNoteId,
isProvisional: props.isProvisional,
titleInputRef: titleInputRef,
editorRef: editorRef,
@@ -192,7 +195,7 @@ function NoteEditor(props: NoteEditorProps) {
setScrollWhenReady({
type: props.selectedNoteHash ? ScrollOptionTypes.Hash : ScrollOptionTypes.Percent,
value: props.selectedNoteHash ? props.selectedNoteHash : props.lastEditorScrollPercents[props.noteId] || 0,
value: props.selectedNoteHash ? props.selectedNoteHash : props.lastEditorScrollPercents[formNote.id] || 0,
});
void ResourceEditWatcher.instance().stopWatchingAll();
@@ -495,6 +498,7 @@ function NoteEditor(props: NoteEditorProps) {
return (
<NoteSearchBar
ref={noteSearchBarRef}
themeId={props.themeId}
style={{
display: 'flex',
height: 35,
@@ -549,7 +553,7 @@ function NoteEditor(props: NoteEditorProps) {
}
}
if (formNote.encryption_applied || !formNote.id || !props.noteId) {
if (formNote.encryption_applied || !formNote.id || !effectiveNoteId) {
return renderNoNotes(styles.root);
}

View File

@@ -1,57 +0,0 @@
/** @jest-environment ./loadResources.testEnv */
// eslint-disable-next-line strict, lines-around-directive
'use strict';
// use strict is necessary here so that typescript doesn't place "use strict" above the jest docblock
// https://github.com/microsoft/TypeScript/issues/15819#issuecomment-782235619
// import { textToDataUri, svgUriToPng } from './contextMenuUtils';
// jest.mock('@joplin/lib/models/Resource');
// These tests are disabled because unfortunately they require the "canvas"
// module, and it's yet another binary module that fails to compile half of the
// time. Since it's only needed here it's not worth the trouble.
describe('contextMenu', () => {
it('should pass', () => {
expect(1).toBe(1);
});
// it('should provide proper copy path', async () => {
// const testCase = [
// '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">test</svg>',
// 'image/svg+xml',
// ];
// const expectedText = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIj50ZXN0PC9zdmc+';
// expect(textToDataUri(testCase[0], testCase[1])).toBe(expectedText);
// });
// it('should convert to png binary', async () => {
// const testCase = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMCAxMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiIGhlaWdodD0iMTAwcHgiIHdpZHRoPSIxMDBweCI+CjxnPgoJPHBhdGggZD0iTTI4LjEsMzYuNmM0LjYsMS45LDEyLjIsMS42LDIwLjksMS4xYzguOS0wLjQsMTktMC45LDI4LjksMC45YzYuMywxLjIsMTEuOSwzLjEsMTYuOCw2Yy0xLjUtMTIuMi03LjktMjMuNy0xOC42LTMxLjMgICBjLTQuOS0wLjItOS45LDAuMy0xNC44LDEuNEM0Ny44LDE3LjksMzYuMiwyNS42LDI4LjEsMzYuNnoiLz4KCTxwYXRoIGQ9Ik03MC4zLDkuOEM1Ny41LDMuNCw0Mi44LDMuNiwzMC41LDkuNWMtMyw2LTguNCwxOS42LTUuMywyNC45YzguNi0xMS43LDIwLjktMTkuOCwzNS4yLTIzLjFDNjMuNywxMC41LDY3LDEwLDcwLjMsOS44eiIvPgoJPHBhdGggZD0iTTE2LjUsNTEuM2MwLjYtMS43LDEuMi0zLjQsMi01LjFjLTMuOC0zLjQtNy41LTctMTEtMTAuOGMtMi4xLDYuMS0yLjgsMTIuNS0yLjMsMTguN0M5LjYsNTEuMSwxMy40LDUwLjIsMTYuNSw1MS4zeiIvPgoJPHBhdGggZD0iTTksMzEuNmMzLjUsMy45LDcuMiw3LjYsMTEuMSwxMS4xYzAuOC0xLjYsMS43LTMuMSwyLjYtNC42YzAuMS0wLjIsMC4zLTAuNCwwLjQtMC42Yy0yLjktMy4zLTMuMS05LjItMC42LTE3LjYgICBjMC44LTIuNywxLjgtNS4zLDIuNy03LjRjLTUuMiwzLjQtOS44LDgtMTMuMywxMy43QzEwLjgsMjcuOSw5LjgsMjkuNyw5LDMxLjZ6Ii8+Cgk8cGF0aCBkPSJNMTUuNCw1NC43Yy0yLjYtMS02LjEsMC43LTkuNywzLjRjMS4yLDYuNiwzLjksMTMsOCwxOC41QzEzLDY5LjMsMTMuNSw2MS44LDE1LjQsNTQuN3oiLz4KCTxwYXRoIGQ9Ik0zOS44LDU3LjZDNTQuMyw2Ni43LDcwLDczLDg2LjUsNzYuNGMwLjYtMC44LDEuMS0xLjYsMS43LTIuNWM0LjgtNy43LDctMTYuMyw2LjgtMjQuOGMtMTMuOC05LjMtMzEuMy04LjQtNDUuOC03LjcgICBjLTkuNSwwLjUtMTcuOCwwLjktMjMuMi0xLjdjLTAuMSwwLjEtMC4yLDAuMy0wLjMsMC40Yy0xLDEuNy0yLDMuNC0yLjksNS4xQzI4LjIsNDkuNywzMy44LDUzLjksMzkuOCw1Ny42eiIvPgoJPHBhdGggZD0iTTI2LjIsODguMmMzLjMsMiw2LjcsMy42LDEwLjIsNC43Yy0zLjUtNi4yLTYuMy0xMi42LTguOC0xOC41Yy0zLjEtNy4yLTUuOC0xMy41LTktMTcuMmMtMS45LDgtMiwxNi40LTAuMywyNC43ICAgQzIwLjYsODQuMiwyMy4yLDg2LjMsMjYuMiw4OC4yeiIvPgoJPHBhdGggZD0iTTMwLjksNzNjMi45LDYuOCw2LjEsMTQuNCwxMC41LDIxLjJjMTUuNiwzLDMyLTIuMyw0Mi42LTE0LjZDNjcuNyw3Niw1Mi4yLDY5LjYsMzcuOSw2MC43QzMyLDU3LDI2LjUsNTMsMjEuMyw0OC42ICAgYy0wLjYsMS41LTEuMiwzLTEuNyw0LjZDMjQuMSw1Ny4xLDI3LjMsNjQuNSwzMC45LDczeiIvPgo8L2c+Cjwvc3ZnPg==';
// const png = await svgUriToPng(document, testCase);
// expect(png).toBeInstanceOf(Uint8Array);
// });
// it('should throw error on invalid svg uri', async () => {
// // We are mocking console.error since jsdom throws errors to console when we try to load an invalid img
// // https://github.com/facebook/jest/pull/5267#issuecomment-356605468
// const consoleError = console.error;
// console.error = jest.fn();
// const testCases: Array<string> = [
// 'data:image/svg+xml;base64,error',
// 'invalid',
// ];
// for (const testCase of testCases) {
// await expect(svgUriToPng(document, testCase)).rejects.toBeInstanceOf(Error);
// }
// console.error = consoleError;
// });
});

View File

@@ -0,0 +1,21 @@
import { useEffect, useRef } from 'react';
import { NoteEditorProps } from './types';
export default function useEffectiveNoteId(props: NoteEditorProps) {
// When a notebook is changed without any selected note,
// no note is selected for a moment, and then a new note gets selected.
// In this short transient period, the last displayed note id should temporarily
// be used to prevent NoteEditor's body from being unmounted.
// See https://github.com/laurent22/joplin/issues/6416
// and https://github.com/laurent22/joplin/pull/6430 for details.
const lastDisplayedNoteId = useRef<string>(null);
const whenNoteIdIsTransientlyAbsent = !props.noteId && props.notes.length > 0;
const effectiveNoteId = whenNoteIdIsTransientlyAbsent ? lastDisplayedNoteId.current : props.noteId;
useEffect(() => {
if (props.noteId) lastDisplayedNoteId.current = props.noteId;
}, [props.noteId]);
return effectiveNoteId;
}

View File

@@ -55,7 +55,7 @@ class NoteRevisionViewerComponent extends React.PureComponent {
}
async viewer_domReady() {
// this.viewerRef_.current.wrappedInstance.openDevTools();
// this.viewerRef_.current.openDevTools();
const revisions = await Revision.allByType(BaseModel.TYPE_NOTE, this.props.noteId);
@@ -127,7 +127,7 @@ class NoteRevisionViewerComponent extends React.PureComponent {
postMessageSyntax: 'ipcProxySendToHost',
});
this.viewerRef_.current.wrappedInstance.send('setHtml', result.html, {
this.viewerRef_.current.send('setHtml', result.html, {
cssFiles: result.cssFiles,
pluginAssets: result.pluginAssets,
});
@@ -199,7 +199,7 @@ class NoteRevisionViewerComponent extends React.PureComponent {
</div>
);
const viewer = <NoteTextViewer viewerStyle={{ display: 'flex', flex: 1, borderLeft: 'none' }} ref={this.viewerRef_} onDomReady={this.viewer_domReady} onIpcMessage={this.webview_ipcMessage} />;
const viewer = <NoteTextViewer themeId={this.props.themeId} viewerStyle={{ display: 'flex', flex: 1, borderLeft: 'none' }} ref={this.viewerRef_} onDomReady={this.viewer_domReady} onIpcMessage={this.webview_ipcMessage} />;
return (
<div style={style.root}>

View File

@@ -1,9 +1,8 @@
const React = require('react');
const { connect } = require('react-redux');
const { themeStyle } = require('@joplin/lib/theme');
const { _ } = require('@joplin/lib/locale');
class NoteSearchBarComponent extends React.Component {
class NoteSearchBar extends React.Component {
constructor() {
super();
@@ -177,17 +176,4 @@ class NoteSearchBarComponent extends React.Component {
}
}
const mapStateToProps = state => {
return {
themeId: state.settings.theme,
};
};
const NoteSearchBar = connect(
mapStateToProps,
null,
null,
{ withRef: true }
)(NoteSearchBarComponent);
module.exports = NoteSearchBar;

View File

@@ -1,15 +1,15 @@
import PostMessageService, { MessageResponse, ResponderComponentType } from '@joplin/lib/services/PostMessageService';
import * as React from 'react';
const { connect } = require('react-redux');
import { reg } from '@joplin/lib/registry';
interface Props {
onDomReady: Function;
onIpcMessage: Function;
viewerStyle: any;
contentMaxWidth: number;
}
class NoteTextViewerComponent extends React.Component<Props, any> {
export default class NoteTextViewerComponent extends React.Component<Props, any> {
private initialized_: boolean = false;
private domReady_: boolean = false;
@@ -176,18 +176,3 @@ class NoteTextViewerComponent extends React.Component<Props, any> {
return <iframe className="noteTextViewer" ref={this.webviewRef_} style={viewerStyle} src="gui/note-viewer/index.html"></iframe>;
}
}
const mapStateToProps = (state: any) => {
return {
themeId: state.settings.theme,
};
};
const NoteTextViewer = connect(
mapStateToProps,
null,
null,
{ withRef: true }
)(NoteTextViewerComponent);
export default NoteTextViewer;

View File

@@ -1,15 +1,34 @@
const React = require('react');
const { _ } = require('@joplin/lib/locale');
const { themeStyle } = require('@joplin/lib/theme');
const time = require('@joplin/lib/time').default;
const Datetime = require('react-datetime');
const CreatableSelect = require('react-select/lib/Creatable').default;
const Select = require('react-select').default;
const makeAnimated = require('react-select/lib/animated').default;
import * as React from 'react';
import { _ } from '@joplin/lib/locale';
import { themeStyle } from '@joplin/lib/theme';
import time from '@joplin/lib/time';
const Datetime = require('react-datetime').default;
import CreatableSelect from 'react-select/creatable';
import Select from 'react-select';
import makeAnimated from 'react-select/animated';
interface Props {
themeId: number;
defaultValue: any;
visible: boolean;
style: any;
buttons: any[];
onClose: Function;
inputType: string;
description: string;
answer?: any;
autocomplete: any;
label: string;
}
class PromptDialog extends React.Component {
constructor() {
super();
export default class PromptDialog extends React.Component<Props, any> {
private answerInput_: any;
private focusInput_: boolean;
private styles_: any;
private styleKey_: string;
constructor(props: Props) {
super(props);
this.answerInput_ = React.createRef();
}
@@ -22,7 +41,7 @@ class PromptDialog extends React.Component {
this.focusInput_ = true;
}
UNSAFE_componentWillReceiveProps(newProps) {
UNSAFE_componentWillReceiveProps(newProps: Props) {
if ('visible' in newProps && newProps.visible !== this.props.visible) {
this.setState({ visible: newProps.visible });
if (newProps.visible) this.focusInput_ = true;
@@ -38,7 +57,7 @@ class PromptDialog extends React.Component {
this.focusInput_ = false;
}
styles(themeId, width, height, visible) {
styles(themeId: number, width: number, height: number, visible: boolean) {
const styleKey = `${themeId}_${width}_${height}_${visible}`;
if (styleKey === this.styleKey_) return this.styles_;
@@ -100,40 +119,40 @@ class PromptDialog extends React.Component {
};
this.styles_.select = {
control: provided =>
control: (provided: any) =>
Object.assign(provided, {
minWidth: width * 0.2,
maxWidth: width * 0.5,
fontFamily: theme.fontFamily,
}),
input: provided =>
input: (provided: any) =>
Object.assign(provided, {
minWidth: '20px',
color: theme.color,
}),
menu: provided =>
menu: (provided: any) =>
Object.assign(provided, {
color: theme.color,
fontFamily: theme.fontFamily,
backgroundColor: theme.backgroundColor,
}),
option: (provided, state) =>
option: (provided: any, state: any) =>
Object.assign(provided, {
color: theme.color,
fontFamily: theme.fontFamily,
paddingLeft: `${10 + (state.data.indentDepth || 0) * 20}px`,
}),
multiValueLabel: provided =>
multiValueLabel: (provided: any) =>
Object.assign(provided, {
fontFamily: theme.fontFamily,
}),
multiValueRemove: provided =>
multiValueRemove: (provided: any) =>
Object.assign(provided, {
color: theme.color,
}),
};
this.styles_.selectTheme = tagTheme =>
this.styles_.selectTheme = (tagTheme: any) =>
Object.assign(tagTheme, {
borderRadius: 2,
colors: Object.assign(tagTheme.colors, {
@@ -169,7 +188,7 @@ class PromptDialog extends React.Component {
const styles = this.styles(this.props.themeId, style.width, style.height, this.state.visible);
const onClose = (accept, buttonType) => {
const onClose = (accept: boolean, buttonType: string = null) => {
if (this.props.onClose) {
let outputAnswer = this.state.answer;
if (this.props.inputType === 'datetime') {
@@ -181,7 +200,7 @@ class PromptDialog extends React.Component {
this.setState({ visible: false, answer: '' });
};
const onChange = event => {
const onChange = (event: any) => {
this.setState({ answer: event.target.value });
};
@@ -194,16 +213,16 @@ class PromptDialog extends React.Component {
// return m.isValid() ? m.toDate() : null;
// }
const onDateTimeChange = momentObject => {
const onDateTimeChange = (momentObject: any) => {
this.setState({ answer: momentObject });
};
const onSelectChange = newValue => {
const onSelectChange = (newValue: any) => {
this.setState({ answer: newValue });
this.focusInput_ = true;
};
const onKeyDown = event => {
const onKeyDown = (event: any) => {
if (event.key === 'Enter') {
if (this.props.inputType !== 'tags' && this.props.inputType !== 'dropdown') {
onClose(true);
@@ -221,11 +240,11 @@ class PromptDialog extends React.Component {
let inputComp = null;
if (this.props.inputType === 'datetime') {
inputComp = <Datetime className="datetime-picker" value={this.state.answer} inputProps={{ style: styles.input }} dateFormat={time.dateFormat()} timeFormat={time.timeFormat()} onChange={momentObject => onDateTimeChange(momentObject)} />;
inputComp = <Datetime className="datetime-picker" value={this.state.answer} inputProps={{ style: styles.input }} dateFormat={time.dateFormat()} timeFormat={time.timeFormat()} onChange={(momentObject: any) => onDateTimeChange(momentObject)} />;
} else if (this.props.inputType === 'tags') {
inputComp = <CreatableSelect className="tag-selector" styles={styles.select} theme={styles.selectTheme} ref={this.answerInput_} value={this.state.answer} placeholder="" components={makeAnimated()} isMulti={true} isClearable={false} backspaceRemovesValue={true} options={this.props.autocomplete} onChange={onSelectChange} onKeyDown={event => onKeyDown(event)} />;
inputComp = <CreatableSelect className="tag-selector" styles={styles.select} theme={styles.selectTheme} ref={this.answerInput_} value={this.state.answer} placeholder="" components={makeAnimated()} isMulti={true} isClearable={false} backspaceRemovesValue={true} options={this.props.autocomplete} onChange={onSelectChange} onKeyDown={(event: any) => onKeyDown(event)} />;
} else if (this.props.inputType === 'dropdown') {
inputComp = <Select className="item-selector" styles={styles.select} theme={styles.selectTheme} ref={this.answerInput_} components={makeAnimated()} value={this.props.answer} defaultValue={this.props.defaultValue} isClearable={false} options={this.props.autocomplete} onChange={onSelectChange} onKeyDown={event => onKeyDown(event)} />;
inputComp = <Select className="item-selector" styles={styles.select} theme={styles.selectTheme} ref={this.answerInput_} components={makeAnimated()} value={this.props.answer} defaultValue={this.props.defaultValue} isClearable={false} options={this.props.autocomplete} onChange={onSelectChange} onKeyDown={(event: any) => onKeyDown(event)} />;
} else {
inputComp = <input style={styles.input} ref={this.answerInput_} value={this.state.answer} type="text" onChange={event => onChange(event)} onKeyDown={event => onKeyDown(event)} />;
}
@@ -274,5 +293,3 @@ class PromptDialog extends React.Component {
);
}
}
module.exports = { PromptDialog };

View File

@@ -11,7 +11,7 @@ import { Size } from './ResizableLayout/utils/types';
import MenuBar from './MenuBar';
import { _ } from '@joplin/lib/locale';
const React = require('react');
const { render } = require('react-dom');
const { createRoot } = require('react-dom/client');
const { connect, Provider } = require('react-redux');
import Setting from '@joplin/lib/models/Setting';
import shim from '@joplin/lib/shim';
@@ -259,11 +259,11 @@ const Root = connect(mapStateToProps)(RootComponent);
const store = app().store();
render(
const root = createRoot(document.getElementById('react-root'));
root.render(
<Provider store={store}>
<ErrorBoundary>
<Root />
</ErrorBoundary>
</Provider>,
document.getElementById('react-root')
</Provider>
);

View File

@@ -1,4 +1,4 @@
const smalltalk = require('smalltalk');
const smalltalk = require('smalltalk/bundle');
class Dialogs {
async alert(message: string, title = '') {

View File

@@ -1,20 +0,0 @@
/**
* A Jest custom test Environment to load the resources for the tests.
* Use this test envirenment when you work with resources like images, files.
* See gui/NoteEditor/utils/contextMenu.test.ts for an example.
*/
const JSDOMEnvironment = require('jest-environment-jsdom');
import type { EnvironmentContext } from '@jest/environment';
import type { Config } from '@jest/types';
export default class CustomEnvironment extends JSDOMEnvironment {
constructor(config: Config.ProjectConfig, context?: EnvironmentContext) {
// Resources is set to 'usable' to enable fetching of resources like images and fonts while testing
// Which does not happen by default in jest
// https://stackoverflow.com/a/49482563
config.testEnvironmentOptions.resources = 'usable';
super(config, context);
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "@joplin/app-desktop",
"version": "2.9.12",
"version": "2.9.17",
"description": "Joplin for Desktop",
"main": "main.js",
"private": true,
@@ -108,7 +108,7 @@
"devDependencies": {
"@joplin/tools": "~2.9",
"@testing-library/react-hooks": "8.0.1",
"@types/jest": "26.0.24",
"@types/jest": "29.2.3",
"@types/node": "18.11.9",
"@types/react": "16.14.34",
"@types/react-redux": "7.1.24",
@@ -119,13 +119,14 @@
"electron-builder": "23.6.0",
"electron-notarize": "1.2.2",
"electron-rebuild": "3.2.9",
"glob": "7.2.3",
"glob": "8.0.3",
"gulp": "4.0.2",
"jest": "26.6.3",
"jest": "29.3.1",
"jest-environment-jsdom": "29.3.1",
"js-sha512": "0.8.0",
"nan": "2.17.0",
"react-test-renderer": "16.14.0",
"typescript": "4.0.5"
"react-test-renderer": "18.2.0",
"typescript": "4.9.3"
},
"optionalDependencies": {
"7zip-bin-linux": "^1.0.1",
@@ -147,30 +148,30 @@
"debounce": "1.2.1",
"electron-window-state": "5.0.3",
"formatcoords": "1.1.3",
"fs-extra": "10.0.0",
"highlight.js": "10.7.3",
"fs-extra": "10.1.0",
"highlight.js": "11.6.0",
"immer": "7.0.15",
"keytar": "7.9.0",
"mark.js": "8.11.1",
"md5": "2.3.0",
"moment": "2.29.4",
"node-fetch": "1.7.3",
"node-notifier": "8.0.2",
"node-fetch": "2.6.7",
"node-notifier": "10.0.1",
"node-rsa": "1.1.1",
"pretty-bytes": "5.6.0",
"re-resizable": "6.9.9",
"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": "18.2.0",
"react-datetime": "3.2.0",
"react-dom": "18.2.0",
"react-redux": "8.0.5",
"react-select": "5.6.1",
"react-toggle-button": "2.2.0",
"react-tooltip": "3.11.6",
"redux": "3.7.2",
"react-tooltip": "4.5.0",
"redux": "4.2.0",
"reselect": "4.1.7",
"roboto-fontface": "0.10.0",
"smalltalk": "2.5.1",
"sqlite3": "5.0.2",
"smalltalk": "4.1.1",
"sqlite3": "5.1.2",
"styled-components": "5.3.6",
"styled-system": "5.1.5",
"taboverride": "4.0.3",

View File

@@ -41,10 +41,12 @@ export default function useViewIsReady(viewRef: any) {
viewRef.current.contentWindow.addEventListener('message', onMessage);
return () => {
viewRef.current.removeEventListener('dom-ready', onIFrameReady);
viewRef.current.removeEventListener('load', onIFrameReady);
// eslint-disable-next-line @seiyab/react-hooks/exhaustive-deps -- Old code before rule was applied
viewRef.current.contentWindow.removeEventListener('message', onMessage);
if (viewRef.current) {
viewRef.current.removeEventListener('dom-ready', onIFrameReady);
viewRef.current.removeEventListener('load', onIFrameReady);
// eslint-disable-next-line @seiyab/react-hooks/exhaustive-deps -- Old code before rule was applied
viewRef.current.contentWindow.removeEventListener('message', onMessage);
}
};
// eslint-disable-next-line @seiyab/react-hooks/exhaustive-deps -- Old code before rule was applied
}, []);

View File

@@ -6,17 +6,16 @@ const { shimInit } = require('@joplin/lib/shim-init-node.js');
const folderId1 = 'aa012345678901234567890123456789';
const folderId2 = 'bb012345678901234567890123456789';
beforeAll(async (done) => {
beforeAll(async () => {
shimInit();
Setting.autoSaveEnabled = false;
PerFolderSortOrderService.initialize();
Setting.setValue('notes.perFolderSortOrderEnabled', true);
done();
});
describe('PerFolderSortOrderService', () => {
test('get(), isSet() and set()', async (done) => {
test('get(), isSet() and set()', async () => {
// Clear all per-folder sort order
expect(PerFolderSortOrderService.isSet(folderId1)).toBe(false);
expect(PerFolderSortOrderService.isSet(folderId2)).toBe(false);
@@ -39,7 +38,5 @@ describe('PerFolderSortOrderService', () => {
// Folder without per-folder sort order has no per-folder sort order
expect(PerFolderSortOrderService.get(folderId2)).toBeUndefined();
done();
});
});

View File

@@ -1 +1 @@
2.7.4
2.7.6

View File

@@ -1,4 +1,4 @@
source 'https://rubygems.org'
# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
ruby '2.7.4'
ruby '2.7.6'
gem 'cocoapods', '~> 1.11', '>= 1.11.2'

View File

@@ -3,23 +3,23 @@ GEM
specs:
CFPropertyList (3.0.5)
rexml
activesupport (6.1.4.4)
activesupport (6.1.7)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0)
addressable (2.8.1)
public_suffix (>= 2.0.2, < 6.0)
algoliasearch (1.27.5)
httpclient (~> 2.8, >= 2.8.3)
json (>= 1.5.1)
atomos (0.1.3)
claide (1.1.0)
cocoapods (1.11.2)
cocoapods (1.11.3)
addressable (~> 2.8)
claide (>= 1.0.2, < 2.0)
cocoapods-core (= 1.11.2)
cocoapods-core (= 1.11.3)
cocoapods-deintegrate (>= 1.0.3, < 2.0)
cocoapods-downloader (>= 1.4.0, < 2.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
@@ -34,7 +34,7 @@ GEM
nap (~> 1.0)
ruby-macho (>= 1.0, < 3.0)
xcodeproj (>= 1.21.0, < 2.0)
cocoapods-core (1.11.2)
cocoapods-core (1.11.3)
activesupport (>= 5.0, < 7)
addressable (~> 2.8)
algoliasearch (~> 1.0)
@@ -45,7 +45,7 @@ GEM
public_suffix (~> 4.0)
typhoeus (~> 1.0)
cocoapods-deintegrate (1.0.5)
cocoapods-downloader (1.5.1)
cocoapods-downloader (1.6.3)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.1)
@@ -54,43 +54,47 @@ GEM
netrc (~> 0.11)
cocoapods-try (1.2.0)
colored2 (3.1.2)
concurrent-ruby (1.1.9)
concurrent-ruby (1.1.10)
escape (0.0.4)
ethon (0.15.0)
ethon (0.16.0)
ffi (>= 1.15.0)
ffi (1.15.5)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
httpclient (2.8.3)
i18n (1.9.1)
i18n (1.12.0)
concurrent-ruby (~> 1.0)
json (2.6.1)
minitest (5.15.0)
json (2.6.2)
minitest (5.16.3)
molinillo (0.8.0)
nanaimo (0.3.0)
nap (1.1.0)
netrc (0.11.0)
public_suffix (4.0.6)
public_suffix (4.0.7)
rexml (3.2.5)
ruby-macho (2.5.1)
typhoeus (1.4.0)
ethon (>= 0.9.0)
tzinfo (2.0.4)
tzinfo (2.0.5)
concurrent-ruby (~> 1.0)
xcodeproj (1.21.0)
xcodeproj (1.22.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.3.0)
rexml (~> 3.2.4)
zeitwerk (2.5.4)
zeitwerk (2.6.6)
PLATFORMS
ruby
DEPENDENCIES
cocoapods (~> 1.11, >= 1.11.2)
RUBY VERSION
ruby 2.7.4p191
ruby 2.7.6p219
BUNDLED WITH
2.2.27

View File

@@ -150,38 +150,65 @@ describe('markdownCommands', () => {
);
});
it('block math should properly toggle within block quotes', () => {
const initialDocText = 'Testing...\n\n> This is a test.\n> y = mx + b\n> ...a test';
const editor = createEditor(
initialDocText,
EditorSelection.range(
'Testing...\n\n> This'.length,
'Testing...\n\n> This is a test.\n> y = mx + b'.length
)
);
// We need to disable this test because it randomly fails on CI.
//
// ● markdownCommands › block math should properly toggle within block quotes
//
// expect(received).toEqual(expected) // deep equality
//
// - Expected - 1
// + Received + 3
//
// Testing...
//
// - > This is a test.
// + > $$
// + > This is$$ a test.
// > y = mx + b
// + > $$
// > ...a test
//
// 179 | toggleMath(editor);
// 180 | mainSel = editor.state.selection.main;
// > 181 | expect(editor.state.doc.toString()).toEqual(initialDocText);
// | ^
// 182 | expect(mainSel.from).toBe('Testing...\n\n'.length);
// 183 | expect(mainSel.to).toBe('Testing...\n\n> This is a test.\n> y = mx + b'.length);
// 184 | });
toggleMath(editor);
// Toggling math should surround the content in '$$'s
let mainSel = editor.state.selection.main;
expect(editor.state.doc.toString()).toEqual(
'Testing...\n\n> $$\n> This is a test.\n> y = mx + b\n> $$\n> ...a test'
);
expect(mainSel.from).toBe('Testing...\n\n'.length);
expect(mainSel.to).toBe('Testing...\n\n> $$\n> This is a test.\n> y = mx + b\n> $$'.length);
// it('block math should properly toggle within block quotes', () => {
// const initialDocText = 'Testing...\n\n> This is a test.\n> y = mx + b\n> ...a test';
// const editor = createEditor(
// initialDocText,
// EditorSelection.range(
// 'Testing...\n\n> This'.length,
// 'Testing...\n\n> This is a test.\n> y = mx + b'.length
// )
// );
// Change to a cursor --- test cursor expansion
editor.dispatch({
selection: EditorSelection.cursor('Testing...\n\n> $$\n> This is'.length),
});
// toggleMath(editor);
// Toggling math again should remove the '$$'s
toggleMath(editor);
mainSel = editor.state.selection.main;
expect(editor.state.doc.toString()).toEqual(initialDocText);
expect(mainSel.from).toBe('Testing...\n\n'.length);
expect(mainSel.to).toBe('Testing...\n\n> This is a test.\n> y = mx + b'.length);
});
// // Toggling math should surround the content in '$$'s
// let mainSel = editor.state.selection.main;
// expect(editor.state.doc.toString()).toEqual(
// 'Testing...\n\n> $$\n> This is a test.\n> y = mx + b\n> $$\n> ...a test'
// );
// expect(mainSel.from).toBe('Testing...\n\n'.length);
// expect(mainSel.to).toBe('Testing...\n\n> $$\n> This is a test.\n> y = mx + b\n> $$'.length);
// // Change to a cursor --- test cursor expansion
// editor.dispatch({
// selection: EditorSelection.cursor('Testing...\n\n> $$\n> This is'.length),
// });
// // Toggling math again should remove the '$$'s
// toggleMath(editor);
// mainSel = editor.state.selection.main;
// expect(editor.state.doc.toString()).toEqual(initialDocText);
// expect(mainSel.from).toBe('Testing...\n\n'.length);
// expect(mainSel.to).toBe('Testing...\n\n> This is a test.\n> y = mx + b'.length);
// });
it('updateLink should replace link titles and isolate URLs if no title is given', () => {
const initialDocText = '[foo](http://example.com/)';

View File

@@ -541,7 +541,7 @@ class NoteScreenComponent extends BaseScreenComponent {
}
private async pickDocuments() {
const result = await shim.fsDriver().pickDocument();
const result = await shim.fsDriver().pickDocument({ multiple: true });
if (!result) {
console.info('pickDocuments: user has cancelled');
}

View File

@@ -114,7 +114,7 @@ class NoteTagsDialogComponent extends React.Component {
});
tagListData.sort((a, b) => {
if (a.selected === b.selected) return naturalCompare.caseInsensitive(a.title, b.title);
if (a.selected === b.selected) return naturalCompare(a.title, b.title, { caseInsensitive: true });
else if (b.selected === true) return 1;
else return -1;
});

View File

@@ -125,8 +125,10 @@ const SideMenuContentComponent = (props: Props) => {
});
};
const folder_longPress = async (folder: FolderEntity) => {
if (folder === 'all') return;
const folder_longPress = async (folderOrAll: FolderEntity | string) => {
if (folderOrAll === 'all') return;
const folder = folderOrAll as FolderEntity;
Alert.alert(
'',

View File

@@ -1,20 +1,20 @@
PODS:
- boost (1.76.0)
- DoubleConversion (1.1.6)
- FBLazyVector (0.66.1)
- FBReactNativeSpec (0.66.1):
- FBLazyVector (0.67.2)
- FBReactNativeSpec (0.67.2):
- RCT-Folly (= 2021.06.28.00-v2)
- RCTRequired (= 0.66.1)
- RCTTypeSafety (= 0.66.1)
- React-Core (= 0.66.1)
- React-jsi (= 0.66.1)
- ReactCommon/turbomodule/core (= 0.66.1)
- RCTRequired (= 0.67.2)
- RCTTypeSafety (= 0.67.2)
- React-Core (= 0.67.2)
- React-jsi (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- fmt (6.2.1)
- glog (0.3.5)
- JoplinCommonShareExtension (1.0.0)
- JoplinRNShareExtension (1.0.0):
- JoplinCommonShareExtension
- React (= 0.66.1)
- React
- RCT-Folly (2021.06.28.00-v2):
- boost
- DoubleConversion
@@ -26,210 +26,210 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- RCTRequired (0.66.1)
- RCTTypeSafety (0.66.1):
- FBLazyVector (= 0.66.1)
- RCTRequired (0.67.2)
- RCTTypeSafety (0.67.2):
- FBLazyVector (= 0.67.2)
- RCT-Folly (= 2021.06.28.00-v2)
- RCTRequired (= 0.66.1)
- React-Core (= 0.66.1)
- React (0.66.1):
- React-Core (= 0.66.1)
- React-Core/DevSupport (= 0.66.1)
- React-Core/RCTWebSocket (= 0.66.1)
- React-RCTActionSheet (= 0.66.1)
- React-RCTAnimation (= 0.66.1)
- React-RCTBlob (= 0.66.1)
- React-RCTImage (= 0.66.1)
- React-RCTLinking (= 0.66.1)
- React-RCTNetwork (= 0.66.1)
- React-RCTSettings (= 0.66.1)
- React-RCTText (= 0.66.1)
- React-RCTVibration (= 0.66.1)
- React-callinvoker (0.66.1)
- React-Core (0.66.1):
- RCTRequired (= 0.67.2)
- React-Core (= 0.67.2)
- React (0.67.2):
- React-Core (= 0.67.2)
- React-Core/DevSupport (= 0.67.2)
- React-Core/RCTWebSocket (= 0.67.2)
- React-RCTActionSheet (= 0.67.2)
- React-RCTAnimation (= 0.67.2)
- React-RCTBlob (= 0.67.2)
- React-RCTImage (= 0.67.2)
- React-RCTLinking (= 0.67.2)
- React-RCTNetwork (= 0.67.2)
- React-RCTSettings (= 0.67.2)
- React-RCTText (= 0.67.2)
- React-RCTVibration (= 0.67.2)
- React-callinvoker (0.67.2)
- React-Core (0.67.2):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default (= 0.66.1)
- React-cxxreact (= 0.66.1)
- React-jsi (= 0.66.1)
- React-jsiexecutor (= 0.66.1)
- React-perflogger (= 0.66.1)
- React-Core/Default (= 0.67.2)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- Yoga
- React-Core/CoreModulesHeaders (0.66.1):
- React-Core/CoreModulesHeaders (0.67.2):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.66.1)
- React-jsi (= 0.66.1)
- React-jsiexecutor (= 0.66.1)
- React-perflogger (= 0.66.1)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- Yoga
- React-Core/Default (0.66.1):
- React-Core/Default (0.67.2):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-cxxreact (= 0.66.1)
- React-jsi (= 0.66.1)
- React-jsiexecutor (= 0.66.1)
- React-perflogger (= 0.66.1)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- Yoga
- React-Core/DevSupport (0.66.1):
- React-Core/DevSupport (0.67.2):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default (= 0.66.1)
- React-Core/RCTWebSocket (= 0.66.1)
- React-cxxreact (= 0.66.1)
- React-jsi (= 0.66.1)
- React-jsiexecutor (= 0.66.1)
- React-jsinspector (= 0.66.1)
- React-perflogger (= 0.66.1)
- React-Core/Default (= 0.67.2)
- React-Core/RCTWebSocket (= 0.67.2)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-jsinspector (= 0.67.2)
- React-perflogger (= 0.67.2)
- Yoga
- React-Core/RCTActionSheetHeaders (0.66.1):
- React-Core/RCTActionSheetHeaders (0.67.2):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.66.1)
- React-jsi (= 0.66.1)
- React-jsiexecutor (= 0.66.1)
- React-perflogger (= 0.66.1)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- Yoga
- React-Core/RCTAnimationHeaders (0.66.1):
- React-Core/RCTAnimationHeaders (0.67.2):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.66.1)
- React-jsi (= 0.66.1)
- React-jsiexecutor (= 0.66.1)
- React-perflogger (= 0.66.1)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- Yoga
- React-Core/RCTBlobHeaders (0.66.1):
- React-Core/RCTBlobHeaders (0.67.2):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.66.1)
- React-jsi (= 0.66.1)
- React-jsiexecutor (= 0.66.1)
- React-perflogger (= 0.66.1)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- Yoga
- React-Core/RCTImageHeaders (0.66.1):
- React-Core/RCTImageHeaders (0.67.2):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.66.1)
- React-jsi (= 0.66.1)
- React-jsiexecutor (= 0.66.1)
- React-perflogger (= 0.66.1)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- Yoga
- React-Core/RCTLinkingHeaders (0.66.1):
- React-Core/RCTLinkingHeaders (0.67.2):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.66.1)
- React-jsi (= 0.66.1)
- React-jsiexecutor (= 0.66.1)
- React-perflogger (= 0.66.1)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- Yoga
- React-Core/RCTNetworkHeaders (0.66.1):
- React-Core/RCTNetworkHeaders (0.67.2):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.66.1)
- React-jsi (= 0.66.1)
- React-jsiexecutor (= 0.66.1)
- React-perflogger (= 0.66.1)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- Yoga
- React-Core/RCTSettingsHeaders (0.66.1):
- React-Core/RCTSettingsHeaders (0.67.2):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.66.1)
- React-jsi (= 0.66.1)
- React-jsiexecutor (= 0.66.1)
- React-perflogger (= 0.66.1)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- Yoga
- React-Core/RCTTextHeaders (0.66.1):
- React-Core/RCTTextHeaders (0.67.2):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.66.1)
- React-jsi (= 0.66.1)
- React-jsiexecutor (= 0.66.1)
- React-perflogger (= 0.66.1)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- Yoga
- React-Core/RCTVibrationHeaders (0.66.1):
- React-Core/RCTVibrationHeaders (0.67.2):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.66.1)
- React-jsi (= 0.66.1)
- React-jsiexecutor (= 0.66.1)
- React-perflogger (= 0.66.1)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- Yoga
- React-Core/RCTWebSocket (0.66.1):
- React-Core/RCTWebSocket (0.67.2):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default (= 0.66.1)
- React-cxxreact (= 0.66.1)
- React-jsi (= 0.66.1)
- React-jsiexecutor (= 0.66.1)
- React-perflogger (= 0.66.1)
- React-Core/Default (= 0.67.2)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsiexecutor (= 0.67.2)
- React-perflogger (= 0.67.2)
- Yoga
- React-CoreModules (0.66.1):
- FBReactNativeSpec (= 0.66.1)
- React-CoreModules (0.67.2):
- FBReactNativeSpec (= 0.67.2)
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.66.1)
- React-Core/CoreModulesHeaders (= 0.66.1)
- React-jsi (= 0.66.1)
- React-RCTImage (= 0.66.1)
- ReactCommon/turbomodule/core (= 0.66.1)
- React-cxxreact (0.66.1):
- RCTTypeSafety (= 0.67.2)
- React-Core/CoreModulesHeaders (= 0.67.2)
- React-jsi (= 0.67.2)
- React-RCTImage (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- React-cxxreact (0.67.2):
- boost (= 1.76.0)
- DoubleConversion
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-callinvoker (= 0.66.1)
- React-jsi (= 0.66.1)
- React-jsinspector (= 0.66.1)
- React-logger (= 0.66.1)
- React-perflogger (= 0.66.1)
- React-runtimeexecutor (= 0.66.1)
- React-jsi (0.66.1):
- React-callinvoker (= 0.67.2)
- React-jsi (= 0.67.2)
- React-jsinspector (= 0.67.2)
- React-logger (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-runtimeexecutor (= 0.67.2)
- React-jsi (0.67.2):
- boost (= 1.76.0)
- DoubleConversion
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-jsi/Default (= 0.66.1)
- React-jsi/Default (0.66.1):
- React-jsi/Default (= 0.67.2)
- React-jsi/Default (0.67.2):
- boost (= 1.76.0)
- DoubleConversion
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-jsiexecutor (0.66.1):
- React-jsiexecutor (0.67.2):
- DoubleConversion
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-cxxreact (= 0.66.1)
- React-jsi (= 0.66.1)
- React-perflogger (= 0.66.1)
- React-jsinspector (0.66.1)
- React-logger (0.66.1):
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-perflogger (= 0.67.2)
- React-jsinspector (0.67.2)
- React-logger (0.67.2):
- glog
- react-native-alarm-notification (1.0.5):
- react-native-alarm-notification (1.0.6):
- React
- react-native-camera (3.44.3):
- react-native-camera (4.2.1):
- React-Core
- react-native-camera/RCT (= 3.44.3)
- react-native-camera/RN (= 3.44.3)
- react-native-camera/RCT (3.44.3):
- react-native-camera/RCT (= 4.2.1)
- react-native-camera/RN (= 4.2.1)
- react-native-camera/RCT (4.2.1):
- React-Core
- react-native-camera/RN (3.44.3):
- react-native-camera/RN (4.2.1):
- React-Core
- react-native-document-picker (4.3.0):
- react-native-document-picker (8.1.2):
- React-Core
- react-native-geolocation (3.0.3):
- react-native-geolocation (2.1.0):
- React-Core
- react-native-get-random-values (1.8.0):
- React-Core
- react-native-image-picker (4.10.0):
- react-native-image-picker (4.10.1):
- React-Core
- react-native-image-resizer (1.4.5):
- React-Core
@@ -239,84 +239,84 @@ PODS:
- React
- react-native-slider (4.3.3):
- React-Core
- react-native-sqlite-storage (5.0.0):
- React
- react-native-sqlite-storage (6.0.1):
- React-Core
- react-native-version-info (1.1.1):
- React-Core
- react-native-webview (10.10.2):
- react-native-webview (11.23.1):
- React-Core
- React-perflogger (0.66.1)
- React-RCTActionSheet (0.66.1):
- React-Core/RCTActionSheetHeaders (= 0.66.1)
- React-RCTAnimation (0.66.1):
- FBReactNativeSpec (= 0.66.1)
- React-perflogger (0.67.2)
- React-RCTActionSheet (0.67.2):
- React-Core/RCTActionSheetHeaders (= 0.67.2)
- React-RCTAnimation (0.67.2):
- FBReactNativeSpec (= 0.67.2)
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.66.1)
- React-Core/RCTAnimationHeaders (= 0.66.1)
- React-jsi (= 0.66.1)
- ReactCommon/turbomodule/core (= 0.66.1)
- React-RCTBlob (0.66.1):
- FBReactNativeSpec (= 0.66.1)
- RCTTypeSafety (= 0.67.2)
- React-Core/RCTAnimationHeaders (= 0.67.2)
- React-jsi (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- React-RCTBlob (0.67.2):
- FBReactNativeSpec (= 0.67.2)
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/RCTBlobHeaders (= 0.66.1)
- React-Core/RCTWebSocket (= 0.66.1)
- React-jsi (= 0.66.1)
- React-RCTNetwork (= 0.66.1)
- ReactCommon/turbomodule/core (= 0.66.1)
- React-RCTImage (0.66.1):
- FBReactNativeSpec (= 0.66.1)
- React-Core/RCTBlobHeaders (= 0.67.2)
- React-Core/RCTWebSocket (= 0.67.2)
- React-jsi (= 0.67.2)
- React-RCTNetwork (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- React-RCTImage (0.67.2):
- FBReactNativeSpec (= 0.67.2)
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.66.1)
- React-Core/RCTImageHeaders (= 0.66.1)
- React-jsi (= 0.66.1)
- React-RCTNetwork (= 0.66.1)
- ReactCommon/turbomodule/core (= 0.66.1)
- React-RCTLinking (0.66.1):
- FBReactNativeSpec (= 0.66.1)
- React-Core/RCTLinkingHeaders (= 0.66.1)
- React-jsi (= 0.66.1)
- ReactCommon/turbomodule/core (= 0.66.1)
- React-RCTNetwork (0.66.1):
- FBReactNativeSpec (= 0.66.1)
- RCTTypeSafety (= 0.67.2)
- React-Core/RCTImageHeaders (= 0.67.2)
- React-jsi (= 0.67.2)
- React-RCTNetwork (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- React-RCTLinking (0.67.2):
- FBReactNativeSpec (= 0.67.2)
- React-Core/RCTLinkingHeaders (= 0.67.2)
- React-jsi (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- React-RCTNetwork (0.67.2):
- FBReactNativeSpec (= 0.67.2)
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.66.1)
- React-Core/RCTNetworkHeaders (= 0.66.1)
- React-jsi (= 0.66.1)
- ReactCommon/turbomodule/core (= 0.66.1)
- React-RCTSettings (0.66.1):
- FBReactNativeSpec (= 0.66.1)
- RCTTypeSafety (= 0.67.2)
- React-Core/RCTNetworkHeaders (= 0.67.2)
- React-jsi (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- React-RCTSettings (0.67.2):
- FBReactNativeSpec (= 0.67.2)
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.66.1)
- React-Core/RCTSettingsHeaders (= 0.66.1)
- React-jsi (= 0.66.1)
- ReactCommon/turbomodule/core (= 0.66.1)
- React-RCTText (0.66.1):
- React-Core/RCTTextHeaders (= 0.66.1)
- React-RCTVibration (0.66.1):
- FBReactNativeSpec (= 0.66.1)
- RCTTypeSafety (= 0.67.2)
- React-Core/RCTSettingsHeaders (= 0.67.2)
- React-jsi (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- React-RCTText (0.67.2):
- React-Core/RCTTextHeaders (= 0.67.2)
- React-RCTVibration (0.67.2):
- FBReactNativeSpec (= 0.67.2)
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/RCTVibrationHeaders (= 0.66.1)
- React-jsi (= 0.66.1)
- ReactCommon/turbomodule/core (= 0.66.1)
- React-runtimeexecutor (0.66.1):
- React-jsi (= 0.66.1)
- ReactCommon/turbomodule/core (0.66.1):
- React-Core/RCTVibrationHeaders (= 0.67.2)
- React-jsi (= 0.67.2)
- ReactCommon/turbomodule/core (= 0.67.2)
- React-runtimeexecutor (0.67.2):
- React-jsi (= 0.67.2)
- ReactCommon/turbomodule/core (0.67.2):
- DoubleConversion
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-callinvoker (= 0.66.1)
- React-Core (= 0.66.1)
- React-cxxreact (= 0.66.1)
- React-jsi (= 0.66.1)
- React-logger (= 0.66.1)
- React-perflogger (= 0.66.1)
- React-callinvoker (= 0.67.2)
- React-Core (= 0.67.2)
- React-cxxreact (= 0.67.2)
- React-jsi (= 0.67.2)
- React-logger (= 0.67.2)
- React-perflogger (= 0.67.2)
- rn-fetch-blob (0.12.0):
- React-Core
- RNCClipboard (1.5.1):
- React-Core
- RNCPushNotificationIOS (1.10.1):
- React-Core
- RNDateTimePicker (6.5.4):
- RNDateTimePicker (6.7.0):
- React-Core
- RNFileViewer (2.1.5):
- React-Core
@@ -324,12 +324,12 @@ PODS:
- React-Core
- RNQuickAction (0.3.13):
- React
- RNSecureRandom (1.0.0):
- RNSecureRandom (1.0.1):
- React
- RNShare (7.9.1):
- RNShare (8.0.0):
- React-Core
- RNVectorIcons (9.2.0):
- React-Core
- RNVectorIcons (7.1.0):
- React
- Yoga (1.14.0)
DEPENDENCIES:
@@ -510,60 +510,60 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
boost: a7c83b31436843459a1961bfd74b96033dc77234
DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662
FBLazyVector: 500821d196c3d1bd10e7e828bc93ce075234080f
FBReactNativeSpec: 74c869e2cffa2ffec685cd1bac6788c021da6005
FBLazyVector: 244195e30d63d7f564c55da4410b9a24e8fbceaa
FBReactNativeSpec: c94002c1d93da3658f4d5119c6994d19961e3d52
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
glog: 5337263514dd6f09803962437687240c5dc39aa4
glog: 85ecdd10ee8d8ec362ef519a6a45ff9aa27b2e85
JoplinCommonShareExtension: 270b4f8eb4e22828eeda433a04ed689fc1fd09b5
JoplinRNShareExtension: cb790ce4c0692367acd1a06c56330c9a440f8b58
RCT-Folly: a21c126816d8025b547704b777a2ba552f3d9fa9
RCTRequired: 3cc065b52aa18db729268b9bd78a2feffb4d0f91
RCTTypeSafety: 3c4fc37d5dea452d2ef17324db5504ec2f05083a
React: 4a00720816c52a213424442954acb7e4b724804a
React-callinvoker: 911fc6570538f3bb5c61edf9dc907c1beb4355bf
React-Core: e134d3a5d7b2a1a731589be776e20dbb14868f27
React-CoreModules: 2f8588b2aa47e7fef27125c8eaaabda963b3ac62
React-cxxreact: 8f1382538cad0cc8b8eafca6d66268828e353bea
React-jsi: 9fe1854d2c0486216acebd5db3c38b4ccb23ca0b
React-jsiexecutor: db2f6e22a534d466fc0e34e622df47d9d20bab2f
React-jsinspector: 8c0517dee5e8c70cd6c3066f20213ff7ce54f176
React-logger: bfddd3418dc1d45b77b822958f3e31422e2c179b
react-native-alarm-notification: 4817a2a0d7cc2ed2acc97337ebcdf9ae2a69c9d5
react-native-camera: b8cc03e2feec0c04403d0998e37cf519d8fd4c6f
react-native-document-picker: 20f652c2402d3ddc81f396d8167c3bd978add4a2
react-native-geolocation: 2b4052c14edff18ba402795f4ce0f2a093c4ba3e
JoplinRNShareExtension: 9cd07431e525b36344fcecfaeecff974efc78528
RCT-Folly: 803a9cfd78114b2ec0f140cfa6fa2a6bafb2d685
RCTRequired: cd47794163052d2b8318c891a7a14fcfaccc75ab
RCTTypeSafety: 393bb40b3e357b224cde53d3fec26813c52428b1
React: dec6476bc27155b250eeadfc11ea779265f53ebf
React-callinvoker: e5047929e80aea942e6fdd96482504ef0189ca63
React-Core: e382655566b2b9a6e3b4f641d777b7bfdbe52358
React-CoreModules: cf262e82fa101c0aee022b6f90d1a5b612038b64
React-cxxreact: 69d53de3b30c7c161ba087ca1ecdffed9ccb1039
React-jsi: ce9a2d804adf75809ce2fe2374ba3fbbf5d59b03
React-jsiexecutor: 52beb652bbc61201bd70cbe4f0b8edb607e8da4f
React-jsinspector: 595f76eba2176ebd8817a1fffd47b84fbdab9383
React-logger: 23de8ea0f44fa00ee77e96060273225607fd4d78
react-native-alarm-notification: 88c751922c791cc628bd7efb09bff18c8f178a5d
react-native-camera: 3eae183c1d111103963f3dd913b65d01aef8110f
react-native-document-picker: f5ec1a712ca2a975c233117f044817bb8393cad4
react-native-geolocation: 69f4fd37650b8e7fee91816d395e62dd16f5ab8d
react-native-get-random-values: a6ea6a8a65dc93e96e24a11105b1a9c8cfe1d72a
react-native-image-picker: 4bc9ed38c8be255b515d8c88babbaf74973f91a8
react-native-image-picker: f2ab1215d17bcfe27b0eb6417cc236fd1f4775e7
react-native-image-resizer: d9fb629a867335bdc13230ac2a58702bb8c8828f
react-native-netinfo: f80db8cac2151405633324cb645c60af098ee461
react-native-rsa-native: 12132eb627797529fdb1f0d22fd0f8f9678df64a
react-native-slider: 7d19220da2f2ae7cbb9aa80127cb73c597fa221f
react-native-sqlite-storage: 418ef4afc5e6df6ce3574c4617e5f0b65cffde55
react-native-sqlite-storage: f6d515e1c446d1e6d026aa5352908a25d4de3261
react-native-version-info: a106f23009ac0db4ee00de39574eb546682579b9
react-native-webview: 0aa2cde4ee7e3e1c5fffdf64dbce9c709aa18155
React-perflogger: fcac6090a80e3d967791b4c7f1b1a017f9d4a398
React-RCTActionSheet: caf5913d9f9e605f5467206cf9d1caa6d47d7ad6
React-RCTAnimation: 6539e3bf594f6a529cd861985ba6548286ae1ead
React-RCTBlob: 6e2e999d28b15fd03ed533f164ce33e0fcde571a
React-RCTImage: c6bbb10eedb6b840c4474f2108b864173b83de15
React-RCTLinking: 8fda9bb8fdb104e78110a903a9a77754318c7d11
React-RCTNetwork: 2b26daad93830501cf14aab03eac04e304f942d3
React-RCTSettings: 89c0dcee7adb706c749383596f57c1e882a27843
React-RCTText: 71734fce8e6cb854daeb4a5eec182c303ea58473
React-RCTVibration: 6600b5eed7c0fda4a433fa1198d1cb2690151791
React-runtimeexecutor: 33a949a51bec5f8a3c9e8d8092deb259600d761e
ReactCommon: 620442811dc6f707b4bf5e3b27d4f19c12d5a821
react-native-webview: d33e2db8925d090871ffeb232dfa50cb3a727581
React-perflogger: 3c9bb7372493e49036f07a82c44c8cf65cbe88db
React-RCTActionSheet: 052606483045a408693aa7e864410b4a052f541a
React-RCTAnimation: 08d4cac13222bb1348c687a0158dfd3b577cdb63
React-RCTBlob: 928ad1df65219c3d9e2ac80983b943a75b5c3629
React-RCTImage: 524d7313b142a39ee0e20fa312b67277917fe076
React-RCTLinking: 44036ea6f13a2e46238be07a67566247fee35244
React-RCTNetwork: 9b6faacf1e0789253e319ca53b1f8d92c2ac5455
React-RCTSettings: ecd8094f831130a49581d5112a8607220e5d12a5
React-RCTText: 14ba976fb48ed283cfdb1a754a5d4276471e0152
React-RCTVibration: 99c7f67fba7a5ade46e98e870c6ff2444484f995
React-runtimeexecutor: 2450b43df7ffe8e805a0b3dcb2abd4282f1f1836
ReactCommon: d98c6c96b567f9b3a15f9fd4cc302c1eda8e3cf2
rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba
RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495
RNCPushNotificationIOS: 87b8d16d3ede4532745e05b03c42cff33a36cc45
RNDateTimePicker: 93b9659fbd0fd91a4fb568bf8f5c00b0175aa1ba
RNDateTimePicker: c6b404647f45472443b0fdcdd31296fc3516b0eb
RNFileViewer: ce7ca3ac370e18554d35d6355cffd7c30437c592
RNFS: 4ac0f0ea233904cb798630b3c077808c06931688
RNQuickAction: 6d404a869dc872cde841ad3147416a670d13fa93
RNSecureRandom: 0dcee021fdb3d50cd5cee5db0ebf583c42f5af0e
RNShare: a5dc3b9c53ddc73e155b8cd9a94c70c91913c43c
RNVectorIcons: bc69e6a278b14842063605de32bec61f0b251a59
Yoga: 2b4a01651f42a32f82e6cef3830a3ba48088237f
RNSecureRandom: 07efbdf2cd99efe13497433668e54acd7df49fef
RNShare: 36aa3e6958373a0ad1c95a1c960adef589da3794
RNVectorIcons: fcc2f6cb32f5735b586e66d14103a74ce6ad61f8
Yoga: 9b6696970c3289e8dea34b3eda93f23e61fb8121
PODFILE CHECKSUM: 3503e0565874e79261edc56dcddb35b3a49a2984

View File

@@ -9,6 +9,6 @@ Pod::Spec.new do |spec|
spec.platform = :ios, "9.0"
spec.source = { :path => "." }
spec.source_files = "Source/RNShareExtension/**/*.{h,m}"
spec.dependency "React", "0.66.1"
spec.dependency "React"
spec.dependency "JoplinCommonShareExtension"
end

View File

@@ -22,7 +22,7 @@
"@joplin/react-native-saf-x": "~2.9",
"@joplin/renderer": "~2.9",
"@react-native-community/clipboard": "1.5.1",
"@react-native-community/datetimepicker": "6.5.5",
"@react-native-community/datetimepicker": "6.7.0",
"@react-native-community/geolocation": "2.1.0",
"@react-native-community/netinfo": "9.3.6",
"@react-native-community/push-notification-ios": "1.10.1",
@@ -32,80 +32,80 @@
"constants-browserify": "1.0.0",
"crypto-browserify": "3.12.0",
"events": "3.3.0",
"joplin-rn-alarm-notification": "1.0.5",
"joplin-rn-alarm-notification": "1.0.6",
"jsc-android": "241213.1.0",
"md5": "2.3.0",
"prop-types": "15.8.1",
"punycode": "2.1.1",
"react": "17.0.2",
"react": "18.2.0",
"react-native": "0.67.2",
"react-native-action-button": "2.8.5",
"react-native-camera": "3.44.3",
"react-native-camera": "4.2.1",
"react-native-dialogbox": "0.6.10",
"react-native-document-picker": "4.3.0",
"react-native-dropdownalert": "3.11.0",
"react-native-document-picker": "8.1.2",
"react-native-dropdownalert": "4.5.1",
"react-native-file-viewer": "2.1.5",
"react-native-fs": "2.20.0",
"react-native-get-random-values": "1.8.0",
"react-native-image-picker": "4.10.0",
"react-native-image-picker": "4.10.1",
"react-native-image-resizer": "1.4.5",
"react-native-modal-datetime-picker": "9.2.3",
"react-native-modal-datetime-picker": "14.0.0",
"react-native-popup-menu": "0.16.1",
"react-native-quick-actions": "0.3.13",
"react-native-rsa-native": "2.0.5",
"react-native-securerandom": "1.0.1",
"react-native-share": "7.9.1",
"react-native-share": "8.0.0",
"react-native-side-menu-updated": "1.3.2",
"react-native-sqlite-storage": "5.0.0",
"react-native-sqlite-storage": "6.0.1",
"react-native-url-polyfill": "1.3.0",
"react-native-vector-icons": "7.1.0",
"react-native-vector-icons": "9.2.0",
"react-native-version-info": "1.1.1",
"react-native-webview": "11.23.1",
"react-redux": "5.1.2",
"redux": "4.0.0",
"react-redux": "8.0.5",
"redux": "4.2.0",
"rn-fetch-blob": "0.12.0",
"stream": "0.0.2",
"stream-browserify": "3.0.0",
"string-natural-compare": "2.0.3",
"string-natural-compare": "3.0.1",
"timers": "0.1.1",
"url": "0.11.0"
},
"devDependencies": {
"@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",
"@codemirror/commands": "6.1.2",
"@codemirror/lang-cpp": "6.0.2",
"@codemirror/lang-html": "6.1.3",
"@codemirror/lang-java": "6.0.1",
"@codemirror/lang-javascript": "6.1.1",
"@codemirror/lang-markdown": "6.0.5",
"@codemirror/lang-php": "6.0.1",
"@codemirror/lang-rust": "6.0.1",
"@codemirror/language": "6.3.0",
"@codemirror/legacy-modes": "6.2.0",
"@codemirror/search": "6.2.2",
"@codemirror/state": "6.1.3",
"@codemirror/view": "6.4.2",
"@joplin/tools": "~2.9",
"@lezer/highlight": "1.1.2",
"@types/fs-extra": "9.0.13",
"@types/jest": "28.1.8",
"@types/jest": "29.2.3",
"@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",
"fs-extra": "10.1.0",
"gulp": "4.0.2",
"jest": "28.1.3",
"jest-environment-jsdom": "28.1.3",
"jetifier": "1.6.8",
"jest": "29.3.1",
"jest-environment-jsdom": "29.3.1",
"jetifier": "2.0.0",
"jsdom": "20.0.0",
"metro-react-native-babel-preset": "0.66.2",
"nodemon": "2.0.20",
"ts-jest": "28.0.8",
"ts-jest": "29.0.3",
"ts-loader": "9.4.1",
"ts-node": "10.9.1",
"typescript": "4.7.4",
"typescript": "4.9.3",
"uglify-js": "3.17.4",
"webpack": "5.74.0"
}

View File

@@ -41,21 +41,21 @@
"dependencies": {
"domelementtype": "2.3.0",
"domhandler": "3.3.0",
"domutils": "2.8.0",
"domutils": "3.0.1",
"entities": "2.2.0"
},
"devDependencies": {
"@types/jest": "25.2.3",
"@types/jest": "29.2.3",
"@types/node": "18.11.9",
"@typescript-eslint/eslint-plugin": "1.13.0",
"@typescript-eslint/parser": "1.13.0",
"@typescript-eslint/eslint-plugin": "5.43.0",
"@typescript-eslint/parser": "5.43.0",
"coveralls": "3.1.1",
"eslint": "8.27.0",
"eslint-config-prettier": "6.15.0",
"jest": "26.6.3",
"prettier": "1.19.1",
"ts-jest": "24.3.0",
"typescript": "3.9.10"
"eslint": "8.28.0",
"eslint-config-prettier": "8.5.0",
"jest": "29.3.1",
"prettier": "2.7.1",
"ts-jest": "29.0.3",
"typescript": "4.9.3"
},
"jest": {
"preset": "ts-jest",

View File

@@ -15,8 +15,8 @@
"README.md"
],
"devDependencies": {
"standard": "8.6.0",
"tap": "10.7.3"
"standard": "17.0.0",
"tap": "16.3.2"
},
"gitHead": "eb4b0e64eab40a51b0895d3a40a9d8c3cb7b1b14"
}

View File

@@ -12,6 +12,7 @@ module.exports = class extends Generator {
this.option('silent');
this.option('update');
this.option('nodePackageManager', 'npm');
if (this.options.update) {
// When updating, overwrite files without prompting
@@ -174,11 +175,4 @@ module.exports = class extends Generator {
);
}
install() {
this.installDependencies({
npm: true,
bower: false,
yarn: false,
});
}
};

View File

@@ -1,6 +1,6 @@
{
"name": "generator-joplin",
"version": "2.9.0",
"version": "2.9.1",
"description": "Scaffolds out a new Joplin plugin",
"homepage": "https://github.com/laurent22/joplin/tree/dev/packages/generator-joplin",
"author": {
@@ -25,11 +25,11 @@
"dependencies": {
"chalk": "2.4.2",
"slugify": "1.6.5",
"yeoman-generator": "2.0.5",
"yeoman-generator": "5.7.0",
"yosay": "2.0.2"
},
"devDependencies": {
"jest": "26.6.3"
"jest": "29.3.1"
},
"repository": "https://github.com/laurent22/generator-joplin",
"license": "MIT",

View File

@@ -17,7 +17,7 @@
"@joplin/fork-htmlparser2": "^4.1.41",
"css": "3.0.0",
"datauri": "4.1.0",
"fs-extra": "10.0.0",
"fs-extra": "10.1.0",
"html-entities": "1.4.0"
},
"devDependencies": {

View File

@@ -2,9 +2,7 @@ const ArrayUtils = require('./ArrayUtils');
describe('ArrayUtils', function() {
beforeEach(async (done) => {
done();
});
it('should remove array elements', (async () => {
let a = ['un', 'deux', 'trois'];

View File

@@ -5,9 +5,7 @@ const StringUtils = require('./string-utils');
describe('StringUtils', function() {
beforeEach(async (done) => {
done();
});
it('should surround keywords with strings', (async () => {
const testCases = [

View File

@@ -3,10 +3,9 @@ const TaskQueue = require('./TaskQueue').default;
describe('TaskQueue', function() {
beforeEach(async (done) => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
done();
});
it('should queue and execute tasks', (async () => {

View File

@@ -3,7 +3,7 @@ const SyncTargetRegistry = require('../../SyncTargetRegistry').default;
const ObjectUtils = require('../../ObjectUtils');
const { _ } = require('../../locale');
const { createSelector } = require('reselect');
const Logger = require('@joplin/lib/Logger').default;
const Logger = require('../../Logger').default;
const logger = Logger.create('config/lib');

View File

@@ -2,10 +2,9 @@ const { setupDatabaseAndSynchronizer, switchClient } = require('./testing/test-u
const BaseModel = require('./BaseModel').default;
describe('database', function() {
beforeEach(async (done) => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
done();
});
it('should not modify cached field names', (async () => {

View File

@@ -6,14 +6,12 @@ const eventManager = require('./eventManager').default;
describe('eventManager', function() {
beforeEach(async (done) => {
beforeEach(async () => {
eventManager.reset();
done();
});
afterEach(async (done) => {
afterEach(async () => {
eventManager.reset();
done();
});
it('should watch state props', (async () => {

View File

@@ -2,11 +2,10 @@ import { afterAllCleanUp, setupDatabaseAndSynchronizer, switchClient, fileApi }
describe('file-api-driver', function() {
beforeEach(async (done) => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
await fileApi().clearRoot();
done();
});
afterAll(async () => {

View File

@@ -1,7 +1,7 @@
import { resolve as nodeResolve } from 'path';
import FsDriverBase, { Stat } from './fs-driver-base';
import time from './time';
const md5File = require('md5-file/promise');
const md5File = require('md5-file');
const fs = require('fs-extra');
export default class FsDriverNode extends FsDriverBase {

View File

@@ -2,9 +2,7 @@ import htmlUtils from './htmlUtils';
describe('htmlUtils', function() {
beforeEach(async (done) => {
done();
});
it('should extract image URLs', (async () => {
const testCases = [

View File

@@ -59,10 +59,9 @@ const compareOutputToExpected = (options) => {
};
describe('EnexToHtml', function() {
beforeEach(async (done) => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
done();
});
compareOutputToExpected({

View File

@@ -15,10 +15,9 @@ const enexSampleBaseDir = `${supportDir}/../enex_to_md`;
describe('import-enex-md-gen', function() {
beforeEach(async (done) => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
done();
});
it('should convert ENEX content to Markdown', async () => {

View File

@@ -82,19 +82,6 @@ async function decodeBase64File(sourceFilePath: string, destFilePath: string) {
});
}
async function md5FileAsync(filePath: string): Promise<string> {
return new Promise((resolve, reject) => {
md5File(filePath, (error: any, hash: string) => {
if (error) {
reject(error);
return;
}
resolve(hash);
});
});
}
function removeUndefinedProperties(note: NoteEntity) {
const output: any = {};
for (const n in note) {
@@ -184,7 +171,7 @@ async function processNoteResource(resource: ExtractedResource) {
// If no resource ID is present, the resource ID is actually the MD5 of the data.
// This ID will match the "hash" attribute of the corresponding <en-media> tag.
// resourceId = md5(decodedData);
resource.id = await md5FileAsync(resource.dataFilePath);
resource.id = await md5File(resource.dataFilePath);
}
if (!resource.id || !resource.size) {

View File

@@ -4,9 +4,7 @@ import markdownUtils from './markdownUtils';
describe('markdownUtils', function() {
beforeEach(async (done) => {
done();
});
it('should prepend a base URL', (async () => {
const baseUrl = 'https://test.com/site';

View File

@@ -2,9 +2,7 @@ const mimeUtils = require('./mime-utils.js').mime;
describe('mimeUils', function() {
beforeEach(async (done) => {
done();
});
it('should get the file extension from the mime type', (async () => {
expect(mimeUtils.toFileExtension('image/jpeg')).toBe('jpg');

View File

@@ -4,10 +4,9 @@ const Note = require('../models/Note').default;
describe('models/BaseItem', function() {
beforeEach(async (done) => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
done();
});
// This is to handle the case where a property is removed from a BaseItem table - in that case files in

Some files were not shown because too many files have changed in this diff Show More