From 0d0464549fba70f7ecfd3b16e460a369c17c643b Mon Sep 17 00:00:00 2001 From: zadam Date: Wed, 13 Mar 2019 22:43:59 +0100 Subject: [PATCH] notes are now created with correct local dates --- db/migrations/0129__rename_dates_to_utc.sql | 4 +- electron.js | 2 +- package-lock.json | 596 +++++++++++++------- package.json | 12 +- src/entities/api_token.js | 2 +- src/entities/attribute.js | 4 +- src/entities/branch.js | 4 +- src/entities/link.js | 4 +- src/entities/note.js | 11 +- src/entities/note_content.js | 4 +- src/entities/note_revision.js | 4 +- src/entities/option.js | 2 +- src/entities/recent_note.js | 2 +- src/public/libraries/dayjs.min.js | 1 + src/services/backend_script_api.js | 4 +- src/services/backup.js | 2 +- src/services/date_notes.js | 2 +- src/services/date_utils.js | 23 +- src/services/event_log.js | 2 +- src/services/migration.js | 3 +- src/services/notes.js | 10 +- src/services/options_init.js | 6 +- src/services/source_id.js | 2 +- src/services/sync.js | 2 +- src/services/sync_table.js | 4 +- src/views/desktop.ejs | 2 + src/views/dialogs/sql_console.ejs | 10 +- src/views/mobile.ejs | 8 +- 28 files changed, 482 insertions(+), 250 deletions(-) create mode 100644 src/public/libraries/dayjs.min.js diff --git a/db/migrations/0129__rename_dates_to_utc.sql b/db/migrations/0129__rename_dates_to_utc.sql index 47bb6a0cc..05dca0df5 100644 --- a/db/migrations/0129__rename_dates_to_utc.sql +++ b/db/migrations/0129__rename_dates_to_utc.sql @@ -39,7 +39,7 @@ CREATE TABLE IF NOT EXISTS "note_revisions_mig" ( hash TEXT DEFAULT "" NOT NULL); INSERT INTO note_revisions_mig (noteRevisionId, noteId, title, content, isProtected, utcDateModifiedFrom, utcDateModifiedTo, dateModifiedFrom, dateModifiedTo, type, mime, hash) -SELECT noteRevisionId, noteId, title, content, isProtected, REPLACE(dateModifiedFrom, 'T', ' '), REPLACE(dateModifiedTo, 'T', ' '), REPLACE(REPLACE(dateModifiedFrom, 'T', ' '), 'Z', '+00:00'), REPLACE(REPLACE(dateModifiedTo, 'T', ' '), 'Z', '+00:00'), type, mime, hash FROM note_revisions; +SELECT noteRevisionId, noteId, title, content, isProtected, REPLACE(dateModifiedFrom, 'T', ' '), REPLACE(dateModifiedTo, 'T', ' '), REPLACE(REPLACE(dateModifiedFrom, 'T', ' '), 'Z', '+0000'), REPLACE(REPLACE(dateModifiedTo, 'T', ' '), 'Z', '+0000'), type, mime, hash FROM note_revisions; DROP TABLE note_revisions; ALTER TABLE note_revisions_mig RENAME TO note_revisions; @@ -192,7 +192,7 @@ CREATE TABLE IF NOT EXISTS "notes_mig" ( ); INSERT INTO notes_mig (noteId, title, isProtected, type, mime, hash, isDeleted, dateCreated, dateModified, utcDateCreated, utcDateModified) - SELECT noteId, title, isProtected, type, mime, hash, isDeleted, REPLACE(REPLACE(dateCreated, 'T', ' '), 'Z', '+00:00'), REPLACE(REPLACE(dateModified, 'T', ' '), 'Z', '+00:00'), REPLACE(dateCreated, 'T', ' '), REPLACE(dateModified, 'T', ' ') FROM notes; + SELECT noteId, title, isProtected, type, mime, hash, isDeleted, REPLACE(REPLACE(dateCreated, 'T', ' '), 'Z', '+0000'), REPLACE(REPLACE(dateModified, 'T', ' '), 'Z', '+0000'), REPLACE(dateCreated, 'T', ' '), REPLACE(dateModified, 'T', ' ') FROM notes; DROP TABLE notes; ALTER TABLE notes_mig RENAME TO notes; diff --git a/electron.js b/electron.js index 94b8786d8..722881a6f 100644 --- a/electron.js +++ b/electron.js @@ -91,7 +91,7 @@ app.on('ready', async () => { const dateNoteService = require('./src/services/date_notes'); const dateUtils = require('./src/services/date_utils'); - const parentNote = await dateNoteService.getDateNote(dateUtils.nowLocalDate()); + const parentNote = await dateNoteService.getDateNote(dateUtils.localNowDate()); // window may be hidden / not in focus mainWindow.focus(); diff --git a/package-lock.json b/package-lock.json index 5cc899145..2376dd89e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -508,9 +508,9 @@ } }, "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", + "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", "dev": true }, "ansi-align": { @@ -590,38 +590,38 @@ "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" }, "app-builder-bin": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-2.6.3.tgz", - "integrity": "sha512-JL8C41e6yGIchFsHP/q15aGNedAaUakLhkV6ER0Yxafx08sRnlDnlkAkEIKjX7edg/4i7swpGa6CBv1zX9GgCA==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-2.6.4.tgz", + "integrity": "sha512-wC9HYqiC1XqpunT/9y2VuF90KbarnIHL90Tv8BD3TITTgbVIdRTXAsvWvmaR/ImvAX0+l5Z3jZtXjdJ7Pw3bLQ==", "dev": true }, "app-builder-lib": { - "version": "20.38.5", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-20.38.5.tgz", - "integrity": "sha512-vVgM9d9twwlhr+8vNAJOAD9dyVBRk7reuVa1BE1OmvaHb1M+fS8KpvcDKVdBqX9KDHy7zSc57mnIcHgax4/XMA==", + "version": "20.39.0", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-20.39.0.tgz", + "integrity": "sha512-lkxGyBrQwueYb3ViqHt5WjyzVVBQqXMXc7TF+JqkuuUWp5DF7SXAYZYd+rsR3gmCbdNxw4SPIEmWmm+I9LK2gw==", "dev": true, "requires": { "7zip-bin": "~4.1.0", - "app-builder-bin": "2.6.3", + "app-builder-bin": "2.6.4", "async-exit-hook": "^2.0.1", - "bluebird-lst": "^1.0.6", - "builder-util": "9.6.2", - "builder-util-runtime": "8.1.1", + "bluebird-lst": "^1.0.7", + "builder-util": "9.7.0", + "builder-util-runtime": "8.2.0", "chromium-pickle-js": "^0.2.0", "debug": "^4.1.1", "ejs": "^2.6.1", "electron-osx-sign": "0.4.11", - "electron-publish": "20.38.5", - "fs-extra-p": "^7.0.0", + "electron-publish": "20.39.0", + "fs-extra-p": "^7.0.1", "hosted-git-info": "^2.7.1", "is-ci": "^2.0.0", "isbinaryfile": "^4.0.0", "js-yaml": "^3.12.1", - "lazy-val": "^1.0.3", + "lazy-val": "^1.0.4", "minimatch": "^3.0.4", - "normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", "plist": "^3.0.1", - "read-config-file": "3.2.1", + "read-config-file": "3.2.2", "sanitize-filename": "^1.6.1", "semver": "^5.6.0", "temp-file": "^3.3.2" @@ -633,12 +633,6 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, "is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -648,20 +642,25 @@ "ci-info": "^2.0.0" } }, - "isbinaryfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.0.tgz", - "integrity": "sha512-RBtmso6l2mCaEsUvXngMTIjg3oheXo0MgYzzfT6sk44RYggPnm9fT+cQJAmzRnJIxPHXg9FZglqDJGW28dvcqA==", - "dev": true - }, - "js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" } } } @@ -1070,12 +1069,20 @@ "dev": true }, "bluebird-lst": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.6.tgz", - "integrity": "sha512-CBWFoPuUPpcvMUxfyr8DKdI5d4kjxFl1h39+VbKxP3KJWJHEsLtuT4pPLkjpxCGU6Ask21tvbnftWXdqIxYldQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.7.tgz", + "integrity": "sha512-5ix04IbXVIZ6nSRM4aZnwQfk40Td0D57WAl8LfhnICF6XwT4efCZYh0veOHvfDmgpbqE4ju5L5XEAMIcAe13Kw==", "dev": true, "requires": { - "bluebird": "^3.5.2" + "bluebird": "^3.5.3" + }, + "dependencies": { + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "dev": true + } } }, "bmp-js": { @@ -1319,18 +1326,18 @@ } }, "builder-util": { - "version": "9.6.2", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-9.6.2.tgz", - "integrity": "sha512-cWl/0/Q851lesMmXp1IjreeAX1QAWA9e+iU2IT61oh+CvMYJnDwao2m9ZCHammdw2zllrwWu4fOC3gvsb/yOCw==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-9.7.0.tgz", + "integrity": "sha512-QA2RxbaSKvaFVNGcYsjmlkTn03tcdPxgIxHCOgw38G7NK91QWc76RBY9+T1sU8BLVEZJ4qNRWx+pd5rG9tTi+Q==", "dev": true, "requires": { "7zip-bin": "~4.1.0", - "app-builder-bin": "2.6.3", - "bluebird-lst": "^1.0.6", - "builder-util-runtime": "^8.1.1", + "app-builder-bin": "2.6.4", + "bluebird-lst": "^1.0.7", + "builder-util-runtime": "^8.2.0", "chalk": "^2.4.2", "debug": "^4.1.1", - "fs-extra-p": "^7.0.0", + "fs-extra-p": "^7.0.1", "is-ci": "^2.0.0", "js-yaml": "^3.12.1", "source-map-support": "^0.5.10", @@ -1364,12 +1371,6 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, "is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -1379,16 +1380,6 @@ "ci-info": "^2.0.0" } }, - "js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -1401,14 +1392,14 @@ } }, "builder-util-runtime": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.1.1.tgz", - "integrity": "sha512-+ieS4PMB33vVE2S3ZNWBEQJ1zKmAs/agrBdh7XadE1lKLjrH4aXYuOh9OOGdxqIRldhlhNBaF+yKMMEFOdNVig==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.2.0.tgz", + "integrity": "sha512-2Q3YrxANTrDs2NjSG5mbNGLPuUhPnSNYF9w5i4jWfHcNfQ3TgRrGXq4UfnkCiZVX8Axp4eAOSscaLLScKp/XLg==", "dev": true, "requires": { - "bluebird-lst": "^1.0.6", + "bluebird-lst": "^1.0.7", "debug": "^4.1.1", - "fs-extra-p": "^7.0.0", + "fs-extra-p": "^7.0.1", "sax": "^1.2.4" } }, @@ -2501,27 +2492,21 @@ } }, "dmg-builder": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-6.5.4.tgz", - "integrity": "sha512-EaEkF8weXez3iAwgYffjcYfumauUh5x+BggMgn/IuihNIA5/WfzRAUR4wMq9aII2zwArlw+rIrX6ZHKbmtkQmA==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-6.6.0.tgz", + "integrity": "sha512-voodd3qdpdRiaciFZTfrFq/e82UPmUqSJq6R3Wc2Ql6XqXYLQcKo1h9rSZiivwls8PqE4Mk1IHTIOwmvJaq+MA==", "dev": true, "requires": { - "app-builder-lib": "~20.38.5", - "bluebird-lst": "^1.0.6", - "builder-util": "~9.6.2", - "fs-extra-p": "^7.0.0", + "app-builder-lib": "~20.39.0", + "bluebird-lst": "^1.0.7", + "builder-util": "~9.7.0", + "fs-extra-p": "^7.0.1", "iconv-lite": "^0.4.24", "js-yaml": "^3.12.1", "parse-color": "^1.0.0", "sanitize-filename": "^1.6.1" }, "dependencies": { - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -2530,16 +2515,6 @@ "requires": { "safer-buffer": ">= 2.1.2 < 3" } - }, - "js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } } } }, @@ -2720,26 +2695,32 @@ } }, "electron-builder": { - "version": "20.38.5", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.38.5.tgz", - "integrity": "sha512-p88IDHhH2J4hA6KwRBJY+OfVZuFtFIShY3Uh/TwYAfbX0v1RhKZytuGdO8sty2zcWxDYX74xDBv+X9oN6qEIRQ==", + "version": "20.39.0", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.39.0.tgz", + "integrity": "sha512-50SNZ/G+iE9MpTwxzeHt1Cqg8jZKeFLuJ9wubR4e/8VIzAe0ERUmwAQw+77UrlwXZD/PKKoYblc0Sr08Vm4exg==", "dev": true, "requires": { - "app-builder-lib": "20.38.5", - "bluebird-lst": "^1.0.6", - "builder-util": "9.6.2", - "builder-util-runtime": "8.1.1", + "app-builder-lib": "20.39.0", + "bluebird-lst": "^1.0.7", + "builder-util": "9.7.0", + "builder-util-runtime": "8.2.0", "chalk": "^2.4.2", - "dmg-builder": "6.5.4", - "fs-extra-p": "^7.0.0", + "dmg-builder": "6.6.0", + "fs-extra-p": "^7.0.1", "is-ci": "^2.0.0", - "lazy-val": "^1.0.3", - "read-config-file": "3.2.1", + "lazy-val": "^1.0.4", + "read-config-file": "3.2.2", "sanitize-filename": "^1.6.1", "update-notifier": "^2.5.0", - "yargs": "^12.0.5" + "yargs": "^13.2.1" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -2749,6 +2730,12 @@ "color-convert": "^1.9.0" } }, + "camelcase": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -2766,6 +2753,87 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + } + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, "is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -2775,6 +2843,109 @@ "ci-info": "^2.0.0" } }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.1.0.tgz", + "integrity": "sha512-TjxrkPONqO2Z8QDCpeE2j6n0M6EwxzyDgzEeGp+FbdvaJAt//ClYi6W5my+3ROlC/hZX2KACUwDfK49Ka5eDvg==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -2783,6 +2954,47 @@ "requires": { "has-flag": "^3.0.0" } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yargs": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz", + "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.0.0" + } + }, + "yargs-parser": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz", + "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, @@ -3041,13 +3253,22 @@ "requires": { "ms": "2.0.0" } + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } } } }, "electron-packager": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-13.1.0.tgz", - "integrity": "sha512-XHoDqgG90NGBfgUJ3NcOmELAuvHucOIYzi7AhZKIC8FivRR45PDs0pXSf53OqTXXOkdL/1xSveogvJLjKJwkAQ==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-13.1.1.tgz", + "integrity": "sha512-3Drgcw8OEOP3Psw/PprloAFJSkSUSQgjUq3AmWffJGB3Kj5WXmZl6A3GOUs8aT7bP/8GWg4oYqSiCSnA5PQkdQ==", "dev": true, "requires": { "asar": "^1.0.0", @@ -3070,9 +3291,9 @@ }, "dependencies": { "camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", "dev": true }, "pify": { @@ -3094,17 +3315,17 @@ } }, "electron-publish": { - "version": "20.38.5", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.38.5.tgz", - "integrity": "sha512-EhdPm6t0nKDfa0r3KjV1kSFcz03VrzgJRv7v5nHkkpQZB6OSmDNlHq7k66NBwQhPK3i4CK+uvehljZAP28vbCA==", + "version": "20.39.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.39.0.tgz", + "integrity": "sha512-PWrGUru994CSmtsA56GnjyLB3EnIS3zyEmrW0hDXtwuctZLGMnrxjK/7WEORYkgTQ/GufD5b/8T05Q2Kr42nqQ==", "dev": true, "requires": { - "bluebird-lst": "^1.0.6", - "builder-util": "~9.6.2", - "builder-util-runtime": "^8.1.1", + "bluebird-lst": "^1.0.7", + "builder-util": "~9.7.0", + "builder-util-runtime": "^8.2.0", "chalk": "^2.4.2", - "fs-extra-p": "^7.0.0", - "lazy-val": "^1.0.3", + "fs-extra-p": "^7.0.1", + "lazy-val": "^1.0.4", "mime": "^2.4.0" }, "dependencies": { @@ -3218,6 +3439,12 @@ "shimmer": "^1.2.0" } }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -4462,9 +4689,9 @@ } }, "file-type": { - "version": "10.8.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.8.0.tgz", - "integrity": "sha512-287YScp3cpRWzhM+/E+A85O4FJi4dHus0eA6eBUzkRc08d/JAwqeczU/nwLstRuzzq/S7TqvQg9mhv7xVsdINQ==" + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.9.0.tgz", + "integrity": "sha512-9C5qtGR/fNibHC5gzuMmmgnjH3QDDLKMa8lYe9CiZVmAnI4aUaoMh40QyUPzzs0RYo837SOBKh7TYwle4G8E4w==" }, "filename-regex": { "version": "2.0.1", @@ -4798,13 +5025,13 @@ } }, "fs-extra-p": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-7.0.0.tgz", - "integrity": "sha512-5tg5jBOd0xIXjwj4PDnafOXL5TyPVzjxLby4DPKev53wurEXp7IsojBaD4Lj5M5w7jxw0pbkEU0fFEPmcKoMnA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-7.0.1.tgz", + "integrity": "sha512-yhd2OV0HnHt2oitlp+X9hl2ReX4X/7kQeL7/72qzPHTZj5eUPGzAKOvEglU02Fa1OeG2rSy/aKB4WGVaLiF8tw==", "dev": true, "requires": { - "bluebird-lst": "^1.0.6", - "fs-extra": "^7.0.0" + "bluebird-lst": "^1.0.7", + "fs-extra": "^7.0.1" } }, "fs-minipass": { @@ -5550,9 +5777,9 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, "helmet": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.15.1.tgz", - "integrity": "sha512-hgoNe/sjKlKNvJ3g9Gz149H14BjMMWOCmW/DTXl7IfyKGtIK37GePwZrHNfr4aPXdKVyXcTj26RgRFbPKDy9lw==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.16.0.tgz", + "integrity": "sha512-rsTKRogc5OYGlvSHuq5QsmOsOzF6uDoMqpfh+Np8r23+QxDq+SUx90Rf8HyIKQVl7H6NswZEwfcykinbAeZ6UQ==", "requires": { "depd": "2.0.0", "dns-prefetch-control": "0.1.0", @@ -5564,8 +5791,8 @@ "helmet-csp": "2.7.1", "hide-powered-by": "1.0.0", "hpkp": "2.0.0", - "hsts": "2.1.0", - "ienoopen": "1.0.0", + "hsts": "2.2.0", + "ienoopen": "1.1.0", "nocache": "2.0.0", "referrer-policy": "1.1.0", "x-xss-protection": "1.1.0" @@ -5616,9 +5843,19 @@ "integrity": "sha1-EOFCJk52IVpdMMROxD3mTe5tFnI=" }, "hsts": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hsts/-/hsts-2.1.0.tgz", - "integrity": "sha512-zXhh/DqgrTXJ7erTN6Fh5k/xjMhDGXCqdYN3wvxUvGUQvnxcFfUd8E+6vLg/nk3ss1TYMb+DhRl25fYABioTvA==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hsts/-/hsts-2.2.0.tgz", + "integrity": "sha512-ToaTnQ2TbJkochoVcdXYm4HOCliNozlviNsg+X2XQLQvZNI/kCHR9rZxVYpJB3UPcHz80PgxRyWQ7PdU1r+VBQ==", + "requires": { + "depd": "2.0.0" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + } + } }, "html": { "version": "1.0.0", @@ -5717,9 +5954,9 @@ "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" }, "ienoopen": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ienoopen/-/ienoopen-1.0.0.tgz", - "integrity": "sha1-NGpCj0dKrI9QzzeE6i0PFvYr2ms=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ienoopen/-/ienoopen-1.1.0.tgz", + "integrity": "sha512-MFs36e/ca6ohEKtinTJ5VvAJ6oDRAYFdYXweUnGY9L9vcoqFOU4n2ZhmJ0C4z/cwGZ3YIQRSB3XZ1+ghZkY5NQ==" }, "ignore": { "version": "3.3.10", @@ -5735,18 +5972,11 @@ } }, "image-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/image-type/-/image-type-3.0.0.tgz", - "integrity": "sha1-FQKvMTX5BuEiyHfDHpSve3qRRsU=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-type/-/image-type-4.0.0.tgz", + "integrity": "sha512-V1NCIexmmA9dBoO07NOFXe2nTU06siLuuaGD1zLRbLfTYmGMLPShPakPf3ts6J0ctdpLpJRKFcJWKjuacwZzWA==", "requires": { - "file-type": "^4.1.0" - }, - "dependencies": { - "file-type": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", - "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=" - } + "file-type": "^10.9.0" } }, "imagemin": { @@ -6471,13 +6701,10 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isbinaryfile": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", - "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", - "dev": true, - "requires": { - "buffer-alloc": "^1.2.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.0.tgz", + "integrity": "sha512-RBtmso6l2mCaEsUvXngMTIjg3oheXo0MgYzzfT6sk44RYggPnm9fT+cQJAmzRnJIxPHXg9FZglqDJGW28dvcqA==", + "dev": true }, "isexe": { "version": "2.0.0", @@ -6709,9 +6936,9 @@ "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=" }, "lazy-val": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.3.tgz", - "integrity": "sha512-pjCf3BYk+uv3ZcPzEVM0BFvO9Uw58TmlrU0oG5tTrr9Kcid3+kdKxapH8CjdYmVa2nO5wOoZn2rdvZx2PKj/xg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.4.tgz", + "integrity": "sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q==", "dev": true }, "lazystream": { @@ -9749,26 +9976,26 @@ } }, "read-config-file": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-3.2.1.tgz", - "integrity": "sha512-yW4hZZXdNN+Paij5JVAiTv1lUsAN5QRBU5NqotQqwYdVkUczSmDzm66VLu0eojiZt2zFeYptTFDAYlalDGuHdA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-3.2.2.tgz", + "integrity": "sha512-PuFpMgZF01VB0ydH1dfitAxCP/fh+qnfbA9cYNIPoxPbz0SMngsrafCtaHDWfER7MwlDz4fmrNBhPkakxxFpTg==", "dev": true, "requires": { - "ajv": "^6.7.0", - "ajv-keywords": "^3.2.0", - "bluebird-lst": "^1.0.6", + "ajv": "^6.9.2", + "ajv-keywords": "^3.4.0", + "bluebird-lst": "^1.0.7", "dotenv": "^6.2.0", "dotenv-expand": "^4.2.0", - "fs-extra-p": "^7.0.0", + "fs-extra-p": "^7.0.1", "js-yaml": "^3.12.1", "json5": "^2.1.0", - "lazy-val": "^1.0.3" + "lazy-val": "^1.0.4" }, "dependencies": { "ajv": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz", - "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -9777,28 +10004,12 @@ "uri-js": "^4.2.2" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, - "js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -10668,9 +10879,9 @@ } }, "source-map-support": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", - "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz", + "integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -10977,11 +11188,6 @@ "escape-string-regexp": "^1.0.2" } }, - "striptags": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.1.1.tgz", - "integrity": "sha1-yMPn/db7S7OjKjt1LltePjgJPr0=" - }, "sum-up": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sum-up/-/sum-up-1.0.3.tgz", @@ -12142,9 +12348,9 @@ } }, "ws": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", - "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.0.tgz", + "integrity": "sha512-deZYUNlt2O4buFCa3t5bKLf8A7FPP/TVjwOeVNpw818Ma5nk4MLXls2eoEGS39o8119QIYxTrTDoPQ5B/gTD6w==", "requires": { "async-limiter": "~1.0.0" } diff --git a/package.json b/package.json index 40e89b216..e8f842129 100644 --- a/package.json +++ b/package.json @@ -36,13 +36,13 @@ "electron-window-state": "^5.0.3", "express": "4.16.4", "express-session": "1.15.6", - "file-type": "10.8.0", + "file-type": "10.9.0", "fs-extra": "7.0.1", "get-port": "4.2.0", - "helmet": "3.15.1", + "helmet": "3.16.0", "html": "1.0.0", "html2plaintext": "^2.1.2", - "image-type": "3.0.0", + "image-type": "4.0.0", "imagemin": "6.1.0", "imagemin-giflossy": "5.1.10", "imagemin-mozjpeg": "8.0.0", @@ -67,16 +67,16 @@ "tar-stream": "2.0.1", "turndown": "5.0.3", "unescape": "1.0.1", - "ws": "6.1.4", + "ws": "6.2.0", "xml2js": "0.4.19" }, "devDependencies": { "devtron": "1.4.0", "electron": "4.0.3", - "electron-builder": "20.38.5", + "electron-builder": "20.39.0", "electron-compile": "6.4.4", "electron-installer-debian": "^1.1.1", - "electron-packager": "13.1.0", + "electron-packager": "13.1.1", "electron-rebuild": "1.8.4", "lorem-ipsum": "1.0.6", "tape": "4.10.1", diff --git a/src/entities/api_token.js b/src/entities/api_token.js index 5b2b1b2cb..ff11f277f 100644 --- a/src/entities/api_token.js +++ b/src/entities/api_token.js @@ -24,7 +24,7 @@ class ApiToken extends Entity { } if (!this.utcDateCreated) { - this.utcDateCreated = dateUtils.nowDate(); + this.utcDateCreated = dateUtils.utcNowDateTime(); } super.beforeSaving(); diff --git a/src/entities/attribute.js b/src/entities/attribute.js index b03b8479c..c31e2ce09 100644 --- a/src/entities/attribute.js +++ b/src/entities/attribute.js @@ -96,13 +96,13 @@ class Attribute extends Entity { } if (!this.utcDateCreated) { - this.utcDateCreated = dateUtils.nowDate(); + this.utcDateCreated = dateUtils.utcNowDateTime(); } super.beforeSaving(); if (this.isChanged) { - this.utcDateModified = dateUtils.nowDate(); + this.utcDateModified = dateUtils.utcNowDateTime(); } } diff --git a/src/entities/branch.js b/src/entities/branch.js index c686182b1..deb2942e4 100644 --- a/src/entities/branch.js +++ b/src/entities/branch.js @@ -50,13 +50,13 @@ class Branch extends Entity { } if (!this.utcDateCreated) { - this.utcDateCreated = dateUtils.nowDate(); + this.utcDateCreated = dateUtils.utcNowDateTime(); } super.beforeSaving(); if (this.isChanged) { - this.utcDateModified = dateUtils.nowDate(); + this.utcDateModified = dateUtils.utcNowDateTime(); } } diff --git a/src/entities/link.js b/src/entities/link.js index 47b27355f..b9c832903 100644 --- a/src/entities/link.js +++ b/src/entities/link.js @@ -37,13 +37,13 @@ class Link extends Entity { } if (!this.utcDateCreated) { - this.utcDateCreated = dateUtils.nowDate(); + this.utcDateCreated = dateUtils.utcNowDateTime(); } super.beforeSaving(); if (this.isChanged) { - this.utcDateModified = dateUtils.nowDate(); + this.utcDateModified = dateUtils.utcNowDateTime(); } } } diff --git a/src/entities/note.js b/src/entities/note.js index 610127f91..2db352ec5 100644 --- a/src/entities/note.js +++ b/src/entities/note.js @@ -25,6 +25,8 @@ const STRING_MIME_TYPES = ["application/x-javascript"]; * @property {string} title - note title * @property {boolean} isProtected - true if note is protected * @property {boolean} isDeleted - true if note is deleted + * @property {string} dateCreated - local date time (with offset) + * @property {string} dateModified - local date time (with offset) * @property {string} utcDateCreated * @property {string} utcDateModified * @@ -660,14 +662,19 @@ class Note extends Entity { this.isDeleted = false; } + if (!this.dateCreated) { + this.dateCreated = dateUtils.localNowDateTime(); + } + if (!this.utcDateCreated) { - this.utcDateCreated = dateUtils.nowDate(); + this.utcDateCreated = dateUtils.utcNowDateTime(); } super.beforeSaving(); if (this.isChanged) { - this.utcDateModified = dateUtils.nowDate(); + this.dateModified = dateUtils.localNowDateTime(); + this.utcDateModified = dateUtils.utcNowDateTime(); } } diff --git a/src/entities/note_content.js b/src/entities/note_content.js index 8a2d02630..b2aab8625 100644 --- a/src/entities/note_content.js +++ b/src/entities/note_content.js @@ -67,13 +67,13 @@ class NoteContent extends Entity { beforeSaving() { if (!this.utcDateCreated) { - this.utcDateCreated = dateUtils.nowDate(); + this.utcDateCreated = dateUtils.utcNowDateTime(); } super.beforeSaving(); if (this.isChanged) { - this.utcDateModified = dateUtils.nowDate(); + this.utcDateModified = dateUtils.utcNowDateTime(); } } diff --git a/src/entities/note_revision.js b/src/entities/note_revision.js index 1904f0504..d73e16a3e 100644 --- a/src/entities/note_revision.js +++ b/src/entities/note_revision.js @@ -14,6 +14,8 @@ const repository = require('../services/repository'); * @param {string} title * @param {string} content * @param {string} isProtected + * @param {string} dateModifiedFrom + * @param {string} dateModifiedTo * @param {string} utcDateModifiedFrom * @param {string} utcDateModifiedTo * @@ -22,7 +24,7 @@ const repository = require('../services/repository'); class NoteRevision extends Entity { static get entityName() { return "note_revisions"; } static get primaryKeyName() { return "noteRevisionId"; } - static get hashedProperties() { return ["noteRevisionId", "noteId", "title", "content", "isProtected", "utcDateModifiedFrom", "utcDateModifiedTo"]; } + static get hashedProperties() { return ["noteRevisionId", "noteId", "title", "content", "isProtected", "dateModifiedFrom", "dateModifiedTo", "utcDateModifiedFrom", "utcDateModifiedTo"]; } constructor(row) { super(row); diff --git a/src/entities/option.js b/src/entities/option.js index b79294405..9f3842ffa 100644 --- a/src/entities/option.js +++ b/src/entities/option.js @@ -29,7 +29,7 @@ class Option extends Entity { super.beforeSaving(); if (this.isChanged) { - this.utcDateModified = dateUtils.nowDate(); + this.utcDateModified = dateUtils.utcNowDateTime(); } } } diff --git a/src/entities/recent_note.js b/src/entities/recent_note.js index d011a85ba..fd58894d4 100644 --- a/src/entities/recent_note.js +++ b/src/entities/recent_note.js @@ -24,7 +24,7 @@ class RecentNote extends Entity { } if (!this.utcDateCreated) { - this.utcDateCreated = dateUtils.nowDate(); + this.utcDateCreated = dateUtils.utcNowDateTime(); } super.beforeSaving(); diff --git a/src/public/libraries/dayjs.min.js b/src/public/libraries/dayjs.min.js new file mode 100644 index 000000000..148bca065 --- /dev/null +++ b/src/public/libraries/dayjs.min.js @@ -0,0 +1 @@ +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):t.dayjs=n()}(this,function(){"use strict";var t="millisecond",n="second",e="minute",r="hour",i="day",s="week",u="month",a="year",o=/^(\d{4})-?(\d{1,2})-?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/,h=/\[.*?\]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,f=function(t,n,e){var r=String(t);return!r||r.length>=n?t:""+Array(n+1-r.length).join(e)+t},c={padStart:f,padZoneStr:function(t){var n=Math.abs(t),e=Math.floor(n/60),r=n%60;return(t<=0?"+":"-")+f(e,2,"0")+":"+f(r,2,"0")},monthDiff:function(t,n){var e=12*(n.year()-t.year())+(n.month()-t.month()),r=t.clone().add(e,"months"),i=n-r<0,s=t.clone().add(e+(i?-1:1),"months");return Number(-(e+(n-r)/(i?r-s:s-r))||0)},absFloor:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},prettyUnit:function(o){return{M:u,y:a,w:s,d:i,h:r,m:e,s:n,ms:t}[o]||String(o||"").toLowerCase().replace(/s$/,"")},isUndefined:function(t){return void 0===t}},d={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},$="en",l={};l[$]=d;var m=function(t){return t instanceof D},y=function(t,n,e){var r;if(!t)return null;if("string"==typeof t)l[t]&&(r=t),n&&(l[t]=n,r=t);else{var i=t.name;l[i]=t,r=i}return e||($=r),r},M=function(t,n){if(m(t))return t.clone();var e=n?"string"==typeof n?{format:n}:n:{};return e.date=t,new D(e)},S=function(t,n){return M(t,{locale:n.$L})},p=c;p.parseLocale=y,p.isDayjs=m,p.wrapper=S;var D=function(){function f(t){this.parse(t)}var c=f.prototype;return c.parse=function(t){var n,e;this.$d=null===(n=t.date)?new Date(NaN):p.isUndefined(n)?new Date:n instanceof Date?n:"string"==typeof n&&/.*[^Z]$/i.test(n)&&(e=n.match(o))?new Date(e[1],e[2]-1,e[3]||1,e[4]||0,e[5]||0,e[6]||0,e[7]||0):new Date(n),this.init(t)},c.init=function(t){var n=this.$d;this.$y=n.getFullYear(),this.$M=n.getMonth(),this.$D=n.getDate(),this.$W=n.getDay(),this.$H=n.getHours(),this.$m=n.getMinutes(),this.$s=n.getSeconds(),this.$ms=n.getMilliseconds(),this.$L=this.$L||y(t.locale,null,!0)||$},c.$utils=function(){return p},c.isValid=function(){return!("Invalid Date"===this.$d.toString())},c.isSame=function(t,n){var e=M(t);return this.startOf(n)<=e&&e<=this.endOf(n)},c.isAfter=function(t,n){return M(t)-1?t.replace(/\[|\]/g,""):f[t]||r.replace(":","")})},c.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},c.diff=function(t,o,h){var f,c=p.prettyUnit(o),d=M(t),$=6e4*(d.utcOffset()-this.utcOffset()),l=this-d,m=p.monthDiff(this,d);return m=(f={},f[a]=m/12,f[u]=m,f.quarter=m/3,f[s]=(l-$)/6048e5,f[i]=(l-$)/864e5,f[r]=l/36e5,f[e]=l/6e4,f[n]=l/1e3,f)[c]||l,h?m:p.absFloor(m)},c.daysInMonth=function(){return this.endOf(u).$D},c.$locale=function(){return l[this.$L]},c.locale=function(t,n){var e=this.clone();return e.$L=y(t,n,!0),e},c.clone=function(){return S(this.toDate(),this)},c.toDate=function(){return new Date(this.$d)},c.toArray=function(){return[this.$y,this.$M,this.$D,this.$H,this.$m,this.$s,this.$ms]},c.toJSON=function(){return this.toISOString()},c.toISOString=function(){return this.$d.toISOString()},c.toObject=function(){return{years:this.$y,months:this.$M,date:this.$D,hours:this.$H,minutes:this.$m,seconds:this.$s,milliseconds:this.$ms}},c.toString=function(){return this.$d.toUTCString()},f}();return M.prototype=D.prototype,M.extend=function(t,n){return t(n,D,M),M},M.locale=y,M.isDayjs=m,M.unix=function(t){return M(1e3*t)},M.en=l[$],M}); diff --git a/src/services/backend_script_api.js b/src/services/backend_script_api.js index ab8bd00db..c5a997827 100644 --- a/src/services/backend_script_api.js +++ b/src/services/backend_script_api.js @@ -35,8 +35,8 @@ function BackendScriptApi(currentNote, apiParams) { this.utils = { unescapeHtml: utils.unescapeHtml, - isoDateTimeStr: dateUtils.dateStr, - isoDateStr: date => dateUtils.dateStr(date).substr(0, 10) + isoDateTimeStr: dateUtils.utcDateStr, + isoDateStr: date => dateUtils.utcDateStr(date).substr(0, 10) }; /** diff --git a/src/services/backup.js b/src/services/backup.js index 5b9831183..59ece88b0 100644 --- a/src/services/backup.js +++ b/src/services/backup.js @@ -24,7 +24,7 @@ async function periodBackup(optionName, fileName, periodInSeconds) { if (now.getTime() - lastDailyBackupDate.getTime() > periodInSeconds * 1000) { await backupNow(fileName); - await optionService.setOption(optionName, dateUtils.nowDate()); + await optionService.setOption(optionName, dateUtils.utcNowDateTime()); } } diff --git a/src/services/date_notes.js b/src/services/date_notes.js index ee45c7ca1..1ebb64a6a 100644 --- a/src/services/date_notes.js +++ b/src/services/date_notes.js @@ -144,7 +144,7 @@ async function getWeekNote(dateStr, options = {}) { const dateObj = getStartOfTheWeek(dateUtils.parseLocalDate(dateStr), startOfTheWeek); - dateStr = dateUtils.dateStr(dateObj); + dateStr = dateUtils.utcDateStr(dateObj); return getDateNote(dateStr); } diff --git a/src/services/date_utils.js b/src/services/date_utils.js index 521955c8a..1ea14a87c 100644 --- a/src/services/date_utils.js +++ b/src/services/date_utils.js @@ -1,8 +1,14 @@ -function nowDate() { - return dateStr(new Date()); +const dayjs = require('dayjs'); + +function utcNowDateTime() { + return utcDateStr(new Date()); } -function nowLocalDate() { +function localNowDateTime() { + return dayjs().format('YYYY-MM-DD HH:mm:ss.SSSZZ') +} + +function localNowDate() { const date = new Date(); return date.getFullYear() + "-" + pad(date.getMonth() + 1) + "-" + pad(date.getDate()); @@ -12,8 +18,8 @@ function pad(num) { return num <= 9 ? `0${num}` : `${num}`; } -function dateStr(date) { - return date.toISOString(); +function utcDateStr(date) { + return date.toISOString().replace('T', ' '); } /** @@ -47,9 +53,10 @@ function getDateTimeForFile() { } module.exports = { - nowDate, - nowLocalDate, - dateStr, + utcNowDateTime, + localNowDateTime, + localNowDate, + utcDateStr, parseDate, parseDateTime, parseLocalDate, diff --git a/src/services/event_log.js b/src/services/event_log.js index 36208ce97..ca691f17a 100644 --- a/src/services/event_log.js +++ b/src/services/event_log.js @@ -12,7 +12,7 @@ async function addNoteEvent(noteId, comment) { eventId: utils.newEntityId(), noteId : noteId, comment: comment, - utcDateCreated: dateUtils.nowDate() + utcDateCreated: dateUtils.utcNowDateTime() }); log.info("Event log for " + noteId + ": " + comment); diff --git a/src/services/migration.js b/src/services/migration.js index 7265010ce..2b93f0064 100644 --- a/src/services/migration.js +++ b/src/services/migration.js @@ -64,7 +64,8 @@ async function migrate() { throw new Error("Unknown migration type " + mig.type); } - await optionService.setOption("dbVersion", mig.dbVersion); + // not using repository because of changed utcDateModified column in migration 129 + await sql.execute(`UPDATE options SET value = ? WHERE name = ?`, [mig.dbVersion, "dbVersion"]); }); log.info("Migration to version " + mig.dbVersion + " has been successful."); diff --git a/src/services/notes.js b/src/services/notes.js index 1db96e3ce..00d732af0 100644 --- a/src/services/notes.js +++ b/src/services/notes.js @@ -299,7 +299,7 @@ async function saveNoteRevision(note) { const now = new Date(); const noteRevisionSnapshotTimeInterval = parseInt(await optionService.getOption('noteRevisionSnapshotTimeInterval')); - const revisionCutoff = dateUtils.dateStr(new Date(now.getTime() - noteRevisionSnapshotTimeInterval * 1000)); + const revisionCutoff = dateUtils.utcDateStr(new Date(now.getTime() - noteRevisionSnapshotTimeInterval * 1000)); const existingNoteRevisionId = await sql.getValue( "SELECT noteRevisionId FROM note_revisions WHERE noteId = ? AND utcDateModifiedTo >= ?", [note.noteId, revisionCutoff]); @@ -315,8 +315,10 @@ async function saveNoteRevision(note) { type: note.type, mime: note.mime, isProtected: false, // will be fixed in the protectNoteRevisions() call + dateModifiedFrom: note.dateModified, + dateModifiedTo: dateUtils.localNowDateTime(), utcDateModifiedFrom: note.utcDateModified, - utcDateModifiedTo: dateUtils.nowDate() + utcDateModifiedTo: dateUtils.utcNowDateTime() }).save(); } } @@ -405,9 +407,9 @@ async function cleanupDeletedNotes() { // it's better to not use repository for this because it will complain about saving protected notes // out of protected session - await sql.execute("UPDATE note_contents SET content = NULL WHERE content IS NOT NULL AND noteId IN (SELECT noteId FROM notes WHERE isDeleted = 1 AND notes.utcDateModified <= ?)", [dateUtils.dateStr(cutoffDate)]); + await sql.execute("UPDATE note_contents SET content = NULL WHERE content IS NOT NULL AND noteId IN (SELECT noteId FROM notes WHERE isDeleted = 1 AND notes.utcDateModified <= ?)", [dateUtils.utcDateStr(cutoffDate)]); - await sql.execute("UPDATE note_revisions SET content = NULL WHERE note_revisions.content IS NOT NULL AND noteId IN (SELECT noteId FROM notes WHERE isDeleted = 1 AND notes.utcDateModified <= ?)", [dateUtils.dateStr(cutoffDate)]); + await sql.execute("UPDATE note_revisions SET content = NULL WHERE note_revisions.content IS NOT NULL AND noteId IN (SELECT noteId FROM notes WHERE isDeleted = 1 AND notes.utcDateModified <= ?)", [dateUtils.utcDateStr(cutoffDate)]); } sqlInit.dbReady.then(() => { diff --git a/src/services/options_init.js b/src/services/options_init.js index 09daf11f4..9e2541af9 100644 --- a/src/services/options_init.js +++ b/src/services/options_init.js @@ -31,9 +31,9 @@ async function initSyncedOptions(username, password) { async function initNotSyncedOptions(initialized, startNotePath = 'root', syncServerHost = '', syncProxy = '') { await optionService.createOption('startNotePath', startNotePath, false); await optionService.createOption('hoistedNoteId', 'root', false); - await optionService.createOption('lastDailyBackupDate', dateUtils.nowDate(), false); - await optionService.createOption('lastWeeklyBackupDate', dateUtils.nowDate(), false); - await optionService.createOption('lastMonthlyBackupDate', dateUtils.nowDate(), false); + await optionService.createOption('lastDailyBackupDate', dateUtils.utcNowDateTime(), false); + await optionService.createOption('lastWeeklyBackupDate', dateUtils.utcNowDateTime(), false); + await optionService.createOption('lastMonthlyBackupDate', dateUtils.utcNowDateTime(), false); await optionService.createOption('dbVersion', appInfo.dbVersion, false); await optionService.createOption('lastSyncedPull', 0, false); diff --git a/src/services/source_id.js b/src/services/source_id.js index 6330298ab..f52ab56c1 100644 --- a/src/services/source_id.js +++ b/src/services/source_id.js @@ -8,7 +8,7 @@ const cls = require('./cls'); async function saveSourceId(sourceId) { await sql.insert("source_ids", { sourceId: sourceId, - utcDateCreated: dateUtils.nowDate() + utcDateCreated: dateUtils.utcNowDateTime() }); await refreshSourceIds(); diff --git a/src/services/sync.js b/src/services/sync.js index c145a72c3..a7b51e2a4 100644 --- a/src/services/sync.js +++ b/src/services/sync.js @@ -79,7 +79,7 @@ async function login() { } async function doLogin() { - const timestamp = dateUtils.nowDate(); + const timestamp = dateUtils.utcNowDateTime(); const documentSecret = await optionService.getOption('documentSecret'); const hash = utils.hmac(documentSecret, timestamp); diff --git a/src/services/sync_table.js b/src/services/sync_table.js index af5aa6238..7cd4ae923 100644 --- a/src/services/sync_table.js +++ b/src/services/sync_table.js @@ -48,7 +48,7 @@ async function addEntitySync(entityName, entityId, sourceId) { await sql.replace("sync", { entityName: entityName, entityId: entityId, - utcSyncDate: dateUtils.nowDate(), + utcSyncDate: dateUtils.utcNowDateTime(), sourceId: sourceId || cls.getSourceId() || sourceIdService.getCurrentSourceId() }); } @@ -78,7 +78,7 @@ async function fillSyncRows(entityName, entityKey, condition = '') { entityName: entityName, entityId: entityId, sourceId: "SYNC_FILL", - utcSyncDate: dateUtils.nowDate() + utcSyncDate: dateUtils.utcNowDateTime() }); } } diff --git a/src/views/desktop.ejs b/src/views/desktop.ejs index 763a5fd5e..23df3fb99 100644 --- a/src/views/desktop.ejs +++ b/src/views/desktop.ejs @@ -263,6 +263,8 @@ + + diff --git a/src/views/dialogs/sql_console.ejs b/src/views/dialogs/sql_console.ejs index 4adfc3524..a1339eca2 100644 --- a/src/views/dialogs/sql_console.ejs +++ b/src/views/dialogs/sql_console.ejs @@ -19,10 +19,12 @@ - - - -
+
+ + + +
+
diff --git a/src/views/mobile.ejs b/src/views/mobile.ejs index ea37c358b..003c5c85a 100644 --- a/src/views/mobile.ejs +++ b/src/views/mobile.ejs @@ -84,6 +84,8 @@ + + @@ -102,7 +104,7 @@ - + $("#container-row").show(); + + \ No newline at end of file