[dotcom] Delete service worker, cache tldraw assets (#2552)

A few things happening here

- Delete our service worker. Turns out that a couple of years back
browsers decided that a service worker is no longer required for a PWA
so you can just have the manifest and still install on the user's
device.
- Cache tldraw's assets as part of the dotcom vite asset pipeline. This
allows them to participate in the asset coalescing (preserving old
versions of asset files so old clients don't stop working when you
deploy new versions of things, see
https://github.com/tldraw/brivate/pull/3132 for more context).
- Add a new 'imports.vite.js' file to the assets package, because we
import a bunch of json translation files, and vite imports .json files
as parsed json objects instead of string urls, and there's no good way
to tell it not to. Even if there was we wouldn't want to impose that
config on our users. So another way to tell vite to load any asset as a
url string is to append `?url` to the end of the import path. That's
what this file does.

closes [#2486](https://github.com/tldraw/tldraw/issues/2486)

### Change Type

- [x] `minor` — New feature


[^1]: publishes a `patch` release, for devDependencies use `internal`
[^2]: will not publish a new version

### Release Notes

- Fix 'could not load assets' error that we often see on tldraw.com
after a deploy
This commit is contained in:
David Sheldrick 2024-01-19 15:31:01 +00:00 committed by GitHub
parent be927df935
commit ade38247d8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 581 additions and 704 deletions

View file

@ -26,3 +26,5 @@ apps/vscode/extension/editor/tldraw-assets.json
**/sentry.server.config.js
**/scripts/upload-sourcemaps.js
**/coverage/**/*
apps/dotcom/public/sw.js

View file

@ -13,7 +13,6 @@
/out/
# PWA build artifacts
/public/*.js
/dev-dist
# production

View file

@ -44,7 +44,6 @@
"fast-glob": "^3.3.1",
"lazyrepo": "0.0.0-alpha.27",
"vite": "^5.0.0",
"vite-plugin-pwa": "^0.17.0",
"ws": "^8.16.0"
},
"jest": {

View file

@ -0,0 +1,38 @@
{
"name": "tldraw",
"short_name": "tldraw",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"lang": "en",
"scope": "/",
"description": "a very good free whiteboard",
"icons": [
{
"src": "/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
},
{
"src": "/android-chrome-maskable-512x512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any maskable"
},
{
"src": "/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "any"
},
{
"src": "/android-chrome-maskable-192x192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "any maskable"
}
],
"theme_color": "#ffffff",
"orientation": "any"
}

19
apps/dotcom/public/sw.js Normal file
View file

@ -0,0 +1,19 @@
// Self-destroying service worker
// Taken from https://www.benjaminrancourt.ca/how-to-remove-a-service-worker/
// Inspired from https://github.com/NekR/self-destroying-sw
self.addEventListener("install", (event) => {
self.skipWaiting();
});
self.addEventListener("activate", (event) => {
self.registration
.unregister()
.then(() => self.clients.matchAll())
.then((clients) => {
clients.forEach((client) => {
if (client.url && "navigate" in client) {
client.navigate(client.url);
}
});
});
});

View file

@ -1,8 +1,7 @@
import { Editor, Tldraw } from '@tldraw/tldraw'
import { useCallback, useEffect } from 'react'
import { useCallback } from 'react'
import { assetUrls } from '../utils/assetUrls'
import { createAssetFromUrl } from '../utils/createAssetFromUrl'
import { isPreviewEnv } from '../utils/env'
import { linksUiOverrides } from '../utils/links'
import { DebugMenuItems } from '../utils/migration/DebugMenuItems'
import { LocalMigration } from '../utils/migration/LocalMigration'
@ -14,8 +13,6 @@ import { ShareMenu } from './ShareMenu'
import { SneakyOnDropOverride } from './SneakyOnDropOverride'
import { ThemeUpdater } from './ThemeUpdater/ThemeUpdater'
const TLDRAW_REDIRECTED_TO_SIGN_IN = 'tldraw-redirected-to-sign-in'
export function LocalEditor() {
const handleUiEvent = useHandleUiEvents()
const sharingUiOverrides = useSharing({ isMultiplayer: false })
@ -25,18 +22,6 @@ export function LocalEditor() {
editor.registerExternalAssetHandler('url', createAssetFromUrl)
}, [])
// Redirect to sign in if in preview mode
useEffect(() => {
if (isPreviewEnv) {
const alreadyRedirected = localStorage.getItem(TLDRAW_REDIRECTED_TO_SIGN_IN)
// We only want to redirect once so that we can still test the editor
if (alreadyRedirected && alreadyRedirected === 'true') return
localStorage.setItem(TLDRAW_REDIRECTED_TO_SIGN_IN, 'true')
const url = new URL(window.location.href)
window.location.assign(`${url.origin}/sign-in`)
}
}, [])
return (
<div className="tldraw__editor">
<Tldraw

View file

@ -80,3 +80,15 @@ createRoot(document.getElementById('root')!).render(
<VercelAnalytics debug={false} />
</HelmetProvider>
)
try {
// we have a dummy service worker that unregisters itself immediately
// this was needed to remove the service worker we used to have from the cache
// we can remove this if we ever need a service worker again, or if enough time passes that
// anybody returning to tldraw.com should not have a service worker running
navigator.serviceWorker.register('/sw.js', {
scope: '/',
})
} catch (e) {
// ignore
}

View file

@ -1,21 +1,7 @@
// eslint-disable-next-line import/no-internal-modules
import type { AssetUrls } from '@tldraw/assets/types'
// eslint-disable-next-line import/no-internal-modules
import { getAssetUrlsByMetaUrl } from '@tldraw/assets/urls'
import { isProductionEnv } from './env'
import { getAssetUrlsByImport } from '@tldraw/assets/imports.vite'
const _assetUrls = getAssetUrlsByMetaUrl()
export const assetUrls: AssetUrls = isProductionEnv
? _assetUrls
: // let's try out shantell sans 'informal' style for a bit on staging/dev
{
..._assetUrls,
fonts: {
..._assetUrls.fonts,
draw: '/Shantell_Sans-Tldrawish.woff2',
},
}
export const assetUrls = getAssetUrlsByImport()
let didPreloadIcons = false
async function preloadIcons() {

View file

@ -1,7 +1,6 @@
import react from '@vitejs/plugin-react-swc'
import { config } from 'dotenv'
import { defineConfig } from 'vite'
import { VitePWA, VitePWAOptions } from 'vite-plugin-pwa'
config({
path: './.env.local',
@ -11,57 +10,9 @@ export const getMultiplayerServerURL = () => {
return process.env.MULTIPLAYER_SERVER?.replace(/^ws/, 'http') ?? 'http://127.0.0.1:8787'
}
const pwaConfig: Partial<VitePWAOptions> = {
registerType: 'autoUpdate',
// Make sure the service worker doesn't try to handle API requests
workbox: {
navigateFallbackDenylist: [/^\/api/],
runtimeCaching: [{ handler: 'NetworkFirst', urlPattern: /\/.*/ }],
},
// Uncomment this to test the PWA install flow locally
// devOptions: { enabled: true },
manifest: {
name: 'tldraw',
short_name: 'tldraw',
description: 'a very good free whiteboard',
icons: [
{
src: '/android-chrome-512x512.png',
sizes: '512x512',
type: 'image/png',
purpose: 'any',
},
{
src: '/android-chrome-maskable-512x512.png',
sizes: '512x512',
type: 'image/png',
purpose: 'any maskable',
},
{
src: '/android-chrome-192x192.png',
sizes: '192x192',
type: 'image/png',
purpose: 'any',
},
{
src: '/android-chrome-maskable-192x192.png',
sizes: '192x192',
type: 'image/png',
purpose: 'any maskable',
},
],
theme_color: '#ffffff',
background_color: '#ffffff',
start_url: '/',
display: 'standalone',
orientation: 'any',
},
}
// https://vitejs.dev/config/
export default defineConfig({
plugins: [react({ tsDecorators: true }), VitePWA(pwaConfig)],
plugins: [react({ tsDecorators: true })],
publicDir: './public',
build: {
// output source maps to .map files and include //sourceMappingURL comments in JavaScript files

View file

@ -48,6 +48,7 @@
"build-types": "lazy inherit",
"build-api": "lazy build-api",
"build-package": "lazy build-package",
"preview-app": "VITE_PREVIEW=1 yarn dev-app",
"lint": "lazy lint",
"format": "prettier --write --cache \"**/*.{ts,tsx,js,jsx,json}\"",
"typecheck": "yarn refresh-assets && tsx scripts/typecheck.ts",

2
packages/assets/imports.vite.d.ts vendored Normal file
View file

@ -0,0 +1,2 @@
import { AssetUrlOptions, AssetUrls } from './types'
export function getAssetUrlsByImport(opts?: AssetUrlOptions): AssetUrls

View file

@ -0,0 +1,466 @@
// This file is automatically generated by scripts/refresh-assets.ts.
// Do not edit manually.
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
/// <reference path="./modules.d.ts" />
import { formatAssetUrl } from './utils.js'
import embedIconsCodepen from './embed-icons/codepen.png?url'
import embedIconsCodesandbox from './embed-icons/codesandbox.png?url'
import embedIconsExcalidraw from './embed-icons/excalidraw.png?url'
import embedIconsFelt from './embed-icons/felt.png?url'
import embedIconsFigma from './embed-icons/figma.png?url'
import embedIconsGithubGist from './embed-icons/github_gist.png?url'
import embedIconsGoogleCalendar from './embed-icons/google_calendar.png?url'
import embedIconsGoogleMaps from './embed-icons/google_maps.png?url'
import embedIconsGoogleSlides from './embed-icons/google_slides.png?url'
import embedIconsObservable from './embed-icons/observable.png?url'
import embedIconsReplit from './embed-icons/replit.png?url'
import embedIconsScratch from './embed-icons/scratch.png?url'
import embedIconsSpotify from './embed-icons/spotify.png?url'
import embedIconsTldraw from './embed-icons/tldraw.png?url'
import embedIconsValTown from './embed-icons/val_town.png?url'
import embedIconsVimeo from './embed-icons/vimeo.png?url'
import embedIconsYoutube from './embed-icons/youtube.png?url'
import fontsMonospace from './fonts/IBMPlexMono-Medium.woff2?url'
import fontsSansSerif from './fonts/IBMPlexSans-Medium.woff2?url'
import fontsSerif from './fonts/IBMPlexSerif-Medium.woff2?url'
import fontsDraw from './fonts/Shantell_Sans-Tldrawish.woff2?url'
import iconsAlignBottomCenter from './icons/icon/align-bottom-center.svg?url'
import iconsAlignBottomLeft from './icons/icon/align-bottom-left.svg?url'
import iconsAlignBottomRight from './icons/icon/align-bottom-right.svg?url'
import iconsAlignBottom from './icons/icon/align-bottom.svg?url'
import iconsAlignCenterCenter from './icons/icon/align-center-center.svg?url'
import iconsAlignCenterHorizontal from './icons/icon/align-center-horizontal.svg?url'
import iconsAlignCenterLeft from './icons/icon/align-center-left.svg?url'
import iconsAlignCenterRight from './icons/icon/align-center-right.svg?url'
import iconsAlignCenterVertical from './icons/icon/align-center-vertical.svg?url'
import iconsAlignLeft from './icons/icon/align-left.svg?url'
import iconsAlignRight from './icons/icon/align-right.svg?url'
import iconsAlignTopCenter from './icons/icon/align-top-center.svg?url'
import iconsAlignTopLeft from './icons/icon/align-top-left.svg?url'
import iconsAlignTopRight from './icons/icon/align-top-right.svg?url'
import iconsAlignTop from './icons/icon/align-top.svg?url'
import iconsArrowLeft from './icons/icon/arrow-left.svg?url'
import iconsArrowheadArrow from './icons/icon/arrowhead-arrow.svg?url'
import iconsArrowheadBar from './icons/icon/arrowhead-bar.svg?url'
import iconsArrowheadDiamond from './icons/icon/arrowhead-diamond.svg?url'
import iconsArrowheadDot from './icons/icon/arrowhead-dot.svg?url'
import iconsArrowheadNone from './icons/icon/arrowhead-none.svg?url'
import iconsArrowheadSquare from './icons/icon/arrowhead-square.svg?url'
import iconsArrowheadTriangleInverted from './icons/icon/arrowhead-triangle-inverted.svg?url'
import iconsArrowheadTriangle from './icons/icon/arrowhead-triangle.svg?url'
import iconsAspectRatio from './icons/icon/aspect-ratio.svg?url'
import iconsAvatar from './icons/icon/avatar.svg?url'
import iconsBlob from './icons/icon/blob.svg?url'
import iconsBringForward from './icons/icon/bring-forward.svg?url'
import iconsBringToFront from './icons/icon/bring-to-front.svg?url'
import iconsCheck from './icons/icon/check.svg?url'
import iconsCheckboxChecked from './icons/icon/checkbox-checked.svg?url'
import iconsCheckboxEmpty from './icons/icon/checkbox-empty.svg?url'
import iconsChevronDown from './icons/icon/chevron-down.svg?url'
import iconsChevronLeft from './icons/icon/chevron-left.svg?url'
import iconsChevronRight from './icons/icon/chevron-right.svg?url'
import iconsChevronUp from './icons/icon/chevron-up.svg?url'
import iconsChevronsNe from './icons/icon/chevrons-ne.svg?url'
import iconsChevronsSw from './icons/icon/chevrons-sw.svg?url'
import iconsClipboardCopied from './icons/icon/clipboard-copied.svg?url'
import iconsClipboardCopy from './icons/icon/clipboard-copy.svg?url'
import iconsCode from './icons/icon/code.svg?url'
import iconsCollab from './icons/icon/collab.svg?url'
import iconsColor from './icons/icon/color.svg?url'
import iconsComment from './icons/icon/comment.svg?url'
import iconsCross2 from './icons/icon/cross-2.svg?url'
import iconsCross from './icons/icon/cross.svg?url'
import iconsDashDashed from './icons/icon/dash-dashed.svg?url'
import iconsDashDotted from './icons/icon/dash-dotted.svg?url'
import iconsDashDraw from './icons/icon/dash-draw.svg?url'
import iconsDashSolid from './icons/icon/dash-solid.svg?url'
import iconsDiscord from './icons/icon/discord.svg?url'
import iconsDistributeHorizontal from './icons/icon/distribute-horizontal.svg?url'
import iconsDistributeVertical from './icons/icon/distribute-vertical.svg?url'
import iconsDot from './icons/icon/dot.svg?url'
import iconsDotsHorizontal from './icons/icon/dots-horizontal.svg?url'
import iconsDotsVertical from './icons/icon/dots-vertical.svg?url'
import iconsDragHandleDots from './icons/icon/drag-handle-dots.svg?url'
import iconsDuplicate from './icons/icon/duplicate.svg?url'
import iconsEdit from './icons/icon/edit.svg?url'
import iconsExternalLink from './icons/icon/external-link.svg?url'
import iconsFile from './icons/icon/file.svg?url'
import iconsFillNone from './icons/icon/fill-none.svg?url'
import iconsFillPattern from './icons/icon/fill-pattern.svg?url'
import iconsFillSemi from './icons/icon/fill-semi.svg?url'
import iconsFillSolid from './icons/icon/fill-solid.svg?url'
import iconsFollow from './icons/icon/follow.svg?url'
import iconsFollowing from './icons/icon/following.svg?url'
import iconsFontDraw from './icons/icon/font-draw.svg?url'
import iconsFontMono from './icons/icon/font-mono.svg?url'
import iconsFontSans from './icons/icon/font-sans.svg?url'
import iconsFontSerif from './icons/icon/font-serif.svg?url'
import iconsGeoArrowDown from './icons/icon/geo-arrow-down.svg?url'
import iconsGeoArrowLeft from './icons/icon/geo-arrow-left.svg?url'
import iconsGeoArrowRight from './icons/icon/geo-arrow-right.svg?url'
import iconsGeoArrowUp from './icons/icon/geo-arrow-up.svg?url'
import iconsGeoCheckBox from './icons/icon/geo-check-box.svg?url'
import iconsGeoCloud from './icons/icon/geo-cloud.svg?url'
import iconsGeoDiamond from './icons/icon/geo-diamond.svg?url'
import iconsGeoEllipse from './icons/icon/geo-ellipse.svg?url'
import iconsGeoHexagon from './icons/icon/geo-hexagon.svg?url'
import iconsGeoOctagon from './icons/icon/geo-octagon.svg?url'
import iconsGeoOval from './icons/icon/geo-oval.svg?url'
import iconsGeoPentagon from './icons/icon/geo-pentagon.svg?url'
import iconsGeoRectangle from './icons/icon/geo-rectangle.svg?url'
import iconsGeoRhombus2 from './icons/icon/geo-rhombus-2.svg?url'
import iconsGeoRhombus from './icons/icon/geo-rhombus.svg?url'
import iconsGeoStar from './icons/icon/geo-star.svg?url'
import iconsGeoTrapezoid from './icons/icon/geo-trapezoid.svg?url'
import iconsGeoTriangle from './icons/icon/geo-triangle.svg?url'
import iconsGeoXBox from './icons/icon/geo-x-box.svg?url'
import iconsGithub from './icons/icon/github.svg?url'
import iconsGroup from './icons/icon/group.svg?url'
import iconsHidden from './icons/icon/hidden.svg?url'
import iconsImage from './icons/icon/image.svg?url'
import iconsInfoCircle from './icons/icon/info-circle.svg?url'
import iconsLeading from './icons/icon/leading.svg?url'
import iconsLink from './icons/icon/link.svg?url'
import iconsLockSmall from './icons/icon/lock-small.svg?url'
import iconsLock from './icons/icon/lock.svg?url'
import iconsMenu from './icons/icon/menu.svg?url'
import iconsMinus from './icons/icon/minus.svg?url'
import iconsMixed from './icons/icon/mixed.svg?url'
import iconsPack from './icons/icon/pack.svg?url'
import iconsPage from './icons/icon/page.svg?url'
import iconsPlus from './icons/icon/plus.svg?url'
import iconsQuestionMarkCircle from './icons/icon/question-mark-circle.svg?url'
import iconsQuestionMark from './icons/icon/question-mark.svg?url'
import iconsRedo from './icons/icon/redo.svg?url'
import iconsResetZoom from './icons/icon/reset-zoom.svg?url'
import iconsRotateCcw from './icons/icon/rotate-ccw.svg?url'
import iconsRotateCw from './icons/icon/rotate-cw.svg?url'
import iconsRuler from './icons/icon/ruler.svg?url'
import iconsSearch from './icons/icon/search.svg?url'
import iconsSendBackward from './icons/icon/send-backward.svg?url'
import iconsSendToBack from './icons/icon/send-to-back.svg?url'
import iconsSettingsHorizontal from './icons/icon/settings-horizontal.svg?url'
import iconsSettingsVertical1 from './icons/icon/settings-vertical-1.svg?url'
import iconsSettingsVertical from './icons/icon/settings-vertical.svg?url'
import iconsShare1 from './icons/icon/share-1.svg?url'
import iconsShare2 from './icons/icon/share-2.svg?url'
import iconsSizeExtraLarge from './icons/icon/size-extra-large.svg?url'
import iconsSizeLarge from './icons/icon/size-large.svg?url'
import iconsSizeMedium from './icons/icon/size-medium.svg?url'
import iconsSizeSmall from './icons/icon/size-small.svg?url'
import iconsSplineCubic from './icons/icon/spline-cubic.svg?url'
import iconsSplineLine from './icons/icon/spline-line.svg?url'
import iconsStackHorizontal from './icons/icon/stack-horizontal.svg?url'
import iconsStackVertical from './icons/icon/stack-vertical.svg?url'
import iconsStatusOffline from './icons/icon/status-offline.svg?url'
import iconsStatusOnline from './icons/icon/status-online.svg?url'
import iconsStretchHorizontal from './icons/icon/stretch-horizontal.svg?url'
import iconsStretchVertical from './icons/icon/stretch-vertical.svg?url'
import iconsTextAlignCenter from './icons/icon/text-align-center.svg?url'
import iconsTextAlignJustify from './icons/icon/text-align-justify.svg?url'
import iconsTextAlignLeft from './icons/icon/text-align-left.svg?url'
import iconsTextAlignRight from './icons/icon/text-align-right.svg?url'
import iconsToolArrow from './icons/icon/tool-arrow.svg?url'
import iconsToolEmbed from './icons/icon/tool-embed.svg?url'
import iconsToolEraser from './icons/icon/tool-eraser.svg?url'
import iconsToolFrame from './icons/icon/tool-frame.svg?url'
import iconsToolHand from './icons/icon/tool-hand.svg?url'
import iconsToolHighlight from './icons/icon/tool-highlight.svg?url'
import iconsToolLaser from './icons/icon/tool-laser.svg?url'
import iconsToolLine from './icons/icon/tool-line.svg?url'
import iconsToolMedia from './icons/icon/tool-media.svg?url'
import iconsToolNote from './icons/icon/tool-note.svg?url'
import iconsToolPencil from './icons/icon/tool-pencil.svg?url'
import iconsToolPointer from './icons/icon/tool-pointer.svg?url'
import iconsToolText from './icons/icon/tool-text.svg?url'
import iconsTrash from './icons/icon/trash.svg?url'
import iconsTriangleDown from './icons/icon/triangle-down.svg?url'
import iconsTriangleUp from './icons/icon/triangle-up.svg?url'
import iconsTwitter from './icons/icon/twitter.svg?url'
import iconsUndo from './icons/icon/undo.svg?url'
import iconsUngroup from './icons/icon/ungroup.svg?url'
import iconsUnlockSmall from './icons/icon/unlock-small.svg?url'
import iconsUnlock from './icons/icon/unlock.svg?url'
import iconsVerticalAlignCenter from './icons/icon/vertical-align-center.svg?url'
import iconsVerticalAlignEnd from './icons/icon/vertical-align-end.svg?url'
import iconsVerticalAlignStart from './icons/icon/vertical-align-start.svg?url'
import iconsVisible from './icons/icon/visible.svg?url'
import iconsWarningTriangle from './icons/icon/warning-triangle.svg?url'
import iconsZoomIn from './icons/icon/zoom-in.svg?url'
import iconsZoomOut from './icons/icon/zoom-out.svg?url'
import translationsAr from './translations/ar.json?url'
import translationsCa from './translations/ca.json?url'
import translationsCs from './translations/cs.json?url'
import translationsDa from './translations/da.json?url'
import translationsDe from './translations/de.json?url'
import translationsEn from './translations/en.json?url'
import translationsEs from './translations/es.json?url'
import translationsFa from './translations/fa.json?url'
import translationsFi from './translations/fi.json?url'
import translationsFr from './translations/fr.json?url'
import translationsGl from './translations/gl.json?url'
import translationsHe from './translations/he.json?url'
import translationsHiIn from './translations/hi-in.json?url'
import translationsHu from './translations/hu.json?url'
import translationsIt from './translations/it.json?url'
import translationsJa from './translations/ja.json?url'
import translationsKoKr from './translations/ko-kr.json?url'
import translationsKu from './translations/ku.json?url'
import translationsLanguages from './translations/languages.json?url'
import translationsMain from './translations/main.json?url'
import translationsMy from './translations/my.json?url'
import translationsNe from './translations/ne.json?url'
import translationsNo from './translations/no.json?url'
import translationsPl from './translations/pl.json?url'
import translationsPtBr from './translations/pt-br.json?url'
import translationsPtPt from './translations/pt-pt.json?url'
import translationsRo from './translations/ro.json?url'
import translationsRu from './translations/ru.json?url'
import translationsSv from './translations/sv.json?url'
import translationsTe from './translations/te.json?url'
import translationsTh from './translations/th.json?url'
import translationsTr from './translations/tr.json?url'
import translationsUk from './translations/uk.json?url'
import translationsVi from './translations/vi.json?url'
import translationsZhCn from './translations/zh-cn.json?url'
import translationsZhTw from './translations/zh-tw.json?url'
/**
* @param {AssetUrlOptions} [opts]
* @public
*/
export function getAssetUrlsByImport(opts) {
return {
fonts: {
monospace: formatAssetUrl(fontsMonospace, opts),
sansSerif: formatAssetUrl(fontsSansSerif, opts),
serif: formatAssetUrl(fontsSerif, opts),
draw: formatAssetUrl(fontsDraw, opts),
},
icons: {
'align-bottom-center': formatAssetUrl(iconsAlignBottomCenter, opts),
'align-bottom-left': formatAssetUrl(iconsAlignBottomLeft, opts),
'align-bottom-right': formatAssetUrl(iconsAlignBottomRight, opts),
'align-bottom': formatAssetUrl(iconsAlignBottom, opts),
'align-center-center': formatAssetUrl(iconsAlignCenterCenter, opts),
'align-center-horizontal': formatAssetUrl(iconsAlignCenterHorizontal, opts),
'align-center-left': formatAssetUrl(iconsAlignCenterLeft, opts),
'align-center-right': formatAssetUrl(iconsAlignCenterRight, opts),
'align-center-vertical': formatAssetUrl(iconsAlignCenterVertical, opts),
'align-left': formatAssetUrl(iconsAlignLeft, opts),
'align-right': formatAssetUrl(iconsAlignRight, opts),
'align-top-center': formatAssetUrl(iconsAlignTopCenter, opts),
'align-top-left': formatAssetUrl(iconsAlignTopLeft, opts),
'align-top-right': formatAssetUrl(iconsAlignTopRight, opts),
'align-top': formatAssetUrl(iconsAlignTop, opts),
'arrow-left': formatAssetUrl(iconsArrowLeft, opts),
'arrowhead-arrow': formatAssetUrl(iconsArrowheadArrow, opts),
'arrowhead-bar': formatAssetUrl(iconsArrowheadBar, opts),
'arrowhead-diamond': formatAssetUrl(iconsArrowheadDiamond, opts),
'arrowhead-dot': formatAssetUrl(iconsArrowheadDot, opts),
'arrowhead-none': formatAssetUrl(iconsArrowheadNone, opts),
'arrowhead-square': formatAssetUrl(iconsArrowheadSquare, opts),
'arrowhead-triangle-inverted': formatAssetUrl(iconsArrowheadTriangleInverted, opts),
'arrowhead-triangle': formatAssetUrl(iconsArrowheadTriangle, opts),
'aspect-ratio': formatAssetUrl(iconsAspectRatio, opts),
avatar: formatAssetUrl(iconsAvatar, opts),
blob: formatAssetUrl(iconsBlob, opts),
'bring-forward': formatAssetUrl(iconsBringForward, opts),
'bring-to-front': formatAssetUrl(iconsBringToFront, opts),
check: formatAssetUrl(iconsCheck, opts),
'checkbox-checked': formatAssetUrl(iconsCheckboxChecked, opts),
'checkbox-empty': formatAssetUrl(iconsCheckboxEmpty, opts),
'chevron-down': formatAssetUrl(iconsChevronDown, opts),
'chevron-left': formatAssetUrl(iconsChevronLeft, opts),
'chevron-right': formatAssetUrl(iconsChevronRight, opts),
'chevron-up': formatAssetUrl(iconsChevronUp, opts),
'chevrons-ne': formatAssetUrl(iconsChevronsNe, opts),
'chevrons-sw': formatAssetUrl(iconsChevronsSw, opts),
'clipboard-copied': formatAssetUrl(iconsClipboardCopied, opts),
'clipboard-copy': formatAssetUrl(iconsClipboardCopy, opts),
code: formatAssetUrl(iconsCode, opts),
collab: formatAssetUrl(iconsCollab, opts),
color: formatAssetUrl(iconsColor, opts),
comment: formatAssetUrl(iconsComment, opts),
'cross-2': formatAssetUrl(iconsCross2, opts),
cross: formatAssetUrl(iconsCross, opts),
'dash-dashed': formatAssetUrl(iconsDashDashed, opts),
'dash-dotted': formatAssetUrl(iconsDashDotted, opts),
'dash-draw': formatAssetUrl(iconsDashDraw, opts),
'dash-solid': formatAssetUrl(iconsDashSolid, opts),
discord: formatAssetUrl(iconsDiscord, opts),
'distribute-horizontal': formatAssetUrl(iconsDistributeHorizontal, opts),
'distribute-vertical': formatAssetUrl(iconsDistributeVertical, opts),
dot: formatAssetUrl(iconsDot, opts),
'dots-horizontal': formatAssetUrl(iconsDotsHorizontal, opts),
'dots-vertical': formatAssetUrl(iconsDotsVertical, opts),
'drag-handle-dots': formatAssetUrl(iconsDragHandleDots, opts),
duplicate: formatAssetUrl(iconsDuplicate, opts),
edit: formatAssetUrl(iconsEdit, opts),
'external-link': formatAssetUrl(iconsExternalLink, opts),
file: formatAssetUrl(iconsFile, opts),
'fill-none': formatAssetUrl(iconsFillNone, opts),
'fill-pattern': formatAssetUrl(iconsFillPattern, opts),
'fill-semi': formatAssetUrl(iconsFillSemi, opts),
'fill-solid': formatAssetUrl(iconsFillSolid, opts),
follow: formatAssetUrl(iconsFollow, opts),
following: formatAssetUrl(iconsFollowing, opts),
'font-draw': formatAssetUrl(iconsFontDraw, opts),
'font-mono': formatAssetUrl(iconsFontMono, opts),
'font-sans': formatAssetUrl(iconsFontSans, opts),
'font-serif': formatAssetUrl(iconsFontSerif, opts),
'geo-arrow-down': formatAssetUrl(iconsGeoArrowDown, opts),
'geo-arrow-left': formatAssetUrl(iconsGeoArrowLeft, opts),
'geo-arrow-right': formatAssetUrl(iconsGeoArrowRight, opts),
'geo-arrow-up': formatAssetUrl(iconsGeoArrowUp, opts),
'geo-check-box': formatAssetUrl(iconsGeoCheckBox, opts),
'geo-cloud': formatAssetUrl(iconsGeoCloud, opts),
'geo-diamond': formatAssetUrl(iconsGeoDiamond, opts),
'geo-ellipse': formatAssetUrl(iconsGeoEllipse, opts),
'geo-hexagon': formatAssetUrl(iconsGeoHexagon, opts),
'geo-octagon': formatAssetUrl(iconsGeoOctagon, opts),
'geo-oval': formatAssetUrl(iconsGeoOval, opts),
'geo-pentagon': formatAssetUrl(iconsGeoPentagon, opts),
'geo-rectangle': formatAssetUrl(iconsGeoRectangle, opts),
'geo-rhombus-2': formatAssetUrl(iconsGeoRhombus2, opts),
'geo-rhombus': formatAssetUrl(iconsGeoRhombus, opts),
'geo-star': formatAssetUrl(iconsGeoStar, opts),
'geo-trapezoid': formatAssetUrl(iconsGeoTrapezoid, opts),
'geo-triangle': formatAssetUrl(iconsGeoTriangle, opts),
'geo-x-box': formatAssetUrl(iconsGeoXBox, opts),
github: formatAssetUrl(iconsGithub, opts),
group: formatAssetUrl(iconsGroup, opts),
hidden: formatAssetUrl(iconsHidden, opts),
image: formatAssetUrl(iconsImage, opts),
'info-circle': formatAssetUrl(iconsInfoCircle, opts),
leading: formatAssetUrl(iconsLeading, opts),
link: formatAssetUrl(iconsLink, opts),
'lock-small': formatAssetUrl(iconsLockSmall, opts),
lock: formatAssetUrl(iconsLock, opts),
menu: formatAssetUrl(iconsMenu, opts),
minus: formatAssetUrl(iconsMinus, opts),
mixed: formatAssetUrl(iconsMixed, opts),
pack: formatAssetUrl(iconsPack, opts),
page: formatAssetUrl(iconsPage, opts),
plus: formatAssetUrl(iconsPlus, opts),
'question-mark-circle': formatAssetUrl(iconsQuestionMarkCircle, opts),
'question-mark': formatAssetUrl(iconsQuestionMark, opts),
redo: formatAssetUrl(iconsRedo, opts),
'reset-zoom': formatAssetUrl(iconsResetZoom, opts),
'rotate-ccw': formatAssetUrl(iconsRotateCcw, opts),
'rotate-cw': formatAssetUrl(iconsRotateCw, opts),
ruler: formatAssetUrl(iconsRuler, opts),
search: formatAssetUrl(iconsSearch, opts),
'send-backward': formatAssetUrl(iconsSendBackward, opts),
'send-to-back': formatAssetUrl(iconsSendToBack, opts),
'settings-horizontal': formatAssetUrl(iconsSettingsHorizontal, opts),
'settings-vertical-1': formatAssetUrl(iconsSettingsVertical1, opts),
'settings-vertical': formatAssetUrl(iconsSettingsVertical, opts),
'share-1': formatAssetUrl(iconsShare1, opts),
'share-2': formatAssetUrl(iconsShare2, opts),
'size-extra-large': formatAssetUrl(iconsSizeExtraLarge, opts),
'size-large': formatAssetUrl(iconsSizeLarge, opts),
'size-medium': formatAssetUrl(iconsSizeMedium, opts),
'size-small': formatAssetUrl(iconsSizeSmall, opts),
'spline-cubic': formatAssetUrl(iconsSplineCubic, opts),
'spline-line': formatAssetUrl(iconsSplineLine, opts),
'stack-horizontal': formatAssetUrl(iconsStackHorizontal, opts),
'stack-vertical': formatAssetUrl(iconsStackVertical, opts),
'status-offline': formatAssetUrl(iconsStatusOffline, opts),
'status-online': formatAssetUrl(iconsStatusOnline, opts),
'stretch-horizontal': formatAssetUrl(iconsStretchHorizontal, opts),
'stretch-vertical': formatAssetUrl(iconsStretchVertical, opts),
'text-align-center': formatAssetUrl(iconsTextAlignCenter, opts),
'text-align-justify': formatAssetUrl(iconsTextAlignJustify, opts),
'text-align-left': formatAssetUrl(iconsTextAlignLeft, opts),
'text-align-right': formatAssetUrl(iconsTextAlignRight, opts),
'tool-arrow': formatAssetUrl(iconsToolArrow, opts),
'tool-embed': formatAssetUrl(iconsToolEmbed, opts),
'tool-eraser': formatAssetUrl(iconsToolEraser, opts),
'tool-frame': formatAssetUrl(iconsToolFrame, opts),
'tool-hand': formatAssetUrl(iconsToolHand, opts),
'tool-highlight': formatAssetUrl(iconsToolHighlight, opts),
'tool-laser': formatAssetUrl(iconsToolLaser, opts),
'tool-line': formatAssetUrl(iconsToolLine, opts),
'tool-media': formatAssetUrl(iconsToolMedia, opts),
'tool-note': formatAssetUrl(iconsToolNote, opts),
'tool-pencil': formatAssetUrl(iconsToolPencil, opts),
'tool-pointer': formatAssetUrl(iconsToolPointer, opts),
'tool-text': formatAssetUrl(iconsToolText, opts),
trash: formatAssetUrl(iconsTrash, opts),
'triangle-down': formatAssetUrl(iconsTriangleDown, opts),
'triangle-up': formatAssetUrl(iconsTriangleUp, opts),
twitter: formatAssetUrl(iconsTwitter, opts),
undo: formatAssetUrl(iconsUndo, opts),
ungroup: formatAssetUrl(iconsUngroup, opts),
'unlock-small': formatAssetUrl(iconsUnlockSmall, opts),
unlock: formatAssetUrl(iconsUnlock, opts),
'vertical-align-center': formatAssetUrl(iconsVerticalAlignCenter, opts),
'vertical-align-end': formatAssetUrl(iconsVerticalAlignEnd, opts),
'vertical-align-start': formatAssetUrl(iconsVerticalAlignStart, opts),
visible: formatAssetUrl(iconsVisible, opts),
'warning-triangle': formatAssetUrl(iconsWarningTriangle, opts),
'zoom-in': formatAssetUrl(iconsZoomIn, opts),
'zoom-out': formatAssetUrl(iconsZoomOut, opts),
},
translations: {
ar: formatAssetUrl(translationsAr, opts),
ca: formatAssetUrl(translationsCa, opts),
cs: formatAssetUrl(translationsCs, opts),
da: formatAssetUrl(translationsDa, opts),
de: formatAssetUrl(translationsDe, opts),
en: formatAssetUrl(translationsEn, opts),
es: formatAssetUrl(translationsEs, opts),
fa: formatAssetUrl(translationsFa, opts),
fi: formatAssetUrl(translationsFi, opts),
fr: formatAssetUrl(translationsFr, opts),
gl: formatAssetUrl(translationsGl, opts),
he: formatAssetUrl(translationsHe, opts),
'hi-in': formatAssetUrl(translationsHiIn, opts),
hu: formatAssetUrl(translationsHu, opts),
it: formatAssetUrl(translationsIt, opts),
ja: formatAssetUrl(translationsJa, opts),
'ko-kr': formatAssetUrl(translationsKoKr, opts),
ku: formatAssetUrl(translationsKu, opts),
languages: formatAssetUrl(translationsLanguages, opts),
main: formatAssetUrl(translationsMain, opts),
my: formatAssetUrl(translationsMy, opts),
ne: formatAssetUrl(translationsNe, opts),
no: formatAssetUrl(translationsNo, opts),
pl: formatAssetUrl(translationsPl, opts),
'pt-br': formatAssetUrl(translationsPtBr, opts),
'pt-pt': formatAssetUrl(translationsPtPt, opts),
ro: formatAssetUrl(translationsRo, opts),
ru: formatAssetUrl(translationsRu, opts),
sv: formatAssetUrl(translationsSv, opts),
te: formatAssetUrl(translationsTe, opts),
th: formatAssetUrl(translationsTh, opts),
tr: formatAssetUrl(translationsTr, opts),
uk: formatAssetUrl(translationsUk, opts),
vi: formatAssetUrl(translationsVi, opts),
'zh-cn': formatAssetUrl(translationsZhCn, opts),
'zh-tw': formatAssetUrl(translationsZhTw, opts),
},
embedIcons: {
codepen: formatAssetUrl(embedIconsCodepen, opts),
codesandbox: formatAssetUrl(embedIconsCodesandbox, opts),
excalidraw: formatAssetUrl(embedIconsExcalidraw, opts),
felt: formatAssetUrl(embedIconsFelt, opts),
figma: formatAssetUrl(embedIconsFigma, opts),
github_gist: formatAssetUrl(embedIconsGithubGist, opts),
google_calendar: formatAssetUrl(embedIconsGoogleCalendar, opts),
google_maps: formatAssetUrl(embedIconsGoogleMaps, opts),
google_slides: formatAssetUrl(embedIconsGoogleSlides, opts),
observable: formatAssetUrl(embedIconsObservable, opts),
replit: formatAssetUrl(embedIconsReplit, opts),
scratch: formatAssetUrl(embedIconsScratch, opts),
spotify: formatAssetUrl(embedIconsSpotify, opts),
tldraw: formatAssetUrl(embedIconsTldraw, opts),
val_town: formatAssetUrl(embedIconsValTown, opts),
vimeo: formatAssetUrl(embedIconsVimeo, opts),
youtube: formatAssetUrl(embedIconsYoutube, opts),
},
}
}

View file

@ -31,6 +31,8 @@
"translations",
"imports.js",
"imports.d.ts",
"imports.vite.js",
"imports.vite.d.ts",
"selfHosted.js",
"selfHosted.d.ts",
"types.d.ts",

View file

@ -1,6 +1,13 @@
{
"extends": "../../config/tsconfig.base.json",
"include": ["urls.js", "imports.js", "selfHosted.js", "utils.js", "modules.d.ts"],
"include": [
"urls.js",
"imports.js",
"imports.vite.js",
"selfHosted.js",
"utils.js",
"modules.d.ts"
],
"exclude": ["node_modules", "dist", ".tsbuild*"],
"compilerOptions": {
"outDir": "./.tsbuild",

View file

@ -298,7 +298,10 @@ async function writeUrlBasedAssetDeclarationFile() {
await writeCodeFile('scripts/refresh-assets.ts', 'javascript', codeFilePath, codeFile)
}
async function writeImportBasedAssetDeclarationFile(): Promise<void> {
async function writeImportBasedAssetDeclarationFile(
importSuffix: string,
fileName: string
): Promise<void> {
let imports = `
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
/// <reference path="./modules.d.ts" />
@ -322,7 +325,7 @@ async function writeImportBasedAssetDeclarationFile(): Promise<void> {
.replace(/[^a-zA-Z0-9_]/g, '_')
.replace(/_+/g, '_')
.replace(/_(.)/g, (_, letter) => letter.toUpperCase())
imports += `import ${variableName} from ${JSON.stringify('./' + href)};\n`
imports += `import ${variableName} from ${JSON.stringify('./' + href + importSuffix)};\n`
declarations += `${JSON.stringify(name)}: formatAssetUrl(${variableName}, opts),\n`
}
declarations += '},\n'
@ -333,7 +336,7 @@ async function writeImportBasedAssetDeclarationFile(): Promise<void> {
}
`
const codeFilePath = join(REPO_ROOT, 'packages', 'assets', 'imports.js')
const codeFilePath = join(REPO_ROOT, 'packages', 'assets', fileName)
await writeCodeFile(
'scripts/refresh-assets.ts',
'javascript',
@ -408,7 +411,8 @@ async function main() {
nicelog('Writing asset declaration file...')
await writeAssetDeclarationDTSFile()
await writeUrlBasedAssetDeclarationFile()
await writeImportBasedAssetDeclarationFile()
await writeImportBasedAssetDeclarationFile('', 'imports.js')
await writeImportBasedAssetDeclarationFile('?url', 'imports.vite.js')
await writeSelfHostedAssetDeclarationFile()
nicelog('Done!')
}

634
yarn.lock
View file

@ -51,19 +51,6 @@ __metadata:
languageName: node
linkType: hard
"@apideck/better-ajv-errors@npm:^0.3.1":
version: 0.3.6
resolution: "@apideck/better-ajv-errors@npm:0.3.6"
dependencies:
json-schema: "npm:^0.4.0"
jsonpointer: "npm:^5.0.0"
leven: "npm:^3.1.0"
peerDependencies:
ajv: ">=8"
checksum: d638f4d5654081b874671a5729b111d1bea5960834968847e8b05d5f57bf2f50cf29fd29d0bbb7f0077640785daacec22cf018a5f01501e276ee96d271fe8330
languageName: node
linkType: hard
"@auto-it/bot-list@npm:10.46.0":
version: 10.46.0
resolution: "@auto-it/bot-list@npm:10.46.0"
@ -931,7 +918,7 @@ __metadata:
languageName: node
linkType: hard
"@babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.18.6, @babel/core@npm:^7.20.7, @babel/core@npm:^7.23.5":
"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.18.6, @babel/core@npm:^7.20.7, @babel/core@npm:^7.23.5":
version: 7.23.7
resolution: "@babel/core@npm:7.23.7"
dependencies:
@ -1079,7 +1066,7 @@ __metadata:
languageName: node
linkType: hard
"@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.22.15":
"@babel/helper-module-imports@npm:^7.22.15":
version: 7.22.15
resolution: "@babel/helper-module-imports@npm:7.22.15"
dependencies:
@ -2152,7 +2139,7 @@ __metadata:
languageName: node
linkType: hard
"@babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.18.6":
"@babel/preset-env@npm:^7.18.6":
version: 7.23.8
resolution: "@babel/preset-env@npm:7.23.8"
dependencies:
@ -2286,7 +2273,7 @@ __metadata:
languageName: node
linkType: hard
"@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2":
"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2":
version: 7.23.8
resolution: "@babel/runtime@npm:7.23.8"
dependencies:
@ -3761,16 +3748,6 @@ __metadata:
languageName: node
linkType: hard
"@jridgewell/source-map@npm:^0.3.3":
version: 0.3.5
resolution: "@jridgewell/source-map@npm:0.3.5"
dependencies:
"@jridgewell/gen-mapping": "npm:^0.3.0"
"@jridgewell/trace-mapping": "npm:^0.3.9"
checksum: 73838ac43235edecff5efc850c0d759704008937a56b1711b28c261e270fe4bf2dc06d0b08663aeb1ab304f81f6de4f5fb844344403cf53ba7096967a9953cae
languageName: node
linkType: hard
"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14":
version: 1.4.15
resolution: "@jridgewell/sourcemap-codec@npm:1.4.15"
@ -5537,64 +5514,6 @@ __metadata:
languageName: node
linkType: hard
"@rollup/plugin-babel@npm:^5.2.0":
version: 5.3.1
resolution: "@rollup/plugin-babel@npm:5.3.1"
dependencies:
"@babel/helper-module-imports": "npm:^7.10.4"
"@rollup/pluginutils": "npm:^3.1.0"
peerDependencies:
"@babel/core": ^7.0.0
"@types/babel__core": ^7.1.9
rollup: ^1.20.0||^2.0.0
peerDependenciesMeta:
"@types/babel__core":
optional: true
checksum: eb3ee5fedd86fa39ad70c2f8e05f14f8b185261b9f63699a01ac7eae664167f2e5cf87377434bf6aadad7eaf2b13c955ac26f8332a02f8d6a46b3c91990a9fbc
languageName: node
linkType: hard
"@rollup/plugin-node-resolve@npm:^11.2.1":
version: 11.2.1
resolution: "@rollup/plugin-node-resolve@npm:11.2.1"
dependencies:
"@rollup/pluginutils": "npm:^3.1.0"
"@types/resolve": "npm:1.17.1"
builtin-modules: "npm:^3.1.0"
deepmerge: "npm:^4.2.2"
is-module: "npm:^1.0.0"
resolve: "npm:^1.19.0"
peerDependencies:
rollup: ^1.20.0||^2.0.0
checksum: 8007f6a01d709da1078df19bb5ecb1339f43042786a68d98645e0a4c1765064d1500a1b86b65e12de6ae35d9b1ae693e22e63b3ebb69a627ce81172ea21cc228
languageName: node
linkType: hard
"@rollup/plugin-replace@npm:^2.4.1":
version: 2.4.2
resolution: "@rollup/plugin-replace@npm:2.4.2"
dependencies:
"@rollup/pluginutils": "npm:^3.1.0"
magic-string: "npm:^0.25.7"
peerDependencies:
rollup: ^1.20.0 || ^2.0.0
checksum: fc4844c4cd7286013d4ccb51a7a2c86135024e3940797af1af1f24357622c8e874d9a17acfa4be9d2546542a87b68e158cc8d2c1f2a7926d17b9433eea00f6bf
languageName: node
linkType: hard
"@rollup/pluginutils@npm:^3.1.0":
version: 3.1.0
resolution: "@rollup/pluginutils@npm:3.1.0"
dependencies:
"@types/estree": "npm:0.0.39"
estree-walker: "npm:^1.0.1"
picomatch: "npm:^2.2.2"
peerDependencies:
rollup: ^1.20.0||^2.0.0
checksum: 3b69f02893eea42455fb97b81f612ac6bfadf94ac73bebd481ea13e90a693eef52c163210a095b12e574a25603af5e55f86a020889019167f331aa8dd3ff30e0
languageName: node
linkType: hard
"@rollup/pluginutils@npm:^4.0.0":
version: 4.2.1
resolution: "@rollup/pluginutils@npm:4.2.1"
@ -6744,18 +6663,6 @@ __metadata:
languageName: node
linkType: hard
"@surma/rollup-plugin-off-main-thread@npm:^2.2.3":
version: 2.2.3
resolution: "@surma/rollup-plugin-off-main-thread@npm:2.2.3"
dependencies:
ejs: "npm:^3.1.6"
json5: "npm:^2.2.0"
magic-string: "npm:^0.25.0"
string.prototype.matchall: "npm:^4.0.6"
checksum: 0c7dc1c1fc396454513dec9ef34e743ffc8662adc20eeaf392a9cca4bd8a4a33af239c057022b6272c3fc438550e3c7099cdea5f50eb61c5058308989c7c48d6
languageName: node
linkType: hard
"@swc/core-darwin-arm64@npm:1.3.102":
version: 1.3.102
resolution: "@swc/core-darwin-arm64@npm:1.3.102"
@ -7682,13 +7589,6 @@ __metadata:
languageName: node
linkType: hard
"@types/estree@npm:0.0.39":
version: 0.0.39
resolution: "@types/estree@npm:0.0.39"
checksum: 9f0f20990dbf725470564d4d815d3758ac688b790f601ea98654b6e0b9797dc3c80306fb525abdacd9e75e014e3d09ad326098eaa2ed1851e4823a8e278538aa
languageName: node
linkType: hard
"@types/fs-extra@npm:^11.0.1":
version: 11.0.4
resolution: "@types/fs-extra@npm:11.0.4"
@ -8091,15 +7991,6 @@ __metadata:
languageName: node
linkType: hard
"@types/resolve@npm:1.17.1":
version: 1.17.1
resolution: "@types/resolve@npm:1.17.1"
dependencies:
"@types/node": "npm:*"
checksum: dc6a6df507656004e242dcb02c784479deca516d5f4b58a1707e708022b269ae147e1da0521f3e8ad0d63638869d87e0adc023f0bd5454aa6f72ac66c7525cf5
languageName: node
linkType: hard
"@types/responselike@npm:^1.0.0":
version: 1.0.3
resolution: "@types/responselike@npm:1.0.3"
@ -8179,13 +8070,6 @@ __metadata:
languageName: node
linkType: hard
"@types/trusted-types@npm:^2.0.2":
version: 2.0.7
resolution: "@types/trusted-types@npm:2.0.7"
checksum: 8e4202766a65877efcf5d5a41b7dd458480b36195e580a3b1085ad21e948bc417d55d6f8af1fd2a7ad008015d4117d5fdfe432731157da3c68678487174e4ba3
languageName: node
linkType: hard
"@types/unist@npm:*, @types/unist@npm:^3.0.0":
version: 3.0.2
resolution: "@types/unist@npm:3.0.2"
@ -8871,7 +8755,7 @@ __metadata:
languageName: node
linkType: hard
"acorn@npm:^8.0.0, acorn@npm:^8.1.0, acorn@npm:^8.11.3, acorn@npm:^8.4.1, acorn@npm:^8.6.0, acorn@npm:^8.7.0, acorn@npm:^8.8.0, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0":
"acorn@npm:^8.0.0, acorn@npm:^8.1.0, acorn@npm:^8.11.3, acorn@npm:^8.4.1, acorn@npm:^8.6.0, acorn@npm:^8.7.0, acorn@npm:^8.8.0, acorn@npm:^8.8.1, acorn@npm:^8.9.0":
version: 8.11.3
resolution: "acorn@npm:8.11.3"
bin:
@ -8941,18 +8825,6 @@ __metadata:
languageName: node
linkType: hard
"ajv@npm:^8.6.0":
version: 8.12.0
resolution: "ajv@npm:8.12.0"
dependencies:
fast-deep-equal: "npm:^3.1.1"
json-schema-traverse: "npm:^1.0.0"
require-from-string: "npm:^2.0.2"
uri-js: "npm:^4.2.2"
checksum: b406f3b79b5756ac53bfe2c20852471b08e122bc1ee4cde08ae4d6a800574d9cd78d60c81c69c63ff81e4da7cd0b638fafbb2303ae580d49cf1600b9059efb85
languageName: node
linkType: hard
"ansi-colors@npm:4.1.1":
version: 4.1.1
resolution: "ansi-colors@npm:4.1.1"
@ -9412,13 +9284,6 @@ __metadata:
languageName: node
linkType: hard
"async@npm:^3.2.3":
version: 3.2.5
resolution: "async@npm:3.2.5"
checksum: 323c3615c3f0ab1ac25a6f953296bc0ac3213d5e0f1c0debdb12964e55963af288d570293c11e44f7967af58c06d2a88d0ea588c86ec0fbf62fa98037f604a0f
languageName: node
linkType: hard
"asynciterator.prototype@npm:^1.0.0":
version: 1.0.0
resolution: "asynciterator.prototype@npm:1.0.0"
@ -9984,13 +9849,6 @@ __metadata:
languageName: node
linkType: hard
"builtin-modules@npm:^3.1.0":
version: 3.3.0
resolution: "builtin-modules@npm:3.3.0"
checksum: 62e063ab40c0c1efccbfa9ffa31873e4f9d57408cb396a2649981a0ecbce56aabc93c28feaccbc5658c95aab2703ad1d11980e62ec2e5e72637404e1eb60f39e
languageName: node
linkType: hard
"busboy@npm:1.6.0":
version: 1.6.0
resolution: "busboy@npm:1.6.0"
@ -10223,7 +10081,7 @@ __metadata:
languageName: node
linkType: hard
"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2":
"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2":
version: 4.1.2
resolution: "chalk@npm:4.1.2"
dependencies:
@ -10681,13 +10539,6 @@ __metadata:
languageName: node
linkType: hard
"commander@npm:^2.20.0":
version: 2.20.3
resolution: "commander@npm:2.20.3"
checksum: 90c5b6898610cd075984c58c4f88418a4fb44af08c1b1415e9854c03171bec31b336b7f3e4cefe33de994b3f12b03c5e2d638da4316df83593b9e82554e7e95b
languageName: node
linkType: hard
"commander@npm:^6.1.0":
version: 6.2.1
resolution: "commander@npm:6.2.1"
@ -10709,13 +10560,6 @@ __metadata:
languageName: node
linkType: hard
"common-tags@npm:^1.8.0":
version: 1.8.2
resolution: "common-tags@npm:1.8.2"
checksum: c665d0f463ee79dda801471ad8da6cb33ff7332ba45609916a508ad3d77ba07ca9deeb452e83f81f24c2b081e2c1315347f23d239210e63d1c5e1a0c7c019fe2
languageName: node
linkType: hard
"concat-map@npm:0.0.1":
version: 0.0.1
resolution: "concat-map@npm:0.0.1"
@ -10952,13 +10796,6 @@ __metadata:
languageName: node
linkType: hard
"crypto-random-string@npm:^2.0.0":
version: 2.0.0
resolution: "crypto-random-string@npm:2.0.0"
checksum: 0283879f55e7c16fdceacc181f87a0a65c53bc16ffe1d58b9d19a6277adcd71900d02bb2c4843dd55e78c51e30e89b0fec618a7f170ebcc95b33182c28f05fd6
languageName: node
linkType: hard
"css-select@npm:^5.1.0":
version: 5.1.0
resolution: "css-select@npm:5.1.0"
@ -11623,7 +11460,6 @@ __metadata:
react-helmet-async: "npm:^1.3.0"
react-router-dom: "npm:^6.17.0"
vite: "npm:^5.0.0"
vite-plugin-pwa: "npm:^0.17.0"
ws: "npm:^8.16.0"
languageName: unknown
linkType: soft
@ -11722,17 +11558,6 @@ __metadata:
languageName: node
linkType: hard
"ejs@npm:^3.1.6":
version: 3.1.9
resolution: "ejs@npm:3.1.9"
dependencies:
jake: "npm:^10.8.5"
bin:
ejs: bin/cli.js
checksum: 71f56d37540d2c2d71701f0116710c676f75314a3e997ef8b83515d5d4d2b111c5a72725377caeecb928671bacb84a0d38135f345904812e989847057d59f21a
languageName: node
linkType: hard
"electron-to-chromium@npm:^1.4.601":
version: 1.4.630
resolution: "electron-to-chromium@npm:1.4.630"
@ -13119,13 +12944,6 @@ __metadata:
languageName: node
linkType: hard
"estree-walker@npm:^1.0.1":
version: 1.0.1
resolution: "estree-walker@npm:1.0.1"
checksum: 1cf11a0aff7613aa765dc535ed1d83e2a1986207d2353f4795df309a2c55726de3ca4948df635c09969a739dc59e8e2d69f88d3b3d2c6dfc5701257aafd1d11b
languageName: node
linkType: hard
"estree-walker@npm:^3.0.0":
version: 3.0.3
resolution: "estree-walker@npm:3.0.3"
@ -13415,7 +13233,7 @@ __metadata:
languageName: node
linkType: hard
"fast-glob@npm:^3.0.3, fast-glob@npm:^3.1.1, fast-glob@npm:^3.2.7, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.1, fast-glob@npm:^3.3.2":
"fast-glob@npm:^3.0.3, fast-glob@npm:^3.1.1, fast-glob@npm:^3.2.7, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.1":
version: 3.3.2
resolution: "fast-glob@npm:3.3.2"
dependencies:
@ -13537,15 +13355,6 @@ __metadata:
languageName: node
linkType: hard
"filelist@npm:^1.0.4":
version: 1.0.4
resolution: "filelist@npm:1.0.4"
dependencies:
minimatch: "npm:^5.0.1"
checksum: 4b436fa944b1508b95cffdfc8176ae6947b92825483639ef1b9a89b27d82f3f8aa22b21eed471993f92709b431670d4e015b39c087d435a61e1bb04564cf51de
languageName: node
linkType: hard
"fill-range@npm:^7.0.1":
version: 7.0.1
resolution: "fill-range@npm:7.0.1"
@ -13834,7 +13643,7 @@ __metadata:
languageName: node
linkType: hard
"fs-extra@npm:^9.0.0, fs-extra@npm:^9.0.1":
"fs-extra@npm:^9.0.0":
version: 9.1.0
resolution: "fs-extra@npm:9.1.0"
dependencies:
@ -14048,13 +13857,6 @@ __metadata:
languageName: node
linkType: hard
"get-own-enumerable-property-symbols@npm:^3.0.0":
version: 3.0.2
resolution: "get-own-enumerable-property-symbols@npm:3.0.2"
checksum: 8f0331f14159f939830884799f937343c8c0a2c330506094bc12cbee3665d88337fe97a4ea35c002cc2bdba0f5d9975ad7ec3abb925015cdf2a93e76d4759ede
languageName: node
linkType: hard
"get-package-type@npm:^0.1.0":
version: 0.1.0
resolution: "get-package-type@npm:0.1.0"
@ -14250,7 +14052,7 @@ __metadata:
languageName: node
linkType: hard
"glob@npm:^7.0.6, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6":
"glob@npm:^7.0.6, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4":
version: 7.2.3
resolution: "glob@npm:7.2.3"
dependencies:
@ -15028,7 +14830,7 @@ __metadata:
languageName: node
linkType: hard
"idb@npm:^7.0.1, idb@npm:^7.1.1":
"idb@npm:^7.1.1":
version: 7.1.1
resolution: "idb@npm:7.1.1"
checksum: 8e33eaebf21055129864acb89932e0739b8c96788e559df24c253ce114d8c6deb977a3b30ea47a9bb8a2ae8a55964861c3df65f360d95745e341cee40d5c17f4
@ -15510,13 +15312,6 @@ __metadata:
languageName: node
linkType: hard
"is-module@npm:^1.0.0":
version: 1.0.0
resolution: "is-module@npm:1.0.0"
checksum: 8cd5390730c7976fb4e8546dd0b38865ee6f7bacfa08dfbb2cc07219606755f0b01709d9361e01f13009bbbd8099fa2927a8ed665118a6105d66e40f1b838c3f
languageName: node
linkType: hard
"is-nan@npm:^1.3.2":
version: 1.3.2
resolution: "is-nan@npm:1.3.2"
@ -15550,13 +15345,6 @@ __metadata:
languageName: node
linkType: hard
"is-obj@npm:^1.0.1":
version: 1.0.1
resolution: "is-obj@npm:1.0.1"
checksum: 3ccf0efdea12951e0b9c784e2b00e77e87b2f8bd30b42a498548a8afcc11b3287342a2030c308e473e93a7a19c9ea7854c99a8832a476591c727df2a9c79796c
languageName: node
linkType: hard
"is-object@npm:^1.0.1":
version: 1.0.2
resolution: "is-object@npm:1.0.2"
@ -15625,13 +15413,6 @@ __metadata:
languageName: node
linkType: hard
"is-regexp@npm:^1.0.0":
version: 1.0.0
resolution: "is-regexp@npm:1.0.0"
checksum: be692828e24cba479ec33644326fa98959ec68ba77965e0291088c1a741feaea4919d79f8031708f85fd25e39de002b4520622b55460660b9c369e6f7187faef
languageName: node
linkType: hard
"is-set@npm:^2.0.1, is-set@npm:^2.0.2":
version: 2.0.2
resolution: "is-set@npm:2.0.2"
@ -15886,20 +15667,6 @@ __metadata:
languageName: node
linkType: hard
"jake@npm:^10.8.5":
version: 10.8.7
resolution: "jake@npm:10.8.7"
dependencies:
async: "npm:^3.2.3"
chalk: "npm:^4.0.2"
filelist: "npm:^1.0.4"
minimatch: "npm:^3.1.2"
bin:
jake: bin/cli.js
checksum: ad1cfe398836df4e6962954e5095597c21c5af1ea5a4182f6adf0869df8aca467a2eeca7869bf44f47120f4dd4ea52589d16050d295c87a5906c0d744775acc3
languageName: node
linkType: hard
"java-properties@npm:^1.0.0":
version: 1.0.2
resolution: "java-properties@npm:1.0.2"
@ -16427,17 +16194,6 @@ __metadata:
languageName: node
linkType: hard
"jest-worker@npm:^26.2.1":
version: 26.6.2
resolution: "jest-worker@npm:26.6.2"
dependencies:
"@types/node": "npm:*"
merge-stream: "npm:^2.0.0"
supports-color: "npm:^7.0.0"
checksum: 5f6b94cf0e8701392a9402fc7af34a1324d334fc6a440d4d55d2d9348114659c035b8d9b259930f9c9e40cbdda0ef9bfe4d7c780e1107057bbe1202672b38533
languageName: node
linkType: hard
"jest-worker@npm:^28.1.3":
version: 28.1.3
resolution: "jest-worker@npm:28.1.3"
@ -16684,7 +16440,7 @@ __metadata:
languageName: node
linkType: hard
"json-schema@npm:0.4.0, json-schema@npm:^0.4.0":
"json-schema@npm:0.4.0":
version: 0.4.0
resolution: "json-schema@npm:0.4.0"
checksum: 8b3b64eff4a807dc2a3045b104ed1b9335cd8d57aa74c58718f07f0f48b8baa3293b00af4dcfbdc9144c3aafea1e97982cc27cc8e150fc5d93c540649507a458
@ -16728,7 +16484,7 @@ __metadata:
languageName: node
linkType: hard
"json5@npm:^2.1.2, json5@npm:^2.2.0, json5@npm:^2.2.2, json5@npm:^2.2.3":
"json5@npm:^2.1.2, json5@npm:^2.2.2, json5@npm:^2.2.3":
version: 2.2.3
resolution: "json5@npm:2.2.3"
bin:
@ -16776,13 +16532,6 @@ __metadata:
languageName: node
linkType: hard
"jsonpointer@npm:^5.0.0":
version: 5.0.1
resolution: "jsonpointer@npm:5.0.1"
checksum: 0b40f712900ad0c846681ea2db23b6684b9d5eedf55807b4708c656f5894b63507d0e28ae10aa1bddbea551241035afe62b6df0800fc94c2e2806a7f3adecd7c
languageName: node
linkType: hard
"jsonwebtoken@npm:^9.0.0, jsonwebtoken@npm:^9.0.2":
version: 9.0.2
resolution: "jsonwebtoken@npm:9.0.2"
@ -17244,7 +16993,7 @@ __metadata:
languageName: node
linkType: hard
"lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.7.0, lodash@npm:~4.17.15":
"lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.7.0, lodash@npm:~4.17.15":
version: 4.17.21
resolution: "lodash@npm:4.17.21"
checksum: c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532
@ -17361,7 +17110,7 @@ __metadata:
languageName: node
linkType: hard
"magic-string@npm:^0.25.0, magic-string@npm:^0.25.3, magic-string@npm:^0.25.7":
"magic-string@npm:^0.25.3":
version: 0.25.9
resolution: "magic-string@npm:0.25.9"
dependencies:
@ -20306,20 +20055,13 @@ __metadata:
languageName: node
linkType: hard
"pretty-bytes@npm:5.6.0, pretty-bytes@npm:^5.3.0":
"pretty-bytes@npm:5.6.0":
version: 5.6.0
resolution: "pretty-bytes@npm:5.6.0"
checksum: 9c082500d1e93434b5b291bd651662936b8bd6204ec9fa17d563116a192d6d86b98f6d328526b4e8d783c07d5499e2614a807520249692da9ec81564b2f439cd
languageName: node
linkType: hard
"pretty-bytes@npm:^6.1.1":
version: 6.1.1
resolution: "pretty-bytes@npm:6.1.1"
checksum: 43d29d909d2d88072da2c3d72f8fd0f2d2523c516bfa640aff6e31f596ea1004b6601f4cabc50d14b2cf10e82635ebe5b7d9378f3d5bae1c0067131829421b8a
languageName: node
linkType: hard
"pretty-format@npm:^27.0.2":
version: 27.5.1
resolution: "pretty-format@npm:27.5.1"
@ -21440,7 +21182,7 @@ __metadata:
languageName: node
linkType: hard
"resolve@npm:^1.0.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.4, resolve@npm:~1.22.1":
"resolve@npm:^1.0.0, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.4, resolve@npm:~1.22.1":
version: 1.22.8
resolution: "resolve@npm:1.22.8"
dependencies:
@ -21485,7 +21227,7 @@ __metadata:
languageName: node
linkType: hard
"resolve@patch:resolve@npm%3A^1.0.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A~1.22.1#optional!builtin<compat/resolve>":
"resolve@patch:resolve@npm%3A^1.0.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A~1.22.1#optional!builtin<compat/resolve>":
version: 1.22.8
resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin<compat/resolve>::version=1.22.8&hash=c3c19d"
dependencies:
@ -21662,20 +21404,6 @@ __metadata:
languageName: node
linkType: hard
"rollup-plugin-terser@npm:^7.0.0":
version: 7.0.2
resolution: "rollup-plugin-terser@npm:7.0.2"
dependencies:
"@babel/code-frame": "npm:^7.10.4"
jest-worker: "npm:^26.2.1"
serialize-javascript: "npm:^4.0.0"
terser: "npm:^5.0.0"
peerDependencies:
rollup: ^2.0.0
checksum: af84bb7a7a894cd00852b6486528dfb8653cf94df4c126f95f389a346f401d054b08c46bee519a2ab6a22b33804d1d6ac6d8c90b1b2bf8fffb097eed73fc3c72
languageName: node
linkType: hard
"rollup-pluginutils@npm:^2.8.1":
version: 2.8.2
resolution: "rollup-pluginutils@npm:2.8.2"
@ -21685,20 +21413,6 @@ __metadata:
languageName: node
linkType: hard
"rollup@npm:^2.43.1":
version: 2.79.1
resolution: "rollup@npm:2.79.1"
dependencies:
fsevents: "npm:~2.3.2"
dependenciesMeta:
fsevents:
optional: true
bin:
rollup: dist/bin/rollup
checksum: df087b701304432f30922bbee5f534ab189aa6938bd383b5686c03147e0d00cd1789ea10a462361326ce6b6ebe448ce272ad3f3cc40b82eeb3157df12f33663c
languageName: node
linkType: hard
"rollup@npm:^3.27.1":
version: 3.29.4
resolution: "rollup@npm:3.29.4"
@ -21978,15 +21692,6 @@ __metadata:
languageName: node
linkType: hard
"serialize-javascript@npm:^4.0.0":
version: 4.0.0
resolution: "serialize-javascript@npm:4.0.0"
dependencies:
randombytes: "npm:^2.1.0"
checksum: df6809168973a84facade7d73e2d6dc418f5dee704d1e6cbe79e92fdb4c10af55237e99d2e67881ae3b29aa96ba596a0dfec4e609bd289ab8ec93c5ae78ede8e
languageName: node
linkType: hard
"serve-static@npm:1.15.0":
version: 1.15.0
resolution: "serve-static@npm:1.15.0"
@ -22290,7 +21995,7 @@ __metadata:
languageName: node
linkType: hard
"source-map-support@npm:0.5.21, source-map-support@npm:^0.5.12, source-map-support@npm:^0.5.17, source-map-support@npm:^0.5.21, source-map-support@npm:~0.5.20":
"source-map-support@npm:0.5.21, source-map-support@npm:^0.5.12, source-map-support@npm:^0.5.17, source-map-support@npm:^0.5.21":
version: 0.5.21
resolution: "source-map-support@npm:0.5.21"
dependencies:
@ -22321,15 +22026,6 @@ __metadata:
languageName: node
linkType: hard
"source-map@npm:^0.8.0-beta.0":
version: 0.8.0-beta.0
resolution: "source-map@npm:0.8.0-beta.0"
dependencies:
whatwg-url: "npm:^7.0.0"
checksum: c02e22ab9f8b8e38655ba1e9abae9fe1f8ba216cbbea922718d5e2ea45821606a74f10edec1db9055e7f7cfd1e6a62e5eade67ec30c017a02f4c8e990accbc1c
languageName: node
linkType: hard
"sourcemap-codec@npm:^1.4.8":
version: 1.4.8
resolution: "sourcemap-codec@npm:1.4.8"
@ -22638,7 +22334,7 @@ __metadata:
languageName: node
linkType: hard
"string.prototype.matchall@npm:^4.0.6, string.prototype.matchall@npm:^4.0.8":
"string.prototype.matchall@npm:^4.0.8":
version: 4.0.10
resolution: "string.prototype.matchall@npm:4.0.10"
dependencies:
@ -22723,17 +22419,6 @@ __metadata:
languageName: node
linkType: hard
"stringify-object@npm:^3.3.0":
version: 3.3.0
resolution: "stringify-object@npm:3.3.0"
dependencies:
get-own-enumerable-property-symbols: "npm:^3.0.0"
is-obj: "npm:^1.0.1"
is-regexp: "npm:^1.0.0"
checksum: 973782f09a3df3f39a2cf07dbf43fb9ba6cb32976f3616cd0f6c10e0a5c5415dd72b7b700e72920e8da2bf57c3001b8e37b5af7174bab9a748ce0416989e19b1
languageName: node
linkType: hard
"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1":
version: 6.0.1
resolution: "strip-ansi@npm:6.0.1"
@ -22802,13 +22487,6 @@ __metadata:
languageName: node
linkType: hard
"strip-comments@npm:^2.0.1":
version: 2.0.1
resolution: "strip-comments@npm:2.0.1"
checksum: 43ea36189e4ba543c6ffb0384831e9e23c3b57ede5592c6edcbfc883f489f91d00328fe2670b4e467f61c7886eff68deae3e946f0f092346b2b3cb058b9cfdba
languageName: node
linkType: hard
"strip-final-newline@npm:^2.0.0":
version: 2.0.0
resolution: "strip-final-newline@npm:2.0.0"
@ -23020,25 +22698,6 @@ __metadata:
languageName: node
linkType: hard
"temp-dir@npm:^2.0.0":
version: 2.0.0
resolution: "temp-dir@npm:2.0.0"
checksum: cc4f0404bf8d6ae1a166e0e64f3f409b423f4d1274d8c02814a59a5529f07db6cd070a749664141b992b2c1af337fa9bb451a460a43bb9bcddc49f235d3115aa
languageName: node
linkType: hard
"tempy@npm:^0.6.0":
version: 0.6.0
resolution: "tempy@npm:0.6.0"
dependencies:
is-stream: "npm:^2.0.0"
temp-dir: "npm:^2.0.0"
type-fest: "npm:^0.16.0"
unique-string: "npm:^2.0.0"
checksum: 64f110666b3892ff00d2b5f9d89a5e0198813cc7e25aa187eca5ce310ff1697ef2cb7239f9eccbe0e8a23c1cdfaae949ce37511fe60ebfc637018ce7e9642a49
languageName: node
linkType: hard
"terminal-link@npm:^2.0.0, terminal-link@npm:^2.1.1":
version: 2.1.1
resolution: "terminal-link@npm:2.1.1"
@ -23049,20 +22708,6 @@ __metadata:
languageName: node
linkType: hard
"terser@npm:^5.0.0":
version: 5.26.0
resolution: "terser@npm:5.26.0"
dependencies:
"@jridgewell/source-map": "npm:^0.3.3"
acorn: "npm:^8.8.2"
commander: "npm:^2.20.0"
source-map-support: "npm:~0.5.20"
bin:
terser: bin/terser
checksum: 0282c5c065cbfa1e725d5609b99579252bc20b83cd1d75e8ab8b46d5da2c9d0fcfc453a12624f2d2d4c1240bfa0017a90fcf1e3b88258e5842fca1b0b82be8d8
languageName: node
linkType: hard
"test-exclude@npm:^6.0.0":
version: 6.0.0
resolution: "test-exclude@npm:6.0.0"
@ -23639,13 +23284,6 @@ __metadata:
languageName: node
linkType: hard
"type-fest@npm:^0.16.0":
version: 0.16.0
resolution: "type-fest@npm:0.16.0"
checksum: fd8c47ccb90e9fe7bae8bfc0e116e200e096120200c1ab1737bf0bc9334b344dd4925f876ed698174ffd58cd179bb56a55467be96aedc22d5d72748eac428bc8
languageName: node
linkType: hard
"type-fest@npm:^0.20.2":
version: 0.20.2
resolution: "type-fest@npm:0.20.2"
@ -23987,15 +23625,6 @@ __metadata:
languageName: node
linkType: hard
"unique-string@npm:^2.0.0":
version: 2.0.0
resolution: "unique-string@npm:2.0.0"
dependencies:
crypto-random-string: "npm:^2.0.0"
checksum: 107cae65b0b618296c2c663b8e52e4d1df129e9af04ab38d53b4f2189e96da93f599c85f4589b7ffaf1a11c9327cbb8a34f04c71b8d4950d3e385c2da2a93828
languageName: node
linkType: hard
"unist-builder@npm:^3.0.0":
version: 3.0.1
resolution: "unist-builder@npm:3.0.1"
@ -24182,13 +23811,6 @@ __metadata:
languageName: node
linkType: hard
"upath@npm:^1.2.0":
version: 1.2.0
resolution: "upath@npm:1.2.0"
checksum: ac07351d9e913eb7bc9bc0a17ed7d033a52575f0f2959e19726956c3e96f5d4d75aa6a7a777c4c9506e72372f58e06215e581f8dbff35611fc0a7b68ab4a6ddb
languageName: node
linkType: hard
"update-browserslist-db@npm:^1.0.13":
version: 1.0.13
resolution: "update-browserslist-db@npm:1.0.13"
@ -24587,23 +24209,6 @@ __metadata:
languageName: node
linkType: hard
"vite-plugin-pwa@npm:^0.17.0":
version: 0.17.4
resolution: "vite-plugin-pwa@npm:0.17.4"
dependencies:
debug: "npm:^4.3.4"
fast-glob: "npm:^3.3.2"
pretty-bytes: "npm:^6.1.1"
workbox-build: "npm:^7.0.0"
workbox-window: "npm:^7.0.0"
peerDependencies:
vite: ^3.1.0 || ^4.0.0 || ^5.0.0
workbox-build: ^7.0.0
workbox-window: ^7.0.0
checksum: 4dc3764f074e523dbb620399d4c83637b3219be3fe9cb3dd18664eaa8a39c6aa8c639d83f14127876cae4c0cdb1c7ded7910c26546c38b066f4514e4b58d4849
languageName: node
linkType: hard
"vite@npm:^3.0.0 || ^4.0.0, vite@npm:^4.1.4":
version: 4.5.1
resolution: "vite@npm:4.5.1"
@ -24888,17 +24493,6 @@ __metadata:
languageName: node
linkType: hard
"whatwg-url@npm:^7.0.0":
version: 7.1.0
resolution: "whatwg-url@npm:7.1.0"
dependencies:
lodash.sortby: "npm:^4.7.0"
tr46: "npm:^1.0.1"
webidl-conversions: "npm:^4.0.2"
checksum: 769fd35838b4e50536ae08d836472e86adbedda1d5493ea34353c55468147e7868b91d2535b59e01a9e7331ab7e4cdfdf5490c279c045da23c327cf33e32f755
languageName: node
linkType: hard
"whatwg-url@npm:^8.4.0":
version: 8.7.0
resolution: "whatwg-url@npm:8.7.0"
@ -25032,196 +24626,6 @@ __metadata:
languageName: node
linkType: hard
"workbox-background-sync@npm:7.0.0":
version: 7.0.0
resolution: "workbox-background-sync@npm:7.0.0"
dependencies:
idb: "npm:^7.0.1"
workbox-core: "npm:7.0.0"
checksum: 41f89cd970c69bebe1ac648485c89f033ccd116f8140696de5f5489f2138e67ccc30ce33158025b8e312c49ad390f80eb8e372f9c569f5d6f35ab1e6185c2d74
languageName: node
linkType: hard
"workbox-broadcast-update@npm:7.0.0":
version: 7.0.0
resolution: "workbox-broadcast-update@npm:7.0.0"
dependencies:
workbox-core: "npm:7.0.0"
checksum: e6110207465c574327dc89cbedad90795093e181341e2b093141a7171c46d2d4bb5862ba2a3a1e0c753e359f4462bf9929ce911c2082fe566f2551da295abf68
languageName: node
linkType: hard
"workbox-build@npm:^7.0.0":
version: 7.0.0
resolution: "workbox-build@npm:7.0.0"
dependencies:
"@apideck/better-ajv-errors": "npm:^0.3.1"
"@babel/core": "npm:^7.11.1"
"@babel/preset-env": "npm:^7.11.0"
"@babel/runtime": "npm:^7.11.2"
"@rollup/plugin-babel": "npm:^5.2.0"
"@rollup/plugin-node-resolve": "npm:^11.2.1"
"@rollup/plugin-replace": "npm:^2.4.1"
"@surma/rollup-plugin-off-main-thread": "npm:^2.2.3"
ajv: "npm:^8.6.0"
common-tags: "npm:^1.8.0"
fast-json-stable-stringify: "npm:^2.1.0"
fs-extra: "npm:^9.0.1"
glob: "npm:^7.1.6"
lodash: "npm:^4.17.20"
pretty-bytes: "npm:^5.3.0"
rollup: "npm:^2.43.1"
rollup-plugin-terser: "npm:^7.0.0"
source-map: "npm:^0.8.0-beta.0"
stringify-object: "npm:^3.3.0"
strip-comments: "npm:^2.0.1"
tempy: "npm:^0.6.0"
upath: "npm:^1.2.0"
workbox-background-sync: "npm:7.0.0"
workbox-broadcast-update: "npm:7.0.0"
workbox-cacheable-response: "npm:7.0.0"
workbox-core: "npm:7.0.0"
workbox-expiration: "npm:7.0.0"
workbox-google-analytics: "npm:7.0.0"
workbox-navigation-preload: "npm:7.0.0"
workbox-precaching: "npm:7.0.0"
workbox-range-requests: "npm:7.0.0"
workbox-recipes: "npm:7.0.0"
workbox-routing: "npm:7.0.0"
workbox-strategies: "npm:7.0.0"
workbox-streams: "npm:7.0.0"
workbox-sw: "npm:7.0.0"
workbox-window: "npm:7.0.0"
checksum: b7b19cb27053e10de36c49fa90fa3f10e027184ea84d6b96d998120e3c801b123de2f7a0b33358ff7a1390cc729e51c6f0b25ea8c7b2504792cd7585aef9d507
languageName: node
linkType: hard
"workbox-cacheable-response@npm:7.0.0":
version: 7.0.0
resolution: "workbox-cacheable-response@npm:7.0.0"
dependencies:
workbox-core: "npm:7.0.0"
checksum: b18de42a55802f18ecb7d08c6f3dac5f18cded64f36bb74b00eceb01199d2f8362c96d76ee12e75381fb51a06d705d901e3985c24017dc3d3e3fc9fc36282e51
languageName: node
linkType: hard
"workbox-core@npm:7.0.0":
version: 7.0.0
resolution: "workbox-core@npm:7.0.0"
checksum: 680c65e926517a6cd7b515243b9a33a5f4cdc45de31e060fbdc89e28f79b10a2fa211576802a29790cd37fa8a801f3fccfb9cbe371acaa8095c858c9afefc7e6
languageName: node
linkType: hard
"workbox-expiration@npm:7.0.0":
version: 7.0.0
resolution: "workbox-expiration@npm:7.0.0"
dependencies:
idb: "npm:^7.0.1"
workbox-core: "npm:7.0.0"
checksum: a9b23c7c76cbabe8f04567e603428db939cb169cf40c1e5ba1c5a1eb966f7b8a4d0182dffdd3d77917b5edca966be0d6e347b7eff274292256fe6ea9a40fa754
languageName: node
linkType: hard
"workbox-google-analytics@npm:7.0.0":
version: 7.0.0
resolution: "workbox-google-analytics@npm:7.0.0"
dependencies:
workbox-background-sync: "npm:7.0.0"
workbox-core: "npm:7.0.0"
workbox-routing: "npm:7.0.0"
workbox-strategies: "npm:7.0.0"
checksum: e66b390a86b6b9e872e004207c2c920629b45a1be396ec80f9a190986a4e8eaff69bd002f266bd907d0ab7a16cf2b1a8dc3719b0d2bb147640afb6eed795e0d3
languageName: node
linkType: hard
"workbox-navigation-preload@npm:7.0.0":
version: 7.0.0
resolution: "workbox-navigation-preload@npm:7.0.0"
dependencies:
workbox-core: "npm:7.0.0"
checksum: 69bd82c12adabf7a210a3a9d8ce01082ef7276521ba375e0455ba3c17cf42b101783f0ec2af4ab0191989b0ea118794e0c8ebe3800abe806142ac7fef0674ac5
languageName: node
linkType: hard
"workbox-precaching@npm:7.0.0":
version: 7.0.0
resolution: "workbox-precaching@npm:7.0.0"
dependencies:
workbox-core: "npm:7.0.0"
workbox-routing: "npm:7.0.0"
workbox-strategies: "npm:7.0.0"
checksum: 8882d5ba888b08aba5e82656b26cd2f293c5adbb858bdff5e17cb4bf1823063cf51d16d3d6640716de96f11cf458f8aaf33b5ffef1ef07d327df8680711bf02e
languageName: node
linkType: hard
"workbox-range-requests@npm:7.0.0":
version: 7.0.0
resolution: "workbox-range-requests@npm:7.0.0"
dependencies:
workbox-core: "npm:7.0.0"
checksum: 8cb991173df19f01f00aa6fee901946d73cdaefb7fef74fda99e53cdfeb0400efebba152f36ba02048af605464b725c743d306ec6e244b1bf6d1fb4df29a284f
languageName: node
linkType: hard
"workbox-recipes@npm:7.0.0":
version: 7.0.0
resolution: "workbox-recipes@npm:7.0.0"
dependencies:
workbox-cacheable-response: "npm:7.0.0"
workbox-core: "npm:7.0.0"
workbox-expiration: "npm:7.0.0"
workbox-precaching: "npm:7.0.0"
workbox-routing: "npm:7.0.0"
workbox-strategies: "npm:7.0.0"
checksum: efb84b7eec97cd8423b33cad7d561f7c05db46fbbcdb175f3095e8efe839f5323c7af3fcd784b802fdcc7bf5e33648f95159f5462200884f37ae6aa66498e086
languageName: node
linkType: hard
"workbox-routing@npm:7.0.0":
version: 7.0.0
resolution: "workbox-routing@npm:7.0.0"
dependencies:
workbox-core: "npm:7.0.0"
checksum: 294c4b0f136e39c44678caa736195bd99bf93e55ba3605d0a880e36e7ffc9a4b6be36c2c37bca3ee1f905615641167d5b2a0eab742f46b94536f2c5eaac0e832
languageName: node
linkType: hard
"workbox-strategies@npm:7.0.0":
version: 7.0.0
resolution: "workbox-strategies@npm:7.0.0"
dependencies:
workbox-core: "npm:7.0.0"
checksum: 7d7dbe9dff54c22e01d01238dbf0b3ba259b85c08cbd8b617b9f5104efef948b760848fcf36385d26fd651a2fe57c4faa3d6a4fc2739e05fc684da0a7eb2197a
languageName: node
linkType: hard
"workbox-streams@npm:7.0.0":
version: 7.0.0
resolution: "workbox-streams@npm:7.0.0"
dependencies:
workbox-core: "npm:7.0.0"
workbox-routing: "npm:7.0.0"
checksum: a11a134536e21a04d29dd2b0da8a79524ae27c993c98c63db8c6ddf49449a2f9d4d09766c6351cca08538b713e837e7d3ddf93842fd15eea3ecab75bc674cdf2
languageName: node
linkType: hard
"workbox-sw@npm:7.0.0":
version: 7.0.0
resolution: "workbox-sw@npm:7.0.0"
checksum: 2b34da7efad8788e024bb22b25293459a9b0adc19fe185c3d155a4956f67ccdd35829a88b82436b4afe956a99c0ac934e5624a1469a762a53b522c2f32329d34
languageName: node
linkType: hard
"workbox-window@npm:7.0.0, workbox-window@npm:^7.0.0":
version: 7.0.0
resolution: "workbox-window@npm:7.0.0"
dependencies:
"@types/trusted-types": "npm:^2.0.2"
workbox-core: "npm:7.0.0"
checksum: 5511ed9b86602ee6999233fc09ab9da298b7d62dbf865737c920d7f768877f8f9031896fad413f9b34f46ed2db58e0967b66b08cd78cf2f70bd7f734e7cac324
languageName: node
linkType: hard
"workerd@npm:1.20231030.0":
version: 1.20231030.0
resolution: "workerd@npm:1.20231030.0"