Compare commits
13 Commits
Author | SHA1 | Date |
---|---|---|
Andrei O | 5f24f93ae4 | |
Andrei O | 81b3a01e90 | |
Andrei O | a2c11eebff | |
Andrei O | 68bbb0d095 | |
Andrei O | b29265afe9 | |
Andrei O | 047a87fde1 | |
Andrei O | d46722811f | |
Andrei O | 076e18d475 | |
Andrei O | b1122d2cdf | |
Andrei O | 999573a9e5 | |
Andrei O | d9b45313a9 | |
Andrei O | 50abf0f647 | |
Andrei O | b7300bc684 |
|
@ -24,3 +24,4 @@ dist-ssr
|
|||
*.sln
|
||||
*.sw?
|
||||
releases
|
||||
src/client/inject.js
|
||||
|
|
35
CHANGELOG.MD
35
CHANGELOG.MD
|
@ -1,5 +1,38 @@
|
|||
# Change Log
|
||||
|
||||
## [Version 1.1.5]
|
||||
|
||||
- improved notification handling and display
|
||||
- lowerd coinGecko api calls due to recent changes in free tier limit
|
||||
|
||||
## [Version 1.1.4]
|
||||
|
||||
- minor fix edge case of no notifications
|
||||
|
||||
## [Version 1.1.3]
|
||||
|
||||
- minor fix to prevent console error log on fetch failure
|
||||
|
||||
## [Version 1.1.2]
|
||||
|
||||
- changed service worker open notification to use app.yup.io
|
||||
- fixed follow notification with multiple senders
|
||||
|
||||
## [Version 1.1.1]
|
||||
|
||||
- changed auth condition
|
||||
- refactor image loader for notification images
|
||||
- added constant for yup app base url
|
||||
- other cleanups
|
||||
|
||||
## [Version 1.0.9]
|
||||
|
||||
- added: browser notifications(work similar to push notifications) for comment, mention, follow with the ability to open the notification in app
|
||||
- changed login to use app.yup.io
|
||||
- removed external navigation to yup-live
|
||||
- added more settings
|
||||
- fixed some service worker issues
|
||||
|
||||
## [Version 1.0.8]
|
||||
|
||||
- migrated from windicss to tailwindcss
|
||||
|
@ -13,7 +46,7 @@
|
|||
|
||||
## [Version 1.0.6]
|
||||
|
||||
- refactored notifications
|
||||
- refactored notifications
|
||||
- added support for aggregated notifications
|
||||
- added support for follow notification
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "yup live",
|
||||
"description": "Light alternative extension for yup protocol",
|
||||
"version": "1.0.8",
|
||||
"description": "Light extension helper for yup social platform.",
|
||||
"version": "1.1.4",
|
||||
"manifest_version": 3,
|
||||
"icons": {
|
||||
"16": "src/assets/icons/yup_ext_16.png",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "yup-live-browser-extension",
|
||||
"description": "Yup Live Browser Extension",
|
||||
"version": "1.0.8",
|
||||
"version": "1.1.4",
|
||||
"type": "module",
|
||||
"author": "andrei0x309",
|
||||
"license": "MIT",
|
||||
|
@ -17,8 +17,9 @@
|
|||
"check": "svelte-check --tsconfig ./tsconfig.json",
|
||||
"release": "yarn config set version-tag-prefix yup-live-browser-extension@v && yarn config set version-git-message 'yup-live-browser-extension@v%s' && yarn version --patch && yarn postversion",
|
||||
"postversion": "git push",
|
||||
"pub": "yarn build && yarn release && ts-node --esm ./scripts/create-release.ts"
|
||||
},
|
||||
"create-release": "tsx ./scripts/create-release.ts",
|
||||
"pub": "yarn build && yarn release && yarn create-release"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@crxjs/vite-plugin": "^1.0.14",
|
||||
"@sveltejs/vite-plugin-svelte": "^2.4.2",
|
||||
|
@ -35,6 +36,7 @@
|
|||
"tailwindcss": "^3.3.2",
|
||||
"ts-node": "^10.9.1",
|
||||
"tslib": "^2.5.0",
|
||||
"tsx": "^4.7.0",
|
||||
"typescript": "^4.9.5",
|
||||
"vite": "^4.1.1",
|
||||
"yarn-upgrade-all": "^0.7.2"
|
||||
|
|
|
@ -1,19 +1,42 @@
|
|||
import { SEND_AUTH_NOTIF, ENABLE_RIGHT_CLICK, DISABLE_RIGHT_CLICK } from '@/constants/messeges';
|
||||
import { initStorage } from '@/utils/storage'
|
||||
import { getStore, setProfile, setNotifStorageNotifs, setSettings, setNotifStorageLastRewardNotif, getNotifStorageLastRewardNotif } from '@/utils/storage'
|
||||
import { getStore, setProfile, setNotifStorageNotifs, setSettings,
|
||||
setNotifStorageLastRewardNotif, getNotifStorageLastRewardNotif, getSetting, setSetting } from '@/utils/storage'
|
||||
import type { Notification } from '@/utils/types';
|
||||
import { API_BASE } from '@/constants/config';
|
||||
import { getNotifications } from '@/utils/notifications';
|
||||
import { setBadge } from '@/utils/chrome-misc'
|
||||
import { setBadge, extrenalNavigate } from '@/utils/chrome-misc'
|
||||
import { closeTo } from '@/utils/time';
|
||||
import { getActionUsage } from '@/utils/user';
|
||||
import { executeVote, getVotePayload } from '@/utils/votes';
|
||||
import { YUP_APP_BASE } from '@/constants/config';
|
||||
|
||||
// Disable conflict with yup extension
|
||||
const yupExtensionId = 'nhmeoaahigiljjdkoagafdccikgojjoi'
|
||||
|
||||
console.info('Service worker started')
|
||||
|
||||
let notificationUrl: string
|
||||
|
||||
const buttons = {
|
||||
buttons: [{
|
||||
title: 'Open in App',
|
||||
}]
|
||||
}
|
||||
|
||||
const notificationActionListner = async (id: string) => {
|
||||
try {
|
||||
const url = new URL(notificationUrl ?? `${YUP_APP_BASE}/notifications`)
|
||||
extrenalNavigate(url.href)
|
||||
chrome.notifications.clear(id)
|
||||
} catch {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
if (!chrome.notifications.onButtonClicked.hasListener(notificationActionListner)){
|
||||
chrome.notifications.onButtonClicked.addListener(notificationActionListner)
|
||||
}
|
||||
|
||||
const onRightClickLike = async (store, info, tab) => {
|
||||
const vote = await executeVote(getVotePayload({
|
||||
|
@ -74,11 +97,9 @@ const alarmHandler = async () => {
|
|||
type: null,
|
||||
limit: '15',
|
||||
skip: '0',
|
||||
userId: store.user.auth.userId
|
||||
address: store.user.auth.address
|
||||
})
|
||||
}
|
||||
requests.coinGecko = fetch('https://api.coingecko.com/api/v3/simple/price?ids=yup&vs_currencies=usd')
|
||||
|
||||
try {
|
||||
const profile = await requests.profile as Response
|
||||
const profileJson = await profile.json()
|
||||
|
@ -86,23 +107,27 @@ const alarmHandler = async () => {
|
|||
} catch (error) {
|
||||
console.error('Error fetching profile', error)
|
||||
}
|
||||
|
||||
const oneHour = 3600000
|
||||
const isExpiredCoinGecko = !store?.settings?.coinGeckoPrice || (new Date().getTime() - store.settings.lastCoinGeckoPriceCheckTimestamp) > oneHour
|
||||
if (isExpiredCoinGecko ) {
|
||||
try {
|
||||
requests.coinGecko = fetch('https://api.coingecko.com/api/v3/simple/price?ids=yup&vs_currencies=usd')
|
||||
requests.coinGecko.catch(console.info)
|
||||
const coinGecko = await requests.coinGecko as Response
|
||||
const coinGeckoJson = await coinGecko.json()
|
||||
const coinGeckoPrice = coinGeckoJson.yup.usd
|
||||
const store = await getStore()
|
||||
if (store.settings.coinGeckoPrice !== coinGeckoPrice) {
|
||||
await chrome.storage.local.set({ store: { ...store, settings: { ...store.settings, coinGeckoPrice } } })
|
||||
await chrome.storage.local.set({ store: { ...store, settings: { ...store.settings, coinGeckoPrice, lastCoinGeckoPriceCheckTimestamp: new Date().getTime() } } })
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error fetching coinGecko', error)
|
||||
console.info('Error fetching coinGecko', error)
|
||||
}
|
||||
}
|
||||
|
||||
if (store?.settings.notificationsEnabled) {
|
||||
try {
|
||||
const notifications = await requests.notifications as Notification[]
|
||||
const notSeen = notifications.reverse().filter(notif => !notif.seen)
|
||||
const notSeen = notifications.filter(notif => !notif.seen)
|
||||
const updateSettings = {} as Record<string, boolean>
|
||||
if (notSeen.length > 0) {
|
||||
setBadge(String(notSeen.length))
|
||||
|
@ -114,8 +139,8 @@ const alarmHandler = async () => {
|
|||
}
|
||||
setSettings(updateSettings).catch(console.error)
|
||||
|
||||
if (store.settings?.chromeNotifWhenReward && notSeen.some(notif => notif.action === 'reward')) {
|
||||
const rewardNotif = notSeen.find(notif => notif.action === 'reward')
|
||||
if (store.settings?.chromeNotifWhenReward && notSeen.some(notif => notif.eventType === 'reward')) {
|
||||
const rewardNotif = notSeen.find(notif => notif.eventType === 'reward')
|
||||
if (rewardNotif) {
|
||||
const storeReward = (await getNotifStorageLastRewardNotif())
|
||||
|
||||
|
@ -128,13 +153,57 @@ const alarmHandler = async () => {
|
|||
type: 'basic',
|
||||
iconUrl: chrome.runtime.getURL('src/assets/icons/yup_ext_128.png'),
|
||||
title: 'Yup Live Extension',
|
||||
message: `You have been alocated a future reward of ${rewardNotif.quantity} YUP`,
|
||||
message: `You have been alocated a future reward of ${rewardNotif?.meta.quantity ?? "unknown"} YUP`,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (store.settings?.enableFollowNotif && notSeen.some(notif => notif.eventType === 'follow')) {
|
||||
const followNotif = notSeen.filter(notif => notif.eventType === 'follow').sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())[0]
|
||||
const lastFollowNotif = await getSetting('lastfollowNotif') as number
|
||||
const isNew = !lastFollowNotif || ( !closeTo(new Date(lastFollowNotif), new Date(followNotif.createdAt), 2e4))
|
||||
if (followNotif && isNew) {
|
||||
notificationUrl = followNotif?.senders?.[0]._id ? `${YUP_APP_BASE}/account/${followNotif?.senders?.[0]._id}`: undefined
|
||||
await chrome.notifications.create({
|
||||
type: 'basic',
|
||||
iconUrl: chrome.runtime.getURL('src/assets/icons/yup_ext_128.png'),
|
||||
title: 'Yup Live Extension',
|
||||
message: `${followNotif.senders[0].handle} has followed you`,
|
||||
...(buttons)
|
||||
})
|
||||
await setSetting('lastfollowNotif', new Date(followNotif.createdAt).getTime())
|
||||
}
|
||||
} else if (store.settings?.enableCommentNotif && notSeen.some(notif => notif.eventType === 'comment')) {
|
||||
const commentNotif = notSeen.filter(notif => notif.eventType === 'comment').sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())[0]
|
||||
const lastCommentNotif = await getSetting('lastCommentNotif') as number
|
||||
const isNew = !lastCommentNotif || ( !closeTo(new Date(lastCommentNotif), new Date(commentNotif.createdAt), 2e4))
|
||||
if (commentNotif && isNew) {
|
||||
notificationUrl = commentNotif?.meta?.postid ? `${YUP_APP_BASE}/post/${commentNotif?.meta?.postid}`: undefined
|
||||
await chrome.notifications.create({
|
||||
type: 'basic',
|
||||
iconUrl: chrome.runtime.getURL('src/assets/icons/yup_ext_128.png'),
|
||||
title: 'Yup Live Extension',
|
||||
message: `${commentNotif.senders[0].handle} has commented on your post`,
|
||||
...(buttons)
|
||||
})
|
||||
await setSetting('lastCommentNotif', new Date(commentNotif.createdAt).getTime())
|
||||
}
|
||||
} else if (store.settings?.enableMentionNotif && notSeen.some(notif => notif.eventType === 'mention')) {
|
||||
const mentionNotif = notSeen.filter(notif => notif.eventType === 'mention').sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())[0]
|
||||
const lastMentionNotif = await getSetting('lastMentionNotif') as number
|
||||
const isNew = !lastMentionNotif || ( !closeTo(new Date(lastMentionNotif), new Date(mentionNotif.createdAt), 2e4))
|
||||
if (mentionNotif && isNew) {
|
||||
notificationUrl = mentionNotif?.meta?.postid ? `${YUP_APP_BASE}/post/${mentionNotif?.meta?.postid}`: undefined
|
||||
await chrome.notifications.create({
|
||||
type: 'basic',
|
||||
iconUrl: chrome.runtime.getURL('src/assets/icons/yup_ext_128.png'),
|
||||
title: 'Yup Live Extension',
|
||||
message: `${mentionNotif.senders[0].handle} has mentioned you`,
|
||||
...(buttons)
|
||||
})
|
||||
await setSetting('lastMentionNotif', new Date(mentionNotif.createdAt).getTime())
|
||||
}
|
||||
}
|
||||
|
||||
if (store.settings?.chromeNotifWhenAbleToVote) {
|
||||
await getActionUsage(store?.user?.auth?.userId)
|
||||
}
|
||||
|
@ -151,7 +220,7 @@ const alarmHandler = async () => {
|
|||
chrome.alarms.create(
|
||||
'alarm',
|
||||
{
|
||||
periodInMinutes: 1,
|
||||
periodInMinutes: 0.1,
|
||||
},
|
||||
)
|
||||
|
||||
|
@ -186,14 +255,17 @@ chrome.contextMenus.onClicked.addListener(async (info, tab) => {
|
|||
|
||||
chrome.runtime.onMessage.addListener(async (request, sender, sendResponse) => {
|
||||
try {
|
||||
console.log('Message received', request)
|
||||
if (request.type === SEND_AUTH_NOTIF) {
|
||||
// console.log('Message received', request)
|
||||
const lastLoginNotifTime = Number(await getSetting('lastLoginNotif'))
|
||||
const moreThanOneDay = (new Date().getTime() - lastLoginNotifTime) > 864e5
|
||||
if (request.type === SEND_AUTH_NOTIF && moreThanOneDay) {
|
||||
chrome.notifications.create({
|
||||
type: 'basic',
|
||||
iconUrl: chrome.runtime.getURL('src/assets/icons/yup_ext_128.png'),
|
||||
title: 'Yup Live Extension',
|
||||
message: 'You have been logged in.',
|
||||
})
|
||||
setSetting('lastLoginNotif', new Date().getTime())
|
||||
sendResponse({ success: true })
|
||||
} else if (request.type === ENABLE_RIGHT_CLICK) {
|
||||
await enableRightClickVote()
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
var SEND_VOTE = 'SEND_VOTE';
|
||||
var SET_AUTH = 'SET_AUTH';
|
||||
var WebCommunicator = /** @class */ (function () {
|
||||
function WebCommunicator(injectAuthMethod) {
|
||||
if (injectAuthMethod === void 0) { injectAuthMethod = false; }
|
||||
var _this = this;
|
||||
this._send = function (data) {
|
||||
window.postMessage(data, "*");
|
||||
};
|
||||
this.submitVote = function (vote) {
|
||||
return _this._send({
|
||||
type: SEND_VOTE,
|
||||
payload: vote
|
||||
});
|
||||
};
|
||||
this.setAuth = function (authData) {
|
||||
return _this._send({
|
||||
type: SET_AUTH,
|
||||
payload: authData
|
||||
});
|
||||
};
|
||||
if (injectAuthMethod) {
|
||||
;
|
||||
window.yupSetAuth = this.setAuth;
|
||||
}
|
||||
else {
|
||||
;
|
||||
window.yupSetAuth = function () { return Promise.resolve(null); };
|
||||
}
|
||||
;
|
||||
window.yupSubmitVote = this.submitVote;
|
||||
}
|
||||
return WebCommunicator;
|
||||
}());
|
||||
var allowRegex = /^((http:|https:))?([/][/])?(www.)?[a-zA-Z\-_0-9]{0,}\.?[a-zA-Z\-_0-9]{0,}(yup.info.gf|yup-live.pages.dev|.yup.io|yup-team.vercel.app|localhost\/|localhost:)(.*)/gm;
|
||||
var isAllowed = allowRegex.test(window.location.href);
|
||||
if (isAllowed) {
|
||||
new WebCommunicator(true);
|
||||
}
|
||||
else {
|
||||
new WebCommunicator();
|
||||
}
|
|
@ -3,9 +3,8 @@
|
|||
|
||||
export let source
|
||||
|
||||
let loading = true
|
||||
let loaded = false
|
||||
let error = false
|
||||
let loading = true
|
||||
let loaded = false
|
||||
|
||||
export const onLoad = () => {
|
||||
loading = false
|
||||
|
@ -14,18 +13,14 @@
|
|||
|
||||
export const onError = () => {
|
||||
loading = false
|
||||
error = true
|
||||
source = undefined
|
||||
}
|
||||
|
||||
$: {
|
||||
if(isUrlInvalid(source)) {
|
||||
loading = false
|
||||
error = true
|
||||
source = undefined
|
||||
} else {
|
||||
loading = true
|
||||
error = false
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
|
@ -34,7 +29,7 @@
|
|||
{#if loading || loaded}
|
||||
<slot name="img">
|
||||
</slot>
|
||||
{:else if error}
|
||||
{:else if source === undefined}
|
||||
<slot name="error">
|
||||
</slot>
|
||||
{/if}
|
||||
|
|
|
@ -6,36 +6,41 @@
|
|||
import { chromeUrl } from "@/utils/chrome-misc";
|
||||
import { extrenalNavigate } from "@/utils/chrome-misc";
|
||||
import LikeIcon from '@/components/LikeIcon.svelte';
|
||||
import { YUP_APP_BASE } from "@/constants/config";
|
||||
|
||||
let loader;
|
||||
|
||||
export let notif: Notification;
|
||||
const numImages = notif?.senders?.length ?? 0;
|
||||
let loaders: ImgLoader[] = Array(numImages).fill(null);
|
||||
|
||||
console.log(notif)
|
||||
|
||||
</script>
|
||||
|
||||
{#if notif.eventType === "vote"}
|
||||
{@const url = notif.meta.url}
|
||||
{@const url = notif?.meta?.url ?? ''}
|
||||
{@const length = url.length}
|
||||
{@const shortUrl = url.slice(0, 10) + "..." + url.slice(length - 10, length)}
|
||||
{@const finalUrl = length > 24 ? shortUrl : url}
|
||||
<div class="flex flex-row notifBody">
|
||||
<LikeIcon solid={true} className={'w-9 mx-auto p-4'} />
|
||||
<div class="ml-4 text-left" style="width: 97%">
|
||||
<p class="text-xs text-gray-200 my-0 mt-1">
|
||||
by
|
||||
<p class="text-xs text-gray-200 my-0 mt-2">
|
||||
your post was liked
|
||||
{#if notif?.senders?.length > 1}
|
||||
{notif?.senders[0].handle}
|
||||
{#if notif.senders.length - 1 > 0}
|
||||
{#if notif.senders?.length - 1 > 0}
|
||||
<span class="opacity-60"> and {notif.senders.length - 1} more</span>
|
||||
{/if}
|
||||
{:else}
|
||||
{notif.senders[0].handle.length > 12 ? notif.senders[0].handle.slice(0, 12) + "..." : notif.senders[0].handle}
|
||||
{notif.senders[0].handle?.length > 12 ? notif.senders[0]?.handle?.slice(0, 12) + "..." : notif.senders[0]?.handle ?? ''}
|
||||
{/if}
|
||||
</p>
|
||||
<p class="text-xs text-gray-200 my-0 mt-1">
|
||||
<p class="text-xs text-gray-200 my-0 mt-1 cursor-pointer">
|
||||
<span
|
||||
on:click={() => extrenalNavigate(`https://yup-live.pages.dev/post/${notif.meta.postid}`)}
|
||||
on:click={() => extrenalNavigate(`${YUP_APP_BASE}/post/${notif.meta.postid}`)}
|
||||
aria-hidden
|
||||
class="text-blue-200 interactive-svg">{finalUrl}</span
|
||||
class="text-blue-200 interactive-svg">view the post</span
|
||||
>
|
||||
</p>
|
||||
<p class="text-xs text-gray-200 my-1 text-right mr-2">
|
||||
|
@ -69,13 +74,13 @@
|
|||
</div>
|
||||
{:else if ["follow"].includes(notif.eventType)}
|
||||
<div class="flex flex-col notifBody">
|
||||
{#each notif.senders as sender}
|
||||
{#each notif.senders as sender, i}
|
||||
<div class="flex flex-row items-center">
|
||||
<ImgLoader bind:this={loader} source="{sender?.avatar} ">
|
||||
<ImgLoader bind:this={loaders[i]} source="{sender?.avatar}" >
|
||||
<img
|
||||
class="notificationImage"
|
||||
on:load={() => loader.onLoad()}
|
||||
on:error={() => loader.onError()}
|
||||
on:load={() => loaders[i]?.onLoad()}
|
||||
on:error={() => loaders[i]?.onError()}
|
||||
style={$mainStore.settings.theme === "light" ? "filter: invert(0.9);" : ""}
|
||||
slot="img"
|
||||
src={sender.avatar}
|
||||
|
@ -105,7 +110,7 @@
|
|||
<p
|
||||
aria-hidden
|
||||
class="text-xs text-gray-200 my-0 mt-1"
|
||||
on:click={() => extrenalNavigate(`https://yup-live.pages.dev/web3-profile/${sender?._id}`)}
|
||||
on:click={() => extrenalNavigate(`${YUP_APP_BASE}/account/${sender?._id}`)}
|
||||
>
|
||||
<b>{sender?.handle || `${sender?._id?.slice(0, 6)}...`}</b>
|
||||
followed you.
|
||||
|
@ -123,6 +128,62 @@
|
|||
{timeSince(new Date(notif.createdAt))}
|
||||
</p>
|
||||
</div>
|
||||
{:else if ["comment"].includes(notif.eventType)}
|
||||
<div class="flex flex-col notifBody">
|
||||
{#each notif.senders as sender, i}
|
||||
<div class="flex flex-row items-center">
|
||||
<ImgLoader bind:this={loaders[i]} source="{sender?.avatar}" >
|
||||
<img
|
||||
class="notificationImage"
|
||||
on:load={() => loaders[i]?.onLoad()}
|
||||
on:error={() => loaders[i]?.onError()}
|
||||
style={$mainStore.settings.theme === "light" ? "filter: invert(0.9);" : ""}
|
||||
slot="img"
|
||||
src={sender.avatar}
|
||||
alt="preview"
|
||||
/>
|
||||
<svg
|
||||
class="notificationImage"
|
||||
style={$mainStore.settings.theme === "light" ? "filter: invert(0.9);" : ""}
|
||||
slot="error"
|
||||
viewBox="0 0 512 512"
|
||||
><g
|
||||
><polygon
|
||||
points="40,38.999 40,468.998 215,293.998 270,348.998 360,258.998 470,358.998 470,38.999 "
|
||||
style="fill:#EFF3F6;"
|
||||
/>
|
||||
<g><circle cx="150" cy="158.999" r="40" style="fill:#FCD884;" /></g><g
|
||||
><polygon
|
||||
points="470,358.998 470,468.998 385,468.998 385,463.998 270,348.998 360,258.998 "
|
||||
style="fill:#70993F;"
|
||||
/></g
|
||||
><g><polygon points="385,463.998 385,468.998 40,468.998 215,293.998 270,348.998" style="fill:#80AF52;" /></g
|
||||
></g
|
||||
><g /></svg
|
||||
>
|
||||
</ImgLoader>
|
||||
<div class="ml-4 text-left" style="width: 97%">
|
||||
<p
|
||||
aria-hidden
|
||||
class="text-xs text-gray-200 my-0 mt-1 cursor-pointer"
|
||||
on:click={() => extrenalNavigate(`${YUP_APP_BASE}/post/${notif?.meta?.commentId}`)}
|
||||
>
|
||||
<b>{sender?.handle || `${sender?._id?.slice(0, 6)}...`}</b>
|
||||
commented on yout post, click to view.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{/each}
|
||||
<p class="text-xs text-gray-200 my-1 text-right mr-2">
|
||||
<svg class="w-3 inline" viewBox="0 0 20 20"
|
||||
><path
|
||||
fill="#fff"
|
||||
d="M10 20a10 10 0 1 1 0-20 10 10 0 0 1 0 20zm0-2a8 8 0 1 0 0-16 8 8 0 0 0 0 16zm-1-7.59V4h2v5.59l3.95 3.95-1.41 1.41L9 10.41z"
|
||||
/></svg
|
||||
>
|
||||
{timeSince(new Date(notif.createdAt))}
|
||||
</p>
|
||||
</div>
|
||||
{:else}
|
||||
<div class="flex flex-row items-center notifBody">
|
||||
<div class="ml-4 text-left" style="width: 97%">
|
||||
|
@ -149,6 +210,8 @@
|
|||
border-radius: 6px;
|
||||
margin-left: 0.5rem;
|
||||
margin-top: 0.5rem;
|
||||
border: 1px solid rgba(0, 0, 0, 0.233);
|
||||
background-image: linear-gradient(rgba(0, 0, 0, 0.123), rgba(0, 0, 0, 0.123));
|
||||
}
|
||||
|
||||
.notifBody {
|
||||
|
|
|
@ -40,7 +40,9 @@ $: {
|
|||
<div class="flex items-center flex-col text-[0.8rem] leading-4 mb-4">
|
||||
<div class="mb relative">
|
||||
<ImgLoader source={tab?.favIconUrl ?? ''} bind:this={loader}>
|
||||
<img style="{ $mainStore.settings.theme === 'light'? 'filter: invert(0.9);' : '' }" slot="img" on:load={() => loader.onLoad()} on:error={() => loader.onError}
|
||||
<img style="{ $mainStore.settings.theme === 'light'? 'filter: invert(0.9);' : '' }" slot="img"
|
||||
on:load={() => loader.onLoad()}
|
||||
on:error={() => loader.onError}
|
||||
class="w-5 h-5 mt-2 rounded-full wicon" src="{tab?.favIconUrl ?? ''}" alt="favicon" />
|
||||
<svg class="w-5 h-5 mt-2 rounded-full wicon" style="{ $mainStore.settings.theme === 'light'? 'filter: invert(0.9);' : '' }" slot="error" viewBox="0 0 512 512"><g><polygon points="40,38.999 40,468.998 215,293.998 270,348.998 360,258.998 470,358.998 470,38.999 " style="fill:#EFF3F6;"/>
|
||||
<g><circle cx="150" cy="158.999" r="40" style="fill:#FCD884;"/></g><g><polygon points="470,358.998 470,468.998 385,468.998 385,463.998 270,348.998 360,258.998 " style="fill:#70993F;"/></g><g><polygon points="385,463.998 385,468.998 40,468.998 215,293.998 270,348.998" style="fill:#80AF52;"/></g></g><g/></svg>
|
||||
|
|
|
@ -1,4 +1,2 @@
|
|||
export const API_BASE = 'https://api.yup.io'
|
||||
export const DEV_BASE = 'http://localhost:4566'
|
||||
export const YUP_LIVE_BASE = 'https://yup-live.pages.dev'
|
||||
export const APP_BASE = YUP_LIVE_BASE
|
||||
export const YUP_APP_BASE = 'https://app.yup.io'
|
|
@ -6,7 +6,7 @@
|
|||
import { navigate } from '@/utils/router'
|
||||
import { mainStore } from '@/utils/store'
|
||||
// https://yup-live.pages.dev
|
||||
import { APP_BASE } from '@/constants/config'
|
||||
import { YUP_APP_BASE } from '@/constants/config'
|
||||
import Alert from '@/components/Alert.svelte'
|
||||
import { alertStore } from '@/utils/store'
|
||||
import PageLoader from "@/components/PageLoader.svelte";
|
||||
|
@ -29,7 +29,7 @@
|
|||
onMount(async () => {
|
||||
store = await getStore()
|
||||
alertStore.set(alert)
|
||||
auth = store?.user?.auth?.userId ?? false
|
||||
auth = store?.user?.auth?.authToken ?? false
|
||||
if(auth){
|
||||
await mainStore.set(store)
|
||||
await navigate('/')
|
||||
|
@ -45,7 +45,7 @@
|
|||
|
||||
<div class="entry" style="{ $mainStore.settings.theme === 'light'? 'filter: invert(1);' : '' }">
|
||||
|
||||
<a href="#app" on:click="{() => extrenalNavigate(APP_BASE)}">
|
||||
<a href="#app" on:click="{() => extrenalNavigate(YUP_APP_BASE)}">
|
||||
<h1 aria-label="logo" class="logo inline-flex items-center text-[1.6rem] font-bold gap-2.5 pl-8">
|
||||
<span class="gradient-text" style="{ $mainStore.settings.theme === 'light'? 'filter: invert(1.1);' : '' }" >YUP</span>
|
||||
</h1>
|
||||
|
|
|
@ -2,13 +2,14 @@
|
|||
import { onMount } from 'svelte';
|
||||
import PageLoader from '@/components/PageLoader.svelte';
|
||||
import { getExtensionVersion, extrenalNavigate } from '@/utils/chrome-misc';
|
||||
import { YUP_APP_BASE } from '@/constants/config';
|
||||
|
||||
let loading = true;
|
||||
let version = '';
|
||||
const extensionSourceLink = 'https://github.com/andrei0x309/yup-live-chrome-extension'
|
||||
const yupLiveSourceLink = 'https://github.com/andrei0x309/yup-live'
|
||||
const yupLiveLink = 'https://yup-live.pages.dev'
|
||||
const yupAppLink = 'https://app.yup.io'
|
||||
const yupAppLink = YUP_APP_BASE
|
||||
const discordLink = 'https://discord.com/invite/HnaTAXK'
|
||||
const yupForumLink = 'https://forum.yup.io'
|
||||
const yupDocsLink = 'https://docs.yup.io'
|
||||
|
|
|
@ -1,24 +1,20 @@
|
|||
<script lang="ts">
|
||||
import { extrenalNavigate } from "@/utils/chrome-misc";
|
||||
import { APP_BASE } from '@/constants/config'
|
||||
import { YUP_APP_BASE } from '@/constants/config'
|
||||
|
||||
</script>
|
||||
|
||||
<a href="#app" on:click={() => extrenalNavigate(`${APP_BASE}/login`)}>
|
||||
<a href="#app" on:click={() => extrenalNavigate(`${YUP_APP_BASE}/login`)}>
|
||||
<svg enable-background="new 0 0 32 32" viewBox="0 0 32 32" class="w-20 mb-10 mt-8 svg-fill">
|
||||
<g id="lock"><path d="M25,13V9c0-4.971-4.029-9-9-9c-4.971,0-9,4.029-9,9v4c-1.657,0-3,1.343-3,3v3v1v2v1c0,4.971,4.029,9,9,9h6 c4.971,0,9-4.029,9-9v-1v-2v-1v-3C28,14.342,26.656,13,25,13z M9,9c0-3.866,3.134-7,7-7c3.866,0,7,3.134,7,7v4h-2V9.002 c0-2.762-2.238-5-5-5c-2.762,0-5,2.238-5,5V13H9V9z M20,9v0.003V13h-8V9.002V9c0-2.209,1.791-4,4-4C18.209,5,20,6.791,20,9z M26,19 v1v2v1c0,3.859-3.141,7-7,7h-6c-3.859,0-7-3.141-7-7v-1v-2v-1v-3c0-0.552,0.448-1,1-1c0.667,0,1.333,0,2,0h14c0.666,0,1.332,0,2,0 c0.551,0,1,0.448,1,1V19z"/>
|
||||
<path d="M16,19c-1.104,0-2,0.895-2,2c0,0.607,0.333,1.76,0.667,2.672c0.272,0.742,0.614,1.326,1.333,1.326 c0.782,0,1.061-0.578,1.334-1.316C17.672,22.768,18,21.609,18,21C18,19.895,17.104,19,16,19z"/></g>
|
||||
</svg>
|
||||
</a>
|
||||
<div class="text-[1.6rem] mb-4 uppercase">
|
||||
<a href="#app" on:click="{() => extrenalNavigate(`${APP_BASE}/login`)}">
|
||||
Login
|
||||
</a>
|
||||
/
|
||||
<a href="#app" on:click="{() => extrenalNavigate(`${APP_BASE}/sign-up`)}" >
|
||||
Signup
|
||||
<a href="#app" on:click="{() => extrenalNavigate(`${YUP_APP_BASE}/auth`)}">
|
||||
Login on web app
|
||||
</a>
|
||||
</div>
|
||||
<a href="#app" on:click="{() => extrenalNavigate(`${APP_BASE}/login`)}">
|
||||
<a href="#app" on:click="{() => extrenalNavigate(`${YUP_APP_BASE}/auth`)}">
|
||||
<svg enable-background="new 0 0 48 48" viewBox="0 0 48 48" class="w-14 svg-fill my-4"><path d="M0.115,30.348c0-7.771,6.303-14.073,14.074-14.073h0.002h14.071V8.051l19.622,15.261l-19.622,15.26v-8.225 H10.458c-3.887,0-7.037,3.152-7.037,7.037c0,0.906,0.186,1.768,0.5,2.564C1.566,37.434,0.115,34.064,0.115,30.348z"/></svg>
|
||||
</a>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
import { extrenalNavigate } from "@/utils/chrome-misc";
|
||||
import ImgLoader from "@/components/ImgLoader.svelte";
|
||||
import { onMount } from "svelte";
|
||||
import { APP_BASE } from "@/constants/config";
|
||||
import { YUP_APP_BASE } from "@/constants/config";
|
||||
import RateWebsite from "@/components/RateWebsite.svelte";
|
||||
import { mainStore } from "@/utils/store";
|
||||
import { formatNumber, truncteEVMAddr } from "@/utils/misc";
|
||||
|
@ -19,7 +19,6 @@
|
|||
};
|
||||
|
||||
onMount(async () => {
|
||||
console.log($mainStore);
|
||||
if ($mainStore?.user?.profile?.yup?.avatar && !$mainStore?.user?.profile?.yup?.avatar.endsWith(".mp4")) {
|
||||
avatar = $mainStore?.user?.profile?.yup?.avatar;
|
||||
} else if ($mainStore?.user?.profile?.lens?.avatar && !$mainStore?.user?.profile?.lens?.avatar.endsWith(".mp4")) {
|
||||
|
@ -36,12 +35,12 @@
|
|||
|
||||
<div class="h-24 leading-6 main-section">
|
||||
<div class="flex my-2">
|
||||
<div on:click={() => extrenalNavigate(`${APP_BASE}/score/${$mainStore.user.auth.address}`)} aria-hidden class="flex flex-col w-16 mt-1 px-2 py-3 mr-4 link">
|
||||
<div aria-hidden class="flex flex-col w-16 mt-1 px-2 py-3 mr-3 link">
|
||||
<span class="text-[0.6rem] mb-1">Score</span><span class="text-[0.95rem] mb-1"
|
||||
>{$mainStore?.user?.profile?.yupScore?.toFixed(0)}</span
|
||||
><span class="text-[0.7rem]">100<br />MAX</span>
|
||||
</div>
|
||||
<div on:click={() => extrenalNavigate(`${APP_BASE}/profile/${$mainStore.user.auth.userId}`)} aria-hidden class="flex flex-col justify-center mb-1 w-16">
|
||||
<div on:click={() => extrenalNavigate(`${YUP_APP_BASE}/account/${$mainStore.user.auth.userId}`)} aria-hidden class="flex flex-col justify-center mb-1 w-16">
|
||||
<ImgLoader source={avatar} bind:this={loader}>
|
||||
<img
|
||||
style="{ $mainStore.settings.theme === 'light'? 'filter: invert(1);' : '' }"
|
||||
|
@ -82,7 +81,7 @@
|
|||
<span class="text-[0.6rem] mt-4 -ml-1">{handle.length >= 12 ? handle.slice(0, 10) + "..." : handle}</span>
|
||||
{/if}
|
||||
</div>
|
||||
<div on:click={() => extrenalNavigate(`${APP_BASE}/raw-influence/${$mainStore.user.auth.userId}`)} aria-hidden class="flex flex-col w-16 mt-1 ml-4 px-2 py-3 link">
|
||||
<div aria-hidden class="flex flex-col w-16 mt-1 ml-3 px-2 py-3 link">
|
||||
<span class="text-[0.6rem] mb-1">Influence</span><span class="text-[0.95rem] mb-1"
|
||||
>{$mainStore?.user?.profile?.yup?.weight}</span
|
||||
><span class="text-[0.7rem]">10<br />MAX</span>
|
||||
|
|
|
@ -23,7 +23,6 @@ onMount(async () => {
|
|||
})
|
||||
pastNotifsPromise = getNotifStorage()
|
||||
|
||||
console.log(notifs);
|
||||
loading = false;
|
||||
clearNotifications($mainStore).then(
|
||||
() => {
|
||||
|
@ -52,23 +51,23 @@ const changeNotifsType = async (t : string[] | null) => {
|
|||
|
||||
{#if loading}
|
||||
<PageLoader />
|
||||
{:else if notifs.length === 0}
|
||||
{:else if (notifs ?? []).length === 0}
|
||||
|
||||
{#await pastNotifsPromise}
|
||||
|
||||
{:then pastNotifs}
|
||||
{#if (pastNotifs.notifs ?? []).length > 0}
|
||||
{noNotifications = true}
|
||||
{:else}
|
||||
{#each pastNotifs.notifs as notif}
|
||||
{#each pastNotifs.notifs as notif}
|
||||
<Notification {notif} />
|
||||
{/each}
|
||||
{:else}
|
||||
{(noNotifications = true) && ''}
|
||||
{/if}
|
||||
{/await}
|
||||
{:else}
|
||||
<div class="text-[0.75rem] py-1">
|
||||
<span on:click={() => changeNotifsType(null)} aria-hidden class="inline-block mr-2 interactive-svg text-blue-200 interactive-svg" >All</span>
|
||||
<span on:click={() => changeNotifsType(['reward'])} aria-hidden class="text-blue-200 interactive-svg interactive-svg text-blue-200 interactive-svg">Rewards</span>
|
||||
<span on:click={() => changeNotifsType(['reward'])} aria-hidden class="text-blue-200 interactive-svg interactive-svg interactive-svg">Rewards</span>
|
||||
</div>
|
||||
<div class="flex flex-col">
|
||||
{#each notifs as notif}
|
||||
|
@ -77,9 +76,11 @@ const changeNotifsType = async (t : string[] | null) => {
|
|||
</div>
|
||||
{/if}
|
||||
|
||||
{#key noNotifications}
|
||||
{#if noNotifications }
|
||||
<div class="flex flex-col items-center justify-center h-full">
|
||||
<p class="text-2xl font-semibold">No Notifications</p>
|
||||
<p class="text-lg">You have no notifications</p>
|
||||
</div>
|
||||
{/if}
|
||||
{/key}
|
||||
|
|
|
@ -45,7 +45,6 @@ const setSettingsLocal = async (setting: string, value = '') => {
|
|||
|
||||
onMount(async () => {
|
||||
settings = $mainStore.settings
|
||||
console.log(settings)
|
||||
});
|
||||
|
||||
</script>
|
||||
|
@ -138,6 +137,36 @@ onMount(async () => {
|
|||
</label>
|
||||
</div>
|
||||
|
||||
<div class="switch switch--4 text-[0.8rem] flex flex-col mb-4">
|
||||
<span class="inline-block">Browser notification on follow</span>
|
||||
<label class="switch__label mt-2">
|
||||
<input on:click={() => setSettingsLocal('enableFollowNotif')} type="checkbox" class="switch__input"
|
||||
checked={settings.enableFollowNotif}
|
||||
>
|
||||
<span class="switch__design"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="switch switch--4 text-[0.8rem] flex flex-col mb-4">
|
||||
<span class="inline-block">Browser notification on mention</span>
|
||||
<label class="switch__label mt-2">
|
||||
<input on:click={() => setSettingsLocal('enableMentionNotif')} type="checkbox" class="switch__input"
|
||||
checked={settings.enableMentionNotif}
|
||||
>
|
||||
<span class="switch__design"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="switch switch--4 text-[0.8rem] flex flex-col mb-4">
|
||||
<span class="inline-block">Browser notification on comment</span>
|
||||
<label class="switch__label mt-2">
|
||||
<input on:click={() => setSettingsLocal('enableCommentNotif')} type="checkbox" class="switch__input"
|
||||
checked={settings.enableCommentNotif}
|
||||
>
|
||||
<span class="switch__design"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
{:else}
|
||||
|
|
|
@ -44,11 +44,19 @@ export const storageDefault = {
|
|||
injectEmbed: false,
|
||||
chromeNotifWhenReward: false,
|
||||
chromeNotifWhenAbleToVote: false,
|
||||
lastCoinGeckoPriceCheckTimestamp: 0,
|
||||
coinGeckoPrice: 0,
|
||||
hasNewNotifications: false,
|
||||
refilNotifTimestamp: 0,
|
||||
enableRightClick: false,
|
||||
enableRightClickNotif: false,
|
||||
lastLoginNotif: 0,
|
||||
enableCommentNotif: false,
|
||||
enableMentionNotif: false,
|
||||
enableFollowNotif: false,
|
||||
lastfollowNotif: 0,
|
||||
lastCommentNotif: 0,
|
||||
lastMentionNotif: 0
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -61,8 +69,6 @@ export const lastRewardNotifDefault = {
|
|||
id: '',
|
||||
}
|
||||
|
||||
|
||||
|
||||
export type StorageType = typeof storageDefault
|
||||
|
||||
export const wipeStorage = async () => {
|
||||
|
@ -148,3 +154,14 @@ export const getSettings = async () => {
|
|||
return store ? store.store.settings as StorageType['settings'] : storageDefault.settings as StorageType['settings']
|
||||
}
|
||||
|
||||
export const getSetting = async (setting: keyof StorageType['settings']) => {
|
||||
const settings = await getSettings()
|
||||
return settings[setting]
|
||||
}
|
||||
|
||||
export const setSetting = async <K extends keyof StorageType['settings']>(setting: K, value: StorageType['settings'][K]) => {
|
||||
const settings = await getSettings()
|
||||
settings[setting] = value
|
||||
await setSettings(settings)
|
||||
}
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ export interface Vote {
|
|||
postid?: string
|
||||
url?: string
|
||||
message?: string
|
||||
commentId?: string
|
||||
}
|
||||
image: string
|
||||
createdAt: string
|
||||
|
@ -33,4 +34,5 @@ export interface Vote {
|
|||
avatar: string
|
||||
}[]
|
||||
message?: string
|
||||
seen: boolean
|
||||
}
|
||||
|
|
171
yarn.lock
171
yarn.lock
|
@ -243,116 +243,231 @@
|
|||
dependencies:
|
||||
"@jridgewell/trace-mapping" "0.3.9"
|
||||
|
||||
"@esbuild/aix-ppc64@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz#2acd20be6d4f0458bc8c784103495ff24f13b1d3"
|
||||
integrity sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==
|
||||
|
||||
"@esbuild/android-arm64@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz#cf91e86df127aa3d141744edafcba0abdc577d23"
|
||||
integrity sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==
|
||||
|
||||
"@esbuild/android-arm64@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz#b45d000017385c9051a4f03e17078abb935be220"
|
||||
integrity sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==
|
||||
|
||||
"@esbuild/android-arm@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz#025b6246d3f68b7bbaa97069144fb5fb70f2fff2"
|
||||
integrity sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==
|
||||
|
||||
"@esbuild/android-arm@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz#f46f55414e1c3614ac682b29977792131238164c"
|
||||
integrity sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==
|
||||
|
||||
"@esbuild/android-x64@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz#c820e0fef982f99a85c4b8bfdd582835f04cd96e"
|
||||
integrity sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==
|
||||
|
||||
"@esbuild/android-x64@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz#bfc01e91740b82011ef503c48f548950824922b2"
|
||||
integrity sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==
|
||||
|
||||
"@esbuild/darwin-arm64@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz#edef4487af6b21afabba7be5132c26d22379b220"
|
||||
integrity sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==
|
||||
|
||||
"@esbuild/darwin-arm64@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz#533fb7f5a08c37121d82c66198263dcc1bed29bf"
|
||||
integrity sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==
|
||||
|
||||
"@esbuild/darwin-x64@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz#42829168730071c41ef0d028d8319eea0e2904b4"
|
||||
integrity sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==
|
||||
|
||||
"@esbuild/darwin-x64@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz#62f3819eff7e4ddc656b7c6815a31cf9a1e7d98e"
|
||||
integrity sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==
|
||||
|
||||
"@esbuild/freebsd-arm64@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz#1f4af488bfc7e9ced04207034d398e793b570a27"
|
||||
integrity sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==
|
||||
|
||||
"@esbuild/freebsd-arm64@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz#d478b4195aa3ca44160272dab85ef8baf4175b4a"
|
||||
integrity sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==
|
||||
|
||||
"@esbuild/freebsd-x64@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz#636306f19e9bc981e06aa1d777302dad8fddaf72"
|
||||
integrity sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==
|
||||
|
||||
"@esbuild/freebsd-x64@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz#7bdcc1917409178257ca6a1a27fe06e797ec18a2"
|
||||
integrity sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==
|
||||
|
||||
"@esbuild/linux-arm64@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz#a003f7ff237c501e095d4f3a09e58fc7b25a4aca"
|
||||
integrity sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==
|
||||
|
||||
"@esbuild/linux-arm64@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz#58ad4ff11685fcc735d7ff4ca759ab18fcfe4545"
|
||||
integrity sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==
|
||||
|
||||
"@esbuild/linux-arm@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz#b591e6a59d9c4fe0eeadd4874b157ab78cf5f196"
|
||||
integrity sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==
|
||||
|
||||
"@esbuild/linux-arm@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz#ce82246d873b5534d34de1e5c1b33026f35e60e3"
|
||||
integrity sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==
|
||||
|
||||
"@esbuild/linux-ia32@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz#24333a11027ef46a18f57019450a5188918e2a54"
|
||||
integrity sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==
|
||||
|
||||
"@esbuild/linux-ia32@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz#cbae1f313209affc74b80f4390c4c35c6ab83fa4"
|
||||
integrity sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==
|
||||
|
||||
"@esbuild/linux-loong64@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz#d5ad459d41ed42bbd4d005256b31882ec52227d8"
|
||||
integrity sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==
|
||||
|
||||
"@esbuild/linux-loong64@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz#5f32aead1c3ec8f4cccdb7ed08b166224d4e9121"
|
||||
integrity sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==
|
||||
|
||||
"@esbuild/linux-mips64el@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz#4e5967a665c38360b0a8205594377d4dcf9c3726"
|
||||
integrity sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==
|
||||
|
||||
"@esbuild/linux-mips64el@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz#38eecf1cbb8c36a616261de858b3c10d03419af9"
|
||||
integrity sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==
|
||||
|
||||
"@esbuild/linux-ppc64@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz#206443a02eb568f9fdf0b438fbd47d26e735afc8"
|
||||
integrity sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==
|
||||
|
||||
"@esbuild/linux-ppc64@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz#9c5725a94e6ec15b93195e5a6afb821628afd912"
|
||||
integrity sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==
|
||||
|
||||
"@esbuild/linux-riscv64@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz#c351e433d009bf256e798ad048152c8d76da2fc9"
|
||||
integrity sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==
|
||||
|
||||
"@esbuild/linux-riscv64@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz#2dc4486d474a2a62bbe5870522a9a600e2acb916"
|
||||
integrity sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==
|
||||
|
||||
"@esbuild/linux-s390x@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz#661f271e5d59615b84b6801d1c2123ad13d9bd87"
|
||||
integrity sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==
|
||||
|
||||
"@esbuild/linux-s390x@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz#4ad8567df48f7dd4c71ec5b1753b6f37561a65a8"
|
||||
integrity sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==
|
||||
|
||||
"@esbuild/linux-x64@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz#e4ba18e8b149a89c982351443a377c723762b85f"
|
||||
integrity sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==
|
||||
|
||||
"@esbuild/linux-x64@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz#b7390c4d5184f203ebe7ddaedf073df82a658766"
|
||||
integrity sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==
|
||||
|
||||
"@esbuild/netbsd-x64@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz#7d4f4041e30c5c07dd24ffa295c73f06038ec775"
|
||||
integrity sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==
|
||||
|
||||
"@esbuild/netbsd-x64@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz#d633c09492a1721377f3bccedb2d821b911e813d"
|
||||
integrity sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==
|
||||
|
||||
"@esbuild/openbsd-x64@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz#970fa7f8470681f3e6b1db0cc421a4af8060ec35"
|
||||
integrity sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==
|
||||
|
||||
"@esbuild/openbsd-x64@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz#17388c76e2f01125bf831a68c03a7ffccb65d1a2"
|
||||
integrity sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==
|
||||
|
||||
"@esbuild/sunos-x64@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz#abc60e7c4abf8b89fb7a4fe69a1484132238022c"
|
||||
integrity sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==
|
||||
|
||||
"@esbuild/sunos-x64@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz#e320636f00bb9f4fdf3a80e548cb743370d41767"
|
||||
integrity sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==
|
||||
|
||||
"@esbuild/win32-arm64@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz#7b0ff9e8c3265537a7a7b1fd9a24e7bd39fcd87a"
|
||||
integrity sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==
|
||||
|
||||
"@esbuild/win32-arm64@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz#c778b45a496e90b6fc373e2a2bb072f1441fe0ee"
|
||||
integrity sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==
|
||||
|
||||
"@esbuild/win32-ia32@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz#e90fe5267d71a7b7567afdc403dfd198c292eb09"
|
||||
integrity sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==
|
||||
|
||||
"@esbuild/win32-ia32@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz#481a65fee2e5cce74ec44823e6b09ecedcc5194c"
|
||||
integrity sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==
|
||||
|
||||
"@esbuild/win32-x64@0.16.17":
|
||||
version "0.16.17"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091"
|
||||
integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==
|
||||
|
||||
"@esbuild/win32-x64@0.19.11":
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz#a5d300008960bb39677c46bf16f53ec70d8dee04"
|
||||
integrity sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==
|
||||
|
||||
"@jridgewell/gen-mapping@^0.1.0":
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996"
|
||||
|
@ -997,6 +1112,35 @@ esbuild@^0.16.14:
|
|||
"@esbuild/win32-ia32" "0.16.17"
|
||||
"@esbuild/win32-x64" "0.16.17"
|
||||
|
||||
esbuild@~0.19.10:
|
||||
version "0.19.11"
|
||||
resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz#4a02dca031e768b5556606e1b468fe72e3325d96"
|
||||
integrity sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==
|
||||
optionalDependencies:
|
||||
"@esbuild/aix-ppc64" "0.19.11"
|
||||
"@esbuild/android-arm" "0.19.11"
|
||||
"@esbuild/android-arm64" "0.19.11"
|
||||
"@esbuild/android-x64" "0.19.11"
|
||||
"@esbuild/darwin-arm64" "0.19.11"
|
||||
"@esbuild/darwin-x64" "0.19.11"
|
||||
"@esbuild/freebsd-arm64" "0.19.11"
|
||||
"@esbuild/freebsd-x64" "0.19.11"
|
||||
"@esbuild/linux-arm" "0.19.11"
|
||||
"@esbuild/linux-arm64" "0.19.11"
|
||||
"@esbuild/linux-ia32" "0.19.11"
|
||||
"@esbuild/linux-loong64" "0.19.11"
|
||||
"@esbuild/linux-mips64el" "0.19.11"
|
||||
"@esbuild/linux-ppc64" "0.19.11"
|
||||
"@esbuild/linux-riscv64" "0.19.11"
|
||||
"@esbuild/linux-s390x" "0.19.11"
|
||||
"@esbuild/linux-x64" "0.19.11"
|
||||
"@esbuild/netbsd-x64" "0.19.11"
|
||||
"@esbuild/openbsd-x64" "0.19.11"
|
||||
"@esbuild/sunos-x64" "0.19.11"
|
||||
"@esbuild/win32-arm64" "0.19.11"
|
||||
"@esbuild/win32-ia32" "0.19.11"
|
||||
"@esbuild/win32-x64" "0.19.11"
|
||||
|
||||
escalade@^3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
|
||||
|
@ -1077,6 +1221,11 @@ fsevents@~2.3.2:
|
|||
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
|
||||
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
|
||||
|
||||
fsevents@~2.3.3:
|
||||
version "2.3.3"
|
||||
resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
|
||||
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
|
||||
|
||||
function-bind@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||
|
@ -1087,6 +1236,13 @@ gensync@^1.0.0-beta.2:
|
|||
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
|
||||
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
|
||||
|
||||
get-tsconfig@^4.7.2:
|
||||
version "4.7.2"
|
||||
resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce"
|
||||
integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==
|
||||
dependencies:
|
||||
resolve-pkg-maps "^1.0.0"
|
||||
|
||||
glob-parent@^5.1.2, glob-parent@~5.1.2:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
|
||||
|
@ -1654,6 +1810,11 @@ resolve-from@^4.0.0:
|
|||
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
|
||||
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
|
||||
|
||||
resolve-pkg-maps@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f"
|
||||
integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==
|
||||
|
||||
resolve@^1.1.7, resolve@^1.22.2:
|
||||
version "1.22.2"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f"
|
||||
|
@ -1947,6 +2108,16 @@ tslib@^2.5.0:
|
|||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
|
||||
integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
|
||||
|
||||
tsx@^4.7.0:
|
||||
version "4.7.0"
|
||||
resolved "https://registry.npmjs.org/tsx/-/tsx-4.7.0.tgz#1689cfe7dda495ca1f9a66d4cad79cb57b9f6f4a"
|
||||
integrity sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==
|
||||
dependencies:
|
||||
esbuild "~0.19.10"
|
||||
get-tsconfig "^4.7.2"
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.3"
|
||||
|
||||
typescript@^4.9.4, typescript@^4.9.5:
|
||||
version "4.9.5"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
|
||||
|
|
Loading…
Reference in New Issue