From 239838a68fe5b64b9c8fde6875fbbb512ca592a3 Mon Sep 17 00:00:00 2001 From: danidfra Date: Thu, 26 Sep 2024 12:10:29 -0300 Subject: [PATCH 1/7] Fix: Some instances have identical IDs. --- src/api/hooks/zap-split/useZapSplit.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/api/hooks/zap-split/useZapSplit.ts b/src/api/hooks/zap-split/useZapSplit.ts index 0c974012b..a15b33d7e 100644 --- a/src/api/hooks/zap-split/useZapSplit.ts +++ b/src/api/hooks/zap-split/useZapSplit.ts @@ -50,13 +50,18 @@ const useZapSplit = (status: StatusEntity | undefined, account: AccountEntity) = const receiveAmount = (zapAmount: number) => { if (zapArrays.length > 0) { const zapAmountPrincipal = zapArrays.find((zapSplit: ZapSplitData) => zapSplit.account.id === account.id); + const formattedZapAmountPrincipal = { + account: zapAmountPrincipal?.account, + message: zapAmountPrincipal?.message, + weight: zapArrays.filter((zapSplit: ZapSplitData) => zapSplit.account.id === account.id).reduce((acc:number, zapData: ZapSplitData) => acc + zapData.weight, 0), + }; const zapAmountOthers = zapArrays.filter((zapSplit: ZapSplitData) => zapSplit.account.id !== account.id); const totalWeightSplit = zapAmountOthers.reduce((e: number, b: ZapSplitData) => e + b.weight, 0); const totalWeight = zapArrays.reduce((e: number, b: ZapSplitData) => e + b.weight, 0); if (zapAmountPrincipal) { - const receiveZapAmount = Math.floor(zapAmountPrincipal.weight * (zapAmount / totalWeight)); + const receiveZapAmount = Math.floor(formattedZapAmountPrincipal.weight * (zapAmount / totalWeight)); const splitResult = zapAmount - receiveZapAmount; let totalRoundedSplit = 0; From ef5c1f82a62da2a9bf7d170582ec20e590df2311 Mon Sep 17 00:00:00 2001 From: danidfra Date: Thu, 26 Sep 2024 12:24:59 -0300 Subject: [PATCH 2/7] Use Zap Split schema for parsing and validation --- src/api/hooks/zap-split/useZapSplit.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/api/hooks/zap-split/useZapSplit.ts b/src/api/hooks/zap-split/useZapSplit.ts index a15b33d7e..a5cb5717d 100644 --- a/src/api/hooks/zap-split/useZapSplit.ts +++ b/src/api/hooks/zap-split/useZapSplit.ts @@ -1,7 +1,7 @@ import { useState, useEffect } from 'react'; import { useApi } from 'soapbox/hooks'; -import { type ZapSplitData } from 'soapbox/schemas/zap-split'; +import { baseZapAccountSchema, type ZapSplitData } from 'soapbox/schemas/zap-split'; import type { Account as AccountEntity, Status as StatusEntity } from 'soapbox/types/entities'; @@ -37,7 +37,10 @@ const useZapSplit = (status: StatusEntity | undefined, account: AccountEntity) = const loadZapSplitData = async () => { if (status) { const data = (await fetchZapSplit(status.id)).data; - setZapArrays(data); + if (data) { + const normalizedData = data.map((dataSplit: ZapSplitData) => baseZapAccountSchema.parse(dataSplit)); + setZapArrays(normalizedData); + } } }; From eb5cc2a04a4e24063991ca2dd71d6ff853d3c8c3 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Thu, 26 Sep 2024 10:43:15 -0500 Subject: [PATCH 3/7] Upgrade React to v18.3 --- package.json | 12 ++-- src/components/site-error-boundary.tsx | 2 +- src/components/ui/column/column.tsx | 2 +- src/features/ui/components/modal-root.tsx | 2 +- src/features/ui/util/react-router-helpers.tsx | 2 +- yarn.lock | 56 +++++++++---------- 6 files changed, 34 insertions(+), 42 deletions(-) diff --git a/package.json b/package.json index 5b9ae5477..857188665 100644 --- a/package.json +++ b/package.json @@ -79,10 +79,10 @@ "@types/lodash": "^4.14.180", "@types/object-assign": "^4.0.30", "@types/path-browserify": "^1.0.0", - "@types/react": "^18.0.26", + "@types/react": "^18.3.9", "@types/react-color": "^3.0.6", "@types/react-datepicker": "^4.4.2", - "@types/react-dom": "^18.0.10", + "@types/react-dom": "^18.3.0", "@types/react-helmet": "^6.1.5", "@types/react-motion": "^0.0.40", "@types/react-router-dom": "^5.3.3", @@ -134,10 +134,10 @@ "process": "^0.11.10", "punycode": "^2.1.1", "qrcode.react": "^3.1.0", - "react": "^18.0.0", + "react": "^18.3.1", "react-color": "^2.19.3", "react-datepicker": "^4.8.0", - "react-dom": "^18.0.0", + "react-dom": "^18.3.1", "react-error-boundary": "^4.0.11", "react-helmet": "^6.1.0", "react-hot-toast": "^2.4.0", @@ -155,7 +155,7 @@ "react-sparklines": "^1.7.0", "react-sticky-box": "^2.0.0", "react-swipeable-views": "^0.14.0", - "react-virtuoso": "^4.3.11", + "react-virtuoso": "^4.10.4", "redux": "^5.0.0", "redux-immutable": "^4.0.0", "redux-thunk": "^3.1.0", @@ -215,8 +215,6 @@ "vitest": "^2.1.1" }, "resolutions": { - "@types/react": "^18.0.26", - "@types/react-dom": "^18.0.10", "glob-parent": "^6.0.1", "jsonwebtoken": "^9.0.0", "loader-utils": "^2.0.3" diff --git a/src/components/site-error-boundary.tsx b/src/components/site-error-boundary.tsx index 189554278..61db29f1f 100644 --- a/src/components/site-error-boundary.tsx +++ b/src/components/site-error-boundary.tsx @@ -23,7 +23,7 @@ const SiteErrorBoundary: React.FC = ({ children }) => { const textarea = useRef(null); const [error, setError] = useState(); - const [componentStack, setComponentStack] = useState(); + const [componentStack, setComponentStack] = useState(); const [browser, setBrowser] = useState(); const [sentryEventId, setSentryEventId] = useState(); diff --git a/src/components/ui/column/column.tsx b/src/components/ui/column/column.tsx index 3d7326f2a..36c8912f1 100644 --- a/src/components/ui/column/column.tsx +++ b/src/components/ui/column/column.tsx @@ -64,7 +64,7 @@ export interface IColumn { } /** A backdrop for the main section of the UI. */ -const Column: React.FC = React.forwardRef((props, ref: React.ForwardedRef): JSX.Element => { +const Column = React.forwardRef((props, ref): JSX.Element => { const { backHref, children, label, transparent = false, withHeader = true, className, bodyClassName, action, size } = props; const soapboxConfig = useSoapboxConfig(); const [isScrolled, setIsScrolled] = useState(false); diff --git a/src/features/ui/components/modal-root.tsx b/src/features/ui/components/modal-root.tsx index d55548353..890ad9c08 100644 --- a/src/features/ui/components/modal-root.tsx +++ b/src/features/ui/components/modal-root.tsx @@ -51,7 +51,7 @@ import { import ModalLoading from './modal-loading'; /* eslint sort-keys: "error" */ -const MODAL_COMPONENTS: Record> = { +const MODAL_COMPONENTS: Record> = { 'ACCOUNT_MODERATION': AccountModerationModal, 'ACTIONS': ActionsModal, 'BIRTHDAYS': BirthdaysModal, diff --git a/src/features/ui/util/react-router-helpers.tsx b/src/features/ui/util/react-router-helpers.tsx index 06991287b..e45105fbb 100644 --- a/src/features/ui/util/react-router-helpers.tsx +++ b/src/features/ui/util/react-router-helpers.tsx @@ -17,7 +17,7 @@ type PageProps = { }; interface IWrappedRoute extends RouteProps { - component: React.LazyExoticComponent; + component: React.ExoticComponent; page?: React.ComponentType; content?: React.ReactNode; componentParams?: Record; diff --git a/yarn.lock b/yarn.lock index 1cbec8915..8901a2271 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2514,10 +2514,10 @@ date-fns "^2.0.1" react-popper "^2.2.5" -"@types/react-dom@^18.0.0", "@types/react-dom@^18.0.10": - version "18.0.10" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.10.tgz#3b66dec56aa0f16a6cc26da9e9ca96c35c0b4352" - integrity sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg== +"@types/react-dom@^18.0.0", "@types/react-dom@^18.3.0": + version "18.3.0" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" + integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== dependencies: "@types/react" "*" @@ -2566,13 +2566,12 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@16 || 17 || 18", "@types/react@^18.0.26": - version "18.0.26" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.26.tgz#8ad59fc01fef8eaf5c74f4ea392621749f0b7917" - integrity sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug== +"@types/react@*", "@types/react@16 || 17 || 18", "@types/react@^18.3.9": + version "18.3.9" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.9.tgz#2cdf5f425ec8a133d67e9e3673909738b783db20" + integrity sha512-+BpAVyTpJkNWWSSnaLBk6ePpHLOGJKnEQNbINNovPWzvEUyAe3e+/d494QdEh71RekM/qV7lw6jzf1HGrJyAtQ== dependencies: "@types/prop-types" "*" - "@types/scheduler" "*" csstype "^3.0.2" "@types/reactcss@*": @@ -2601,11 +2600,6 @@ dependencies: "@types/node" "*" -"@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== - "@types/semver@^7.3.9", "@types/semver@^7.5.0": version "7.5.2" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.2.tgz#31f6eec1ed7ec23f4f05608d3a2d381df041f564" @@ -7157,13 +7151,13 @@ react-datepicker@^4.8.0: react-onclickoutside "^6.12.0" react-popper "^2.2.5" -react-dom@^18.0.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== +react-dom@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== dependencies: loose-envify "^1.1.0" - scheduler "^0.23.0" + scheduler "^0.23.2" react-error-boundary@^3.1.0, react-error-boundary@^3.1.4: version "3.1.4" @@ -7435,15 +7429,15 @@ react-transition-group@^2.2.1: prop-types "^15.6.2" react-lifecycles-compat "^3.0.4" -react-virtuoso@^4.3.11: - version "4.3.11" - resolved "https://registry.yarnpkg.com/react-virtuoso/-/react-virtuoso-4.3.11.tgz#ab24e707287ef1b4bb5b52f3b14795ba896e9768" - integrity sha512-0YrCvQ5GsIKRcN34GxrzhSJGuMNI+hGxWci5cTVuPQ8QWTEsrKfCyqm7YNBMmV3pu7onG1YVUBo86CyCXdejXg== +react-virtuoso@^4.10.4: + version "4.10.4" + resolved "https://registry.yarnpkg.com/react-virtuoso/-/react-virtuoso-4.10.4.tgz#856ed415d7071db0c666ce84809bab8bb834f45c" + integrity sha512-G/gprhTbK+lzMxoo/iStcZxVEGph/cIhc3WANEpt92RuMw+LiCZOmBfKoeoZOHlm/iyftTrDJhGaTCpxyucnkQ== -react@^18.0.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== +react@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== dependencies: loose-envify "^1.1.0" @@ -7778,10 +7772,10 @@ saxes@^6.0.0: dependencies: xmlchars "^2.2.0" -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== +scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== dependencies: loose-envify "^1.1.0" From 8ee719866be89a9bba4f692e717981da889236a6 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Thu, 26 Sep 2024 11:52:52 -0500 Subject: [PATCH 4/7] Remove unused / unneeded dependencies --- package.json | 17 -- src/actions/chats.ts | 3 +- src/actions/settings.ts | 7 +- src/components/list.tsx | 3 +- src/components/modal-root.tsx | 1 - src/components/ui/form-group/form-group.tsx | 3 +- .../ui/radio-button/radio-button.tsx | 3 +- .../components/registration-form.tsx | 5 +- src/features/forms/index.tsx | 3 +- src/features/theme-editor/index.tsx | 5 +- src/jest/factory.ts | 22 ++- src/main.tsx | 2 - src/polyfills.ts | 8 - src/reducers/compose.ts | 37 +++-- yarn.lock | 150 +++--------------- 15 files changed, 59 insertions(+), 210 deletions(-) delete mode 100644 src/polyfills.ts diff --git a/package.json b/package.json index 857188665..161040678 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,6 @@ "@lexical/selection": "^0.14.2", "@lexical/utils": "^0.14.2", "@mkljczk/react-hotkeys": "^1.2.2", - "@noble/hashes": "^1.3.3", "@nostrify/nostrify": "npm:@jsr/nostrify__nostrify", "@popperjs/core": "^2.11.5", "@reach/combobox": "^0.18.0", @@ -90,23 +89,19 @@ "@types/react-swipeable-views": "^0.13.1", "@types/redux-mock-store": "^1.0.6", "@types/semver": "^7.3.9", - "@types/uuid": "^9.0.0", "@vitejs/plugin-react": "^4.3.1", "@webbtc/webln-types": "^3.0.0", "autoprefixer": "^10.4.15", "axios": "^1.2.2", "axios-mock-adapter": "^1.22.0", "blurhash": "^2.0.0", - "bootstrap-icons": "^1.5.0", "bowser": "^2.11.0", "browserslist": "^4.16.6", "clsx": "^2.0.0", "comlink": "^4.4.1", - "core-js": "^3.27.2", "cryptocurrency-icons": "^0.18.1", "cssnano": "^6.0.0", "detect-passive-events": "^2.0.0", - "dotenv": "^16.0.0", "emoji-datasource": "14.0.0", "emoji-mart": "^5.5.2", "escape-html": "^1.0.3", @@ -117,7 +112,6 @@ "http-link-header": "^1.0.2", "immer": "^10.0.0", "immutable": "^4.2.1", - "intersection-observer": "^0.12.2", "intl-messageformat": "10.5.11", "intl-pluralrules": "^2.0.0", "isomorphic-dompurify": "^2.3.0", @@ -127,11 +121,9 @@ "localforage": "^1.10.0", "lodash": "^4.7.11", "mini-css-extract-plugin": "^2.6.0", - "nostr-machina": "^0.1.0", "nostr-tools": "^2.3.0", "path-browserify": "^1.0.1", "postcss": "^8.4.29", - "process": "^0.11.10", "punycode": "^2.1.1", "qrcode.react": "^3.1.0", "react": "^18.3.1", @@ -160,24 +152,17 @@ "redux-immutable": "^4.0.0", "redux-thunk": "^3.1.0", "reselect": "^5.0.0", - "resize-observer-polyfill": "^1.5.1", "sass": "^1.69.5", "semver": "^7.3.8", "stringz": "^2.0.0", - "substring-trie": "^1.0.2", - "tiny-queue": "^0.2.1", - "tslib": "^2.3.1", "twemoji": "https://github.com/twitter/twemoji#v14.0.2", "type-fest": "^4.0.0", "typescript": "^5.6.2", - "util": "^0.12.4", - "uuid": "^9.0.0", "vite": "^5.4.8", "vite-plugin-compile-time": "^0.2.1", "vite-plugin-html": "^3.2.2", "vite-plugin-require": "^1.2.14", "vite-plugin-static-copy": "^1.0.6", - "wicg-inert": "^3.1.1", "zod": "^3.23.5" }, "devDependencies": { @@ -204,8 +189,6 @@ "husky": "^9.0.0", "jsdom": "^24.0.0", "lint-staged": ">=10", - "react-intl-translations-manager": "^5.0.3", - "react-refresh": "^0.14.0", "rollup-plugin-visualizer": "^5.9.2", "stylelint": "^16.0.2", "stylelint-config-standard-scss": "^12.0.0", diff --git a/src/actions/chats.ts b/src/actions/chats.ts index f4ca85abe..ee8e23239 100644 --- a/src/actions/chats.ts +++ b/src/actions/chats.ts @@ -1,5 +1,4 @@ import { List as ImmutableList, Map as ImmutableMap } from 'immutable'; -import { v4 as uuidv4 } from 'uuid'; import { getSettings, changeSetting } from 'soapbox/actions/settings'; import { getFeatures } from 'soapbox/utils/features'; @@ -103,7 +102,7 @@ const fetchChatMessages = (chatId: string, maxId: string | null = null) => const sendChatMessage = (chatId: string, params: Record) => (dispatch: AppDispatch, getState: () => RootState) => { - const uuid = `末_${Date.now()}_${uuidv4()}`; + const uuid = `末_${Date.now()}_${crypto.randomUUID()}`; const me = getState().me; dispatch({ type: CHAT_MESSAGE_SEND_REQUEST, chatId, params, uuid, me }); return api(getState).post(`/api/v1/pleroma/chats/${chatId}/messages`, params).then(({ data }) => { diff --git a/src/actions/settings.ts b/src/actions/settings.ts index ae26af50a..257656b74 100644 --- a/src/actions/settings.ts +++ b/src/actions/settings.ts @@ -1,7 +1,6 @@ import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; import { defineMessage } from 'react-intl'; import { createSelector } from 'reselect'; -import { v4 as uuid } from 'uuid'; import { patchMe } from 'soapbox/actions/me'; import messages from 'soapbox/messages'; @@ -163,9 +162,9 @@ const defaultSettings = ImmutableMap({ }), columns: ImmutableList([ - ImmutableMap({ id: 'COMPOSE', uuid: uuid(), params: {} }), - ImmutableMap({ id: 'HOME', uuid: uuid(), params: {} }), - ImmutableMap({ id: 'NOTIFICATIONS', uuid: uuid(), params: {} }), + ImmutableMap({ id: 'COMPOSE', uuid: crypto.randomUUID(), params: {} }), + ImmutableMap({ id: 'HOME', uuid: crypto.randomUUID(), params: {} }), + ImmutableMap({ id: 'NOTIFICATIONS', uuid: crypto.randomUUID(), params: {} }), ]), remote_timeline: ImmutableMap({ diff --git a/src/components/list.tsx b/src/components/list.tsx index b26eea116..487e2d282 100644 --- a/src/components/list.tsx +++ b/src/components/list.tsx @@ -1,7 +1,6 @@ import clsx from 'clsx'; import React from 'react'; import { Link } from 'react-router-dom'; -import { v4 as uuidv4 } from 'uuid'; import { SelectDropdown } from '../features/forms'; @@ -26,7 +25,7 @@ interface IListItem { } const ListItem: React.FC = ({ label, hint, children, to, onClick, onSelect, isSelected }) => { - const id = uuidv4(); + const id = crypto.randomUUID(); const domId = `list-group-${id}`; const onKeyDown = (e: React.KeyboardEvent) => { diff --git a/src/components/modal-root.tsx b/src/components/modal-root.tsx index 4216431b8..84b7830e1 100644 --- a/src/components/modal-root.tsx +++ b/src/components/modal-root.tsx @@ -1,6 +1,5 @@ import clsx from 'clsx'; import React, { useCallback, useEffect, useRef, useState } from 'react'; -import 'wicg-inert'; import { FormattedMessage, defineMessages, useIntl } from 'react-intl'; import { useHistory } from 'react-router-dom'; diff --git a/src/components/ui/form-group/form-group.tsx b/src/components/ui/form-group/form-group.tsx index 66bfaea92..430851371 100644 --- a/src/components/ui/form-group/form-group.tsx +++ b/src/components/ui/form-group/form-group.tsx @@ -1,5 +1,4 @@ import React, { useMemo } from 'react'; -import { v4 as uuidv4 } from 'uuid'; import Checkbox from '../checkbox/checkbox'; import HStack from '../hstack/hstack'; @@ -21,7 +20,7 @@ interface IFormGroup { /** Input container with label. Renders the child. */ const FormGroup: React.FC = (props) => { const { children, errors = [], labelText, labelTitle, hintText } = props; - const formFieldId: string = useMemo(() => `field-${uuidv4()}`, []); + const formFieldId: string = useMemo(() => `field-${crypto.randomUUID()}`, []); const inputChildren = React.Children.toArray(children); const hasError = errors?.length > 0; diff --git a/src/components/ui/radio-button/radio-button.tsx b/src/components/ui/radio-button/radio-button.tsx index 6a6829c78..df5d77391 100644 --- a/src/components/ui/radio-button/radio-button.tsx +++ b/src/components/ui/radio-button/radio-button.tsx @@ -1,5 +1,4 @@ import React, { useMemo } from 'react'; -import { v4 as uuidv4 } from 'uuid'; import HStack from '../hstack/hstack'; @@ -15,7 +14,7 @@ interface IRadioButton { * A group for radio input with label. */ const RadioButton: React.FC = ({ name, value, checked, onChange, label }) => { - const formFieldId: string = useMemo(() => `radio-${uuidv4()}`, []); + const formFieldId: string = useMemo(() => `radio-${crypto.randomUUID()}`, []); return ( diff --git a/src/features/auth-login/components/registration-form.tsx b/src/features/auth-login/components/registration-form.tsx index 781e2cdbf..ea9b56a60 100644 --- a/src/features/auth-login/components/registration-form.tsx +++ b/src/features/auth-login/components/registration-form.tsx @@ -4,7 +4,6 @@ import debounce from 'lodash/debounce'; import React, { useState, useRef, useCallback } from 'react'; import { useIntl, FormattedMessage, defineMessages } from 'react-intl'; import { Link, useHistory } from 'react-router-dom'; -import { v4 as uuidv4 } from 'uuid'; import { accountLookup } from 'soapbox/actions/accounts'; import { register, verifyCredentials } from 'soapbox/actions/auth'; @@ -55,7 +54,7 @@ const RegistrationForm: React.FC = ({ inviteToken }) => { const [captchaLoading, setCaptchaLoading] = useState(true); const [submissionLoading, setSubmissionLoading] = useState(false); const [params, setParams] = useState(ImmutableMap()); - const [captchaIdempotencyKey, setCaptchaIdempotencyKey] = useState(uuidv4()); + const [captchaIdempotencyKey, setCaptchaIdempotencyKey] = useState(crypto.randomUUID()); const [usernameUnavailable, setUsernameUnavailable] = useState(false); const [passwordConfirmation, setPasswordConfirmation] = useState(''); const [passwordMismatch, setPasswordMismatch] = useState(false); @@ -228,7 +227,7 @@ const RegistrationForm: React.FC = ({ inviteToken }) => { }; const refreshCaptcha = () => { - setCaptchaIdempotencyKey(uuidv4()); + setCaptchaIdempotencyKey(crypto.randomUUID()); updateParams({ captcha_solution: '' }); }; diff --git a/src/features/forms/index.tsx b/src/features/forms/index.tsx index 6907f8205..d7f3cff9c 100644 --- a/src/features/forms/index.tsx +++ b/src/features/forms/index.tsx @@ -1,6 +1,5 @@ import clsx from 'clsx'; import React, { useState } from 'react'; -import { v4 as uuidv4 } from 'uuid'; import { Select } from '../../components/ui'; @@ -37,7 +36,7 @@ interface ILabelInputContainer { } export const LabelInputContainer: React.FC = ({ label, hint, children }) => { - const [id] = useState(uuidv4()); + const [id] = useState(crypto.randomUUID()); const childrenWithProps = React.Children.map(children, child => ( // @ts-ignore: not sure how to get the right type here React.cloneElement(child, { id: id, key: id }) diff --git a/src/features/theme-editor/index.tsx b/src/features/theme-editor/index.tsx index 66604a109..10c9e6041 100644 --- a/src/features/theme-editor/index.tsx +++ b/src/features/theme-editor/index.tsx @@ -1,6 +1,5 @@ import React, { useRef, useState } from 'react'; import { defineMessages, FormattedMessage, useIntl } from 'react-intl'; -import { v4 as uuidv4 } from 'uuid'; import { updateSoapboxConfig } from 'soapbox/actions/admin'; import { getHost } from 'soapbox/actions/instance'; @@ -51,7 +50,7 @@ const ThemeEditor: React.FC = () => { const [colors, setColors] = useState(soapbox.colors.toJS() as any); const [submitting, setSubmitting] = useState(false); - const [resetKey, setResetKey] = useState(uuidv4()); + const [resetKey, setResetKey] = useState(crypto.randomUUID()); const fileInput = useRef(null); @@ -77,7 +76,7 @@ const ThemeEditor: React.FC = () => { }; const setTheme = (theme: any) => { - setResetKey(uuidv4()); + setResetKey(crypto.randomUUID()); setTimeout(() => setColors(theme)); }; diff --git a/src/jest/factory.ts b/src/jest/factory.ts index 3bb61f77c..145da76b2 100644 --- a/src/jest/factory.ts +++ b/src/jest/factory.ts @@ -1,5 +1,3 @@ -import { v4 as uuidv4 } from 'uuid'; - import { accountSchema, cardSchema, @@ -29,8 +27,8 @@ import type { PartialDeep } from 'type-fest'; function buildAccount(props: PartialDeep = {}): Account { return accountSchema.parse(Object.assign({ - id: uuidv4(), - url: `https://soapbox.test/users/${uuidv4()}`, + id: crypto.randomUUID(), + url: `https://soapbox.test/users/${crypto.randomUUID()}`, }, props)); } @@ -42,23 +40,23 @@ function buildCard(props: PartialDeep = {}): Card { function buildGroup(props: PartialDeep = {}): Group { return groupSchema.parse(Object.assign({ - id: uuidv4(), + id: crypto.randomUUID(), owner: { - id: uuidv4(), + id: crypto.randomUUID(), }, }, props)); } function buildGroupRelationship(props: PartialDeep = {}): GroupRelationship { return groupRelationshipSchema.parse(Object.assign({ - id: uuidv4(), + id: crypto.randomUUID(), }, props)); } function buildGroupTag(props: PartialDeep = {}): GroupTag { return groupTagSchema.parse(Object.assign({ - id: uuidv4(), - name: uuidv4(), + id: crypto.randomUUID(), + name: crypto.randomUUID(), }, props)); } @@ -67,7 +65,7 @@ function buildGroupMember( accountProps: PartialDeep = {}, ): GroupMember { return groupMemberSchema.parse(Object.assign({ - id: uuidv4(), + id: crypto.randomUUID(), account: buildAccount(accountProps), role: GroupRoles.USER, }, props)); @@ -79,13 +77,13 @@ function buildInstance(props: PartialDeep = {}) { function buildRelationship(props: PartialDeep = {}): Relationship { return relationshipSchema.parse(Object.assign({ - id: uuidv4(), + id: crypto.randomUUID(), }, props)); } function buildStatus(props: PartialDeep = {}) { return statusSchema.parse(Object.assign({ - id: uuidv4(), + id: crypto.randomUUID(), account: buildAccount(), }, props)); } diff --git a/src/main.tsx b/src/main.tsx index a204848da..6be862eae 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,5 +1,3 @@ -import './polyfills'; - import React from 'react'; import { createRoot } from 'react-dom/client'; diff --git a/src/polyfills.ts b/src/polyfills.ts deleted file mode 100644 index 21947e4fe..000000000 --- a/src/polyfills.ts +++ /dev/null @@ -1,8 +0,0 @@ -import 'intersection-observer'; -import ResizeObserver from 'resize-observer-polyfill'; - -// Needed by Virtuoso -// https://github.com/petyosi/react-virtuoso#browser-support -if (!window.ResizeObserver) { - window.ResizeObserver = ResizeObserver; -} \ No newline at end of file diff --git a/src/reducers/compose.ts b/src/reducers/compose.ts index 624ea0b3a..69ecc5b2b 100644 --- a/src/reducers/compose.ts +++ b/src/reducers/compose.ts @@ -1,5 +1,4 @@ import { Map as ImmutableMap, List as ImmutableList, OrderedSet as ImmutableOrderedSet, Record as ImmutableRecord, fromJS } from 'immutable'; -import { v4 as uuid } from 'uuid'; import { isNativeEmoji } from 'soapbox/features/emoji'; import { Account } from 'soapbox/schemas'; @@ -150,7 +149,7 @@ const appendMedia = (compose: Compose, media: APIEntity, defaultSensitive?: bool map.update('media_attachments', list => list.push(normalizeAttachment(media))); map.set('is_uploading', false); map.set('resetFileKey', Math.floor((Math.random() * 0x10000))); - map.set('idempotencyKey', uuid()); + map.set('idempotencyKey', crypto.randomUUID()); if (prevSize === 0 && (defaultSensitive || compose.spoiler)) { map.set('sensitive', true); @@ -163,7 +162,7 @@ const removeMedia = (compose: Compose, mediaId: string) => { return compose.withMutations(map => { map.update('media_attachments', list => list.filterNot(item => item.id === mediaId)); - map.set('idempotencyKey', uuid()); + map.set('idempotencyKey', crypto.randomUUID()); if (prevSize === 1) { map.set('sensitive', false); @@ -180,7 +179,7 @@ const insertSuggestion = (compose: Compose, position: number, token: string | nu map.set('focusDate', new Date()); map.set('caretPosition', position + completion.length + 1); } - map.set('idempotencyKey', uuid()); + map.set('idempotencyKey', crypto.randomUUID()); }); }; @@ -205,7 +204,7 @@ const insertEmoji = (compose: Compose, position: number, emojiData: Emoji, needs text: `${oldText.slice(0, position)}${emoji} ${oldText.slice(position)}`, focusDate: new Date(), caretPosition: position + emoji.length + 1, - idempotencyKey: uuid(), + idempotencyKey: crypto.randomUUID(), }); }; @@ -274,7 +273,7 @@ const updateCompose = (state: State, key: string, updater: (compose: Compose) => state.update(key, state.get('default')!, updater); export const initialState: State = ImmutableMap({ - default: ReducerCompose({ idempotencyKey: uuid(), resetFileKey: getResetFileKey() }), + default: ReducerCompose({ idempotencyKey: crypto.randomUUID(), resetFileKey: getResetFileKey() }), }); export default function compose(state = initialState, action: ComposeAction | EventsAction | MeAction | SettingsAction | TimelineAction) { @@ -282,27 +281,27 @@ export default function compose(state = initialState, action: ComposeAction | Ev case COMPOSE_TYPE_CHANGE: return updateCompose(state, action.id, compose => compose.withMutations(map => { map.set('content_type', action.value); - map.set('idempotencyKey', uuid()); + map.set('idempotencyKey', crypto.randomUUID()); })); case COMPOSE_SPOILERNESS_CHANGE: return updateCompose(state, action.id, compose => compose.withMutations(map => { map.set('spoiler_text', ''); map.set('spoiler', !compose.spoiler); map.set('sensitive', !compose.spoiler); - map.set('idempotencyKey', uuid()); + map.set('idempotencyKey', crypto.randomUUID()); })); case COMPOSE_SPOILER_TEXT_CHANGE: return updateCompose(state, action.id, compose => compose .set('spoiler_text', action.text) - .set('idempotencyKey', uuid())); + .set('idempotencyKey', crypto.randomUUID())); case COMPOSE_VISIBILITY_CHANGE: return updateCompose(state, action.id, compose => compose .set('privacy', action.value) - .set('idempotencyKey', uuid())); + .set('idempotencyKey', crypto.randomUUID())); case COMPOSE_CHANGE: return updateCompose(state, action.id, compose => compose .set('text', action.text) - .set('idempotencyKey', uuid())); + .set('idempotencyKey', crypto.randomUUID())); case COMPOSE_REPLY: return updateCompose(state, action.id, compose => compose.withMutations(map => { const defaultCompose = state.get('default')!; @@ -314,7 +313,7 @@ export default function compose(state = initialState, action: ComposeAction | Ev map.set('privacy', privacyPreference(action.status.visibility, defaultCompose.privacy)); map.set('focusDate', new Date()); map.set('caretPosition', null); - map.set('idempotencyKey', uuid()); + map.set('idempotencyKey', crypto.randomUUID()); map.set('content_type', defaultCompose.content_type); if (action.preserveSpoilers && action.status.spoiler_text) { map.set('spoiler', true); @@ -326,7 +325,7 @@ export default function compose(state = initialState, action: ComposeAction | Ev return updateCompose(state, action.id, compose => compose.withMutations(map => { map.set('in_reply_to', action.status.get('id')); map.set('to', statusToMentionsArray(action.status, action.account)); - map.set('idempotencyKey', uuid()); + map.set('idempotencyKey', crypto.randomUUID()); })); case COMPOSE_QUOTE: return updateCompose(state, 'compose-modal', compose => compose.withMutations(map => { @@ -339,7 +338,7 @@ export default function compose(state = initialState, action: ComposeAction | Ev map.set('privacy', privacyPreference(action.status.visibility, defaultCompose.privacy)); map.set('focusDate', new Date()); map.set('caretPosition', null); - map.set('idempotencyKey', uuid()); + map.set('idempotencyKey', crypto.randomUUID()); map.set('content_type', defaultCompose.content_type); map.set('spoiler', false); map.set('spoiler_text', ''); @@ -362,7 +361,7 @@ export default function compose(state = initialState, action: ComposeAction | Ev case COMPOSE_RESET: case COMPOSE_SUBMIT_SUCCESS: return updateCompose(state, action.id, () => state.get('default')!.withMutations(map => { - map.set('idempotencyKey', uuid()); + map.set('idempotencyKey', crypto.randomUUID()); map.set('in_reply_to', action.id.startsWith('reply:') ? action.id.slice(6) : null); if (action.id.startsWith('group:')) { map.set('privacy', 'group'); @@ -388,7 +387,7 @@ export default function compose(state = initialState, action: ComposeAction | Ev map.update('text', text => [text.trim(), `@${action.account.acct} `].filter((str) => str.length !== 0).join(' ')); map.set('focusDate', new Date()); map.set('caretPosition', null); - map.set('idempotencyKey', uuid()); + map.set('idempotencyKey', crypto.randomUUID()); })); case COMPOSE_DIRECT: return updateCompose(state, 'compose-modal', compose => compose.withMutations(map => { @@ -396,7 +395,7 @@ export default function compose(state = initialState, action: ComposeAction | Ev map.set('privacy', 'direct'); map.set('focusDate', new Date()); map.set('caretPosition', null); - map.set('idempotencyKey', uuid()); + map.set('idempotencyKey', crypto.randomUUID()); })); case COMPOSE_GROUP_POST: return updateCompose(state, action.id, compose => compose.withMutations(map => { @@ -404,7 +403,7 @@ export default function compose(state = initialState, action: ComposeAction | Ev map.set('group_id', action.group_id); map.set('focusDate', new Date()); map.set('caretPosition', null); - map.set('idempotencyKey', uuid()); + map.set('idempotencyKey', crypto.randomUUID()); })); case COMPOSE_SUGGESTIONS_CLEAR: return updateCompose(state, action.id, compose => compose.update('suggestions', list => list?.clear()).set('suggestion_token', null)); @@ -449,7 +448,7 @@ export default function compose(state = initialState, action: ComposeAction | Ev map.set('privacy', action.status.get('visibility')); map.set('focusDate', new Date()); map.set('caretPosition', null); - map.set('idempotencyKey', uuid()); + map.set('idempotencyKey', crypto.randomUUID()); map.set('content_type', action.contentType || 'text/plain'); map.set('quote', action.status.getIn(['quote', 'id']) as string); map.set('group_id', action.status.getIn(['group', 'id']) as string); diff --git a/yarn.lock b/yarn.lock index 8901a2271..b99c52e77 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1730,23 +1730,11 @@ lodash "^4.17.21" mousetrap "^1.6.5" -"@noble/ciphers@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-0.2.0.tgz#a12cda60f3cf1ab5d7c77068c3711d2366649ed7" - integrity sha512-6YBxJDAapHSdd3bLDv6x2wRPwq4QFMUaB3HvljNBUTThDd12eSm7/3F+2lnfzx2jvM+S6Nsy0jEt9QbPqSwqRw== - "@noble/ciphers@^0.5.1": version "0.5.1" resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-0.5.1.tgz#292f388b69c9ed80d49dca1a5cbfd4ff06852111" integrity sha512-aNE06lbe36ifvMbbWvmmF/8jx6EQPu2HVg70V95T+iGjOuYwPpAccwAQc2HlXO2D0aiQ3zavbMga4jjWnrpiPA== -"@noble/curves@1.1.0", "@noble/curves@~1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" - integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== - dependencies: - "@noble/hashes" "1.3.1" - "@noble/curves@1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" @@ -1754,6 +1742,13 @@ dependencies: "@noble/hashes" "1.3.2" +"@noble/curves@~1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" + integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== + dependencies: + "@noble/hashes" "1.3.1" + "@noble/curves@~1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" @@ -1771,7 +1766,7 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== -"@noble/hashes@1.4.0", "@noble/hashes@^1.3.3", "@noble/hashes@^1.4.0", "@noble/hashes@~1.4.0": +"@noble/hashes@1.4.0", "@noble/hashes@^1.4.0", "@noble/hashes@~1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== @@ -2615,11 +2610,6 @@ resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43" integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== -"@types/uuid@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.0.tgz#53ef263e5239728b56096b0a869595135b7952d2" - integrity sha512-kr90f+ERiQtKWMz5rP32ltJ/BtULDI5RVO0uavn1HQUOwjx0R1h0rnDYNL0CepF1zL5bSY6FISAfd9tOdDhU5Q== - "@typescript-eslint/eslint-plugin@^7.0.0": version "7.0.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.0.1.tgz#407daffe09d964d57aceaf3ac51846359fbe61b0" @@ -3379,11 +3369,6 @@ boolbase@^1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= -bootstrap-icons@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bootstrap-icons/-/bootstrap-icons-1.5.0.tgz#2cb19da148aa9105cb3174de2963564982d3dc55" - integrity sha512-44feMc7DE1Ccpsas/1wioN8ewFJNquvi5FewA06wLnqct7CwMdGDVy41ieHaacogzDqLfG8nADIvMNp9e4bfbA== - bowser@^2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" @@ -3518,7 +3503,7 @@ chai@^5.1.1: loupe "^3.1.0" pathval "^2.0.0" -chalk@^2.3.2, chalk@^2.4.2: +chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3734,11 +3719,6 @@ core-js-compat@^3.31.0: dependencies: browserslist "^4.21.10" -core-js@^3.27.2: - version "3.27.2" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.27.2.tgz#85b35453a424abdcacb97474797815f4d62ebbf7" - integrity sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w== - cosmiconfig@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" @@ -5000,7 +4980,7 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.2, glob@^7.1.3, glob@^7.1.6: +glob@^7.1.3, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -5353,7 +5333,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3: +inherits@2: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -5377,11 +5357,6 @@ internal-slot@^1.0.5: has "^1.0.3" side-channel "^1.0.4" -intersection-observer@^0.12.2: - version "0.12.2" - resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.12.2.tgz#4a45349cc0cd91916682b1f44c28d7ec737dc375" - integrity sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg== - intl-messageformat@10.5.11: version "10.5.11" resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.11.tgz#95d6a3b0b303f924d5d8c3f8d3ad057d1dc73c64" @@ -5414,14 +5389,6 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" @@ -5518,7 +5485,7 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-generator-function@^1.0.10, is-generator-function@^1.0.7: +is-generator-function@^1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== @@ -5623,7 +5590,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.3, is-typed-array@^1.1.9: +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: version "1.1.12" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== @@ -6309,18 +6276,11 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.2.0, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -mkdirp@^0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - mousetrap@^1.6.5: version "1.6.5" resolved "https://registry.yarnpkg.com/mousetrap/-/mousetrap-1.6.5.tgz#8a766d8c272b08393d5f56074e0b5ec183485bf9" @@ -6391,26 +6351,6 @@ normalize-url@^6.0.1: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -nostr-machina@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/nostr-machina/-/nostr-machina-0.1.0.tgz#e111e86eb51655e5de31862174d23de184e6e98a" - integrity sha512-sNswM9vgq7R/96YIJKZOlG0M/m2mZrb1TiPA7hpOMrnWHBGdDuAeON0vLWJaGbvpuDKYQ1b5ZiLZ8HM3EZPevw== - dependencies: - nostr-tools "^1.14.0" - zod "^3.21.0" - -nostr-tools@^1.14.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/nostr-tools/-/nostr-tools-1.16.0.tgz#5867f1d8bd055a5a3b27aadb199457dceb244314" - integrity sha512-sx/aOl0gmkeHVoIVbyOhEQhzF88NsrBXMC8bsjhPASqA6oZ8uSOAyEGgRLMfC3SKgzQD5Gr6KvDoAahaD6xKcg== - dependencies: - "@noble/ciphers" "^0.2.0" - "@noble/curves" "1.1.0" - "@noble/hashes" "1.3.1" - "@scure/base" "1.1.1" - "@scure/bip32" "1.3.1" - "@scure/bip39" "1.2.1" - nostr-tools@^2.3.0, nostr-tools@^2.5.0: version "2.5.1" resolved "https://registry.yarnpkg.com/nostr-tools/-/nostr-tools-2.5.1.tgz#614d6aaf5c21df6b239d7ed42fdf77616a4621e7" @@ -7030,11 +6970,6 @@ prismjs@^1.27.0: resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - prop-types-extra@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.1.tgz#58c3b74cbfbb95d304625975aa2f0848329a010b" @@ -7221,16 +7156,6 @@ react-inlinesvg@^4.0.0: dependencies: react-from-dom "^0.6.2" -react-intl-translations-manager@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/react-intl-translations-manager/-/react-intl-translations-manager-5.0.3.tgz#aee010ecf35975673e033ca5d7d3f4147894324d" - integrity sha512-EfBeugnOGFcdUbQyY9TqBMbuauQ8wm73ZqFr0UqCljhbXl7YDHQcVzclWFRkVmlUffzxitLQFhAZEVVeRNQSwA== - dependencies: - chalk "^2.3.2" - glob "^7.1.2" - json-stable-stringify "^1.0.1" - mkdirp "^0.5.1" - react-intl@^6.0.0: version "6.4.7" resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-6.4.7.tgz#28ec40350ff791a6a773f5e76b9e12835ae17e19" @@ -7309,7 +7234,7 @@ react-redux@^9.0.4: "@types/use-sync-external-store" "^0.0.3" use-sync-external-store "^1.0.0" -react-refresh@^0.14.0, react-refresh@^0.14.2: +react-refresh@^0.14.2: version "0.14.2" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9" integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== @@ -7586,11 +7511,6 @@ reselect@^5.0.0, reselect@^5.0.1: resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.0.1.tgz#587cdaaeb4e0e8927cff80ebe2bbef05f74b1648" integrity sha512-D72j2ubjgHpvuCiORWkOUxndHJrxDaSolheiz5CO+roz8ka97/4msh2E8F5qay4GawR5vzBt5MkbDHT+Rdy/Wg== -resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" - integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== - resolve-alpn@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" @@ -7737,7 +7657,7 @@ safe-array-concat@^1.0.1: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2: +safe-buffer@^5.0.1, safe-buffer@^5.1.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -8200,11 +8120,6 @@ stylelint@^16.0.2: table "^6.8.1" write-file-atomic "^5.0.1" -substring-trie@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/substring-trie/-/substring-trie-1.0.2.tgz#7b42592391628b4f2cb17365c6cce4257c7b7af5" - integrity sha1-e0JZI5Fii08ssXNlxszkJXx7evU= - sucrase@^3.32.0: version "3.34.0" resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f" @@ -8398,11 +8313,6 @@ tiny-invariant@^1.0.2, tiny-invariant@^1.1.0: resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== -tiny-queue@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tiny-queue/-/tiny-queue-0.2.1.tgz#25a67f2c6e253b2ca941977b5ef7442ef97a6046" - integrity sha1-JaZ/LG4lOyypQZd7XvdELvl6YEY= - tiny-warning@^1.0.0, tiny-warning@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" @@ -8502,7 +8412,7 @@ tsconfig-paths@^3.14.2: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@2.6.2, tslib@^2.0.3, tslib@^2.3.1, tslib@^2.4.0, "tslib@^2.4.1 || ^1.9.3": +tslib@2.6.2, tslib@^2.0.3, tslib@^2.4.0, "tslib@^2.4.1 || ^1.9.3": version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -8705,23 +8615,6 @@ util-deprecate@^1.0.2: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util@^0.12.4: - version "0.12.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" - integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - safe-buffer "^5.1.2" - which-typed-array "^1.1.2" - -uuid@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" - integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== - value-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" @@ -9055,7 +8948,7 @@ which-collection@^1.0.1: is-weakmap "^2.0.1" is-weakset "^2.0.1" -which-typed-array@^1.1.11, which-typed-array@^1.1.2, which-typed-array@^1.1.9: +which-typed-array@^1.1.11, which-typed-array@^1.1.9: version "1.1.11" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== @@ -9088,11 +8981,6 @@ why-is-node-running@^2.3.0: siginfo "^2.0.0" stackback "0.0.2" -wicg-inert@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/wicg-inert/-/wicg-inert-3.1.1.tgz#b033fd4fbfb9e3fd709e5d84becbdf2e06e5c229" - integrity sha512-PhBaNh8ur9Xm4Ggy4umelwNIP6pPP1bv3EaWaKqfb/QNme2rdLjm7wIInvV4WhxVHhzA4Spgw9qNSqWtB/ca2A== - workbox-background-sync@7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-7.1.0.tgz#dac65e30af603511f1c92c3e99f53d6c064fde90" @@ -9350,7 +9238,7 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zod@^3.21.0, zod@^3.23.4, zod@^3.23.5: +zod@^3.23.4, zod@^3.23.5: version "3.23.5" resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.5.tgz#c7b7617d017d4a2f21852f533258d26a9a5ae09f" integrity sha512-fkwiq0VIQTksNNA131rDOsVJcns0pfVUjHzLrNBiF/O/Xxb5lQyEXkhZWcJ7npWsYlvs+h0jFWXXy4X46Em1JA== From c0c636aecda5b5a9a856bebd85bdff76bfc806dc Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Thu, 26 Sep 2024 12:27:52 -0500 Subject: [PATCH 5/7] Remove react-popper --- package.json | 2 -- src/components/profile-hover-card.tsx | 12 ++++++++---- src/components/status-hover-card.tsx | 11 +++++++---- yarn.lock | 4 ++-- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 161040678..3caffdf7b 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,6 @@ "@lexical/utils": "^0.14.2", "@mkljczk/react-hotkeys": "^1.2.2", "@nostrify/nostrify": "npm:@jsr/nostrify__nostrify", - "@popperjs/core": "^2.11.5", "@reach/combobox": "^0.18.0", "@reach/menu-button": "^0.18.0", "@reach/popover": "^0.18.0", @@ -138,7 +137,6 @@ "react-intl": "^6.0.0", "react-motion": "^0.5.2", "react-overlays": "^0.9.0", - "react-popper": "^2.3.0", "react-redux": "^9.0.4", "react-router-dom": "^5.3.0", "react-router-dom-v5-compat": "^6.6.2", diff --git a/src/components/profile-hover-card.tsx b/src/components/profile-hover-card.tsx index db555e226..920eb5a8b 100644 --- a/src/components/profile-hover-card.tsx +++ b/src/components/profile-hover-card.tsx @@ -1,7 +1,7 @@ +import { useFloating } from '@floating-ui/react'; import clsx from 'clsx'; import React, { useEffect, useState } from 'react'; import { useIntl, FormattedMessage } from 'react-intl'; -import { usePopper } from 'react-popper'; import { useHistory } from 'react-router-dom'; import { fetchRelationships } from 'soapbox/actions/accounts'; @@ -87,7 +87,12 @@ export const ProfileHoverCard: React.FC = ({ visible = true } }; }, []); - const { styles, attributes } = usePopper(targetRef, popperElement); + const { floatingStyles } = useFloating({ + elements: { + floating: popperElement, + reference: targetRef, + }, + }); if (!account) return null; const accountBio = { __html: account.note_emojified }; @@ -102,8 +107,7 @@ export const ProfileHoverCard: React.FC = ({ visible = true } 'opacity-0 pointer-events-none': !visible, })} ref={setPopperElement} - style={styles.popper} - {...attributes.popper} + style={floatingStyles} onMouseEnter={handleMouseEnter(dispatch)} onMouseLeave={handleMouseLeave(dispatch)} > diff --git a/src/components/status-hover-card.tsx b/src/components/status-hover-card.tsx index 08359c61a..dbf1d8bd2 100644 --- a/src/components/status-hover-card.tsx +++ b/src/components/status-hover-card.tsx @@ -1,6 +1,6 @@ +import { useFloating } from '@floating-ui/react'; import clsx from 'clsx'; import React, { useEffect, useState, useCallback } from 'react'; -import { usePopper } from 'react-popper'; import { useHistory } from 'react-router-dom'; import { @@ -46,8 +46,12 @@ export const StatusHoverCard: React.FC = ({ visible = true }) }; }, []); - const { styles, attributes } = usePopper(targetRef, popperElement, { + const { floatingStyles } = useFloating({ placement: 'top', + elements: { + floating: popperElement, + reference: targetRef, + }, }); const handleMouseEnter = useCallback((): React.MouseEventHandler => { @@ -85,8 +89,7 @@ export const StatusHoverCard: React.FC = ({ visible = true }) 'opacity-0 pointer-events-none': !visible, })} ref={setPopperElement} - style={styles.popper} - {...attributes.popper} + style={floatingStyles} onMouseEnter={handleMouseEnter()} onMouseLeave={handleMouseLeave()} > diff --git a/yarn.lock b/yarn.lock index b99c52e77..cae89f7ac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1812,7 +1812,7 @@ websocket-ts "^2.1.5" zod "^3.23.4" -"@popperjs/core@^2.11.5", "@popperjs/core@^2.9.2": +"@popperjs/core@^2.9.2": version "2.11.5" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.5.tgz#db5a11bf66bdab39569719555b0f76e138d7bd64" integrity sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw== @@ -7213,7 +7213,7 @@ react-overlays@^0.9.0: react-transition-group "^2.2.1" warning "^3.0.0" -react-popper@^2.2.5, react-popper@^2.3.0: +react-popper@^2.2.5: version "2.3.0" resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.3.0.tgz#17891c620e1320dce318bad9fede46a5f71c70ba" integrity sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q== From 1d60f4ed69fd430559b1e8100c1766deecacc866 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Thu, 26 Sep 2024 12:46:09 -0500 Subject: [PATCH 6/7] Upgrade lexical to v18 --- package.json | 14 +-- yarn.lock | 310 +++++++++++++++++++++++++++++---------------------- 2 files changed, 186 insertions(+), 138 deletions(-) diff --git a/package.json b/package.json index 3caffdf7b..aeec5ff4d 100644 --- a/package.json +++ b/package.json @@ -48,12 +48,12 @@ "@fontsource/roboto-mono": "^5.0.0", "@fontsource/vazirmatn": "^5.0.20", "@gamestdio/websocket": "^0.3.2", - "@lexical/clipboard": "^0.14.2", - "@lexical/hashtag": "^0.14.2", - "@lexical/link": "^0.14.2", - "@lexical/react": "^0.14.2", - "@lexical/selection": "^0.14.2", - "@lexical/utils": "^0.14.2", + "@lexical/clipboard": "^0.18.0", + "@lexical/hashtag": "^0.18.0", + "@lexical/link": "^0.18.0", + "@lexical/react": "^0.18.0", + "@lexical/selection": "^0.18.0", + "@lexical/utils": "^0.18.0", "@mkljczk/react-hotkeys": "^1.2.2", "@nostrify/nostrify": "npm:@jsr/nostrify__nostrify", "@reach/combobox": "^0.18.0", @@ -115,7 +115,7 @@ "intl-pluralrules": "^2.0.0", "isomorphic-dompurify": "^2.3.0", "leaflet": "^1.8.0", - "lexical": "^0.14.2", + "lexical": "^0.18.0", "line-awesome": "^1.3.0", "localforage": "^1.10.0", "lodash": "^4.7.11", diff --git a/yarn.lock b/yarn.lock index cae89f7ac..e59e33255 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1562,160 +1562,208 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@lexical/clipboard@0.14.2", "@lexical/clipboard@^0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/clipboard/-/clipboard-0.14.2.tgz#4638acdc80816500e87096646a98f24a34b94fa9" - integrity sha512-WevZZ+VPpkvcgZZXxjHY2lc3+2kw+UA6q19MWdZA2y4NVQyeDmjxQp5uxdUWGTKTBzt22vlzeQ2jbtKz4wY3/g== +"@lexical/clipboard@0.18.0", "@lexical/clipboard@^0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/clipboard/-/clipboard-0.18.0.tgz#584ac4188461d1048717d854cb75ed14813b38f3" + integrity sha512-ybc+hx14wj0n2ZjdOkLcZ02MRB3UprXjpLDXlByFIuVcZpUxVcp3NzA0UBPOKXYKvdt0bmgjnAsFWM5OSbwS0w== dependencies: - "@lexical/html" "0.14.2" - "@lexical/list" "0.14.2" - "@lexical/selection" "0.14.2" - "@lexical/utils" "0.14.2" + "@lexical/html" "0.18.0" + "@lexical/list" "0.18.0" + "@lexical/selection" "0.18.0" + "@lexical/utils" "0.18.0" + lexical "0.18.0" -"@lexical/code@0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/code/-/code-0.14.2.tgz#e23443275b342e245684cc4e1889130edd746cbc" - integrity sha512-XByweRm8flv/2nwwLbnZwskl2y6jWuDFuKB/8ywvSenMsGyr7OSg5ALJrsFuX5KUo9mEGGpaiM8UVeMoeaqMgg== +"@lexical/code@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/code/-/code-0.18.0.tgz#990156c059ee78ad4359ae17df03a0840a0f0d27" + integrity sha512-VB8fRHIrB8QTqyZUvGBMVWP2tpKe3ArOjPdWAqgrS8MVFldqUhuTHcW+XJFkVxcEBYCXynNT29YRYtQhfQ+vDQ== dependencies: - "@lexical/utils" "0.14.2" + "@lexical/utils" "0.18.0" + lexical "0.18.0" prismjs "^1.27.0" -"@lexical/dragon@0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/dragon/-/dragon-0.14.2.tgz#493af45501550227b0274ff8b7307a2d9ba0c38d" - integrity sha512-yzYJ3HD/goZZW5+ckYGCidtQ5zwrT08yDPhNgFUh9eni2ePQ9b56x2Bko01urocIkEqA0d6VEtfoO+hAOHiq6Q== - -"@lexical/hashtag@0.14.2", "@lexical/hashtag@^0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/hashtag/-/hashtag-0.14.2.tgz#7ae794480079c702e707319e7b588aec39b2b060" - integrity sha512-H2z71iGX3n0ZB45y5uoI7aPwVjClo01df480IrTecKxr4aAKbK5LhFQWOphiUXBiv4O1sn+Xa88f8IpbfqQ5Vg== +"@lexical/devtools-core@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/devtools-core/-/devtools-core-0.18.0.tgz#436fb1a7489de63114f7c8ee639aa40b5becca3a" + integrity sha512-gVgtEkLwGjz1frOmDpFJzDPFxPgAcC9n5ZaaZWHo5GLcptnQmkuLm1t+UInQWujXhFmcyJzfiqDaMJ8EIcb2Ww== dependencies: - "@lexical/utils" "0.14.2" + "@lexical/html" "0.18.0" + "@lexical/link" "0.18.0" + "@lexical/mark" "0.18.0" + "@lexical/table" "0.18.0" + "@lexical/utils" "0.18.0" + lexical "0.18.0" -"@lexical/history@0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/history/-/history-0.14.2.tgz#740a6dffd0c5250ada12ce13f514d0c3f7df960b" - integrity sha512-k0gNIKCDeyIWEHIJKHZFfGVEN4yPID8tfuR4/R1M12WUwnga/X3regxPSMV8LE1SWbCz6iiQuaeZozxOJ3AlRw== +"@lexical/dragon@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/dragon/-/dragon-0.18.0.tgz#bec3d6742eff4ac9e70bc448f438cab30bd61081" + integrity sha512-toD/y2/TgtG+eFVKXf65kDk/Mv02FwgmcGH18nyAabZnO1TLBaMYPkGFdTTZ8hVmQxqIu9nZuLWUbdIBMs8UWw== dependencies: - "@lexical/utils" "0.14.2" + lexical "0.18.0" -"@lexical/html@0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/html/-/html-0.14.2.tgz#8b8f0d81d0afdea9865ef9fba814705daabbbf23" - integrity sha512-5uL0wSfS9H5/HNeCM4QaJMekoL1w4D81361RlC2ppKt1diSzLiWOITX1qElaTcnDJBGez5mv1ZNiRTutYOPV4Q== +"@lexical/hashtag@0.18.0", "@lexical/hashtag@^0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/hashtag/-/hashtag-0.18.0.tgz#40e14a44f7d333be08db32814a30bbb0251bf441" + integrity sha512-bm+Sv7keguVYbUY0ngd+iAv2Owd3dePzdVkzkmw9Al8GPXkE5ll8fjq6Xjw2u3OVhf+9pTnesIo/AS7H+h0exw== dependencies: - "@lexical/selection" "0.14.2" - "@lexical/utils" "0.14.2" + "@lexical/utils" "0.18.0" + lexical "0.18.0" -"@lexical/link@0.14.2", "@lexical/link@^0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/link/-/link-0.14.2.tgz#78c220a81475505b17fb8fa6c5baff08a3ed3b5b" - integrity sha512-XD4VdxtBm9Yx5vk2hDEDKY1BjgNVdfmxQHo6Y/kyImAHhGRiBWa6V1+l55qfgcjPW3tN2QY/gSKDCPQGk7vKJw== +"@lexical/history@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/history/-/history-0.18.0.tgz#b0eadd62d4f61907e28093a3eef32823deb910ea" + integrity sha512-c87J4ke1Sae03coElJay2Ikac/4OcA2OmhtNbt2gAi/XBtcsP4mPuz1yZfZf9XIe+weekObgjinvZekQ2AFw0g== dependencies: - "@lexical/utils" "0.14.2" + "@lexical/utils" "0.18.0" + lexical "0.18.0" -"@lexical/list@0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/list/-/list-0.14.2.tgz#b1d70e95e9b6a22f22b47f11ed7b667b1eeacdd2" - integrity sha512-74MVHcYtTC5Plj+GGRV08uk9qbI1AaKc37NGLe3T08aVBqzqxXl1qZK9BhrM2mqTVXB98ZnOXkBk+07vke+b0Q== +"@lexical/html@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/html/-/html-0.18.0.tgz#a4019a4692da23e6f810c21a7202bae5a45428a4" + integrity sha512-8lhba1DFnnobXgYm4Rk5Gr2tZedD4Gl6A/NKCt7whO/CET63vT3UnK2ggcVVgtIJG530Cv0bdZoJbJu5DauI5w== dependencies: - "@lexical/utils" "0.14.2" + "@lexical/selection" "0.18.0" + "@lexical/utils" "0.18.0" + lexical "0.18.0" -"@lexical/mark@0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/mark/-/mark-0.14.2.tgz#0f264d7f287c380e99a118eeba84a4bb94abc403" - integrity sha512-8G1p2tuUkymWXvWgUUShZp5AgYIODUZrBYDpGsCBNkXuSdGagOirS5LhKeiT/68BnrPzGrlnCdmomnI/kMxh6w== +"@lexical/link@0.18.0", "@lexical/link@^0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/link/-/link-0.18.0.tgz#e0b36321e420ae385578bfb2a682b8407b34f2db" + integrity sha512-GCYcbNTSTwJk0lr+GMc8nn6Meq44BZs3QL2d1B0skpZAspd8yI53sRS6HDy5P+jW5P0dzyZr/XJAU4U+7zsEEg== dependencies: - "@lexical/utils" "0.14.2" + "@lexical/utils" "0.18.0" + lexical "0.18.0" -"@lexical/markdown@0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/markdown/-/markdown-0.14.2.tgz#26ae02482708632bc2e0e4a662c39a443f8e3bdc" - integrity sha512-U5P8ceEhiQqEKyy3dx4ldVBdoajquVndrZ4TvS6HJs8jeqOH49sLMvbKtNpXPL1plGvvwAjutQzEUdY+ifpGgw== +"@lexical/list@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/list/-/list-0.18.0.tgz#4aece48efa8fde89c25cbd3e27184e73ed130e40" + integrity sha512-DEWs9Scbg3+STZeE2O0OoG8SWnKnxQccObBzyeHRjn4GAN6JA7lgcAzfrdgp0fNWTbMM/ku876MmXKGnqhvg9Q== dependencies: - "@lexical/code" "0.14.2" - "@lexical/link" "0.14.2" - "@lexical/list" "0.14.2" - "@lexical/rich-text" "0.14.2" - "@lexical/text" "0.14.2" - "@lexical/utils" "0.14.2" + "@lexical/utils" "0.18.0" + lexical "0.18.0" -"@lexical/offset@0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/offset/-/offset-0.14.2.tgz#7cbade3817b55e305013a61698465df9f4e8b3ab" - integrity sha512-bv6M+HITGNDuXvIELB1NLobRKoxtP1JPG3zDhKGPnLyjzFeHE5FZ6QbGc9y8ltrhUafVmxgzW/Es0IJXTsGf7Q== - -"@lexical/overflow@0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/overflow/-/overflow-0.14.2.tgz#63482f6941b0f21bf79639e36fd5711052e84adf" - integrity sha512-2eHirK9GmGr7juMjeF54fZ8xPwdMMzni+FXC4NVMDWzzM3yjK3BCBK6AUJsU3o4Y4bV3mUvZp55x9Ys5lX3zOw== - -"@lexical/plain-text@0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/plain-text/-/plain-text-0.14.2.tgz#498306c83bbd5be24f6c6935670e77247763d866" - integrity sha512-vHvJ+Dy+SpzZ0hVN3r+DONHoSn0WzuK6htwsV0IyaMyEeypxnFs6FB/znyWmoU+X2EAhDCu5O9npLDWmrJjCdQ== - -"@lexical/react@^0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/react/-/react-0.14.2.tgz#2a6b812f0e07cba05b02ff2b8bdfb9b4afc05873" - integrity sha512-HCsZv5yExA/8h7Ul6y5NcqUAGctL79A7qSz7YSlrwfw8EYyUHXW5LzeoFTWSl12SKs600PM+I8jLGXu72N6kfQ== +"@lexical/mark@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/mark/-/mark-0.18.0.tgz#9aa4c7bbaf261141332a12e642942095f76230b4" + integrity sha512-QA4YWfTP5WWnCnoH/RmfcsSZyhhd7oeFWDpfP7S8Bbmhz6kiPwGcsVr+uRQBBT56AqEX167xX2rX8JR6FiYZqA== dependencies: - "@lexical/clipboard" "0.14.2" - "@lexical/code" "0.14.2" - "@lexical/dragon" "0.14.2" - "@lexical/hashtag" "0.14.2" - "@lexical/history" "0.14.2" - "@lexical/link" "0.14.2" - "@lexical/list" "0.14.2" - "@lexical/mark" "0.14.2" - "@lexical/markdown" "0.14.2" - "@lexical/overflow" "0.14.2" - "@lexical/plain-text" "0.14.2" - "@lexical/rich-text" "0.14.2" - "@lexical/selection" "0.14.2" - "@lexical/table" "0.14.2" - "@lexical/text" "0.14.2" - "@lexical/utils" "0.14.2" - "@lexical/yjs" "0.14.2" + "@lexical/utils" "0.18.0" + lexical "0.18.0" + +"@lexical/markdown@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/markdown/-/markdown-0.18.0.tgz#612c2324fbf6294ef956d8a840a4eae677ef8476" + integrity sha512-uSWwcK8eJw5C+waEhU5WoX8W+JxNZbKuFnZwsn5nsp+iQgqMj4qY6g0yJub4sq8vvh6jjl4vVXhXTq2up9aykw== + dependencies: + "@lexical/code" "0.18.0" + "@lexical/link" "0.18.0" + "@lexical/list" "0.18.0" + "@lexical/rich-text" "0.18.0" + "@lexical/text" "0.18.0" + "@lexical/utils" "0.18.0" + lexical "0.18.0" + +"@lexical/offset@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/offset/-/offset-0.18.0.tgz#1d12df8dcdeb0f43447d3109f72fb188e7662a65" + integrity sha512-KGlboyLSxQAH5PMOlJmyvHlbYXZneVnKiHpfyBV5IUX5kuyB/eZbQEYcJP9saekfQ5Xb1FWXWmsZEo+sWtrrZA== + dependencies: + lexical "0.18.0" + +"@lexical/overflow@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/overflow/-/overflow-0.18.0.tgz#18ede63a4f5041778bc21902b08d188620ef6c0a" + integrity sha512-3ATTwttVgZtVLq60ZUWbpbXBbpuMa3PZD5CxSP3nulviL+2I4phvacV4WUN+8wMeq+PGmuarl+cYfrFL02ii3g== + dependencies: + lexical "0.18.0" + +"@lexical/plain-text@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/plain-text/-/plain-text-0.18.0.tgz#f77860bc086c0ab64b691c27a064ec1f38c9edb7" + integrity sha512-L6yQpiwW0ZacY1oNwvRBxSuW2TZaUcveZLheJc8JzGcZoVxzII/CAbLZG8691VbNuKsbOURiNXZIsgwujKmo4Q== + dependencies: + "@lexical/clipboard" "0.18.0" + "@lexical/selection" "0.18.0" + "@lexical/utils" "0.18.0" + lexical "0.18.0" + +"@lexical/react@^0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/react/-/react-0.18.0.tgz#3d857dacda06969ff7e189383a53ec3767b14fb1" + integrity sha512-DLvIbTsjvFIFqm+9zvAjEwuZHAbSxzZf1AGqf1lLctlL/Ran0f+8EZOv5jttELTe7xISZ2+xSXTLRfyxhNwGXQ== + dependencies: + "@lexical/clipboard" "0.18.0" + "@lexical/code" "0.18.0" + "@lexical/devtools-core" "0.18.0" + "@lexical/dragon" "0.18.0" + "@lexical/hashtag" "0.18.0" + "@lexical/history" "0.18.0" + "@lexical/link" "0.18.0" + "@lexical/list" "0.18.0" + "@lexical/mark" "0.18.0" + "@lexical/markdown" "0.18.0" + "@lexical/overflow" "0.18.0" + "@lexical/plain-text" "0.18.0" + "@lexical/rich-text" "0.18.0" + "@lexical/selection" "0.18.0" + "@lexical/table" "0.18.0" + "@lexical/text" "0.18.0" + "@lexical/utils" "0.18.0" + "@lexical/yjs" "0.18.0" + lexical "0.18.0" react-error-boundary "^3.1.4" -"@lexical/rich-text@0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/rich-text/-/rich-text-0.14.2.tgz#d2ef208b5f5b0fb4021c61a00187ba8da016ce69" - integrity sha512-KXxeVfzHw4volw5Tm/TXGCDH+OCvFm1QU17LK3ToAulN2M+j0745yxpudtRfcl96fIbB9THY2toAZpJ9YbMTNQ== - -"@lexical/selection@0.14.2", "@lexical/selection@^0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/selection/-/selection-0.14.2.tgz#39d6c0db233790eec81125653503e20deadc13a9" - integrity sha512-M122XXGEiBgaxEhL63d+su0pPri67/GlFIwGC/j3D0TN4Giyt/j0ToHhqvlIF6TfuXlBusIYbSuJ19ny12lCEg== - -"@lexical/table@0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/table/-/table-0.14.2.tgz#a28e0e24dfc8c43ac4ccf53dd33c1292969740d6" - integrity sha512-iwsZ5AqkM7RGyU38daK0XgpC8DG0TlEqEYsXhOLjCpAERY/+bgfdjxP8YWtUV5eIgHX0yY7FkqCUZUJSEcbUeA== +"@lexical/rich-text@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/rich-text/-/rich-text-0.18.0.tgz#09a3baaeb497131f50ef1d3e1d808c312a2c48c2" + integrity sha512-xMANCB7WueMsmWK8qxik5FZN4ApyaHWHQILS9r4FTbdv/DlNepsR7Pt8kg2317xZ56NAueQLIdyyKYXG1nBrHw== dependencies: - "@lexical/utils" "0.14.2" + "@lexical/clipboard" "0.18.0" + "@lexical/selection" "0.18.0" + "@lexical/utils" "0.18.0" + lexical "0.18.0" -"@lexical/text@0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/text/-/text-0.14.2.tgz#5a6fdd78ac3ec62baa23bbb3466046b7b18f2dfb" - integrity sha512-5N1Bwr75EGdP/4izQRzoxyKpozy+0YixGJOo3OoldlX9/j+Sf5XiCFj3Ifgfl5dygZ0oITQk4duHpzjPHez59Q== - -"@lexical/utils@0.14.2", "@lexical/utils@^0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/utils/-/utils-0.14.2.tgz#7ecb2e16f2a395c96be6de0128bcb7de54589872" - integrity sha512-IGknsaSyQbBJYKJJrrjNPaZuQPsJmFqGrCmNR6DcQNenWrFnmAliQPFA7HbszwRSxOFTo/BCAsIgXRQob6RjOQ== +"@lexical/selection@0.18.0", "@lexical/selection@^0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/selection/-/selection-0.18.0.tgz#5c9660c52b39b5338eb2e847f81b9d43dcb50c4a" + integrity sha512-mJoMhmxeZLfM9K2JMYETs9u179IkHQUlgtYG5GZJHjKx2iUn+9KvJ9RVssq+Lusi7C/N42wWPGNHDPdUvFtxXg== dependencies: - "@lexical/list" "0.14.2" - "@lexical/selection" "0.14.2" - "@lexical/table" "0.14.2" + lexical "0.18.0" -"@lexical/yjs@0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@lexical/yjs/-/yjs-0.14.2.tgz#30226dfb51a44195e7dfb1bf064198f80c629c07" - integrity sha512-0AKwQYRx7KvAKTdizoAXd9XZhkTO6l3LmHRvsu70YAHVZUEb9tVQBM7lp/dtBBQF0SII/7uKwrluX6Vi/apWYA== +"@lexical/table@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/table/-/table-0.18.0.tgz#ece206da2352b54f81e53defa0ac4f96ea30c70a" + integrity sha512-TeTAnuFAAgVjm1QE8adRB3GFWN+DUUiS4vzGq+ynPRCtNdpmW27NmTkRMyxKsetUtt7nIFfj4DvLvor4RwqIpA== dependencies: - "@lexical/offset" "0.14.2" + "@lexical/clipboard" "0.18.0" + "@lexical/utils" "0.18.0" + lexical "0.18.0" + +"@lexical/text@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/text/-/text-0.18.0.tgz#909f4ca08f06f323ff77e76514fcd432f47bb29f" + integrity sha512-MTHSBeq3K0+lqSsP5oysBMnY4tPVhB8kAa2xBnEc3dYgXFxEEvJwZahbHNX93EPObtJkxXfUuI63Al4G3lYK8A== + dependencies: + lexical "0.18.0" + +"@lexical/utils@0.18.0", "@lexical/utils@^0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/utils/-/utils-0.18.0.tgz#7e99feb99ef5ce88f2f16d522cc4501bfbf9165d" + integrity sha512-4s9dVpBZjqIaA/1q2GtfWFjKsv2Wqhjer0Zw2mcl1TIVN0zreXxcTKN316QppAWmSQJxVGvkWHjjaZJwl6/TSw== + dependencies: + "@lexical/list" "0.18.0" + "@lexical/selection" "0.18.0" + "@lexical/table" "0.18.0" + lexical "0.18.0" + +"@lexical/yjs@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/yjs/-/yjs-0.18.0.tgz#ca35614425b8dc7d162438c0c2b65b6e7788aba4" + integrity sha512-rl7Rl9XIb3ygQEEHOFtACdXs3BE+UUUmdyNqB6kK9A6IRGz+w4Azp+qzt8It/t+c0oaSYHpAtcLNXg1amJz+kA== + dependencies: + "@lexical/offset" "0.18.0" + "@lexical/selection" "0.18.0" + lexical "0.18.0" "@mdn/browser-compat-data@^5.2.34", "@mdn/browser-compat-data@^5.3.13": version "5.3.16" @@ -5925,10 +5973,10 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -lexical@^0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/lexical/-/lexical-0.14.2.tgz#592e0e16ef415a4423be7ff65ac995fc4da40c90" - integrity sha512-Uxe0jD2T4XY/+WKiVgnV6OH/GmsF1I0YStcSuMR3Alfhnv5MEYuCa482zo+S5zOPjB1x9j/b+TOLtZEMArwELw== +lexical@0.18.0, lexical@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/lexical/-/lexical-0.18.0.tgz#70dc89d8baf348b623d223c564616916a86118ce" + integrity sha512-3K/B0RpzjoW+Wj2E455wWXxkqxqK8UgdIiuqkOqdOsoSSo5mCkHOU6eVw7Nlmlr1MFvAMzGmz4RPn8NZaLQ2Mw== li@^1.3.0: version "1.3.0" From 066c4c7568b42ea8fe25437406d65b6330533c87 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Thu, 26 Sep 2024 13:29:13 -0500 Subject: [PATCH 7/7] manifest.json -> manifest.webmanifest --- index.html | 2 +- installation/docker.conf.template | 2 +- installation/mastodon.conf | 2 +- vite.config.ts | 1 - 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index f7261fb60..4e41d029c 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,7 @@ - + <%- snippets %> diff --git a/installation/docker.conf.template b/installation/docker.conf.template index 0938b756e..f8d6ee3cb 100644 --- a/installation/docker.conf.template +++ b/installation/docker.conf.template @@ -62,7 +62,7 @@ server { # Backend routes. # These are routes to the backend's API and important rendered pages. - location ~ ^/(api|oauth|auth|admin|pghero|sidekiq|manifest.json|media|nodeinfo|unsubscribe|.well-known/(webfinger|host-meta|nodeinfo|change-password)|@(.+)/embed$) { + location ~ ^/(api|oauth|auth|admin|pghero|sidekiq|manifest.webmanifest|media|nodeinfo|unsubscribe|.well-known/(webfinger|host-meta|nodeinfo|change-password)|@(.+)/embed$) { try_files /dev/null @backend; } diff --git a/installation/mastodon.conf b/installation/mastodon.conf index 906401763..5b001c179 100644 --- a/installation/mastodon.conf +++ b/installation/mastodon.conf @@ -83,7 +83,7 @@ server { # Mastodon backend routes. # These are routes to Mastodon's API and important rendered pages. - location ~ ^/(api|inbox|oauth|auth|admin|pghero|sidekiq|manifest.json|media|nodeinfo|unsubscribe|.well-known/(webfinger|host-meta|nodeinfo|change-password)|@(.+)/embed$) { + location ~ ^/(api|inbox|oauth|auth|admin|pghero|sidekiq|manifest.webmanifest|media|nodeinfo|unsubscribe|.well-known/(webfinger|host-meta|nodeinfo|change-password)|@(.+)/embed$) { try_files /dev/null @mastodon; } diff --git a/vite.config.ts b/vite.config.ts index 6005d076c..9e3d58410 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -66,7 +66,6 @@ export default defineConfig(({ command }) => ({ compileTime(), ], }, - manifestFilename: 'manifest.json', manifest: { name: 'Soapbox', short_name: 'Soapbox',