diff --git a/apps/mobile/package-lock.json b/apps/mobile/package-lock.json index 348d03bf7..92305d041 100644 --- a/apps/mobile/package-lock.json +++ b/apps/mobile/package-lock.json @@ -51307,7 +51307,8 @@ "@microsoft/signalr-protocol-msgpack": "^7.0.10", "@notesnook/crypto": "file:../crypto", "@notesnook/logger": "file:../logger", - "@streetwriters/showdown": "^3.0.1-alpha.2", + "@readme/data-urls": "^3.0.0", + "@streetwriters/showdown": "^3.0.4-alpha", "@types/better-sqlite3": "^7.6.5", "@types/event-source-polyfill": "^1.0.1", "@types/html-to-text": "^9.0.0", @@ -51315,7 +51316,7 @@ "@types/mime-db": "^1.43.1", "@types/prismjs": "^1.26.0", "@types/spark-md5": "^3.0.2", - "@types/streetwriters__showdown": "npm:@types/showdown@^2.0.0", + "@types/streetwriters__showdown": "npm:@types/showdown@^2.0.6", "@types/ws": "^8.5.5", "@vitest/coverage-v8": "^1.0.1", "abortcontroller-polyfill": "^1.7.3", @@ -56724,7 +56725,8 @@ "@microsoft/signalr-protocol-msgpack": "^7.0.10", "@notesnook/crypto": "file:../crypto", "@notesnook/logger": "file:../logger", - "@streetwriters/showdown": "^3.0.1-alpha.2", + "@readme/data-urls": "^3.0.0", + "@streetwriters/showdown": "^3.0.4-alpha", "@types/better-sqlite3": "^7.6.5", "@types/event-source-polyfill": "^1.0.1", "@types/html-to-text": "^9.0.0", @@ -56732,7 +56734,7 @@ "@types/mime-db": "^1.43.1", "@types/prismjs": "^1.26.0", "@types/spark-md5": "^3.0.2", - "@types/streetwriters__showdown": "npm:@types/showdown@^2.0.0", + "@types/streetwriters__showdown": "npm:@types/showdown@^2.0.6", "@types/ws": "^8.5.5", "@vitest/coverage-v8": "^1.0.1", "abortcontroller-polyfill": "^1.7.3", @@ -64661,7 +64663,7 @@ "@tiptap/extension-font-family": "2.1.12", "@tiptap/extension-history": "2.1.12", "@tiptap/extension-horizontal-rule": "2.1.12", - "@tiptap/extension-link": "2.1.12", + "@tiptap/extension-link": "^2.1.16", "@tiptap/extension-list-keymap": "2.1.12", "@tiptap/extension-placeholder": "2.1.12", "@tiptap/extension-subscript": "2.1.12", @@ -64949,7 +64951,8 @@ "@microsoft/signalr-protocol-msgpack": "^7.0.10", "@notesnook/crypto": "file:../crypto", "@notesnook/logger": "file:../logger", - "@streetwriters/showdown": "^3.0.1-alpha.2", + "@readme/data-urls": "^3.0.0", + "@streetwriters/showdown": "^3.0.4-alpha", "@types/better-sqlite3": "^7.6.5", "@types/event-source-polyfill": "^1.0.1", "@types/html-to-text": "^9.0.0", @@ -64957,7 +64960,7 @@ "@types/mime-db": "^1.43.1", "@types/prismjs": "^1.26.0", "@types/spark-md5": "^3.0.2", - "@types/streetwriters__showdown": "npm:@types/showdown@^2.0.0", + "@types/streetwriters__showdown": "npm:@types/showdown@^2.0.6", "@types/ws": "^8.5.5", "@vitest/coverage-v8": "^1.0.1", "abortcontroller-polyfill": "^1.7.3", diff --git a/packages/core/src/api/index.ts b/packages/core/src/api/index.ts index 045db26f0..d4b390e84 100644 --- a/packages/core/src/api/index.ts +++ b/packages/core/src/api/index.ts @@ -236,7 +236,10 @@ class Database { await sql.raw(statement).execute(this.sql()); } await this.sql().destroy(); - this._sql = await createDatabase("notesnook", this.options.sqliteOptions); + this._sql = (await createDatabase( + "notesnook", + this.options.sqliteOptions + )) as unknown as Kysely; } async init() { @@ -251,8 +254,8 @@ class Database { this ); EV.subscribe(EVENTS.attachmentDeleted, async (attachment: Attachment) => { - await this.fs().cancel(attachment.hash, "upload"); - await this.fs().cancel(attachment.hash, "download"); + await this.fs().cancel(attachment.hash); + await this.fs().cancel(attachment.hash); }); EV.subscribe(EVENTS.userLoggedOut, async () => { await this.monographs.clear(); @@ -260,7 +263,10 @@ class Database { this.disconnectSSE(); }); - this._sql = await createDatabase("notesnook", this.options.sqliteOptions); + this._sql = (await createDatabase( + "notesnook", + this.options.sqliteOptions + )) as unknown as Kysely; await this._validate(); diff --git a/packages/core/src/api/vault.ts b/packages/core/src/api/vault.ts index c28c3e2bc..3530e8e2a 100644 --- a/packages/core/src/api/vault.ts +++ b/packages/core/src/api/vault.ts @@ -212,10 +212,6 @@ export default class Vault { return !!vaultKey && isCipher(vaultKey); } - get unlocked() { - return !!this.vaultPassword; - } - // Private & internal methods private async getVaultPassword() { diff --git a/packages/core/src/content-types/tiptap.ts b/packages/core/src/content-types/tiptap.ts index 620fa8702..758ffcec9 100644 --- a/packages/core/src/content-types/tiptap.ts +++ b/packages/core/src/content-types/tiptap.ts @@ -182,7 +182,7 @@ export class Tiptap { for (const image of sources) { try { const { data, mimeType } = dataurl.toObject(image.src); - if (!data) continue; + if (!data || !mimeType) continue; const hash = await store(data, mimeType, image.filename); if (!hash) continue; diff --git a/packages/core/src/utils/dataurl.ts b/packages/core/src/utils/dataurl.ts index ef0650423..532a3257f 100644 --- a/packages/core/src/utils/dataurl.ts +++ b/packages/core/src/utils/dataurl.ts @@ -19,18 +19,18 @@ along with this program. If not, see . import { parse, validate } from "@readme/data-urls"; -function toObject(dataurl: string): { mime?: string; data?: string } { +function toObject(dataurl: string): { mimeType?: string; data?: string } { const result = parse(dataurl); if (!result) return {}; return { - mime: result.contentType, + mimeType: result.contentType, data: result.data }; } -function fromObject({ type, data }: { type: string; data: string }) { +function fromObject({ mimeType, data }: { mimeType: string; data: string }) { if (validate(data)) return data; - return `data:${type};base64,${data}`; + return `data:${mimeType};base64,${data}`; } function isValid(url: string) { diff --git a/packages/editor-mobile/src/hooks/useEditorController.ts b/packages/editor-mobile/src/hooks/useEditorController.ts index e3921a093..f96455619 100644 --- a/packages/editor-mobile/src/hooks/useEditorController.ts +++ b/packages/editor-mobile/src/hooks/useEditorController.ts @@ -138,7 +138,7 @@ export function useEditorController(update: () => void): EditorController { }, [colors]); const contentChange = useCallback( - (editor: Editor, ignoreEdit) => { + (editor: Editor, ignoreEdit?: boolean) => { const currentSessionId = globalThis.sessionId; post(EventTypes.contentchange); if (!editor) return; diff --git a/packages/editor/package-lock.json b/packages/editor/package-lock.json index 4cc0edc77..f9aef786b 100644 --- a/packages/editor/package-lock.json +++ b/packages/editor/package-lock.json @@ -974,6 +974,22 @@ "@styled-system/css": "^5.1.5" } }, + "node_modules/@theme-ui/color-modes": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@theme-ui/color-modes/-/color-modes-0.16.1.tgz", + "integrity": "sha512-G2YoNEMwZroRS0DcftUG+E/8WM5/Osf8TRrQLLK+L43HJ4BmaWuBmVeyoNOaPBDlAuqMBx2203VRgoPmUaMqOg==", + "dev": true, + "peer": true, + "dependencies": { + "@theme-ui/core": "^0.16.1", + "@theme-ui/css": "^0.16.1", + "deepmerge": "^4.2.2" + }, + "peerDependencies": { + "@emotion/react": "^11.11.1", + "react": ">=18" + } + }, "node_modules/@theme-ui/components": { "version": "0.16.1", "resolved": "https://registry.npmjs.org/@theme-ui/components/-/components-0.16.1.tgz", @@ -1019,6 +1035,22 @@ "@emotion/react": "^11.11.1" } }, + "node_modules/@theme-ui/theme-provider": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@theme-ui/theme-provider/-/theme-provider-0.16.1.tgz", + "integrity": "sha512-+/3BJYLIOC2DwTS76cqNhigRQJJ+qOT845DYF7t3TaG2fXDfgh16/DGZSnVjGOGc9dYE3C/ZFAYcVDVwO94Guw==", + "dev": true, + "peer": true, + "dependencies": { + "@theme-ui/color-modes": "^0.16.1", + "@theme-ui/core": "^0.16.1", + "@theme-ui/css": "^0.16.1" + }, + "peerDependencies": { + "@emotion/react": "^11.11.1", + "react": ">=18" + } + }, "node_modules/@tiptap/core": { "version": "2.1.12", "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.1.12.tgz", @@ -2509,8 +2541,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", @@ -2574,7 +2605,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -3150,7 +3180,6 @@ "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dev": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -3171,7 +3200,6 @@ "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "dev": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.0" @@ -3303,7 +3331,6 @@ "version": "0.23.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dev": true, "dependencies": { "loose-envify": "^1.1.0" } diff --git a/packages/editor/src/utils/downloader.ts b/packages/editor/src/utils/downloader.ts index 3c237f91d..cf44fe2ec 100644 --- a/packages/editor/src/utils/downloader.ts +++ b/packages/editor/src/utils/downloader.ts @@ -126,7 +126,7 @@ export function toBlobURL( if (!DataURL.isValid(dataurl)) return; const dataurlObject = DataURL.toObject(dataurl); - let mime = dataurlObject.mime || ""; + let mime = dataurlObject.mimeType || ""; const data = dataurlObject.data; if (!data) return;