From 72fbeb305d898ca03797f259471c4b8da000c28c Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 27 Feb 2023 17:31:51 +0100 Subject: [PATCH 001/151] initial commit --- src/lib/components/index.ts | 1 + src/lib/components/viewSelector.svelte | 31 ++++++++++ .../databases/[[page]]/+page.svelte | 53 ++++++---------- .../databases/[[page]]/gridView.svelte | 38 ++++++++++++ .../databases/[[page]]/tableView.svelte | 60 +++++++++++++++++++ .../project-[project]/databases/create.svelte | 2 +- .../database-[database]/create.svelte | 2 +- 7 files changed, 150 insertions(+), 37 deletions(-) create mode 100644 src/lib/components/viewSelector.svelte create mode 100644 src/routes/console/project-[project]/databases/[[page]]/gridView.svelte create mode 100644 src/routes/console/project-[project]/databases/[[page]]/tableView.svelte diff --git a/src/lib/components/index.ts b/src/lib/components/index.ts index 54b2251a5..fe4fdeec1 100644 --- a/src/lib/components/index.ts +++ b/src/lib/components/index.ts @@ -46,3 +46,4 @@ export { default as EventModal } from './eventModal.svelte'; export { default as Status } from './status.svelte'; export { default as Heading } from './heading.svelte'; export { default as Output } from './output.svelte'; +export { default as ViewSelector } from './viewSelector.svelte'; diff --git a/src/lib/components/viewSelector.svelte b/src/lib/components/viewSelector.svelte new file mode 100644 index 000000000..ad3c449f0 --- /dev/null +++ b/src/lib/components/viewSelector.svelte @@ -0,0 +1,31 @@ + + + + + + + + + + diff --git a/src/routes/console/project-[project]/databases/[[page]]/+page.svelte b/src/routes/console/project-[project]/databases/[[page]]/+page.svelte index a879b8678..ecfca50f7 100644 --- a/src/routes/console/project-[project]/databases/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/databases/[[page]]/+page.svelte @@ -2,18 +2,19 @@ import { page } from '$app/stores'; import { goto } from '$app/navigation'; import { Button } from '$lib/elements/forms'; - import { Empty, Copy, GridItem1, CardContainer, Heading, Pagination } from '$lib/components'; - import { Pill } from '$lib/elements'; + import { Empty, Heading, ViewSelector } from '$lib/components'; import { Container } from '$lib/layout'; import { base } from '$app/paths'; import Create from '../create.svelte'; import type { Models } from '@aw-labs/appwrite-console'; import type { PageData } from './$types'; - import { CARD_LIMIT } from '$lib/constants'; + import GridView from './gridView.svelte'; + import TableView from './tableView.svelte'; export let data: PageData; let showCreate = false; + let view = 'grid'; const project = $page.params.project; async function handleCreate(event: CustomEvent) { @@ -23,43 +24,25 @@ -
+
Databases - +
+ test + + +
{#if data.databases.total} - (showCreate = true)} - event="database"> - {#each data.databases.databases as database} - - - {database.name} - - - Database ID - - - {/each} - -

Create a new database

-
-
- -
-

Total results: {data.databases.total}

- -
+ {#if view === 'list'} + + {:else} + + {/if} {:else} + import { base } from '$app/paths'; + import { page } from '$app/stores'; + import { CardContainer, Copy, GridItem1, Pagination } from '$lib/components'; + import { CARD_LIMIT } from '$lib/constants'; + import { Pill } from '$lib/elements'; + import type { PageData } from './$types'; + + export let data: PageData; + export let showCreate = false; + + const project = $page.params.project; + + + (showCreate = true)} event="database"> + {#each data.databases.databases as database} + + + {database.name} + + + Database ID + + + {/each} + +

Create a new database

+
+
+ +
+

Total results: {data.databases.total}

+ +
diff --git a/src/routes/console/project-[project]/databases/[[page]]/tableView.svelte b/src/routes/console/project-[project]/databases/[[page]]/tableView.svelte new file mode 100644 index 000000000..21e85ab84 --- /dev/null +++ b/src/routes/console/project-[project]/databases/[[page]]/tableView.svelte @@ -0,0 +1,60 @@ + + + + + Collection ID + Name + Updated At + Created At + + + {#each data.databases.databases as database} + + + + + + + + + {database.name} + + + {toLocaleDateTime(database.$updatedAt)} + + + {toLocaleDateTime(database.$createdAt)} + + + {/each} + + + +
+

Total results: {data.databases.total}

+ +
diff --git a/src/routes/console/project-[project]/databases/create.svelte b/src/routes/console/project-[project]/databases/create.svelte index 237ed836a..c348543c4 100644 --- a/src/routes/console/project-[project]/databases/create.svelte +++ b/src/routes/console/project-[project]/databases/create.svelte @@ -14,7 +14,7 @@ let name = ''; let id: string = null; - let showCustomId = false; + let showCustomId = true; const create = async () => { try { diff --git a/src/routes/console/project-[project]/databases/database-[database]/create.svelte b/src/routes/console/project-[project]/databases/database-[database]/create.svelte index 32c4bfa2c..8059d89fb 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/create.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/create.svelte @@ -17,7 +17,7 @@ let name = ''; let id: string = null; - let showCustomId = false; + let showCustomId = true; const create = async () => { try { From 3ffa758f415ad40e5e1db6ba27bc917db32118dc Mon Sep 17 00:00:00 2001 From: Arman Date: Tue, 28 Feb 2023 17:40:48 +0100 Subject: [PATCH 002/151] feat: collection grid view, caching --- src/lib/components/viewSelector.svelte | 13 ++-- src/lib/stores/layout.ts | 11 +++ .../databases/[[page]]/+page.svelte | 13 ++-- .../databases/[[page]]/+page.ts | 11 ++- .../databases/[[page]]/gridView.svelte | 2 +- .../databases/[[page]]/tableView.svelte | 11 +-- .../database-[database]/[[page]]/+page.svelte | 68 +++++++------------ .../database-[database]/[[page]]/+page.ts | 10 ++- .../[[page]]/gridView.svelte | 50 ++++++++++++++ .../[[page]]/tableView.svelte | 64 +++++++++++++++++ 10 files changed, 190 insertions(+), 63 deletions(-) create mode 100644 src/routes/console/project-[project]/databases/database-[database]/[[page]]/gridView.svelte create mode 100644 src/routes/console/project-[project]/databases/database-[database]/[[page]]/tableView.svelte diff --git a/src/lib/components/viewSelector.svelte b/src/lib/components/viewSelector.svelte index ad3c449f0..12addcbef 100644 --- a/src/lib/components/viewSelector.svelte +++ b/src/lib/components/viewSelector.svelte @@ -1,8 +1,7 @@ @@ -19,12 +18,18 @@
  • -
  • -
  • diff --git a/src/lib/stores/layout.ts b/src/lib/stores/layout.ts index 44f46a608..c5a29c544 100644 --- a/src/lib/stores/layout.ts +++ b/src/lib/stores/layout.ts @@ -1,5 +1,6 @@ import { writable, readable } from 'svelte/store'; import type { SvelteComponent } from 'svelte'; +import { browser } from '$app/environment'; export type Tab = { href: string; @@ -11,6 +12,8 @@ export type Breadcrumb = { title: string; }; +export type View = 'list' | 'grid'; + export type updateLayoutArguments = { header?: typeof SvelteComponent; breadcrumb?: typeof SvelteComponent; @@ -26,3 +29,11 @@ export function updateLayout(args: updateLayoutArguments) { export const pageLimit = readable(12); // default page limit export const cardLimit = readable(6); // default card limit + +export const preferredView = writable( + browser ? (sessionStorage.getItem('prefferedView') as View) : 'grid' +); + +if (browser) { + preferredView.subscribe((u) => sessionStorage.setItem('prefferedView', u ?? 'grid')); +} diff --git a/src/routes/console/project-[project]/databases/[[page]]/+page.svelte b/src/routes/console/project-[project]/databases/[[page]]/+page.svelte index ecfca50f7..cbac19e44 100644 --- a/src/routes/console/project-[project]/databases/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/databases/[[page]]/+page.svelte @@ -1,6 +1,6 @@ @@ -28,7 +33,7 @@ Databases
    - test + test
    {#if data.databases.total} - {#if view === 'list'} + {#if $preferredView === 'list'} {:else} diff --git a/src/routes/console/project-[project]/databases/[[page]]/+page.ts b/src/routes/console/project-[project]/databases/[[page]]/+page.ts index 47cc014c6..4f4a6ac4e 100644 --- a/src/routes/console/project-[project]/databases/[[page]]/+page.ts +++ b/src/routes/console/project-[project]/databases/[[page]]/+page.ts @@ -1,18 +1,23 @@ import { Query } from '@aw-labs/appwrite-console'; import { sdkForProject } from '$lib/stores/sdk'; import { pageToOffset } from '$lib/helpers/load'; -import { CARD_LIMIT } from '$lib/constants'; +import { CARD_LIMIT, PAGE_LIMIT } from '$lib/constants'; import type { PageLoad } from './$types'; +import { preferredView } from '$lib/stores/layout'; +import { get } from 'svelte/store'; export const load: PageLoad = async ({ params, parent }) => { await parent(); const page = Number(params.page); - const offset = pageToOffset(page, CARD_LIMIT); + const limit = get(preferredView) === 'list' ? PAGE_LIMIT : CARD_LIMIT; + console.log(get(preferredView)); + + const offset = pageToOffset(page, limit); return { offset, databases: await sdkForProject.databases.list([ - Query.limit(CARD_LIMIT), + Query.limit(limit), Query.offset(offset), Query.orderDesc('$createdAt') ]) diff --git a/src/routes/console/project-[project]/databases/[[page]]/gridView.svelte b/src/routes/console/project-[project]/databases/[[page]]/gridView.svelte index a50ae17e5..41899acc8 100644 --- a/src/routes/console/project-[project]/databases/[[page]]/gridView.svelte +++ b/src/routes/console/project-[project]/databases/[[page]]/gridView.svelte @@ -19,7 +19,7 @@ {database.name} - Database ID + Database ID {/each} diff --git a/src/routes/console/project-[project]/databases/[[page]]/tableView.svelte b/src/routes/console/project-[project]/databases/[[page]]/tableView.svelte index 21e85ab84..24536ba8d 100644 --- a/src/routes/console/project-[project]/databases/[[page]]/tableView.svelte +++ b/src/routes/console/project-[project]/databases/[[page]]/tableView.svelte @@ -1,4 +1,5 @@ - Collection ID + Database ID Name Updated At Created At {#each data.databases.databases as database} - + @@ -45,7 +48,7 @@ {toLocaleDateTime(database.$createdAt)} - + {/each} diff --git a/src/routes/console/project-[project]/databases/database-[database]/[[page]]/+page.svelte b/src/routes/console/project-[project]/databases/database-[database]/[[page]]/+page.svelte index 7a33759a6..ab25da2ff 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/[[page]]/+page.svelte @@ -1,24 +1,23 @@ -
    +
    Collections - +
    + test + + +
    {#if data.collections.total} - (showCreate = true)}> - {#each data.collections.collections as collection} - - {collection.name} - - {#if !collection.enabled} - disabled - {/if} - - - Collection ID - - - {/each} - -

    Create a new collection

    -
    -
    - -
    -

    Total results: {data.collections.total}

    - -
    + {#if $preferredView === 'list'} + + {:else} + + {/if} {:else} { await parent(); const page = Number(params.page); - const offset = pageToOffset(page, CARD_LIMIT); + const offset = pageToOffset(page, limit); return { offset, collections: await sdkForProject.databases.listCollections(params.database, [ - Query.limit(CARD_LIMIT), + Query.limit(limit), Query.offset(offset), Query.orderDesc('$createdAt') ]) diff --git a/src/routes/console/project-[project]/databases/database-[database]/[[page]]/gridView.svelte b/src/routes/console/project-[project]/databases/database-[database]/[[page]]/gridView.svelte new file mode 100644 index 000000000..6478512a6 --- /dev/null +++ b/src/routes/console/project-[project]/databases/database-[database]/[[page]]/gridView.svelte @@ -0,0 +1,50 @@ + + + (showCreate = true)}> + {#each data.collections.collections as collection} + + {collection.name} + + {#if !collection.enabled} + disabled + {/if} + + + Collection ID + + + {/each} + +

    Create a new collection

    +
    +
    + +
    +

    Total results: {data.collections.total}

    + +
    diff --git a/src/routes/console/project-[project]/databases/database-[database]/[[page]]/tableView.svelte b/src/routes/console/project-[project]/databases/database-[database]/[[page]]/tableView.svelte new file mode 100644 index 000000000..eb3e8a738 --- /dev/null +++ b/src/routes/console/project-[project]/databases/database-[database]/[[page]]/tableView.svelte @@ -0,0 +1,64 @@ + + + + + Collection ID + Name + Updated At + Created At + + + {#each data.collections.collections as collection} + + + + + + + + + {collection.name} + + + {toLocaleDateTime(collection.$updatedAt)} + + + {toLocaleDateTime(collection.$createdAt)} + + + {/each} + + + +
    +

    Total results: {data.collections.total}

    + +
    From e6cbc89cc36d89f13389f6e0ef7d31d6c4f3d2d0 Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 1 Mar 2023 13:53:17 +0100 Subject: [PATCH 003/151] feat: table view update --- src/lib/components/cardContainer.svelte | 5 +- src/lib/components/viewSelector.svelte | 28 ++++++++- src/lib/stores/layout.ts | 14 ++++- .../databases/[[page]]/+page.svelte | 16 +++-- .../databases/[[page]]/+page.ts | 7 +-- .../databases/[[page]]/gridView.svelte | 3 +- .../databases/[[page]]/tableView.svelte | 58 ++++++++++++------- .../database-[database]/[[page]]/+page.svelte | 11 +++- .../[[page]]/gridView.svelte | 3 +- .../[[page]]/tableView.svelte | 58 ++++++++++++------- 10 files changed, 139 insertions(+), 64 deletions(-) diff --git a/src/lib/components/cardContainer.svelte b/src/lib/components/cardContainer.svelte index ca00145ba..4445f3202 100644 --- a/src/lib/components/cardContainer.svelte +++ b/src/lib/components/cardContainer.svelte @@ -1,9 +1,8 @@ @@ -13,7 +12,7 @@ style={`--grid-gap:1.5rem; --grid-item-size:${total > 3 ? '22rem' : '25rem'};`}> - {#if total > 3 ? total < limit + offset : total % 2 !== 0} + {#if total > 3 ? total < CARD_LIMIT + offset : total % 2 !== 0} diff --git a/src/lib/components/viewSelector.svelte b/src/lib/components/viewSelector.svelte index 12addcbef..8fc229267 100644 --- a/src/lib/components/viewSelector.svelte +++ b/src/lib/components/viewSelector.svelte @@ -1,18 +1,40 @@ - - + + {#each columns as column} + + {/each} diff --git a/src/lib/stores/layout.ts b/src/lib/stores/layout.ts index c5a29c544..74ecd4644 100644 --- a/src/lib/stores/layout.ts +++ b/src/lib/stores/layout.ts @@ -1,6 +1,7 @@ import { writable, readable } from 'svelte/store'; import type { SvelteComponent } from 'svelte'; import { browser } from '$app/environment'; +import { PAGE_LIMIT } from '$lib/constants'; export type Tab = { href: string; @@ -27,13 +28,22 @@ export function updateLayout(args: updateLayoutArguments) { breadcrumb.set(args.breadcrumb ?? null); } -export const pageLimit = readable(12); // default page limit -export const cardLimit = readable(6); // default card limit +export const customPageLimit = writable( + browser + ? sessionStorage.getItem('customPageLimit')?.length + ? parseInt(sessionStorage.getItem('customPageLimit')) + : PAGE_LIMIT + : PAGE_LIMIT +); export const preferredView = writable( browser ? (sessionStorage.getItem('prefferedView') as View) : 'grid' ); if (browser) { + console.log(sessionStorage.getItem('customPageLimit')); preferredView.subscribe((u) => sessionStorage.setItem('prefferedView', u ?? 'grid')); + customPageLimit.subscribe((u) => + sessionStorage.setItem('customPageLimit', u.toString() ?? PAGE_LIMIT.toString()) + ); } diff --git a/src/routes/console/project-[project]/databases/[[page]]/+page.svelte b/src/routes/console/project-[project]/databases/[[page]]/+page.svelte index cbac19e44..b84eadaa0 100644 --- a/src/routes/console/project-[project]/databases/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/databases/[[page]]/+page.svelte @@ -14,16 +14,24 @@ import { Dependencies } from '$lib/constants'; export let data: PageData; + const project = $page.params.project; let showCreate = false; - const project = $page.params.project; + let columns = [ + { id: '$id', name: 'Database ID', show: true, width: 50 }, + { id: 'name', name: 'Name', show: true, width: 120 }, + { id: '$createdAt', name: 'Created', show: true, width: 120 }, + { id: '$updatedAt', name: 'Updated', show: true, width: 120 } + ]; async function handleCreate(event: CustomEvent) { showCreate = false; await goto(`${base}/console/project-${project}/databases/database-${event.detail.$id}`); } - $: preferredView.subscribe(() => { + $: preferredView.subscribe((n) => { + console.log(n); + invalidate(Dependencies.DATABASE); invalidate(Dependencies.COLLECTION); }); @@ -33,7 +41,7 @@ Databases
    - test +
    - {#if $collection?.attributes?.length} - {#if data.documents.total} - - - Document ID - {#each columns as column} - {column.title} - {/each} - - - {#each data.documents.documents as document} - - - - - - + {#if data.documents.total} + + + Document ID + {#each columns as column} + {column.title} + {/each} + + + {#each data.documents.documents as document} + + + + + + + + {#each columns as column} + {@const formatted = formatColumn(document[column.key])} + +
    + {formatted.value} +
    - {#each columns as column} - {@const formatted = formatColumn(document[column.key])} - -
    - {formatted.value} -
    -
    - {/each} -
    - {/each} -
    -
    + {/each} +
    + {/each} +
    +
    -
    -

    Total results: {data.documents.total}

    - -
    - {:else} - - {/if} +
    +

    Total results: {data.documents.total}

    + +
    {:else} (showCreateAttribute = true)} /> + href="https://appwrite.io/docs/databases#create-documents" + target="document" + on:click={openWizard} /> {/if} - - diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte index 4235e4f03..d84d742f4 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte @@ -18,22 +18,54 @@ import Delete from './deleteAttribute.svelte'; import Overview from './overview.svelte'; + let showCreateDropdown = false; let showDropdown = []; + let selectedOption: string = null; let selectedAttribute: Attributes = null; let showCreate = false; let showDelete = false; let showOverview = false; let showCreateIndex = false; + + const attributesList = [ + { name: 'String', icon: 'text' }, + { name: 'Integer', icon: 'hashtag' }, + { name: 'Float', icon: 'hashtag' }, + { name: 'Boolean', icon: 'toggle' }, + { name: 'Datetime', icon: 'calendar' }, + { name: 'Email', icon: 'mail' }, + { name: 'IP', icon: 'location-marker' }, + { name: 'URL', icon: 'link' }, + { name: 'Enum', icon: 'list' }, + { name: 'Relationship', icon: 'relationship' } + ];
    Attributes - + + + + {#each attributesList as attribute} + { + selectedOption = attribute.name; + showCreateDropdown = false; + showCreate = true; + }}> + {attribute.name} + + {/each} + +
    {#if $attributes.length} @@ -122,7 +154,7 @@ {/if}
    - + diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/createAttribute.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/createAttribute.svelte index 28c889133..502dba89b 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/createAttribute.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/createAttribute.svelte @@ -1,7 +1,7 @@ + + + + + + + Indicate whether this is a required attribute + + + Indicate whether this attribute should act as an array + diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/store.ts b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/store.ts index c8faf10e9..d276c4cfe 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/store.ts +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/store.ts @@ -10,18 +10,19 @@ import String, { submitString } from './string.svelte'; import Url, { submitUrl } from './url.svelte'; import Datetime, { submitDatetime } from './datetime.svelte'; import type { Attributes } from '../store'; +import Relationship, { submitRelationship } from './relationship.svelte'; export type Option = { name: string; component: typeof SvelteComponent; - type: 'string' | 'integer' | 'double' | 'boolean' | 'datetime'; + type: 'string' | 'integer' | 'double' | 'boolean' | 'datetime' | 'relationship'; func: ( databaseId: string, collectionId: string, key: string, data: Partial ) => Promise; - format?: 'email' | 'ip' | 'url' | 'enum'; + format?: 'email' | 'ip' | 'url' | 'enum' | 'relationship'; }; export const options: Option[] = [ @@ -82,6 +83,13 @@ export const options: Option[] = [ type: 'string', format: 'enum', func: submitEnum + }, + { + name: 'Relationship', + component: Relationship, + type: 'relationship', + format: 'relationship', + func: submitRelationship } ]; From f7b4a3c367b88d415d6167b1a33a7988e8094f17 Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 1 Mar 2023 15:09:54 +0100 Subject: [PATCH 006/151] refactor: modal icon --- src/lib/components/modal.svelte | 15 +++++++++++---- src/lib/layout/wizardExitModal.svelte | 2 +- src/routes/console/account/delete.svelte | 2 +- .../deleteMember.svelte | 2 +- .../deleteOrganization.svelte | 2 +- .../teams/team-[team]/deleteMembership.svelte | 2 +- .../auth/teams/team-[team]/deleteTeam.svelte | 2 +- .../auth/user-[user]/deleteAllSessions.svelte | 2 +- .../auth/user-[user]/deleteMembership.svelte | 2 +- .../auth/user-[user]/deleteSession.svelte | 2 +- .../auth/user-[user]/deleteUser.svelte | 2 +- .../attributes/deleteAttribute.svelte | 2 +- .../document-[document]/delete.svelte | 2 +- .../collection-[collection]/indexes/+page.svelte | 1 - .../indexes/deleteIndex.svelte | 2 +- .../settings/deleteCollection.svelte | 2 +- .../databases/database-[database]/delete.svelte | 2 +- .../functions/function-[function]/delete.svelte | 2 +- .../function-[function]/settings/delete.svelte | 2 +- .../overview/keys/[key]/delete.svelte | 2 +- .../overview/platforms/[platform]/delete.svelte | 2 +- .../settings/deleteProject.svelte | 2 +- .../settings/domains/delete.svelte | 2 +- .../settings/webhooks/[webhook]/delete.svelte | 2 +- .../storage/bucket-[bucket]/deleteBucket.svelte | 2 +- .../storage/bucket-[bucket]/deleteFile.svelte | 2 +- .../bucket-[bucket]/file-[file]/deleteFile.svelte | 2 +- 27 files changed, 36 insertions(+), 30 deletions(-) diff --git a/src/lib/components/modal.svelte b/src/lib/components/modal.svelte index 8e38955ab..afbc40b37 100644 --- a/src/lib/components/modal.svelte +++ b/src/lib/components/modal.svelte @@ -5,7 +5,9 @@ export let show = false; export let size: 'small' | 'big' = null; - export let warning = false; + // export let WASD = false; + export let icon: string = null; + export let state: 'success' | 'warning' | 'error' | 'info' = null; export let error: string = null; export let closable = true; @@ -80,9 +82,14 @@
    -{:else} - 2 + {#if !isOneWay} +
    + + +
    +
    +
    + {/if} + + + + + {$collection.name} -> {selectedCol.name} + +

    + {$collection.name} has {data.relation === 'one' ? 'one' : 'many'} + {selectedCol.name} +

    {/if} From 75866c69d88838bd186fedfd115c42ff13344197 Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 2 Mar 2023 17:43:42 +0100 Subject: [PATCH 009/151] feat: add view to userprefs --- src/lib/components/viewSelector.svelte | 46 ++++++++++--------- src/lib/stores/layout.ts | 6 --- src/lib/stores/user.ts | 33 ++++++++++++- .../databases/[[page]]/+page.svelte | 13 ++---- .../databases/[[page]]/+page.ts | 5 +- .../database-[database]/[[page]]/+page.svelte | 11 ++--- .../database-[database]/[[page]]/+page.ts | 4 +- 7 files changed, 68 insertions(+), 50 deletions(-) diff --git a/src/lib/components/viewSelector.svelte b/src/lib/components/viewSelector.svelte index 8fc229267..7d36eb296 100644 --- a/src/lib/components/viewSelector.svelte +++ b/src/lib/components/viewSelector.svelte @@ -1,7 +1,7 @@ - - - - {#each columns as column} - - {/each} - - +{#if $prefs?.preferredView === 'list'} + + + + {#each columns as column} + + {/each} + + +{/if}
    • diff --git a/src/lib/stores/layout.ts b/src/lib/stores/layout.ts index b6319f9a7..56b5f9a59 100644 --- a/src/lib/stores/layout.ts +++ b/src/lib/stores/layout.ts @@ -36,13 +36,7 @@ export const customPageLimit = writable( : PAGE_LIMIT ); -export const preferredView = writable( - browser ? (sessionStorage.getItem('prefferedView') as View) : 'grid' -); - if (browser) { - console.log(sessionStorage.getItem('customPageLimit')); - preferredView.subscribe((u) => sessionStorage.setItem('prefferedView', u ?? 'grid')); customPageLimit.subscribe((u) => sessionStorage.setItem('customPageLimit', u.toString() ?? PAGE_LIMIT.toString()) ); diff --git a/src/lib/stores/user.ts b/src/lib/stores/user.ts index 07b5c404b..c5da6bcaf 100644 --- a/src/lib/stores/user.ts +++ b/src/lib/stores/user.ts @@ -1,8 +1,39 @@ import { page } from '$app/stores'; -import { derived } from 'svelte/store'; +import { derived, get } from 'svelte/store'; import type { Models } from '@aw-labs/appwrite-console'; +import { sdkForConsole } from './sdk'; +import { cachedStore } from '$lib/helpers/cache'; +import { browser } from '$app/environment'; export const user = derived( page, ($page) => $page.data.account as Models.Account> ); + +export const prefs = cachedStore< + Models.Preferences, + { + load: () => Promise; + updatePrefs: (prefs: Models.Preferences) => Promise; + } +>('prefs', (store) => ({ + load: async () => { + const prefs = await sdkForConsole.account.getPrefs(); + store.set(prefs); + }, + updatePrefs: async (prefs: Models.Preferences) => { + await sdkForConsole.account.updatePrefs(prefs); + store.set(prefs); + } +})); + +if (browser) { + if (!get(prefs)) { + await prefs.load(); + if (!get(prefs)?.preferredView) { + prefs.updatePrefs({ + preferredView: 'grid' + }); + } + } +} diff --git a/src/routes/console/project-[project]/databases/[[page]]/+page.svelte b/src/routes/console/project-[project]/databases/[[page]]/+page.svelte index b84eadaa0..843caa351 100644 --- a/src/routes/console/project-[project]/databases/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/databases/[[page]]/+page.svelte @@ -1,6 +1,6 @@ @@ -51,7 +44,7 @@
{#if data.databases.total} - {#if $preferredView === 'list'} + {#if $prefs?.preferredView === 'list'} {:else} diff --git a/src/routes/console/project-[project]/databases/[[page]]/+page.ts b/src/routes/console/project-[project]/databases/[[page]]/+page.ts index db5077b8d..5626884b7 100644 --- a/src/routes/console/project-[project]/databases/[[page]]/+page.ts +++ b/src/routes/console/project-[project]/databases/[[page]]/+page.ts @@ -3,13 +3,14 @@ import { sdkForProject } from '$lib/stores/sdk'; import { pageToOffset } from '$lib/helpers/load'; import { CARD_LIMIT } from '$lib/constants'; import type { PageLoad } from './$types'; -import { customPageLimit, preferredView } from '$lib/stores/layout'; +import { customPageLimit } from '$lib/stores/layout'; import { get } from 'svelte/store'; +import { prefs } from '$lib/stores/user'; export const load: PageLoad = async ({ params, parent }) => { await parent(); const page = Number(params.page); - const limit = get(preferredView) === 'list' ? get(customPageLimit) : CARD_LIMIT; + const limit = get(prefs)?.prefferedView === 'list' ? get(customPageLimit) : CARD_LIMIT; const offset = pageToOffset(page, limit); diff --git a/src/routes/console/project-[project]/databases/database-[database]/[[page]]/+page.svelte b/src/routes/console/project-[project]/databases/database-[database]/[[page]]/+page.svelte index 7a770c279..2de61e9c7 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/[[page]]/+page.svelte @@ -1,6 +1,6 @@ @@ -53,7 +48,7 @@ {#if data.collections.total} - {#if $preferredView === 'list'} + {#if $prefs?.preferredView === 'list'} {:else} diff --git a/src/routes/console/project-[project]/databases/database-[database]/[[page]]/+page.ts b/src/routes/console/project-[project]/databases/database-[database]/[[page]]/+page.ts index 773873eb4..cc0a16a03 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/[[page]]/+page.ts +++ b/src/routes/console/project-[project]/databases/database-[database]/[[page]]/+page.ts @@ -3,10 +3,10 @@ import { sdkForProject } from '$lib/stores/sdk'; import { pageToOffset } from '$lib/helpers/load'; import { CARD_LIMIT, PAGE_LIMIT } from '$lib/constants'; import type { PageLoad } from './$types'; -import { preferredView } from '$lib/stores/layout'; import { get } from 'svelte/store'; +import { prefs } from '$lib/stores/user'; -const limit = get(preferredView) === 'list' ? PAGE_LIMIT : CARD_LIMIT; +const limit = get(prefs)?.prefferedView === 'list' ? PAGE_LIMIT : CARD_LIMIT; export const load: PageLoad = async ({ params, parent }) => { await parent(); From 24bab9b93863b6efc02ee730b3f8aec01c2cb48d Mon Sep 17 00:00:00 2001 From: Arman Date: Fri, 3 Mar 2023 12:56:30 +0100 Subject: [PATCH 010/151] fix: pagination --- package-lock.json | 8 +- package.json | 2 +- src/lib/components/customId.svelte | 3 +- src/lib/components/viewSelector.svelte | 46 +++--- src/lib/constants.ts | 1 + src/lib/elements/forms/inputId.svelte | 2 +- src/lib/layout/navigation.svelte | 142 +++++++++--------- .../databases/[[page]]/+page.svelte | 9 +- .../databases/[[page]]/+page.ts | 9 +- .../project-[project]/databases/create.svelte | 2 +- .../database-[database]/create.svelte | 2 +- 11 files changed, 125 insertions(+), 101 deletions(-) diff --git a/package-lock.json b/package-lock.json index 21a276c80..e21d7d335 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.1", "dependencies": { "@analytics/google-analytics": "^1.0.5", - "@appwrite.io/pink": "^0.0.4", + "@appwrite.io/pink": "^0.0.6-rc.1", "@aw-labs/appwrite-console": "^13.1.0", "@popperjs/core": "^2.11.6", "@sentry/svelte": "^7.36.0", @@ -146,9 +146,9 @@ "integrity": "sha512-1Yw7u/COtxx06BfwlI+kVhsa/upKYzmCNrT4c8QDeCY2KMYlnijkUjtHiPU08HxyTIVB5j6d75O0YWVIHwQS8g==" }, "node_modules/@appwrite.io/pink": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@appwrite.io/pink/-/pink-0.0.4.tgz", - "integrity": "sha512-pCXxBqSikG5PpBb2y84tTRH6cAMUYbROlQN8LuGoY2J+vTWMT+HQ7+RAAwRWU1Dlle4FgOFFCKmqU95g6X2a6g==", + "version": "0.0.6-rc.1", + "resolved": "https://registry.npmjs.org/@appwrite.io/pink/-/pink-0.0.6-rc.1.tgz", + "integrity": "sha512-5HM094Ie/tYHQIz5T2ydN03bO/dbR59lHHP2UPP3lheUsY6DBEZGP6Haqedwt/n8odTdIG5Rtrcq0eS6/+G7BA==", "dependencies": { "@appwrite.io/pink-icons": "*", "normalize.css": "^8.0.1", diff --git a/package.json b/package.json index c468dff23..624490725 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ }, "dependencies": { "@analytics/google-analytics": "^1.0.5", - "@appwrite.io/pink": "^0.0.4", + "@appwrite.io/pink": "^0.0.6-rc.1", "@aw-labs/appwrite-console": "^13.1.0", "@popperjs/core": "^2.11.6", "@sentry/svelte": "^7.36.0", diff --git a/src/lib/components/customId.svelte b/src/lib/components/customId.svelte index 9dd9fa0c4..8691d9f15 100644 --- a/src/lib/components/customId.svelte +++ b/src/lib/components/customId.svelte @@ -6,6 +6,7 @@ export let show = false; export let name: string; export let id: string; + export let autofocus = true; $: if (!show) { id = null; @@ -27,7 +28,7 @@
- +
diff --git a/src/lib/components/viewSelector.svelte b/src/lib/components/viewSelector.svelte index 7d36eb296..e2e851524 100644 --- a/src/lib/components/viewSelector.svelte +++ b/src/lib/components/viewSelector.svelte @@ -26,7 +26,7 @@ {#each columns as column} @@ -40,23 +40,27 @@ {/if} -
    -
  • - -
  • -
  • - -
  • -
+
+
    +
  • + +
  • +
  • + +
  • +
+
diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 0a19c9208..2b3b70125 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -15,6 +15,7 @@ export enum Dependencies { TEAMS = 'dependency:teams', MEMBERSHIPS = 'dependency:memberships', DATABASE = 'dependency:database', + DATABASES = 'dependency:databases', COLLECTION = 'dependency:collection', DOCUMENT = 'dependency:document', DOCUMENTS = 'dependency:documents', diff --git a/src/lib/elements/forms/inputId.svelte b/src/lib/elements/forms/inputId.svelte index b11c7b7a3..3fde5e51b 100644 --- a/src/lib/elements/forms/inputId.svelte +++ b/src/lib/elements/forms/inputId.svelte @@ -3,11 +3,11 @@ import { FormItem } from '.'; export let value = ''; + export let autofocus = true; let element: HTMLInputElement; let icon = 'info'; const pattern = String.raw`^[a-zA-Z0-9][a-zA-Z0-9._-]*$`; - const autofocus = true; onMount(() => { if (element && autofocus) { diff --git a/src/lib/layout/navigation.svelte b/src/lib/layout/navigation.svelte index f7deb321f..72441bdaf 100644 --- a/src/lib/layout/navigation.svelte +++ b/src/lib/layout/navigation.svelte @@ -9,74 +9,82 @@
{#if project} - + diff --git a/src/routes/console/project-[project]/databases/[[page]]/+page.svelte b/src/routes/console/project-[project]/databases/[[page]]/+page.svelte index 843caa351..1ef82a863 100644 --- a/src/routes/console/project-[project]/databases/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/databases/[[page]]/+page.svelte @@ -1,6 +1,6 @@ diff --git a/src/routes/console/project-[project]/databases/[[page]]/+page.ts b/src/routes/console/project-[project]/databases/[[page]]/+page.ts index 5626884b7..355964aa3 100644 --- a/src/routes/console/project-[project]/databases/[[page]]/+page.ts +++ b/src/routes/console/project-[project]/databases/[[page]]/+page.ts @@ -1,18 +1,21 @@ import { Query } from '@aw-labs/appwrite-console'; import { sdkForProject } from '$lib/stores/sdk'; import { pageToOffset } from '$lib/helpers/load'; -import { CARD_LIMIT } from '$lib/constants'; +import { CARD_LIMIT, Dependencies } from '$lib/constants'; import type { PageLoad } from './$types'; import { customPageLimit } from '$lib/stores/layout'; import { get } from 'svelte/store'; import { prefs } from '$lib/stores/user'; -export const load: PageLoad = async ({ params, parent }) => { +export const load: PageLoad = async ({ params, parent, depends }) => { await parent(); + depends(Dependencies.DATABASES); + const page = Number(params.page); - const limit = get(prefs)?.prefferedView === 'list' ? get(customPageLimit) : CARD_LIMIT; + const limit = get(prefs)?.preferredView === 'list' ? get(customPageLimit) : CARD_LIMIT; const offset = pageToOffset(page, limit); + console.log(offset); return { offset, diff --git a/src/routes/console/project-[project]/databases/create.svelte b/src/routes/console/project-[project]/databases/create.svelte index c348543c4..2b062f885 100644 --- a/src/routes/console/project-[project]/databases/create.svelte +++ b/src/routes/console/project-[project]/databases/create.svelte @@ -58,7 +58,7 @@
{:else} - + {/if} diff --git a/src/routes/console/project-[project]/databases/database-[database]/create.svelte b/src/routes/console/project-[project]/databases/database-[database]/create.svelte index 8059d89fb..d14b7896b 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/create.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/create.svelte @@ -65,7 +65,7 @@ {:else} - + {/if} From 42c1b4602ece06ce1cdceb62435bde14ee9f9992 Mon Sep 17 00:00:00 2001 From: Arman Date: Fri, 3 Mar 2023 17:39:51 +0100 Subject: [PATCH 011/151] feat: new components, custom pagination --- src/lib/components/customPagination.svelte | 51 ++++++++++++ src/lib/components/index.ts | 2 + src/lib/components/labelCard.svelte | 23 ++++++ src/lib/elements/forms/index.ts | 1 + src/lib/elements/forms/inputSelect.svelte | 3 +- .../elements/forms/inputSelectSearch.svelte | 79 +++++++++++++++++++ .../databases/[[page]]/+page.ts | 1 - .../databases/[[page]]/gridView.svelte | 25 +++--- .../databases/[[page]]/tableView.svelte | 19 +++-- .../attributes/relationship.svelte | 45 ++++++++++- .../createAttribute.svelte | 4 +- 11 files changed, 224 insertions(+), 29 deletions(-) create mode 100644 src/lib/components/customPagination.svelte create mode 100644 src/lib/components/labelCard.svelte create mode 100644 src/lib/elements/forms/inputSelectSearch.svelte diff --git a/src/lib/components/customPagination.svelte b/src/lib/components/customPagination.svelte new file mode 100644 index 000000000..c40109ef4 --- /dev/null +++ b/src/lib/components/customPagination.svelte @@ -0,0 +1,51 @@ + + +
+
+ +

{name} per page. Total results: {total}

+
+ +
diff --git a/src/lib/components/index.ts b/src/lib/components/index.ts index fe4fdeec1..4d67decd7 100644 --- a/src/lib/components/index.ts +++ b/src/lib/components/index.ts @@ -47,3 +47,5 @@ export { default as Status } from './status.svelte'; export { default as Heading } from './heading.svelte'; export { default as Output } from './output.svelte'; export { default as ViewSelector } from './viewSelector.svelte'; +export { default as LabelCard } from './labelCard.svelte'; +export { default as CustomPagination } from './customPagination.svelte'; diff --git a/src/lib/components/labelCard.svelte b/src/lib/components/labelCard.svelte new file mode 100644 index 000000000..7bdc44456 --- /dev/null +++ b/src/lib/components/labelCard.svelte @@ -0,0 +1,23 @@ + + + diff --git a/src/lib/elements/forms/index.ts b/src/lib/elements/forms/index.ts index d60fb5442..a471fde9f 100644 --- a/src/lib/elements/forms/index.ts +++ b/src/lib/elements/forms/index.ts @@ -15,6 +15,7 @@ export { default as InputDateTime } from './inputDateTime.svelte'; export { default as InputSearch } from './inputSearch.svelte'; export { default as InputRadio } from './inputRadio.svelte'; export { default as InputSelect } from './inputSelect.svelte'; +export { default as InputSelectSearch } from './inputSelectSearch.svelte'; export { default as InputCheckbox } from './inputCheckbox.svelte'; export { default as InputChoice } from './inputChoice.svelte'; export { default as InputPhone } from './inputPhone.svelte'; diff --git a/src/lib/elements/forms/inputSelect.svelte b/src/lib/elements/forms/inputSelect.svelte index 5bfe2220a..ff49b8f80 100644 --- a/src/lib/elements/forms/inputSelect.svelte +++ b/src/lib/elements/forms/inputSelect.svelte @@ -52,7 +52,8 @@ {disabled} bind:this={element} bind:value - on:invalid={handleInvalid}> + on:invalid={handleInvalid} + on:change> {#if placeholder} {/if} diff --git a/src/lib/elements/forms/inputSelectSearch.svelte b/src/lib/elements/forms/inputSelectSearch.svelte new file mode 100644 index 000000000..35de7c850 --- /dev/null +++ b/src/lib/elements/forms/inputSelectSearch.svelte @@ -0,0 +1,79 @@ + + + + +
    + + + +
    +
    + (hasFocus = true)} + on:input={valueChange} /> +
    +
    +
    +
+ + + {#each options as option} +
  • + +
  • + {/each} +
    +
    diff --git a/src/routes/console/project-[project]/databases/[[page]]/+page.ts b/src/routes/console/project-[project]/databases/[[page]]/+page.ts index 355964aa3..3d3138661 100644 --- a/src/routes/console/project-[project]/databases/[[page]]/+page.ts +++ b/src/routes/console/project-[project]/databases/[[page]]/+page.ts @@ -15,7 +15,6 @@ export const load: PageLoad = async ({ params, parent, depends }) => { const limit = get(prefs)?.preferredView === 'list' ? get(customPageLimit) : CARD_LIMIT; const offset = pageToOffset(page, limit); - console.log(offset); return { offset, diff --git a/src/routes/console/project-[project]/databases/[[page]]/gridView.svelte b/src/routes/console/project-[project]/databases/[[page]]/gridView.svelte index 6ae3cbba7..20df70338 100644 --- a/src/routes/console/project-[project]/databases/[[page]]/gridView.svelte +++ b/src/routes/console/project-[project]/databases/[[page]]/gridView.svelte @@ -1,8 +1,8 @@ - (showCreate = true)} event="database"> + (showCreate = true)} + event="database"> {#each data.databases.databases as database} {database.name} @@ -27,11 +31,10 @@
    -
    -

    Total results: {data.databases.total}

    - -
    + diff --git a/src/routes/console/project-[project]/databases/[[page]]/tableView.svelte b/src/routes/console/project-[project]/databases/[[page]]/tableView.svelte index 2b7828d19..ee4a988d1 100644 --- a/src/routes/console/project-[project]/databases/[[page]]/tableView.svelte +++ b/src/routes/console/project-[project]/databases/[[page]]/tableView.svelte @@ -1,8 +1,8 @@ +
      +
    • + + One-way relationship + One Relation attribute within this collection + +
    • +
    • + + Two-way relationship + One Relation attribute within this collection and another within the related collection + +
    • +
    + + ({ value: n.$id, label: n.name }))} /> Date: Mon, 6 Mar 2023 13:29:55 +0100 Subject: [PATCH 012/151] feat: columns save in prefs, select search component --- src/lib/components/drop.svelte | 10 ++- src/lib/components/dropList.svelte | 12 +-- src/lib/components/labelCard.svelte | 6 +- src/lib/components/viewSelector.svelte | 28 ++++++- .../elements/forms/inputSelectSearch.svelte | 79 ++++++++++--------- src/lib/layout/header.svelte | 2 +- .../databases/[[page]]/+page.svelte | 9 +-- .../databases/[[page]]/tableView.svelte | 13 ++- .../database-[database]/[[page]]/+page.svelte | 10 +-- .../[[page]]/tableView.svelte | 19 +++-- .../attributes/relationship.svelte | 30 +++---- 11 files changed, 123 insertions(+), 95 deletions(-) diff --git a/src/lib/components/drop.svelte b/src/lib/components/drop.svelte index 84486418a..8e71f7730 100644 --- a/src/lib/components/drop.svelte +++ b/src/lib/components/drop.svelte @@ -10,6 +10,8 @@ export let noArrow = false; export let placement: Placement = 'bottom-start'; export let childStart = false; + export let noStyle = false; + export let fullWidth = false; let element: HTMLDivElement; let tooltip: HTMLDivElement; @@ -67,11 +69,15 @@ -
    +
    -
    +
    {#if show} diff --git a/src/lib/components/dropList.svelte b/src/lib/components/dropList.svelte index 5d87c92f8..fd7ab7f1b 100644 --- a/src/lib/components/dropList.svelte +++ b/src/lib/components/dropList.svelte @@ -7,18 +7,20 @@ export let scrollable = false; export let childStart = false; export let noArrow = false; + export let noStyle = false; export let width: string = null; + export let fullWidth = false; + export let position: 'relative' | 'static' = 'relative'; - +
    {#if $$slots.list}
    -
    - - Update Name + + + Update Name - -
      - - {#if showError === 'name'} - {errorMessage} - {/if} -
    -
    + +
      + + {#if showError === 'name'} + {errorMessage} + {/if} +
    +
    - - - -
    + + + +
    +
    From ac90a4482c679e9925752ee8807b29de29b2ba3a Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 20 Mar 2023 14:40:11 +0100 Subject: [PATCH 034/151] fix: outdated sdk call --- src/lib/stores/user.ts | 9 ++++----- .../collection-[collection]/attributes/boolean.svelte | 2 +- .../collection-[collection]/attributes/datetime.svelte | 2 +- .../collection-[collection]/attributes/email.svelte | 2 +- .../collection-[collection]/attributes/enum.svelte | 2 +- .../collection-[collection]/attributes/float.svelte | 2 +- .../collection-[collection]/attributes/integer.svelte | 2 +- .../collection-[collection]/attributes/ip.svelte | 2 +- .../attributes/relationship.svelte | 10 +++++----- .../collection-[collection]/attributes/string.svelte | 2 +- .../collection-[collection]/attributes/url.svelte | 2 +- .../document-[document]/attributes/relationship.svelte | 6 +++--- .../document-[document]/data/+page.svelte | 4 ++-- 13 files changed, 23 insertions(+), 24 deletions(-) diff --git a/src/lib/stores/user.ts b/src/lib/stores/user.ts index e6f6d02c8..7b3dbe945 100644 --- a/src/lib/stores/user.ts +++ b/src/lib/stores/user.ts @@ -1,9 +1,8 @@ import { page } from '$app/stores'; -import { derived, get } from 'svelte/store'; +import { derived } from 'svelte/store'; import type { Models } from '@aw-labs/appwrite-console'; -import { sdkForConsole } from './sdk'; +import { sdk } from './sdk'; import { cachedStore } from '$lib/helpers/cache'; -import { browser } from '$app/environment'; export const user = derived( page, @@ -18,11 +17,11 @@ export const prefs = cachedStore< } >('prefs', (store) => ({ load: async () => { - const prefs = await sdkForConsole.account.getPrefs(); + const prefs = await sdk.forConsole.account.getPrefs(); store.set(prefs); }, updatePrefs: async (prefs: Models.Preferences) => { - await sdkForConsole.account.updatePrefs(prefs); + await sdk.forConsole.account.updatePrefs(prefs); store.set(prefs); } })); diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/boolean.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/boolean.svelte index 37bdff331..eaead8c2f 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/boolean.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/boolean.svelte @@ -23,7 +23,7 @@ data: Partial ) { - await sdkForProject.databases.createBooleanAttribute( + await sdk.forProject.databases.createBooleanAttribute( databaseId, collectionId, data.key, diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/datetime.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/datetime.svelte index 60dba8c40..401837675 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/datetime.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/datetime.svelte @@ -23,7 +23,7 @@ collectionId: string, data: Partial ) { - await sdkForProject.databases.createDatetimeAttribute( + await sdk.forProject.databases.createDatetimeAttribute( databaseId, collectionId, data.key, diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/email.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/email.svelte index ab25c1774..02020f222 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/email.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/email.svelte @@ -24,7 +24,7 @@ collectionId: string, data: Partial ) { - await sdkForProject.databases.createEmailAttribute( + await sdk.forProject.databases.createEmailAttribute( databaseId, collectionId, data.key, diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/enum.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/enum.svelte index 8f5dc4f3b..65763fd35 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/enum.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/enum.svelte @@ -24,7 +24,7 @@ collectionId: string, data: Partial ) { - await sdkForProject.databases.createEnumAttribute( + await sdk.forProject.databases.createEnumAttribute( databaseId, collectionId, data.key, diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/float.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/float.svelte index 764222905..54b13848d 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/float.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/float.svelte @@ -25,7 +25,7 @@ collectionId: string, data: Partial ) { - await sdkForProject.databases.createFloatAttribute( + await sdk.forProject.databases.createFloatAttribute( databaseId, collectionId, data.key, diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/integer.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/integer.svelte index 6f9e52043..9b61bfa0e 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/integer.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/integer.svelte @@ -25,7 +25,7 @@ collectionId: string, data: Partial ) { - await sdkForProject.databases.createIntegerAttribute( + await sdk.forProject.databases.createIntegerAttribute( databaseId, collectionId, data.key, diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/ip.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/ip.svelte index a7786e7aa..c4b6c02f6 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/ip.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/ip.svelte @@ -22,7 +22,7 @@ collectionId: string, data: Partial ) { - await sdkForProject.databases.createIpAttribute( + await sdk.forProject.databases.createIpAttribute( databaseId, collectionId, data.key, diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/relationship.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/relationship.svelte index 8abec8377..ce40e817a 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/relationship.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/relationship.svelte @@ -1,6 +1,6 @@ - + {attr?.type} {#if attr?.type === 'Relationship'} diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/relationship.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/relationship.svelte index ce40e817a..de438e241 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/relationship.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/relationship.svelte @@ -157,7 +157,7 @@ bind:value={data.related} required placeholder="Select a collection" - options={collectionList?.collections?.map((n) => ({ value: n.$id, label: n.name })) ?? []} /> + options={collections?.map((n) => ({ value: n.$id, label: n.name })) ?? []} /> {#if data?.related} {@const selectedCol = collections?.find((n) => n.$id === data.related)} diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/settings/displayName.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/settings/displayName.svelte index f71e40604..531f645d7 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/settings/displayName.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/settings/displayName.svelte @@ -7,7 +7,7 @@ import { Button, Form, InputSelectSearch, InputText } from '$lib/elements/forms'; import { difference } from '$lib/helpers/array'; import { addNotification } from '$lib/stores/notifications'; - import { sdkForProject } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import { onMount } from 'svelte'; import { attributes, collection } from '../store'; @@ -57,7 +57,7 @@ (displayNames?.length && !displayNames[displayNames?.length - 1]); -
    + Display Name

    diff --git a/tests/unit/helpers/string.test.ts b/tests/unit/helpers/string.test.ts new file mode 100644 index 000000000..eb145e9f5 --- /dev/null +++ b/tests/unit/helpers/string.test.ts @@ -0,0 +1,98 @@ +import { singular, camelize, capitalize } from '$lib/helpers/string'; + +/* +CAMELIZE +*/ + +test('camelize should convert hyphenated strings to camel case', () => { + const hyphenated = 'this-is-a-test'; + const expected = 'thisIsATest'; + expect(camelize(hyphenated)).toBe(expected); +}); + +test('camelize should convert underscored strings to camel case', () => { + const underscored = 'this_is_a_test'; + const expected = 'thisIsATest'; + expect(camelize(underscored)).toBe(expected); +}); + +test('camelize should convert spaced strings to camel case', () => { + const spaced = 'this is a test'; + const expected = 'thisIsATest'; + expect(camelize(spaced)).toBe(expected); +}); + +test('camelize should return empty string for falsy input', () => { + expect(camelize(null)).toBe(''); + expect(camelize(undefined)).toBe(''); + expect(camelize('')).toBe(''); +}); + +test('camelize should handle edge cases', () => { + const edgeCases = [ + { input: 'foo', expected: 'foo' }, + { input: 'foo-bar-', expected: 'fooBar' }, + { input: '-foo-bar', expected: 'fooBar' }, + { input: '--foo-bar--', expected: 'fooBar' }, + { input: '__foo__bar__', expected: 'fooBar' }, + { input: 'foo bar', expected: 'fooBar' }, + { input: 'foo\nbar', expected: 'fooBar' } + ]; + edgeCases.forEach(({ input, expected }) => { + expect(camelize(input)).toBe(expected); + }); +}); + +/* +SINGULAR +*/ + +test('singular should remove the "s" from strings', () => { + const pluralNouns = ['apples', 'bananas', 'cherries', 'elephants', 'horses', 'zebras']; + const singularNouns = ['apple', 'banana', 'cherrie', 'elephant', 'horse', 'zebra']; + pluralNouns.forEach((noun, index) => { + expect(singular(noun)).toBe(singularNouns[index]); + }); +}); + +test('singular should not remove characters from strings that do not contain "s"', () => { + const singularNouns = ['apple', 'banana', 'cherry']; + singularNouns.forEach((noun) => { + expect(singular(noun)).toBe(noun); + }); +}); + +test('singular should handle edge cases', () => { + const edgeCases = [ + { input: '', expected: '' }, + { input: 's', expected: '' }, + { input: 'ss', expected: 's' } + ]; + edgeCases.forEach(({ input, expected }) => { + expect(singular(input)).toBe(expected); + }); +}); + +/* +CAPITALIZE +*/ + +test('capitalize should capitalize the first letter of a string', () => { + const strings = ['hello world', 'this is a test', 'another example', '1234 testing']; + const expected = ['Hello world', 'This is a test', 'Another example', '1234 testing']; + strings.forEach((str, index) => { + expect(capitalize(str)).toBe(expected[index]); + }); +}); + +test('capitalize should handle empty strings', () => { + expect(capitalize('')).toBe(''); +}); + +test('capitalize should handle strings with no lowercase letters', () => { + expect(capitalize('HELLO')).toBe('HELLO'); +}); + +test('capitalize should handle strings with only one character', () => { + expect(capitalize('a')).toBe('A'); +}); From b94dfdc0c1e3c69b28d92e9cda2d534805433889 Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 23 Mar 2023 12:23:34 +0100 Subject: [PATCH 037/151] fix: some fix from partial review --- .../attributes/relationship.svelte | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/relationship.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/relationship.svelte index de438e241..f338216f3 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/relationship.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/relationship.svelte @@ -44,6 +44,7 @@ import { collection } from '../store'; import arrowOne from './arrow-one.svg'; import arrowTwo from './arrow-two.svg'; + import { camelize } from '$lib/helpers/string'; // Props export let selectedAttribute: Models.AttributeString; @@ -129,7 +130,7 @@ $: if (data.related && !data.key) { const collection = collectionList.collections.find((n) => n.$id === data.related); // data key = data related in snake case - data.key = collection.name.replace(/\s+/g, '_').toLowerCase(); + data.key = camelize(collection.name); } @@ -210,18 +211,18 @@

    - {$collection.name} + {camelize($collection.name)} {#if way === 'one'} {'One {:else} {'Two {/if} - {selectedCol?.name} + {data.key}

    - {$collection.name} has {data.relation === 'one' ? 'one' : 'many'} - {selectedCol?.name} + {camelize($collection.name)} has {data.relation === 'one' ? 'one' : 'many'} + {data.key}

    Date: Thu, 23 Mar 2023 17:27:19 +0100 Subject: [PATCH 038/151] chore: remove old files, cleanup --- src/lib/components/customPagination.svelte | 52 ------------- src/lib/components/index.ts | 1 - .../databases/[[page]]/gridView.svelte | 40 ---------- .../databases/[[page]]/store.ts | 15 ---- .../databases/[[page]]/tableView.svelte | 77 ------------------ .../database-[database]/gridView.svelte | 48 ------------ .../database-[database]/tableView.svelte | 78 ------------------- 7 files changed, 311 deletions(-) delete mode 100644 src/lib/components/customPagination.svelte delete mode 100644 src/routes/console/project-[project]/databases/[[page]]/gridView.svelte delete mode 100644 src/routes/console/project-[project]/databases/[[page]]/store.ts delete mode 100644 src/routes/console/project-[project]/databases/[[page]]/tableView.svelte delete mode 100644 src/routes/console/project-[project]/databases/database-[database]/gridView.svelte delete mode 100644 src/routes/console/project-[project]/databases/database-[database]/tableView.svelte diff --git a/src/lib/components/customPagination.svelte b/src/lib/components/customPagination.svelte deleted file mode 100644 index 4285091d6..000000000 --- a/src/lib/components/customPagination.svelte +++ /dev/null @@ -1,52 +0,0 @@ - - -
    -
    - -

    {name} per page. Total results: {total}

    -
    - -
    diff --git a/src/lib/components/index.ts b/src/lib/components/index.ts index 4f6f1e303..ec7cd9165 100644 --- a/src/lib/components/index.ts +++ b/src/lib/components/index.ts @@ -48,5 +48,4 @@ export { default as Heading } from './heading.svelte'; export { default as Output } from './output.svelte'; export { default as ViewSelector } from './viewSelector.svelte'; export { default as LabelCard } from './labelCard.svelte'; -export { default as CustomPagination } from './customPagination.svelte'; export { default as Limit } from './limit.svelte'; diff --git a/src/routes/console/project-[project]/databases/[[page]]/gridView.svelte b/src/routes/console/project-[project]/databases/[[page]]/gridView.svelte deleted file mode 100644 index 20df70338..000000000 --- a/src/routes/console/project-[project]/databases/[[page]]/gridView.svelte +++ /dev/null @@ -1,40 +0,0 @@ - - - (showCreate = true)} - event="database"> - {#each data.databases.databases as database} - - {database.name} - - - Database ID - - - {/each} - -

    Create a new database

    -
    -
    - - diff --git a/src/routes/console/project-[project]/databases/[[page]]/store.ts b/src/routes/console/project-[project]/databases/[[page]]/store.ts deleted file mode 100644 index f462b985c..000000000 --- a/src/routes/console/project-[project]/databases/[[page]]/store.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { writable } from 'svelte/store'; - -export type Column = { - id: string; - title: string; - show: boolean; - width?: number; -}; - -export const columns = writable([ - { id: '$id', title: 'Database ID', show: true, width: 50 }, - { id: 'name', title: 'Name', show: true, width: 120 }, - { id: '$createdAt', title: 'Created', show: true, width: 120 }, - { id: '$updatedAt', title: 'Updated', show: true, width: 120 } -]); diff --git a/src/routes/console/project-[project]/databases/[[page]]/tableView.svelte b/src/routes/console/project-[project]/databases/[[page]]/tableView.svelte deleted file mode 100644 index fcb25e521..000000000 --- a/src/routes/console/project-[project]/databases/[[page]]/tableView.svelte +++ /dev/null @@ -1,77 +0,0 @@ - - - - - {#each $columns as column} - {#if column.show} - {column.title} - {/if} - {/each} - - - {#each data.databases.databases as database} - - {#each $columns as column} - {#if column.show} - {#if column.id === '$id'} - {#key $columns} - - - - - - - {/key} - {:else if column.id === 'name'} - - {database.name} - - {:else if column.id === '$updatedAt'} - - {toLocaleDateTime(database.$updatedAt)} - - {:else if column.id === '$createdAt'} - - {toLocaleDateTime(database.$createdAt)} - - {/if} - {/if} - {/each} - - {/each} - - - - diff --git a/src/routes/console/project-[project]/databases/database-[database]/gridView.svelte b/src/routes/console/project-[project]/databases/database-[database]/gridView.svelte deleted file mode 100644 index cc3c2772a..000000000 --- a/src/routes/console/project-[project]/databases/database-[database]/gridView.svelte +++ /dev/null @@ -1,48 +0,0 @@ - - - (showCreate = true)}> - {#each data.collections.collections as collection} - - {collection.name} - - {#if !collection.enabled} - disabled - {/if} - - - Collection ID - - - {/each} - -

    Create a new collection

    -
    -
    - - diff --git a/src/routes/console/project-[project]/databases/database-[database]/tableView.svelte b/src/routes/console/project-[project]/databases/database-[database]/tableView.svelte deleted file mode 100644 index 4763fc168..000000000 --- a/src/routes/console/project-[project]/databases/database-[database]/tableView.svelte +++ /dev/null @@ -1,78 +0,0 @@ - - - - - {#each $columns as column} - {#if column.show} - {column.title} - {/if} - {/each} - - - {#each data.collections.collections as collection} - - {#each $columns as column} - {#if column.show} - {#if column.id === '$id'} - {#key $columns} - - - - - - - {/key} - {:else if column.id === 'name'} - - {collection.name} - - {:else if column.id === '$updatedAt'} - - {toLocaleDateTime(collection.$updatedAt)} - - {:else if column.id === '$createdAt'} - - {toLocaleDateTime(collection.$createdAt)} - - {/if} - {/if} - {/each} - - {/each} - - - - From 0e8d0f32f9b201e1d6bf8f9ae26b38336fe05a26 Mon Sep 17 00:00:00 2001 From: Arman Date: Fri, 24 Mar 2023 12:58:49 +0100 Subject: [PATCH 039/151] refactor: pages view --- src/lib/components/index.ts | 1 + src/lib/components/innerModal.svelte | 29 ++++++++++--------- src/lib/components/paginationWithLimit.svelte | 16 ++++++++++ src/lib/layout/activity.svelte | 8 ++--- .../account/organizations/+page.svelte | 13 +++++---- .../organization-[organization]/+page.svelte | 12 ++++---- .../members/+page.svelte | 12 ++++---- .../project-[project]/auth/+page.svelte | 13 +++++---- .../project-[project]/auth/teams/+page.svelte | 13 +++++---- .../teams/team-[team]/members/+page.svelte | 13 +++++---- .../project-[project]/databases/+page.svelte | 13 +++++---- .../database-[database]/+page.svelte | 13 +++++---- .../collection-[collection]/+page.svelte | 13 +++++---- .../project-[project]/functions/+page.svelte | 13 +++++---- .../function-[function]/+page.svelte | 9 ++---- .../executions/+page.svelte | 12 ++++---- .../project-[project]/storage/+page.svelte | 12 ++++---- .../storage/bucket-[bucket]/+page.svelte | 13 +++++---- 18 files changed, 129 insertions(+), 99 deletions(-) create mode 100644 src/lib/components/paginationWithLimit.svelte diff --git a/src/lib/components/index.ts b/src/lib/components/index.ts index ec7cd9165..3d69aa528 100644 --- a/src/lib/components/index.ts +++ b/src/lib/components/index.ts @@ -49,3 +49,4 @@ export { default as Output } from './output.svelte'; export { default as ViewSelector } from './viewSelector.svelte'; export { default as LabelCard } from './labelCard.svelte'; export { default as Limit } from './limit.svelte'; +export { default as PaginationWithLimit } from './paginationWithLimit.svelte'; diff --git a/src/lib/components/innerModal.svelte b/src/lib/components/innerModal.svelte index 33cc25b08..7702db233 100644 --- a/src/lib/components/innerModal.svelte +++ b/src/lib/components/innerModal.svelte @@ -2,6 +2,7 @@ import { FormItem } from '$lib/elements/forms'; export let show = false; + export let closable = true; {#if show} @@ -13,21 +14,23 @@ - - + {#if closable} + + {/if}
    +

    + +

    -

    - -

    + diff --git a/src/lib/components/paginationWithLimit.svelte b/src/lib/components/paginationWithLimit.svelte new file mode 100644 index 000000000..6eefee89b --- /dev/null +++ b/src/lib/components/paginationWithLimit.svelte @@ -0,0 +1,16 @@ + + +
    + +
    + +
    +
    diff --git a/src/lib/layout/activity.svelte b/src/lib/layout/activity.svelte index 8afec6a43..a5d5b0986 100644 --- a/src/lib/layout/activity.svelte +++ b/src/lib/layout/activity.svelte @@ -1,5 +1,5 @@ - + + + {/if} + {:else} + {@const formatted = formatColumn(document[column.id])} + +
    + {formatted.value} +
    +
    + {/if} + {/if} {/each} {/each} + + From be2510ce1022553f61c94d9de8fbc824cdf49427 Mon Sep 17 00:00:00 2001 From: Arman Date: Fri, 24 Mar 2023 17:45:06 +0100 Subject: [PATCH 041/151] tests and small fix to attributes dropdown --- src/lib/helpers/array.ts | 4 +- .../collection-[collection]/+page.svelte | 2 +- tests/unit/helpers/array.test.ts | 193 ++++++++++++++++++ 3 files changed, 196 insertions(+), 3 deletions(-) create mode 100644 tests/unit/helpers/array.test.ts diff --git a/src/lib/helpers/array.ts b/src/lib/helpers/array.ts index 67a50a180..4527291b4 100644 --- a/src/lib/helpers/array.ts +++ b/src/lib/helpers/array.ts @@ -6,8 +6,8 @@ export function intersection(arr1: unknown[], arr2: unknown[]) { export function difference(arr1: unknown[], arr2: unknown[]) { const set = new Set(arr2); - const intersection = new Set(arr1.filter((elem) => !set.has(elem))); - return Array.from(intersection); + const difference = new Set(arr1.filter((elem) => !set.has(elem))); + return Array.from(difference); } export function symmetricDifference(arr1: unknown[], arr2: unknown[]) { diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/+page.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/+page.svelte index 33f748dae..0e4ccb404 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/+page.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/+page.svelte @@ -97,4 +97,4 @@ {/if} - + diff --git a/tests/unit/helpers/array.test.ts b/tests/unit/helpers/array.test.ts new file mode 100644 index 000000000..a2005dbf8 --- /dev/null +++ b/tests/unit/helpers/array.test.ts @@ -0,0 +1,193 @@ +import { + at, + difference, + empty, + intersection, + last, + remove, + symmetricDifference +} from '$lib/helpers/array'; + +const tests = [ + { + arr1: [1, 2, 3], + arr2: [2, 3, 4], + expectedIntersection: [2, 3], + expectedDifference: [1], + expectedSymmetricDifference: [1, 4] + }, + { + arr1: ['a', 'b', 'c'], + arr2: ['b', 'c', 'd'], + expectedIntersection: ['b', 'c'], + expectedDifference: ['a'], + expectedSymmetricDifference: ['a', 'd'] + }, + { + arr1: [1, 'a', { key: 'value' }], + arr2: ['a', { key: 'value' }, 1], + expectedIntersection: [1, 'a'], + expectedDifference: [{ key: 'value' }], + expectedSymmetricDifference: [{ key: 'value' }, { key: 'value' }] + }, + { + arr1: [], + arr2: [1, 2, 3], + expectedIntersection: [], + expectedDifference: [], + expectedSymmetricDifference: [1, 2, 3] + }, + { + arr1: [1, 2, 3], + arr2: [], + expectedIntersection: [], + expectedDifference: [1, 2, 3], + expectedSymmetricDifference: [1, 2, 3] + }, + { + arr1: [1, 2, 3], + arr2: [4, 5, 6], + expectedIntersection: [], + expectedDifference: [1, 2, 3], + expectedSymmetricDifference: [1, 2, 3, 4, 5, 6] + } +]; + +// +// INTERSECTION +// +tests.forEach((test, index) => { + it(`should find the intersection of arrays - test case #${index + 1}`, () => { + const result = intersection(test.arr1, test.arr2); + expect(result).toEqual(test.expectedIntersection); + }); +}); + +// +// DIFFERENCE +// + +tests.forEach((test, index) => { + it(`should find the difference of arrays - test case #${index + 1}`, () => { + const result = difference(test.arr1, test.arr2); + expect(result).toEqual(test.expectedDifference); + }); +}); + +// +// SYMMETRIC DIFFERENCE +// + +tests.forEach((test, index) => { + it(`should find the symmetric difference of arrays - test case #${index + 1}`, () => { + const result = symmetricDifference(test.arr1, test.arr2); + expect(result).toEqual(test.expectedSymmetricDifference); + }); +}); + +// +// REMOVE +// + +describe('remove function', () => { + test('removes an element at a specific index', () => { + const arr = [1, 2, 3, 4]; + const index = 2; + const expectedArr = [1, 2, 4]; + expect(remove(arr, index)).toEqual(expectedArr); + }); + + test('returns the same array if the index is out of range', () => { + const arr = [1, 2, 3, 4]; + const index = 10; + expect(remove(arr, index)).toEqual(arr); + }); + + test('returns an empty array if the input array is empty', () => { + const arr: number[] = []; + const index = 0; + expect(remove(arr, index)).toEqual([]); + }); +}); + +// +// EMPTY +// + +describe('empty function', () => { + test('returns true for an empty array', () => { + expect(empty([])).toBe(true); + }); + + test('returns true for undefined input', () => { + expect(empty(undefined)).toBe(true); + }); + + test('returns true for null input', () => { + expect(empty(null)).toBe(true); + }); + + test('returns false for a non-empty array', () => { + expect(empty([1, 2, 3])).toBe(false); + }); +}); + +// +// AT +// + +describe('at function', () => { + test('returns undefined for an empty array', () => { + expect(at([], 0)).toBeUndefined(); + }); + + test('returns undefined when index is out of bounds', () => { + expect(at([1, 2, 3], 10)).toBeUndefined(); + expect(at([1, 2, 3], -4)).toBeUndefined(); + }); + + test('returns correct value for a positive index', () => { + expect(at([1, 2, 3], 1)).toBe(2); + expect(at(['a', 'b', 'c'], 2)).toBe('c'); + }); + + test('returns correct value for a negative index', () => { + expect(at([1, 2, 3], -1)).toBe(3); + expect(at(['a', 'b', 'c'], -2)).toBe('b'); + }); + + test('works for arrays with mixed types', () => { + expect(at([1, 'two', false], 1)).toBe('two'); + }); + + test('works for readonly arrays', () => { + const readonlyArray: readonly number[] = [1, 2, 3]; + expect(at(readonlyArray, 0)).toBe(1); + }); +}); + +// +// LAST +// +describe('last function', () => { + test('returns undefined for an empty array', () => { + expect(last([])).toBeUndefined(); + }); + + test('returns the last element of an array with a single element', () => { + expect(last([1])).toBe(1); + }); + + test('returns the last element of a multi-element array', () => { + expect(last([1, 2, 3])).toBe(3); + }); + + test('works with arrays of mixed types', () => { + expect(last(['a', 1, true])).toBe(true); + }); + + test('works with readonly arrays', () => { + const readonlyArray: readonly number[] = [1, 2, 3]; + expect(last(readonlyArray)).toBe(3); + }); +}); From b38e26741786edec6744df15322691d5fb0476bb Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 27 Mar 2023 11:53:19 +0200 Subject: [PATCH 042/151] fix: from QA --- src/lib/components/viewSelector.svelte | 11 +++- src/lib/elements/forms/formList.svelte | 6 +- src/lib/elements/forms/inputId.svelte | 2 +- .../elements/forms/inputSelectSearch.svelte | 3 +- .../attributes/relationship.svelte | 5 +- .../attributes/relationship.svelte | 1 + .../settings/displayName.svelte | 66 ++++++++++--------- 7 files changed, 57 insertions(+), 37 deletions(-) diff --git a/src/lib/components/viewSelector.svelte b/src/lib/components/viewSelector.svelte index 500e40a03..aa3737df1 100644 --- a/src/lib/components/viewSelector.svelte +++ b/src/lib/components/viewSelector.svelte @@ -15,6 +15,7 @@ import { preferences } from '$lib/stores/preferences'; import { onMount } from 'svelte'; import { View } from '$lib/helpers/load'; + import { tooltip } from '$lib/actions/tooltip'; export let columns: Writable; export let view: View; @@ -108,7 +109,10 @@ class="toggle-button-element" aria-label="List View" type="button" - class:is-selected={view === View.Table}> + class:is-selected={view === View.Table} + use:tooltip={{ + content: 'Column View' + }}>
    From 941c314b6a2464b44e91c79c687885d2bbf327fe Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 27 Mar 2023 14:14:03 +0200 Subject: [PATCH 043/151] fix: from QA --- package-lock.json | 14 +++++++------- package.json | 2 +- src/lib/components/viewSelector.svelte | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index bbadb339d..5fda62e0a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "dependencies": { "@analytics/google-analytics": "^1.0.5", "@appwrite.io/pink": "^0.0.6-rc.4", - "@appwrite.io/pink-icons": "^0.0.6-rc.3", + "@appwrite.io/pink-icons": "^0.0.6-rc.4", "@aw-labs/appwrite-console": "^13.1.0", "@popperjs/core": "^2.11.6", "@sentry/svelte": "^7.44.2", @@ -148,9 +148,9 @@ "integrity": "sha512-1Yw7u/COtxx06BfwlI+kVhsa/upKYzmCNrT4c8QDeCY2KMYlnijkUjtHiPU08HxyTIVB5j6d75O0YWVIHwQS8g==" }, "node_modules/@appwrite.io/pink": { - "version": "0.0.6-rc.4", - "resolved": "https://registry.npmjs.org/@appwrite.io/pink/-/pink-0.0.6-rc.4.tgz", - "integrity": "sha512-vSBq0wB4lQMM8vRPCh0B2M8aWIdrFQSf14X58y8DVjj0djg/gwQ51pwxLojXAol7rwFNhh73NSqTuRC4y+BpxA==", + "version": "0.0.6-rc.5", + "resolved": "https://registry.npmjs.org/@appwrite.io/pink/-/pink-0.0.6-rc.5.tgz", + "integrity": "sha512-3taoSvB1LtrFcESp/SwdlEGGZwIQcztdBBhbgc1LiK94YuGGLp8Ec2cSGG0w+LXHuZux1gOxXDA5uEkbMvrVJA==", "dependencies": { "@appwrite.io/pink-icons": "*", "normalize.css": "^8.0.1", @@ -158,9 +158,9 @@ } }, "node_modules/@appwrite.io/pink-icons": { - "version": "0.0.6-rc.3", - "resolved": "https://registry.npmjs.org/@appwrite.io/pink-icons/-/pink-icons-0.0.6-rc.3.tgz", - "integrity": "sha512-gqVRVeG7k9lCuH+FFSrahDmBD11eJXdPmqw99OT77MiFODnaX86LTjV/rHpXKeBNXJb1LJ0bqKNsuczAFrLnGw==" + "version": "0.0.6-rc.5", + "resolved": "https://registry.npmjs.org/@appwrite.io/pink-icons/-/pink-icons-0.0.6-rc.5.tgz", + "integrity": "sha512-Jv6ecAPhOp50SMiwBiWjK1yl+E/ZK0GzqVxo3nSoo2hIGO8GhfUhgK+yNJc0J9ccV0QjrU+3xxcmzuBWNXJfkA==" }, "node_modules/@aw-labs/appwrite-console": { "version": "13.1.0", diff --git a/package.json b/package.json index 0f895b303..30ca1244a 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ }, "dependencies": { "@analytics/google-analytics": "^1.0.5", - "@appwrite.io/pink-icons": "^0.0.6-rc.3", + "@appwrite.io/pink-icons": "^0.0.6-rc.4", "@appwrite.io/pink": "^0.0.6-rc.4", "@aw-labs/appwrite-console": "^13.1.0", "@popperjs/core": "^2.11.6", diff --git a/src/lib/components/viewSelector.svelte b/src/lib/components/viewSelector.svelte index aa3737df1..a5fa5a665 100644 --- a/src/lib/components/viewSelector.svelte +++ b/src/lib/components/viewSelector.svelte @@ -82,7 +82,7 @@ class="icon-view-boards u-opacity-50" aria-hidden="true" aria-label="columns" /> - Columns + Columns {selectedColumnsNumber} From df2d8067a06fcc39d0cc626a3c4b3053af5f5dfe Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 27 Mar 2023 14:18:13 +0200 Subject: [PATCH 044/151] fix: package lock --- package-lock.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 13d984994..51f51e966 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,8 @@ "dependencies": { "@analytics/google-analytics": "^1.0.5", "@appwrite.io/console": "0.1.0-preview-0.0", - "@appwrite.io/pink": "0.0.6-rc.2", + "@appwrite.io/pink": "^0.0.6-rc.4", + "@appwrite.io/pink-icons": "^0.0.6-rc.4", "@popperjs/core": "^2.11.6", "@sentry/svelte": "^7.44.2", "@sentry/tracing": "^7.44.2", From 010d26af21b98bd717ad7f55394740e892dac3e1 Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 27 Mar 2023 14:58:26 +0200 Subject: [PATCH 045/151] run linter --- package-lock.json | 1190 +++++++++-------- package.json | 3 +- src/lib/components/code.svelte | 2 +- src/lib/components/dropList.svelte | 2 +- src/lib/components/paginationWithLimit.svelte | 2 +- src/lib/components/permissions/row.svelte | 4 +- src/lib/components/permissions/user.svelte | 4 +- src/lib/elements/forms/inputFile.svelte | 2 +- src/lib/elements/forms/inputSecret.svelte | 2 +- .../elements/forms/inputSelectSearch.svelte | 2 +- src/lib/layout/activity.svelte | 2 +- .../account/organizations/+page.svelte | 2 +- .../console/account/sessions/+page.svelte | 2 +- .../project-[project]/auth/+page.svelte | 4 +- .../auth/security/updateUsersLimit.svelte | 2 +- .../auth/user-[user]/sessions/+page.svelte | 2 +- .../database-[database]/+page.svelte | 2 +- .../collection-[collection]/+page.svelte | 2 +- .../attributes/+page.svelte | 2 +- .../attributes/relationship.svelte | 4 +- .../settings/domains/wizard/step1.svelte | 2 +- .../bucket-[bucket]/settings/+page.svelte | 2 +- src/routes/invite/+page.svelte | 2 +- 23 files changed, 632 insertions(+), 611 deletions(-) diff --git a/package-lock.json b/package-lock.json index 51f51e966..de22f0c6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,5 @@ { "name": "@appwrite/console", - "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { @@ -9,8 +8,7 @@ "dependencies": { "@analytics/google-analytics": "^1.0.5", "@appwrite.io/console": "0.1.0-preview-0.0", - "@appwrite.io/pink": "^0.0.6-rc.4", - "@appwrite.io/pink-icons": "^0.0.6-rc.4", + "@appwrite.io/pink": "^0.0.6-rc.2", "@popperjs/core": "^2.11.6", "@sentry/svelte": "^7.44.2", "@sentry/tracing": "^7.44.2", @@ -58,9 +56,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.1.0.tgz", - "integrity": "sha512-mMVJ/j/GbZ/De4ZHWbQAQO1J6iVnjtZLc9WEdkUQb8S/Bu2cAF2bETXUgMAdvMG3/ngtKmcNBe+Zms9bg6jnQQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.2.0.tgz", + "integrity": "sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==", "dev": true }, "node_modules/@ampproject/remapping": { @@ -184,9 +182,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.20.14", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", - "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", + "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", "dev": true, "peer": true, "engines": { @@ -194,22 +192,22 @@ } }, "node_modules/@babel/core": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", - "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", + "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", "dev": true, "peer": true, "dependencies": { - "@ampproject/remapping": "^2.1.0", + "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", + "@babel/generator": "^7.21.3", "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helpers": "^7.20.7", - "@babel/parser": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.2", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.3", "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.12", - "@babel/types": "^7.20.7", + "@babel/traverse": "^7.21.3", + "@babel/types": "^7.21.3", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -242,14 +240,15 @@ } }, "node_modules/@babel/generator": { - "version": "7.20.14", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", - "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", + "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", "dev": true, "peer": true, "dependencies": { - "@babel/types": "^7.20.7", + "@babel/types": "^7.21.3", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { @@ -312,14 +311,14 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", "dev": true, "peer": true, "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -352,9 +351,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", - "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", "dev": true, "peer": true, "dependencies": { @@ -364,8 +363,8 @@ "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.19.1", "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" }, "engines": { "node": ">=6.9.0" @@ -427,9 +426,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", "dev": true, "peer": true, "engines": { @@ -437,15 +436,15 @@ } }, "node_modules/@babel/helpers": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", - "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", "dev": true, "peer": true, "dependencies": { "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.13", - "@babel/types": "^7.20.7" + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -537,9 +536,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.15", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", - "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", + "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", "dev": true, "peer": true, "bin": { @@ -741,9 +740,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", - "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.11" @@ -768,20 +767,20 @@ } }, "node_modules/@babel/traverse": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", - "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", + "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", "dev": true, "peer": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", + "@babel/generator": "^7.21.3", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", + "@babel/helper-function-name": "^7.21.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.13", - "@babel/types": "^7.20.7", + "@babel/parser": "^7.21.3", + "@babel/types": "^7.21.3", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -800,9 +799,9 @@ } }, "node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", + "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", "dev": true, "peer": true, "dependencies": { @@ -822,9 +821,9 @@ "peer": true }, "node_modules/@esbuild/android-arm": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.12.tgz", - "integrity": "sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.14.tgz", + "integrity": "sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g==", "cpu": [ "arm" ], @@ -838,9 +837,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.12.tgz", - "integrity": "sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.14.tgz", + "integrity": "sha512-eLOpPO1RvtsP71afiFTvS7tVFShJBCT0txiv/xjFBo5a7R7Gjw7X0IgIaFoLKhqXYAXhahoXm7qAmRXhY4guJg==", "cpu": [ "arm64" ], @@ -854,9 +853,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.12.tgz", - "integrity": "sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.14.tgz", + "integrity": "sha512-nrfQYWBfLGfSGLvRVlt6xi63B5IbfHm3tZCdu/82zuFPQ7zez4XjmRtF/wIRYbJQ/DsZrxJdEvYFE67avYXyng==", "cpu": [ "x64" ], @@ -870,9 +869,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.12.tgz", - "integrity": "sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.14.tgz", + "integrity": "sha512-eoSjEuDsU1ROwgBH/c+fZzuSyJUVXQTOIN9xuLs9dE/9HbV/A5IqdXHU1p2OfIMwBwOYJ9SFVGGldxeRCUJFyw==", "cpu": [ "arm64" ], @@ -886,9 +885,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.12.tgz", - "integrity": "sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.14.tgz", + "integrity": "sha512-zN0U8RWfrDttdFNkHqFYZtOH8hdi22z0pFm0aIJPsNC4QQZv7je8DWCX5iA4Zx6tRhS0CCc0XC2m7wKsbWEo5g==", "cpu": [ "x64" ], @@ -902,9 +901,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.12.tgz", - "integrity": "sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.14.tgz", + "integrity": "sha512-z0VcD4ibeZWVQCW1O7szaLxGsx54gcCnajEJMdYoYjLiq4g1jrP2lMq6pk71dbS5+7op/L2Aod+erw+EUr28/A==", "cpu": [ "arm64" ], @@ -918,9 +917,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.12.tgz", - "integrity": "sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.14.tgz", + "integrity": "sha512-hd9mPcxfTgJlolrPlcXkQk9BMwNBvNBsVaUe5eNUqXut6weDQH8whcNaKNF2RO8NbpT6GY8rHOK2A9y++s+ehw==", "cpu": [ "x64" ], @@ -934,9 +933,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.12.tgz", - "integrity": "sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.14.tgz", + "integrity": "sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg==", "cpu": [ "arm" ], @@ -950,9 +949,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.12.tgz", - "integrity": "sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.14.tgz", + "integrity": "sha512-FhAMNYOq3Iblcj9i+K0l1Fp/MHt+zBeRu/Qkf0LtrcFu3T45jcwB6A1iMsemQ42vR3GBhjNZJZTaCe3VFPbn9g==", "cpu": [ "arm64" ], @@ -966,9 +965,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.12.tgz", - "integrity": "sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.14.tgz", + "integrity": "sha512-91OK/lQ5y2v7AsmnFT+0EyxdPTNhov3y2CWMdizyMfxSxRqHazXdzgBKtlmkU2KYIc+9ZK3Vwp2KyXogEATYxQ==", "cpu": [ "ia32" ], @@ -982,9 +981,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.12.tgz", - "integrity": "sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.14.tgz", + "integrity": "sha512-vp15H+5NR6hubNgMluqqKza85HcGJgq7t6rMH7O3Y6ApiOWPkvW2AJfNojUQimfTp6OUrACUXfR4hmpcENXoMQ==", "cpu": [ "loong64" ], @@ -998,9 +997,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.12.tgz", - "integrity": "sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.14.tgz", + "integrity": "sha512-90TOdFV7N+fgi6c2+GO9ochEkmm9kBAKnuD5e08GQMgMINOdOFHuYLPQ91RYVrnWwQ5683sJKuLi9l4SsbJ7Hg==", "cpu": [ "mips64el" ], @@ -1014,9 +1013,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.12.tgz", - "integrity": "sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.14.tgz", + "integrity": "sha512-NnBGeoqKkTugpBOBZZoktQQ1Yqb7aHKmHxsw43NddPB2YWLAlpb7THZIzsRsTr0Xw3nqiPxbA1H31ZMOG+VVPQ==", "cpu": [ "ppc64" ], @@ -1030,9 +1029,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.12.tgz", - "integrity": "sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.14.tgz", + "integrity": "sha512-0qdlKScLXA8MGVy21JUKvMzCYWovctuP8KKqhtE5A6IVPq4onxXhSuhwDd2g5sRCzNDlDjitc5sX31BzDoL5Fw==", "cpu": [ "riscv64" ], @@ -1046,9 +1045,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.12.tgz", - "integrity": "sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.14.tgz", + "integrity": "sha512-Hdm2Jo1yaaOro4v3+6/zJk6ygCqIZuSDJHdHaf8nVH/tfOuoEX5Riv03Ka15LmQBYJObUTNS1UdyoMk0WUn9Ww==", "cpu": [ "s390x" ], @@ -1062,9 +1061,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.12.tgz", - "integrity": "sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.14.tgz", + "integrity": "sha512-8KHF17OstlK4DuzeF/KmSgzrTWQrkWj5boluiiq7kvJCiQVzUrmSkaBvcLB2UgHpKENO2i6BthPkmUhNDaJsVw==", "cpu": [ "x64" ], @@ -1078,9 +1077,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.12.tgz", - "integrity": "sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.14.tgz", + "integrity": "sha512-nVwpqvb3yyXztxIT2+VsxJhB5GCgzPdk1n0HHSnchRAcxqKO6ghXwHhJnr0j/B+5FSyEqSxF4q03rbA2fKXtUQ==", "cpu": [ "x64" ], @@ -1094,9 +1093,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.12.tgz", - "integrity": "sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.14.tgz", + "integrity": "sha512-1RZ7uQQ9zcy/GSAJL1xPdN7NDdOOtNEGiJalg/MOzeakZeTrgH/DoCkbq7TaPDiPhWqnDF+4bnydxRqQD7il6g==", "cpu": [ "x64" ], @@ -1110,9 +1109,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.12.tgz", - "integrity": "sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.14.tgz", + "integrity": "sha512-nqMjDsFwv7vp7msrwWRysnM38Sd44PKmW8EzV01YzDBTcTWUpczQg6mGao9VLicXSgW/iookNK6AxeogNVNDZA==", "cpu": [ "x64" ], @@ -1126,9 +1125,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.12.tgz", - "integrity": "sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.14.tgz", + "integrity": "sha512-xrD0mccTKRBBIotrITV7WVQAwNJ5+1va6L0H9zN92v2yEdjfAN7864cUaZwJS7JPEs53bDTzKFbfqVlG2HhyKQ==", "cpu": [ "arm64" ], @@ -1142,9 +1141,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.12.tgz", - "integrity": "sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.14.tgz", + "integrity": "sha512-nXpkz9bbJrLLyUTYtRotSS3t5b+FOuljg8LgLdINWFs3FfqZMtbnBCZFUmBzQPyxqU87F8Av+3Nco/M3hEcu1w==", "cpu": [ "ia32" ], @@ -1158,9 +1157,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.12.tgz", - "integrity": "sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.14.tgz", + "integrity": "sha512-gPQmsi2DKTaEgG14hc3CHXHp62k8g6qr0Pas+I4lUxRMugGSATh/Bi8Dgusoz9IQ0IfdrvLpco6kujEIBoaogA==", "cpu": [ "x64" ], @@ -1174,9 +1173,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.3.0.tgz", - "integrity": "sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, "dependencies": { "eslint-visitor-keys": "^3.3.0" @@ -1189,9 +1188,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz", - "integrity": "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.1.tgz", + "integrity": "sha512-BISJ6ZE4xQsuL/FmsyRaiffpq977bMlsKfGHTQrOGFErfByxIe6iZTxPf/00Zon9b9a7iUykfQwejN3s2ZW/Bw==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -1380,17 +1379,17 @@ } }, "node_modules/@jest/console": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.4.3.tgz", - "integrity": "sha512-W/o/34+wQuXlgqlPYTansOSiBnuxrTv61dEVkA6HNmpcgHLUjfaUbdqt6oVvOzaawwo9IdW9QOtMgQ1ScSZC4A==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", + "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", "dev": true, "peer": true, "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.4.3", - "jest-util": "^29.4.3", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", "slash": "^3.0.0" }, "engines": { @@ -1398,38 +1397,38 @@ } }, "node_modules/@jest/core": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.4.3.tgz", - "integrity": "sha512-56QvBq60fS4SPZCuM7T+7scNrkGIe7Mr6PVIXUpu48ouvRaWOFqRPV91eifvFM0ay2HmfswXiGf97NGUN5KofQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", + "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", "dev": true, "peer": true, "dependencies": { - "@jest/console": "^29.4.3", - "@jest/reporters": "^29.4.3", - "@jest/test-result": "^29.4.3", - "@jest/transform": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/console": "^29.5.0", + "@jest/reporters": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.4.3", - "jest-config": "^29.4.3", - "jest-haste-map": "^29.4.3", - "jest-message-util": "^29.4.3", + "jest-changed-files": "^29.5.0", + "jest-config": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.4.3", - "jest-resolve-dependencies": "^29.4.3", - "jest-runner": "^29.4.3", - "jest-runtime": "^29.4.3", - "jest-snapshot": "^29.4.3", - "jest-util": "^29.4.3", - "jest-validate": "^29.4.3", - "jest-watcher": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-resolve-dependencies": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "jest-watcher": "^29.5.0", "micromatch": "^4.0.4", - "pretty-format": "^29.4.3", + "pretty-format": "^29.5.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -1459,9 +1458,9 @@ } }, "node_modules/@jest/core/node_modules/pretty-format": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", - "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", "dev": true, "peer": true, "dependencies": { @@ -1481,39 +1480,39 @@ "peer": true }, "node_modules/@jest/environment": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.4.3.tgz", - "integrity": "sha512-dq5S6408IxIa+lr54zeqce+QgI+CJT4nmmA+1yzFgtcsGK8c/EyiUb9XQOgz3BMKrRDfKseeOaxj2eO8LlD3lA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", + "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", "dev": true, "peer": true, "dependencies": { - "@jest/fake-timers": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", - "jest-mock": "^29.4.3" + "jest-mock": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.4.3.tgz", - "integrity": "sha512-iktRU/YsxEtumI9zsPctYUk7ptpC+AVLLk1Ax3AsA4g1C+8OOnKDkIQBDHtD5hA/+VtgMd5AWI5gNlcAlt2vxQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", "dev": true, "peer": true, "dependencies": { - "expect": "^29.4.3", - "jest-snapshot": "^29.4.3" + "expect": "^29.5.0", + "jest-snapshot": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.4.3.tgz", - "integrity": "sha512-/6JWbkxHOP8EoS8jeeTd9dTfc9Uawi+43oLKHfp6zzux3U2hqOOVnV3ai4RpDYHOccL6g+5nrxpoc8DmJxtXVQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", + "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", "dev": true, "dependencies": { "jest-get-type": "^29.4.3" @@ -1523,51 +1522,51 @@ } }, "node_modules/@jest/fake-timers": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.4.3.tgz", - "integrity": "sha512-4Hote2MGcCTWSD2gwl0dwbCpBRHhE6olYEuTj8FMowdg3oQWNKr2YuxenPQYZ7+PfqPY1k98wKDU4Z+Hvd4Tiw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", + "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", "dev": true, "peer": true, "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.5.0", "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.4.3", - "jest-mock": "^29.4.3", - "jest-util": "^29.4.3" + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.4.3.tgz", - "integrity": "sha512-8BQ/5EzfOLG7AaMcDh7yFCbfRLtsc+09E1RQmRBI4D6QQk4m6NSK/MXo+3bJrBN0yU8A2/VIcqhvsOLFmziioA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", + "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", "dev": true, "peer": true, "dependencies": { - "@jest/environment": "^29.4.3", - "@jest/expect": "^29.4.3", - "@jest/types": "^29.4.3", - "jest-mock": "^29.4.3" + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/types": "^29.5.0", + "jest-mock": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.4.3.tgz", - "integrity": "sha512-sr2I7BmOjJhyqj9ANC6CTLsL4emMoka7HkQpcoMRlhCbQJjz2zsRzw0BDPiPyEFDXAbxKgGFYuQZiSJ1Y6YoTg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", + "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", "dev": true, "peer": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.4.3", - "@jest/test-result": "^29.4.3", - "@jest/transform": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/console": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", "@jridgewell/trace-mapping": "^0.3.15", "@types/node": "*", "chalk": "^4.0.0", @@ -1580,9 +1579,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.4.3", - "jest-util": "^29.4.3", - "jest-worker": "^29.4.3", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -1628,14 +1627,14 @@ } }, "node_modules/@jest/test-result": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.4.3.tgz", - "integrity": "sha512-Oi4u9NfBolMq9MASPwuWTlC5WvmNRwI4S8YrQg5R5Gi47DYlBe3sh7ILTqi/LGrK1XUE4XY9KZcQJTH1WJCLLA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", + "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", "dev": true, "peer": true, "dependencies": { - "@jest/console": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/console": "^29.5.0", + "@jest/types": "^29.5.0", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -1644,15 +1643,15 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.4.3.tgz", - "integrity": "sha512-yi/t2nES4GB4G0mjLc0RInCq/cNr9dNwJxcGg8sslajua5Kb4kmozAc+qPLzplhBgfw1vLItbjyHzUN92UXicw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", + "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", "dev": true, "peer": true, "dependencies": { - "@jest/test-result": "^29.4.3", + "@jest/test-result": "^29.5.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.3", + "jest-haste-map": "^29.5.0", "slash": "^3.0.0" }, "engines": { @@ -1660,23 +1659,23 @@ } }, "node_modules/@jest/transform": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.4.3.tgz", - "integrity": "sha512-8u0+fBGWolDshsFgPQJESkDa72da/EVwvL+II0trN2DR66wMwiQ9/CihaGfHdlLGFzbBZwMykFtxuwFdZqlKwg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", + "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", "dev": true, "peer": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/types": "^29.4.3", + "@jest/types": "^29.5.0", "@jridgewell/trace-mapping": "^0.3.15", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.3", + "jest-haste-map": "^29.5.0", "jest-regex-util": "^29.4.3", - "jest-util": "^29.4.3", + "jest-util": "^29.5.0", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -1687,9 +1686,9 @@ } }, "node_modules/@jest/types": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.3.tgz", - "integrity": "sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "dependencies": { "@jest/schemas": "^29.4.3", @@ -1788,13 +1787,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.31.2", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.31.2.tgz", - "integrity": "sha512-BYVutxDI4JeZKV1+ups6dt5WiqKhjBtIYowyZIJ3kBDmJgsuPKsqqKNIMFbUePLSCmp2cZu+BDL427RcNKTRYw==", + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.32.1.tgz", + "integrity": "sha512-FTwjCuhlm1qHUGf4hWjfr64UMJD/z0hXYbk+O387Ioe6WdyZQ+0TBDAc6P+pHjx2xCv1VYNgrKbYrNixFWy4Dg==", "dev": true, "dependencies": { "@types/node": "*", - "playwright-core": "1.31.2" + "playwright-core": "1.32.1" }, "bin": { "playwright": "cli.js" @@ -1813,22 +1812,22 @@ "dev": true }, "node_modules/@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz", + "integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" } }, "node_modules/@sentry-internal/tracing": { - "version": "7.44.2", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.44.2.tgz", - "integrity": "sha512-3nteYNWiQDbO4yROBqduWTVR0Jah+FiU/2Tz44FcWvWyBboRP4gggaN7BDJahRwbhcRQKE9lTjGCbQLgNOuUCw==", + "version": "7.45.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.45.0.tgz", + "integrity": "sha512-0aIDY2OvUX7k2XHaimOlWkboXoQvJ9dEKvfpu0Wh0YxfUTGPa+wplUdg3WVdkk018sq1L11MKmj4MPZyYUvXhw==", "dependencies": { - "@sentry/core": "7.44.2", - "@sentry/types": "7.44.2", - "@sentry/utils": "7.44.2", + "@sentry/core": "7.45.0", + "@sentry/types": "7.45.0", + "@sentry/utils": "7.45.0", "tslib": "^1.9.3" }, "engines": { @@ -1841,15 +1840,15 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/browser": { - "version": "7.44.2", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.44.2.tgz", - "integrity": "sha512-pF2lyXkIjjCoIWUHN17zGO0R2n0/5yb7k+LehbEC1UhvSEBZW/zrRS+AeebjVF0eG2Wir3SoSe4TWt+CRQFOiA==", + "version": "7.45.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.45.0.tgz", + "integrity": "sha512-/dUrUwnI34voMj+jSJT7b5Jun+xy1utVyzzwTq3Oc22N+SB17ZOX9svZ4jl1Lu6tVJPVjPyvL6zlcbrbMwqFjg==", "dependencies": { - "@sentry-internal/tracing": "7.44.2", - "@sentry/core": "7.44.2", - "@sentry/replay": "7.44.2", - "@sentry/types": "7.44.2", - "@sentry/utils": "7.44.2", + "@sentry-internal/tracing": "7.45.0", + "@sentry/core": "7.45.0", + "@sentry/replay": "7.45.0", + "@sentry/types": "7.45.0", + "@sentry/utils": "7.45.0", "tslib": "^1.9.3" }, "engines": { @@ -1862,12 +1861,12 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/core": { - "version": "7.44.2", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.44.2.tgz", - "integrity": "sha512-m2nOHP4YX+kmWFQTzgBEsdblCuNFSB7017oLaR6/VH0a0mVWdrW7Q1gHMpw4/08uWRiA+oC2dXqCH7A1FwfGIQ==", + "version": "7.45.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.45.0.tgz", + "integrity": "sha512-xJfdTS4lRmHvZI/A5MazdnKhBJFkisKu6G9EGNLlZLre+6W4PH5sb7QX4+xoBdqG7v10Jvdia112vi762ojO2w==", "dependencies": { - "@sentry/types": "7.44.2", - "@sentry/utils": "7.44.2", + "@sentry/types": "7.45.0", + "@sentry/utils": "7.45.0", "tslib": "^1.9.3" }, "engines": { @@ -1880,26 +1879,26 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/replay": { - "version": "7.44.2", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.44.2.tgz", - "integrity": "sha512-3KO0QE0OvH0I2hP7yU3W511nEQ55yHN5jWL6V/ay2PlUR1hCw42g8/o9zARq4qw1t4k5ZY6M36ZMqnQQwISqeA==", + "version": "7.45.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.45.0.tgz", + "integrity": "sha512-smM7FIcFIyKu30BqCl8BzLo1gH/z9WwXdGX6V0fNvHab9fJZ09+xjFn+LmIyo6N8H8jjwsup0+yQ12kiF/ZsEw==", "dependencies": { - "@sentry/core": "7.44.2", - "@sentry/types": "7.44.2", - "@sentry/utils": "7.44.2" + "@sentry/core": "7.45.0", + "@sentry/types": "7.45.0", + "@sentry/utils": "7.45.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/svelte": { - "version": "7.44.2", - "resolved": "https://registry.npmjs.org/@sentry/svelte/-/svelte-7.44.2.tgz", - "integrity": "sha512-8IP1wkUv/xxFB89GPXALvkPhrT5E4FV8nNRWR34v5D4yWMl5+tL2Ca2E67lkeGf/F/KfUq71baiQAyyFBGPd0w==", + "version": "7.45.0", + "resolved": "https://registry.npmjs.org/@sentry/svelte/-/svelte-7.45.0.tgz", + "integrity": "sha512-l57h48ZYrez7w1p2U48Kq3I20QIlKC2bUWVb2KeoceUMo9IObZ9VbojZTBZImWDbQsKIEly/jFQ7/ns+IFNqfw==", "dependencies": { - "@sentry/browser": "7.44.2", - "@sentry/types": "7.44.2", - "@sentry/utils": "7.44.2", + "@sentry/browser": "7.45.0", + "@sentry/types": "7.45.0", + "@sentry/utils": "7.45.0", "magic-string": "^0.26.2", "tslib": "^1.9.3" }, @@ -1916,30 +1915,30 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/tracing": { - "version": "7.44.2", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.44.2.tgz", - "integrity": "sha512-z8wqPgpaQ4EaxPRZdx4MEWfbySSpHlYO7URJPvudyhsezDr33kyZ79QYiZP3KexoHud7gsjnkI1u/DqjdEhDng==", + "version": "7.45.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.45.0.tgz", + "integrity": "sha512-FsoFmZPzTBGvWeJH73NxSF1ot61Zw3aIZo5XolengiKnRmcrQOFxebtMKBiZ61QBRYGqsm5uT7QB7zITU6Ikgg==", "dependencies": { - "@sentry-internal/tracing": "7.44.2" + "@sentry-internal/tracing": "7.45.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/types": { - "version": "7.44.2", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.44.2.tgz", - "integrity": "sha512-vdGb2BAelXRitgKWRBF1cCAoisLsbugUaJzrGCQoIoS3lYpZ8d8r2zELE7cNoVObVoQbUHF/WFhXVv8cumj+RA==", + "version": "7.45.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.45.0.tgz", + "integrity": "sha512-iFt7msfUK8LCodFF3RKUyaxy9tJv/gpWhzxUFyNxtuVwlpmd+q6mtsFGn8Af3pbpm8A+MKyz1ebMwXj0PQqknw==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.44.2", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.44.2.tgz", - "integrity": "sha512-PzL4Z0fhIHfQacfWvgiAs+drcm4Nc45Tc8PW1RdOZtHxzhGAYZYAPniDGML586Mnlu19QM6kGHiDu+CBgnnXAQ==", + "version": "7.45.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.45.0.tgz", + "integrity": "sha512-aTY7qqtNUudd09SH5DVSKMm3iQ6ZeWufduc0I9bPZe6UMM09BDc4KmjmrzRkdQ+VaOmHo7+v+HZKQk5f+AbuTQ==", "dependencies": { - "@sentry/types": "7.44.2", + "@sentry/types": "7.45.0", "tslib": "^1.9.3" }, "engines": { @@ -1952,9 +1951,9 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sinclair/typebox": { - "version": "0.25.23", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.23.tgz", - "integrity": "sha512-VEB8ygeP42CFLWyAJhN5OklpxUliqdNEUcXb4xZ/CINqtYGTjL5ukluKdKzQ0iWdUxyQ7B0539PAUhHKrCNWSQ==", + "version": "0.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", "dev": true }, "node_modules/@sinonjs/commons": { @@ -2064,9 +2063,9 @@ } }, "node_modules/@testing-library/dom": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.0.1.tgz", - "integrity": "sha512-fTOVsMY9QLFCCXRHG3Ese6cMH5qIWwSbgxZsgeF5TNsy81HKaZ4kgehnSF8FsR3OF+numlIV2YcU79MzbnhSig==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.2.0.tgz", + "integrity": "sha512-xTEnpUKiV/bMyEsE5bT4oYA0x0Z/colMtxzUY8bKyPXBNLn/e0V4ZjBZkEhms0xE4pv9QsPfSRu9AWS4y5wGvA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.10.4", @@ -2286,9 +2285,9 @@ } }, "node_modules/@types/jest": { - "version": "29.4.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.4.0.tgz", - "integrity": "sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -2308,9 +2307,9 @@ } }, "node_modules/@types/jest/node_modules/pretty-format": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", - "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", "dev": true, "dependencies": { "@jest/schemas": "^29.4.3", @@ -2334,9 +2333,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.14.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.0.tgz", - "integrity": "sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==", + "version": "18.15.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.10.tgz", + "integrity": "sha512-9avDaQJczATcXgfmMAW3MIWArOO7A+m90vuCFLr8AotWf8igO/mRoYukrk2cqZVtv38tHs33retzHEilM7FpeQ==", "dev": true }, "node_modules/@types/prettier": { @@ -2380,9 +2379,9 @@ } }, "node_modules/@types/yargs": { - "version": "17.0.22", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz", - "integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==", + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -2883,16 +2882,16 @@ } }, "node_modules/babel-jest": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.4.3.tgz", - "integrity": "sha512-o45Wyn32svZE+LnMVWv/Z4x0SwtLbh4FyGcYtR20kIWd+rdrDZ9Fzq8Ml3MYLD+mZvEdzCjZsCnYZ2jpJyQ+Nw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", + "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", "dev": true, "peer": true, "dependencies": { - "@jest/transform": "^29.4.3", + "@jest/transform": "^29.5.0", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.4.3", + "babel-preset-jest": "^29.5.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -2922,9 +2921,9 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.4.3.tgz", - "integrity": "sha512-mB6q2q3oahKphy5V7CpnNqZOCkxxZ9aokf1eh82Dy3jQmg4xvM1tGrh5y6BQUJh4a3Pj9+eLfwvAZ7VNKg7H8Q==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", + "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", "dev": true, "peer": true, "dependencies": { @@ -2962,13 +2961,13 @@ } }, "node_modules/babel-preset-jest": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.4.3.tgz", - "integrity": "sha512-gWx6COtSuma6n9bw+8/F+2PCXrIgxV/D1TJFnp6OyBK2cxPWg0K9p/sriNYeifKjpUkMViWQ09DSWtzJQRETsw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", + "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", "dev": true, "peer": true, "dependencies": { - "babel-plugin-jest-hoist": "^29.4.3", + "babel-plugin-jest-hoist": "^29.5.0", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { @@ -3123,9 +3122,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001457", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001457.tgz", - "integrity": "sha512-SDIV6bgE1aVbK6XyxdURbUE89zY7+k1BBBaOwYwkNCglXlel/E7mELiHC64HQ+W0xSKlqWhV9Wh7iHxUjMs4fA==", + "version": "1.0.30001470", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001470.tgz", + "integrity": "sha512-065uNwY6QtHCBOExzbV6m236DDhYCCtPmQUCoQtwkVqzud8v5QPidoMr6CoMkC2nfp6nksjttqWQRRh75LqUmA==", "dev": true, "funding": [ { @@ -3537,9 +3536,9 @@ "dev": true }, "node_modules/deepmerge": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", - "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "engines": { "node": ">=0.10.0" @@ -3674,12 +3673,12 @@ "dev": true }, "node_modules/echarts": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.4.1.tgz", - "integrity": "sha512-9ltS3M2JB0w2EhcYjCdmtrJ+6haZcW6acBolMGIuf01Hql1yrIV01L1aRj7jsaaIULJslEP9Z3vKlEmnJaWJVQ==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.4.2.tgz", + "integrity": "sha512-2W3vw3oI2tWJdyAz+b8DuWS0nfXtSDqlDmqgin/lfzbkB01cuMEN66KWBlmur3YMp5nEDEEt5s23pllnAzB4EA==", "dependencies": { "tslib": "2.3.0", - "zrender": "5.4.1" + "zrender": "5.4.3" } }, "node_modules/echarts/node_modules/tslib": { @@ -3688,9 +3687,9 @@ "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" }, "node_modules/electron-to-chromium": { - "version": "1.4.302", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.302.tgz", - "integrity": "sha512-Uk7C+7aPBryUR1Fwvk9VmipBcN9fVsqBO57jV2ZjTm+IZ6BMNqu7EDVEg2HxCNufk6QcWlFsBkhQyQroB2VWKw==", + "version": "1.4.340", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.340.tgz", + "integrity": "sha512-zx8hqumOqltKsv/MF50yvdAlPF9S/4PXbyfzJS6ZGhbddGkRegdwImmfSVqCkEziYzrIGZ/TlrzBND4FysfkDg==", "dev": true, "peer": true }, @@ -3762,9 +3761,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.17.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.12.tgz", - "integrity": "sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==", + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.14.tgz", + "integrity": "sha512-vOO5XhmVj/1XQR9NQ1UPq6qvMYL7QFJU57J5fKBKBKxp17uDt5PgxFDb4A2nEiXhr1qQs4x0F5+66hVVw4ruNw==", "dev": true, "hasInstallScript": true, "bin": { @@ -3774,28 +3773,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.17.12", - "@esbuild/android-arm64": "0.17.12", - "@esbuild/android-x64": "0.17.12", - "@esbuild/darwin-arm64": "0.17.12", - "@esbuild/darwin-x64": "0.17.12", - "@esbuild/freebsd-arm64": "0.17.12", - "@esbuild/freebsd-x64": "0.17.12", - "@esbuild/linux-arm": "0.17.12", - "@esbuild/linux-arm64": "0.17.12", - "@esbuild/linux-ia32": "0.17.12", - "@esbuild/linux-loong64": "0.17.12", - "@esbuild/linux-mips64el": "0.17.12", - "@esbuild/linux-ppc64": "0.17.12", - "@esbuild/linux-riscv64": "0.17.12", - "@esbuild/linux-s390x": "0.17.12", - "@esbuild/linux-x64": "0.17.12", - "@esbuild/netbsd-x64": "0.17.12", - "@esbuild/openbsd-x64": "0.17.12", - "@esbuild/sunos-x64": "0.17.12", - "@esbuild/win32-arm64": "0.17.12", - "@esbuild/win32-ia32": "0.17.12", - "@esbuild/win32-x64": "0.17.12" + "@esbuild/android-arm": "0.17.14", + "@esbuild/android-arm64": "0.17.14", + "@esbuild/android-x64": "0.17.14", + "@esbuild/darwin-arm64": "0.17.14", + "@esbuild/darwin-x64": "0.17.14", + "@esbuild/freebsd-arm64": "0.17.14", + "@esbuild/freebsd-x64": "0.17.14", + "@esbuild/linux-arm": "0.17.14", + "@esbuild/linux-arm64": "0.17.14", + "@esbuild/linux-ia32": "0.17.14", + "@esbuild/linux-loong64": "0.17.14", + "@esbuild/linux-mips64el": "0.17.14", + "@esbuild/linux-ppc64": "0.17.14", + "@esbuild/linux-riscv64": "0.17.14", + "@esbuild/linux-s390x": "0.17.14", + "@esbuild/linux-x64": "0.17.14", + "@esbuild/netbsd-x64": "0.17.14", + "@esbuild/openbsd-x64": "0.17.14", + "@esbuild/sunos-x64": "0.17.14", + "@esbuild/win32-arm64": "0.17.14", + "@esbuild/win32-ia32": "0.17.14", + "@esbuild/win32-x64": "0.17.14" } }, "node_modules/escalade": { @@ -4062,9 +4061,9 @@ } }, "node_modules/esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -4156,16 +4155,16 @@ } }, "node_modules/expect": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.4.3.tgz", - "integrity": "sha512-uC05+Q7eXECFpgDrHdXA4k2rpMyStAYPItEDLyQDo5Ta7fVkJnNA/4zh/OIVkVVNZ1oOK1PipQoyNjuZ6sz6Dg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", "dev": true, "dependencies": { - "@jest/expect-utils": "^29.4.3", + "@jest/expect-utils": "^29.5.0", "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.4.3", - "jest-message-util": "^29.4.3", - "jest-util": "^29.4.3" + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4510,9 +4509,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "node_modules/grapheme-splitter": { @@ -4668,9 +4667,9 @@ } }, "node_modules/immutable": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz", - "integrity": "sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", + "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", "dev": true }, "node_modules/import-fresh": { @@ -4774,13 +4773,13 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", - "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "get-intrinsic": "^1.2.0", "is-typed-array": "^1.1.10" }, "funding": { @@ -5187,16 +5186,16 @@ } }, "node_modules/jest": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.4.3.tgz", - "integrity": "sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", "dev": true, "peer": true, "dependencies": { - "@jest/core": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/core": "^29.5.0", + "@jest/types": "^29.5.0", "import-local": "^3.0.2", - "jest-cli": "^29.4.3" + "jest-cli": "^29.5.0" }, "bin": { "jest": "bin/jest.js" @@ -5214,9 +5213,9 @@ } }, "node_modules/jest-changed-files": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.4.3.tgz", - "integrity": "sha512-Vn5cLuWuwmi2GNNbokPOEcvrXGSGrqVnPEZV7rC6P7ck07Dyw9RFnvWglnupSh+hGys0ajGtw/bc2ZgweljQoQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", + "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", "dev": true, "peer": true, "dependencies": { @@ -5228,29 +5227,30 @@ } }, "node_modules/jest-circus": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.4.3.tgz", - "integrity": "sha512-Vw/bVvcexmdJ7MLmgdT3ZjkJ3LKu8IlpefYokxiqoZy6OCQ2VAm6Vk3t/qHiAGUXbdbJKJWnc8gH3ypTbB/OBw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", + "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", "dev": true, "peer": true, "dependencies": { - "@jest/environment": "^29.4.3", - "@jest/expect": "^29.4.3", - "@jest/test-result": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.4.3", - "jest-matcher-utils": "^29.4.3", - "jest-message-util": "^29.4.3", - "jest-runtime": "^29.4.3", - "jest-snapshot": "^29.4.3", - "jest-util": "^29.4.3", + "jest-each": "^29.5.0", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", "p-limit": "^3.1.0", - "pretty-format": "^29.4.3", + "pretty-format": "^29.5.0", + "pure-rand": "^6.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -5272,9 +5272,9 @@ } }, "node_modules/jest-circus/node_modules/pretty-format": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", - "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", "dev": true, "peer": true, "dependencies": { @@ -5294,22 +5294,22 @@ "peer": true }, "node_modules/jest-cli": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.4.3.tgz", - "integrity": "sha512-PiiAPuFNfWWolCE6t3ZrDXQc6OsAuM3/tVW0u27UWc1KE+n/HSn5dSE6B2juqN7WP+PP0jAcnKtGmI4u8GMYCg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", + "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", "dev": true, "peer": true, "dependencies": { - "@jest/core": "^29.4.3", - "@jest/test-result": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/core": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.4.3", - "jest-util": "^29.4.3", - "jest-validate": "^29.4.3", + "jest-config": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", "prompts": "^2.0.1", "yargs": "^17.3.1" }, @@ -5329,32 +5329,32 @@ } }, "node_modules/jest-config": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.4.3.tgz", - "integrity": "sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", + "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", "dev": true, "peer": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.4.3", - "@jest/types": "^29.4.3", - "babel-jest": "^29.4.3", + "@jest/test-sequencer": "^29.5.0", + "@jest/types": "^29.5.0", + "babel-jest": "^29.5.0", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^29.4.3", - "jest-environment-node": "^29.4.3", + "jest-circus": "^29.5.0", + "jest-environment-node": "^29.5.0", "jest-get-type": "^29.4.3", "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.4.3", - "jest-runner": "^29.4.3", - "jest-util": "^29.4.3", - "jest-validate": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.4.3", + "pretty-format": "^29.5.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -5388,9 +5388,9 @@ } }, "node_modules/jest-config/node_modules/pretty-format": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", - "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", "dev": true, "peer": true, "dependencies": { @@ -5410,15 +5410,15 @@ "peer": true }, "node_modules/jest-diff": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.4.3.tgz", - "integrity": "sha512-YB+ocenx7FZ3T5O9lMVMeLYV4265socJKtkwgk/6YUz/VsEzYDkiMuMhWzZmxm3wDRQvayJu/PjkjjSkjoHsCA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", + "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.4.3", "jest-get-type": "^29.4.3", - "pretty-format": "^29.4.3" + "pretty-format": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -5437,9 +5437,9 @@ } }, "node_modules/jest-diff/node_modules/pretty-format": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", - "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", "dev": true, "dependencies": { "@jest/schemas": "^29.4.3", @@ -5470,17 +5470,17 @@ } }, "node_modules/jest-each": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.4.3.tgz", - "integrity": "sha512-1ElHNAnKcbJb/b+L+7j0/w7bDvljw4gTv1wL9fYOczeJrbTbkMGQ5iQPFJ3eFQH19VPTx1IyfePdqSpePKss7Q==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", + "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", "dev": true, "peer": true, "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.5.0", "chalk": "^4.0.0", "jest-get-type": "^29.4.3", - "jest-util": "^29.4.3", - "pretty-format": "^29.4.3" + "jest-util": "^29.5.0", + "pretty-format": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -5500,9 +5500,9 @@ } }, "node_modules/jest-each/node_modules/pretty-format": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", - "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", "dev": true, "peer": true, "dependencies": { @@ -5522,18 +5522,18 @@ "peer": true }, "node_modules/jest-environment-node": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.4.3.tgz", - "integrity": "sha512-gAiEnSKF104fsGDXNkwk49jD/0N0Bqu2K9+aMQXA6avzsA9H3Fiv1PW2D+gzbOSR705bWd2wJZRFEFpV0tXISg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", + "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", "dev": true, "peer": true, "dependencies": { - "@jest/environment": "^29.4.3", - "@jest/fake-timers": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", - "jest-mock": "^29.4.3", - "jest-util": "^29.4.3" + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -5549,21 +5549,21 @@ } }, "node_modules/jest-haste-map": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.4.3.tgz", - "integrity": "sha512-eZIgAS8tvm5IZMtKlR8Y+feEOMfo2pSQkmNbufdbMzMSn9nitgGxF1waM/+LbryO3OkMcKS98SUb+j/cQxp/vQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", + "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", "dev": true, "peer": true, "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.5.0", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", "jest-regex-util": "^29.4.3", - "jest-util": "^29.4.3", - "jest-worker": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -5575,14 +5575,14 @@ } }, "node_modules/jest-leak-detector": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.4.3.tgz", - "integrity": "sha512-9yw4VC1v2NspMMeV3daQ1yXPNxMgCzwq9BocCwYrRgXe4uaEJPAN0ZK37nFBhcy3cUwEVstFecFLaTHpF7NiGA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", + "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", "dev": true, "peer": true, "dependencies": { "jest-get-type": "^29.4.3", - "pretty-format": "^29.4.3" + "pretty-format": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -5602,9 +5602,9 @@ } }, "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", - "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", "dev": true, "peer": true, "dependencies": { @@ -5624,15 +5624,15 @@ "peer": true }, "node_modules/jest-matcher-utils": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.4.3.tgz", - "integrity": "sha512-TTciiXEONycZ03h6R6pYiZlSkvYgT0l8aa49z/DLSGYjex4orMUcafuLXYyyEDWB1RKglq00jzwY00Ei7yFNVg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", + "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.4.3", + "jest-diff": "^29.5.0", "jest-get-type": "^29.4.3", - "pretty-format": "^29.4.3" + "pretty-format": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -5651,9 +5651,9 @@ } }, "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", - "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", "dev": true, "dependencies": { "@jest/schemas": "^29.4.3", @@ -5671,18 +5671,18 @@ "dev": true }, "node_modules/jest-message-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.4.3.tgz", - "integrity": "sha512-1Y8Zd4ZCN7o/QnWdMmT76If8LuDv23Z1DRovBj/vcSFNlGCJGoO8D1nJDw1AdyAGUk0myDLFGN5RbNeJyCRGCw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", + "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.4.3", + "@jest/types": "^29.5.0", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.4.3", + "pretty-format": "^29.5.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -5703,9 +5703,9 @@ } }, "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", - "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", "dev": true, "dependencies": { "@jest/schemas": "^29.4.3", @@ -5723,15 +5723,15 @@ "dev": true }, "node_modules/jest-mock": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.4.3.tgz", - "integrity": "sha512-LjFgMg+xed9BdkPMyIJh+r3KeHt1klXPJYBULXVVAkbTaaKjPX1o1uVCAZADMEp/kOxGTwy/Ot8XbvgItOrHEg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", + "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", "dev": true, "peer": true, "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.5.0", "@types/node": "*", - "jest-util": "^29.4.3" + "jest-util": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -5766,18 +5766,18 @@ } }, "node_modules/jest-resolve": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.4.3.tgz", - "integrity": "sha512-GPokE1tzguRyT7dkxBim4wSx6E45S3bOQ7ZdKEG+Qj0Oac9+6AwJPCk0TZh5Vu0xzeX4afpb+eDmgbmZFFwpOw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", + "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", "dev": true, "peer": true, "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.3", + "jest-haste-map": "^29.5.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.4.3", - "jest-validate": "^29.4.3", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", "resolve": "^1.20.0", "resolve.exports": "^2.0.0", "slash": "^3.0.0" @@ -5787,45 +5787,45 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.4.3.tgz", - "integrity": "sha512-uvKMZAQ3nmXLH7O8WAOhS5l0iWyT3WmnJBdmIHiV5tBbdaDZ1wqtNX04FONGoaFvSOSHBJxnwAVnSn1WHdGVaw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", + "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", "dev": true, "peer": true, "dependencies": { "jest-regex-util": "^29.4.3", - "jest-snapshot": "^29.4.3" + "jest-snapshot": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.4.3.tgz", - "integrity": "sha512-GWPTEiGmtHZv1KKeWlTX9SIFuK19uLXlRQU43ceOQ2hIfA5yPEJC7AMkvFKpdCHx6pNEdOD+2+8zbniEi3v3gA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", + "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", "dev": true, "peer": true, "dependencies": { - "@jest/console": "^29.4.3", - "@jest/environment": "^29.4.3", - "@jest/test-result": "^29.4.3", - "@jest/transform": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/console": "^29.5.0", + "@jest/environment": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.13.1", "graceful-fs": "^4.2.9", "jest-docblock": "^29.4.3", - "jest-environment-node": "^29.4.3", - "jest-haste-map": "^29.4.3", - "jest-leak-detector": "^29.4.3", - "jest-message-util": "^29.4.3", - "jest-resolve": "^29.4.3", - "jest-runtime": "^29.4.3", - "jest-util": "^29.4.3", - "jest-watcher": "^29.4.3", - "jest-worker": "^29.4.3", + "jest-environment-node": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-leak-detector": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-resolve": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-util": "^29.5.0", + "jest-watcher": "^29.5.0", + "jest-worker": "^29.5.0", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -5834,32 +5834,32 @@ } }, "node_modules/jest-runtime": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.4.3.tgz", - "integrity": "sha512-F5bHvxSH+LvLV24vVB3L8K467dt3y3dio6V3W89dUz9nzvTpqd/HcT9zfYKL2aZPvD63vQFgLvaUX/UpUhrP6Q==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", + "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", "dev": true, "peer": true, "dependencies": { - "@jest/environment": "^29.4.3", - "@jest/fake-timers": "^29.4.3", - "@jest/globals": "^29.4.3", + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/globals": "^29.5.0", "@jest/source-map": "^29.4.3", - "@jest/test-result": "^29.4.3", - "@jest/transform": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.3", - "jest-message-util": "^29.4.3", - "jest-mock": "^29.4.3", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.4.3", - "jest-snapshot": "^29.4.3", - "jest-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -5868,9 +5868,9 @@ } }, "node_modules/jest-snapshot": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.4.3.tgz", - "integrity": "sha512-NGlsqL0jLPDW91dz304QTM/SNO99lpcSYYAjNiX0Ou+sSGgkanKBcSjCfp/pqmiiO1nQaOyLp6XQddAzRcx3Xw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", + "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", "dev": true, "peer": true, "dependencies": { @@ -5880,23 +5880,22 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.4.3", - "@jest/transform": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/expect-utils": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.4.3", + "expect": "^29.5.0", "graceful-fs": "^4.2.9", - "jest-diff": "^29.4.3", + "jest-diff": "^29.5.0", "jest-get-type": "^29.4.3", - "jest-haste-map": "^29.4.3", - "jest-matcher-utils": "^29.4.3", - "jest-message-util": "^29.4.3", - "jest-util": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", "natural-compare": "^1.4.0", - "pretty-format": "^29.4.3", + "pretty-format": "^29.5.0", "semver": "^7.3.5" }, "engines": { @@ -5917,9 +5916,9 @@ } }, "node_modules/jest-snapshot/node_modules/pretty-format": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", - "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", "dev": true, "peer": true, "dependencies": { @@ -5939,12 +5938,12 @@ "peer": true }, "node_modules/jest-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.3.tgz", - "integrity": "sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -5956,18 +5955,18 @@ } }, "node_modules/jest-validate": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.4.3.tgz", - "integrity": "sha512-J3u5v7aPQoXPzaar6GndAVhdQcZr/3osWSgTeKg5v574I9ybX/dTyH0AJFb5XgXIB7faVhf+rS7t4p3lL9qFaw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", + "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", "dev": true, "peer": true, "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.5.0", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^29.4.3", "leven": "^3.1.0", - "pretty-format": "^29.4.3" + "pretty-format": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -6000,9 +5999,9 @@ } }, "node_modules/jest-validate/node_modules/pretty-format": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", - "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", "dev": true, "peer": true, "dependencies": { @@ -6022,19 +6021,19 @@ "peer": true }, "node_modules/jest-watcher": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.4.3.tgz", - "integrity": "sha512-zwlXH3DN3iksoIZNk73etl1HzKyi5FuQdYLnkQKm5BW4n8HpoG59xSwpVdFrnh60iRRaRBGw0gcymIxjJENPcA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", + "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", "dev": true, "peer": true, "dependencies": { - "@jest/test-result": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "^29.4.3", + "jest-util": "^29.5.0", "string-length": "^4.0.1" }, "engines": { @@ -6042,14 +6041,14 @@ } }, "node_modules/jest-worker": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.4.3.tgz", - "integrity": "sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", + "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", "dev": true, "peer": true, "dependencies": { "@types/node": "*", - "jest-util": "^29.4.3", + "jest-util": "^29.5.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -6074,9 +6073,9 @@ } }, "node_modules/js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", + "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", "dev": true, "funding": { "type": "opencollective", @@ -6518,10 +6517,16 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -6978,9 +6983,9 @@ } }, "node_modules/playwright-core": { - "version": "1.31.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.31.2.tgz", - "integrity": "sha512-a1dFgCNQw4vCsG7bnojZjDnPewZcw7tZUNFN0ZkcLYKj+mPmXvg4MpaaKZ5SgqPsOmqIf2YsVRkgqiRDxD+fDQ==", + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.32.1.tgz", + "integrity": "sha512-KZYUQC10mXD2Am1rGlidaalNGYk3LU1vZqqNk0gT4XPty1jOqgup8KDP8l2CUlqoNKhXM5IfGjWgW37xvGllBA==", "dev": true, "bin": { "playwright": "cli.js" @@ -7095,9 +7100,9 @@ } }, "node_modules/prettier": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.6.tgz", - "integrity": "sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -7110,9 +7115,9 @@ } }, "node_modules/prettier-plugin-svelte": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.9.0.tgz", - "integrity": "sha512-3doBi5NO4IVgaNPtwewvrgPpqAcvNv0NwJNflr76PIGgi9nf1oguQV1Hpdm9TI2ALIQVn/9iIwLpBO5UcD2Jiw==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.10.0.tgz", + "integrity": "sha512-GXMY6t86thctyCvQq+jqElO+MKdB09BkL3hexyGP3Oi8XLKRFaJP1ud/xlWCZ9ZIa2BxHka32zhHfcuU+XsRQg==", "dev": true, "peerDependencies": { "prettier": "^1.16.4 || ^2.0.0", @@ -7215,6 +7220,23 @@ "node": ">=6" } }, + "node_modules/pure-rand": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz", + "integrity": "sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "peer": true + }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -7248,9 +7270,9 @@ "dev": true }, "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "dependencies": { "core-util-is": "~1.0.0", @@ -7382,9 +7404,9 @@ } }, "node_modules/resolve.exports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.0.tgz", - "integrity": "sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true, "peer": true, "engines": { @@ -7417,9 +7439,9 @@ } }, "node_modules/rollup": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.0.tgz", - "integrity": "sha512-YsIfrk80NqUDrxrjWPXUa7PWvAfegZEXHuPsEZg58fGCdjL1I9C1i/NaG+L+27kxxwkrG/QEDEQc8s/ynXWWGQ==", + "version": "3.20.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.2.tgz", + "integrity": "sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -7510,9 +7532,9 @@ } }, "node_modules/sass": { - "version": "1.59.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.59.3.tgz", - "integrity": "sha512-QCq98N3hX1jfTCoUAsF3eyGuXLsY7BCnCEg9qAact94Yc21npG2/mVOqoDvE0fCbWDqiM4WlcJQla0gWG2YlxQ==", + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.60.0.tgz", + "integrity": "sha512-updbwW6fNb5gGm8qMXzVO7V4sWf7LMXnMly/JEyfbfERbVH46Fn6q02BX7/eHTdKpE7d+oTkMMQpFWNUMfFbgQ==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -7572,9 +7594,9 @@ "dev": true }, "node_modules/set-cookie-parser": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", - "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", "dev": true }, "node_modules/shebang-command": { @@ -8149,9 +8171,9 @@ } }, "node_modules/tinybench": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.3.1.tgz", - "integrity": "sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.4.0.tgz", + "integrity": "sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==", "dev": true }, "node_modules/tinypool": { @@ -8605,9 +8627,9 @@ } }, "node_modules/web-vitals": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.1.1.tgz", - "integrity": "sha512-qvllU+ZeQChqzBhZ1oyXmWsjJ8a2jHYpH8AMaVuf29yscOPZfTQTjQFRX6+eADTdsDE8IanOZ0cetweHMs8/2A==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.3.0.tgz", + "integrity": "sha512-GZsEmJBNclIpViS/7QVOTr7Kbt4BgLeR7kQ5zCCtJVuiWsA+K6xTXaoEXssvl8yYFICEyNmA2Nr+vgBYTnS4bA==" }, "node_modules/webidl-conversions": { "version": "7.0.0", @@ -8867,9 +8889,9 @@ "peer": true }, "node_modules/yargs": { - "version": "17.7.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.0.tgz", - "integrity": "sha512-dwqOPg5trmrre9+v8SUo2q/hAwyKoVfu8OC1xPHKJGNdxAvPl4sKxL4vBnh3bQz/ZvvGAFeA5H3ou2kcOY8sQQ==", + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", "dev": true, "peer": true, "dependencies": { @@ -8940,9 +8962,9 @@ } }, "node_modules/zrender": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.1.tgz", - "integrity": "sha512-M4Z05BHWtajY2241EmMPHglDQAJ1UyHQcYsxDNzD9XLSkPDqMq4bB28v9Pb4mvHnVQ0GxyTklZ/69xCFP6RXBA==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.3.tgz", + "integrity": "sha512-DRUM4ZLnoaT0PBVvGBDO9oWIDBKFdAVieNWxWwK0niYzJCMwGchRk21/hsE+RKkIveH3XHCyvXcJDkgLVvfizQ==", "dependencies": { "tslib": "2.3.0" } diff --git a/package.json b/package.json index aa7e6f408..5c6c45432 100644 --- a/package.json +++ b/package.json @@ -19,9 +19,8 @@ }, "dependencies": { "@analytics/google-analytics": "^1.0.5", - "@appwrite.io/pink-icons": "^0.0.6-rc.4", - "@appwrite.io/pink": "^0.0.6-rc.4", "@appwrite.io/console": "0.1.0-preview-0.0", + "@appwrite.io/pink": "^0.0.6-rc.2", "@popperjs/core": "^2.11.6", "@sentry/svelte": "^7.44.2", "@sentry/tracing": "^7.44.2", diff --git a/src/lib/components/code.svelte b/src/lib/components/code.svelte index 24debe415..3cb59ab48 100644 --- a/src/lib/components/code.svelte +++ b/src/lib/components/code.svelte @@ -28,7 +28,7 @@ }); -
    +
    {#if label} diff --git a/src/lib/components/dropList.svelte b/src/lib/components/dropList.svelte index eb96b9cc8..5950595fc 100644 --- a/src/lib/components/dropList.svelte +++ b/src/lib/components/dropList.svelte @@ -27,7 +27,7 @@
    + class="drop-section">
    diff --git a/src/lib/components/paginationWithLimit.svelte b/src/lib/components/paginationWithLimit.svelte index 6eefee89b..41d69850e 100644 --- a/src/lib/components/paginationWithLimit.svelte +++ b/src/lib/components/paginationWithLimit.svelte @@ -8,7 +8,7 @@ export let name: string; -
    +
    diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte index 01596a35e..86481e639 100644 --- a/src/lib/components/permissions/row.svelte +++ b/src/lib/components/permissions/row.svelte @@ -70,13 +70,13 @@ {@const isAnonymous = !data.email && !data.phone && isUser}