From b71fb0f12df7006ee233040e96f061636a2426b2 Mon Sep 17 00:00:00 2001 From: fenos Date: Tue, 6 Dec 2022 10:16:18 +0000 Subject: [PATCH 01/92] docs: image resizing guide --- .../Navigation/Navigation.constants.ts | 1 + .../pages/guides/storage-image-resizing.mdx | 136 ++++++++++++++++++ 2 files changed, 137 insertions(+) create mode 100644 apps/docs/pages/guides/storage-image-resizing.mdx diff --git a/apps/docs/components/Navigation/Navigation.constants.ts b/apps/docs/components/Navigation/Navigation.constants.ts index 3c407085da2..29212056fdb 100644 --- a/apps/docs/components/Navigation/Navigation.constants.ts +++ b/apps/docs/components/Navigation/Navigation.constants.ts @@ -246,6 +246,7 @@ export const menuItems: NavMenu = { items: [ { name: 'Overview', url: '/guides/storage', items: [] }, { name: 'CDN', url: '/guides/storage-cdn', items: [] }, + { name: 'Image Resizing', url: '/guides/storage-image-resizing', items: [] }, ], }, { diff --git a/apps/docs/pages/guides/storage-image-resizing.mdx b/apps/docs/pages/guides/storage-image-resizing.mdx new file mode 100644 index 00000000000..dc9cffb9aac --- /dev/null +++ b/apps/docs/pages/guides/storage-image-resizing.mdx @@ -0,0 +1,136 @@ +import Layout from '~/layouts/DefaultGuideLayout' + +export const meta = { + id: 'storage-image-resizing', + title: 'Storage Image Resizing', + description: 'Resize images with Storage', + sidebar_label: 'Image Transformation', +} + +Storage offers the functionality to transform and resize images on the fly. +Any image stored in your buckets can be transformed and optimized for fast delivery. + +To get started with image resizing you can pass a `transform` option to the functions you are currently using to interact with your objects. + +Image Resizing is enabled for PRO tiers and above + +### Get a public URL - With transformation options + +```ts +storage.from('bucket').getPublicUrl('image.jpg', { + transform: { + width: 500, + height: 600, + } +}) +``` + +This will return the public URL with the formatted transformation parameters. +Once visited you’ll be served with the resized image + +An example URL could look like this: +`https://project_id.supabase.co/storage/v1/render/image/public/bucket/image.jpg?width=500&height=600` + + +### Signing URLs - With transformation options + +You can sign the URLs for private buckets in the same way. +If you are signing an image and you’d like to share a transformed version, you’ll need to provide the transform options to the signing URL function + +```ts +storage.from('bucket').createSignedUrl('image.jpg', 60000, { + transform: { + width: 200, + height: 200, + } +}) +``` + +The transformation options are embedded into the token, they cannot be changed once signed. + +### Downloading Images + +We introduced 2 new recommended methods for downloading a file. +`publicDownload` and `authenticatedDownload` + +These new methods allow you to add transformation options and be able to download a modified image instead of the original. + +Use `publicDownload` when downloading an object from a **public** bucket. +Use `authenticatedDownload` when downloading an object from a **private** bucket. + +```ts +// Download from a public bucket +storage.from('bucket').publicDownload('image.jpg', { + transform: { + width: 800, + height: 300, + } +}) + +// Download from a private bucket +storage.from('bucket').authenticatedDownload('image.jpg', { + transform: { + width: 800, + height: 300, + } +}) +``` + +The existing `download` method is deprecated but will still work. +We recommend migrating to the new methods `publicDownload` and `authenticatedDownload` + +as `download` will be removed in the next major release + + +### Transformation options + +We currently support a few transformation options focusing on resizing & cropping. +We have plans to increase the transformation type available in a later release. + +### Resizing + +You can use `width` and `height` parameters to resize the image to a specific dimension. + +Alternatively, you can omit one of the above parameters and the image will be resized and cropped maintaining the aspect ratio. + +### Modes + +You can use different resizing modes to fit your needs, each of them uses a different approach to resize the image: + +Use the `resize` parameter with one of the following values: + +- `cover` : resizes the image while keeping the aspect ratio to fill a given size and crops projecting parts. (default) + +- `contain` : resizes the image while keeping the aspect ratio to fit a given size. + +- `fill` : resizes the image without keeping the aspect ratio. + +### Limits + +Width / Height: + +- **type**: int +- **min**: 1 +- **max**: 2500 + +The image size cannot exceed 25MB +The image resolution cannot exceed 50MP + +### Supported Image Format + +| Format | Extension | Source | Result | +| -------|-----------|--------|--------| +| PNG | `png` | Yes | Yes | +| JPEG | `jpg` | Yes | Yes | +| WebP | `webp` | Yes | Yes | +| AVIF | `avif` | Yes | Yes | +| GIF | `gif` | Yes | Yes | +| ICO | `ico` | Yes | Yes | +| SVG | `svg` | Yes | Yes | +| HEIC | `heic` | Yes | No | +| BMP | `bmp` | Yes | Yes | +| TIFF | `tiff` | Yes | Yes | + +export const Page = ({ children }) => + +export default Page From 54bd2516b379c28067d1e57613a5323c2e0feb84 Mon Sep 17 00:00:00 2001 From: fenos Date: Mon, 12 Dec 2022 11:50:00 +0000 Subject: [PATCH 02/92] docs: smart cdn caching docs --- apps/docs/pages/guides/storage-cdn.mdx | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/apps/docs/pages/guides/storage-cdn.mdx b/apps/docs/pages/guides/storage-cdn.mdx index 4c11ca8fe64..a93ab8b2f09 100644 --- a/apps/docs/pages/guides/storage-cdn.mdx +++ b/apps/docs/pages/guides/storage-cdn.mdx @@ -31,6 +31,31 @@ Note that CDNs might still evict your object from their cache if it has not been The cache status of a particular request is sent in the `cf-cache-status` header. A cache status of `MISS` indicates that the CDN node did not have the object in its cache and had to ping the origin to get it. A cache status of `HIT` indicates that the object was sent directly from the CDN. + +## Smart CDN Caching + +With Smart CDN caching enabled, we are synchronizing the asset metadata (not the content) that live in your database to the edge. +By doing this we are able to automatically revalidate the cache when the content of an asset changes or gets deleted. + +On top of automatic revalidation, you will also benefit from a much greater Cache HIT ratio, since we are able to shield the origin server when +requesting an asset that hasn't changed with a different query string url. + +### Cache duration + +When using Smart CDN, we will control the CDN cache duration on the server and caching it for as long as possible. +However, you are still in control of the browser caching TTL which you can set by using the [cacheControl](/docs/reference/javascript/storage-from-upload) option while uploading the file. + +When a file is updated or deleted, we will automatically invalidate the CDN cache to reflect the change as well as to all derivatives (transformed images). +Keep in mind that the invalidation can take up to 60 seconds to be propagated across all the data-centers across the globe. + +When we invalidate an asset at the CDN level, it can't, doesn't, affect browser caching. +If you don't see the reflected changes make sure the browser cache has been updated. + +If your asset is updated frequently we recommend setting a low browser ttl value using the `cacheControl` option when using smart cdn caching. + +Smart CDN caching works with all types of operations including signed urls. + + ## Public vs Private Buckets Objects in public buckets do not require any Authorization to access objects. This leads to a better cache hit rate compared to private buckets. For private buckets, permissions for accessing each object is checked on a per user level. For example, if two different users access the same object in a private bucket from the same region, it results in a cache miss for both the users since they might have different security policies attached to them. On the other hand, if two different users access the same object in a public bucket from the same region, it results in a cache hit for the second user. From d8fb46dd6548f2050076f182e25aee1f29dd9556 Mon Sep 17 00:00:00 2001 From: fenos Date: Mon, 12 Dec 2022 11:50:13 +0000 Subject: [PATCH 03/92] docs: update image-resizing guide --- .../Navigation/Navigation.constants.ts | 2 +- .../{ => storage}/storage-image-resizing.mdx | 76 ++++++++----------- 2 files changed, 31 insertions(+), 47 deletions(-) rename apps/docs/pages/guides/{ => storage}/storage-image-resizing.mdx (51%) diff --git a/apps/docs/components/Navigation/Navigation.constants.ts b/apps/docs/components/Navigation/Navigation.constants.ts index 29212056fdb..8af16004887 100644 --- a/apps/docs/components/Navigation/Navigation.constants.ts +++ b/apps/docs/components/Navigation/Navigation.constants.ts @@ -246,7 +246,7 @@ export const menuItems: NavMenu = { items: [ { name: 'Overview', url: '/guides/storage', items: [] }, { name: 'CDN', url: '/guides/storage-cdn', items: [] }, - { name: 'Image Resizing', url: '/guides/storage-image-resizing', items: [] }, + { name: 'Image Resizing', url: '/guides/storage/image-resizing', items: [] }, ], }, { diff --git a/apps/docs/pages/guides/storage-image-resizing.mdx b/apps/docs/pages/guides/storage/storage-image-resizing.mdx similarity index 51% rename from apps/docs/pages/guides/storage-image-resizing.mdx rename to apps/docs/pages/guides/storage/storage-image-resizing.mdx index dc9cffb9aac..be5219d2ea8 100644 --- a/apps/docs/pages/guides/storage-image-resizing.mdx +++ b/apps/docs/pages/guides/storage/storage-image-resizing.mdx @@ -7,17 +7,18 @@ export const meta = { sidebar_label: 'Image Transformation', } -Storage offers the functionality to transform and resize images on the fly. -Any image stored in your buckets can be transformed and optimized for fast delivery. +Supabase Storage offers the functionality to transform and resize images dynamically. Any image stored in your buckets can be transformed and optimized for fast delivery. -To get started with image resizing you can pass a `transform` option to the functions you are currently using to interact with your objects. + + Image Resizing is enabled for PRO tiers and above + -Image Resizing is enabled for PRO tiers and above +### Get a public URL for a Transformed image -### Get a public URL - With transformation options +You can pass a `transform` option to the functions you are currently using to interact with your objects. This returns the public URL that serves the resized image. ```ts -storage.from('bucket').getPublicUrl('image.jpg', { +supabase.storage.from('bucket').getPublicUrl('image.jpg', { transform: { width: 500, height: 600, @@ -34,11 +35,10 @@ An example URL could look like this: ### Signing URLs - With transformation options -You can sign the URLs for private buckets in the same way. -If you are signing an image and you’d like to share a transformed version, you’ll need to provide the transform options to the signing URL function +To share a transformed image for a fixed amount of time, provide the transform options when you create the signed URL: ```ts -storage.from('bucket').createSignedUrl('image.jpg', 60000, { +supabase.storage.from('bucket').createSignedUrl('image.jpg', 60000, { transform: { width: 200, height: 200, @@ -48,27 +48,12 @@ storage.from('bucket').createSignedUrl('image.jpg', 60000, { The transformation options are embedded into the token, they cannot be changed once signed. -### Downloading Images +## Downloading Images -We introduced 2 new recommended methods for downloading a file. -`publicDownload` and `authenticatedDownload` - -These new methods allow you to add transformation options and be able to download a modified image instead of the original. - -Use `publicDownload` when downloading an object from a **public** bucket. -Use `authenticatedDownload` when downloading an object from a **private** bucket. +To download a transformed image, pass the `transform` option to the `download` function ```ts -// Download from a public bucket -storage.from('bucket').publicDownload('image.jpg', { - transform: { - width: 800, - height: 300, - } -}) - -// Download from a private bucket -storage.from('bucket').authenticatedDownload('image.jpg', { +supabase.storage.from('bucket').download('image.jpg', { transform: { width: 800, height: 300, @@ -76,22 +61,14 @@ storage.from('bucket').authenticatedDownload('image.jpg', { }) ``` -The existing `download` method is deprecated but will still work. -We recommend migrating to the new methods `publicDownload` and `authenticatedDownload` - -as `download` will be removed in the next major release - - ### Transformation options We currently support a few transformation options focusing on resizing & cropping. -We have plans to increase the transformation type available in a later release. +We have plans to increase the transformation types available in a later release. ### Resizing -You can use `width` and `height` parameters to resize the image to a specific dimension. - -Alternatively, you can omit one of the above parameters and the image will be resized and cropped maintaining the aspect ratio. +You can use `width` and `height` parameters to resize an image to a specific dimension. If only one parameter is specified, the image will be resized and cropped, maintaining the aspect ratio. ### Modes @@ -105,18 +82,25 @@ Use the `resize` parameter with one of the following values: - `fill` : resizes the image without keeping the aspect ratio. +Example: + +```ts +supabase.storage.from('bucket').download('image.jpg', { + transform: { + width: 800, + height: 300, + resize: 'contain' // 'cover' | 'fill' + } +}) +``` + ### Limits -Width / Height: +- Width and height must be an integer value between 1-2500. +- The image size cannot exceed 25MB. +- The image resolution cannot exceed 50MP. -- **type**: int -- **min**: 1 -- **max**: 2500 - -The image size cannot exceed 25MB -The image resolution cannot exceed 50MP - -### Supported Image Format +### Supported Image Formats | Format | Extension | Source | Result | | -------|-----------|--------|--------| From 42b2ec58a3af98050e6683841b020b8726362c6c Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Tue, 13 Dec 2022 00:09:42 +0800 Subject: [PATCH 04/92] test 1 --- apps/docs/layouts/SiteRefLayout.tsx | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/apps/docs/layouts/SiteRefLayout.tsx b/apps/docs/layouts/SiteRefLayout.tsx index bcdd7b8754e..53796a67b0b 100644 --- a/apps/docs/layouts/SiteRefLayout.tsx +++ b/apps/docs/layouts/SiteRefLayout.tsx @@ -1,27 +1,20 @@ +import { useTheme } from 'common/Providers' import Image from 'next/image' import Link from 'next/link' import { useRouter } from 'next/router' import NavigationMenu from '~/components/Navigation/NavigationMenu/NavigationMenu' import TopNavBarRef from '~/components/Navigation/NavigationMenu/TopNavBarRef' -import { useTheme } from 'common/Providers' - -import RefSwitcher from '~/components/Navigation/RefSwitcher' -import { useEffect, useState, memo } from 'react' import FooterHelpCallout from '~/components/FooterHelpCallout' import { NavigationMenuContextProvider } from '~/components/Navigation/NavigationMenu/NavigationMenu.Context' -import { useMenuLevelId, useMenuMobileOpen } from '~/hooks/useMenuState' import { menuState } from '~/hooks/useMenuState' const SiteRefLayout = ({ children }) => { - const router = useRouter() const { isDarkMode } = useTheme() - const menuLevel = useMenuLevelId() - const mobileMenuOpen = useMenuMobileOpen() - - //console.log('menuLevel', menuLevel) + const menuLevel = 'home' // useMenuLevelId() + const mobileMenuOpen = () => void console.log('menuLevel', menuLevel) const levelsData = { home: { From aff0a551123c32b57dc80919924f7cb268888f5f Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Tue, 13 Dec 2022 00:20:58 +0800 Subject: [PATCH 05/92] force push --- apps/docs/layouts/SiteRefLayout.tsx | 3 +- apps/docs/public/sitemap.xml | 544 +++++++++++++--------------- 2 files changed, 262 insertions(+), 285 deletions(-) diff --git a/apps/docs/layouts/SiteRefLayout.tsx b/apps/docs/layouts/SiteRefLayout.tsx index 53796a67b0b..276dc27540a 100644 --- a/apps/docs/layouts/SiteRefLayout.tsx +++ b/apps/docs/layouts/SiteRefLayout.tsx @@ -13,7 +13,8 @@ import { menuState } from '~/hooks/useMenuState' const SiteRefLayout = ({ children }) => { const { isDarkMode } = useTheme() - const menuLevel = 'home' // useMenuLevelId() + const menuLevel = 'home' + // useMenuLevelId() const mobileMenuOpen = () => void console.log('menuLevel', menuLevel) const levelsData = { diff --git a/apps/docs/public/sitemap.xml b/apps/docs/public/sitemap.xml index 4d3f67e1b47..4fe333aa62f 100644 --- a/apps/docs/public/sitemap.xml +++ b/apps/docs/public/sitemap.xml @@ -60,24 +60,6 @@ 0.5 - - https://supabase.com/docs/handbook/contributing - weekly - 0.5 - - - - https://supabase.com/docs/handbook/introduction - weekly - 0.5 - - - - https://supabase.com/docs/handbook/supasquad - weekly - 0.5 - - https://supabase.com/docs/guides/api weekly @@ -234,6 +216,24 @@ 0.5 + + https://supabase.com/docs/handbook/contributing + weekly + 0.5 + + + + https://supabase.com/docs/handbook/introduction + weekly + 0.5 + + + + https://supabase.com/docs/handbook/supasquad + weekly + 0.5 + + https://supabase.com/docs/new/auth weekly @@ -246,12 +246,6 @@ 0.5 - - https://supabase.com/docs/tutorials/nextjs - weekly - 0.5 - - https://supabase.com/docs/reference/index weekly @@ -259,55 +253,13 @@ - https://supabase.com/docs/company/aup + https://supabase.com/docs/tutorials/nextjs weekly 0.5 - https://supabase.com/docs/company/privacy - weekly - 0.5 - - - - https://supabase.com/docs/company/sla - weekly - 0.5 - - - - https://supabase.com/docs/company/terms - weekly - 0.5 - - - - https://supabase.com/docs/learn/auth-deep-dive/auth-deep-dive-jwts - weekly - 0.5 - - - - https://supabase.com/docs/learn/auth-deep-dive/auth-google-oauth - weekly - 0.5 - - - - https://supabase.com/docs/learn/auth-deep-dive/auth-gotrue - weekly - 0.5 - - - - https://supabase.com/docs/learn/auth-deep-dive/auth-policies - weekly - 0.5 - - - - https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security + https://supabase.com/docs/guides/api/generating-types weekly 0.5 @@ -324,6 +276,96 @@ 0.5 + + https://supabase.com/docs/guides/database/arrays + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/connecting-to-postgres + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/extensions + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/full-text-search + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/functions + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/json + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/managing-passwords + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/managing-timezones + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/overview + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/replication + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/sql-to-api + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/tables + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/testing + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/timeouts + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/webhooks + weekly + 0.5 + + https://supabase.com/docs/guides/auth/auth-apple weekly @@ -510,96 +552,6 @@ 0.5 - - https://supabase.com/docs/guides/database/arrays - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/connecting-to-postgres - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/extensions - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/full-text-search - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/functions - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/json - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/managing-passwords - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/managing-timezones - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/overview - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/replication - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/sql-to-api - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/tables - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/testing - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/timeouts - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/webhooks - weekly - 0.5 - - https://supabase.com/docs/guides/functions/auth weekly @@ -624,18 +576,6 @@ 0.5 - - https://supabase.com/docs/guides/getting-started/architecture - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/features - weekly - 0.5 - - https://supabase.com/docs/guides/hosting/docker weekly @@ -655,79 +595,13 @@ - https://supabase.com/docs/guides/migrations/firebase-auth + https://supabase.com/docs/guides/getting-started/architecture weekly 0.5 - https://supabase.com/docs/guides/migrations/firebase-storage - weekly - 0.5 - - - - https://supabase.com/docs/guides/migrations/firestore-data - weekly - 0.5 - - - - https://supabase.com/docs/guides/migrations/heroku - weekly - 0.5 - - - - https://supabase.com/docs/guides/platform/compute-add-ons - weekly - 0.5 - - - - https://supabase.com/docs/guides/platform/custom-domains - weekly - 0.5 - - - - https://supabase.com/docs/guides/platform/database-usage - weekly - 0.5 - - - - https://supabase.com/docs/guides/platform/going-into-prod - weekly - 0.5 - - - - https://supabase.com/docs/guides/platform/logs - weekly - 0.5 - - - - https://supabase.com/docs/guides/platform/metrics - weekly - 0.5 - - - - https://supabase.com/docs/guides/platform/migrating-and-upgrading-projects - weekly - 0.5 - - - - https://supabase.com/docs/guides/platform/performance - weekly - 0.5 - - - - https://supabase.com/docs/guides/platform/permissions + https://supabase.com/docs/guides/getting-started/features weekly 0.5 @@ -871,37 +745,79 @@ - https://supabase.com/docs/guides/api/generating-types + https://supabase.com/docs/guides/migrations/firebase-auth weekly 0.5 - https://supabase.com/docs/guides/storage/access-control + https://supabase.com/docs/guides/migrations/firebase-storage weekly 0.5 - https://supabase.com/docs/guides/storage/cdn + https://supabase.com/docs/guides/migrations/firestore-data weekly 0.5 - https://supabase.com/docs/guides/storage/quickstart + https://supabase.com/docs/guides/migrations/heroku weekly 0.5 - https://supabase.com/docs/guides/storage/storage-sample + https://supabase.com/docs/guides/platform/compute-add-ons weekly 0.5 - https://supabase.com/docs/new/auth/auth-login + https://supabase.com/docs/guides/platform/custom-domains + weekly + 0.5 + + + + https://supabase.com/docs/guides/platform/database-usage + weekly + 0.5 + + + + https://supabase.com/docs/guides/platform/going-into-prod + weekly + 0.5 + + + + https://supabase.com/docs/guides/platform/logs + weekly + 0.5 + + + + https://supabase.com/docs/guides/platform/metrics + weekly + 0.5 + + + + https://supabase.com/docs/guides/platform/migrating-and-upgrading-projects + weekly + 0.5 + + + + https://supabase.com/docs/guides/platform/performance + weekly + 0.5 + + + + https://supabase.com/docs/guides/platform/permissions weekly 0.5 @@ -955,55 +871,61 @@ - https://supabase.com/docs/guides/auth/passwordless-login/email-otp-magic-link + https://supabase.com/docs/guides/storage/access-control weekly 0.5 - https://supabase.com/docs/guides/auth/passwordless-login/phone-sms-otp-messagebird + https://supabase.com/docs/guides/storage/cdn weekly 0.5 - https://supabase.com/docs/guides/auth/passwordless-login/phone-sms-otp-twilio + https://supabase.com/docs/guides/storage/quickstart weekly 0.5 - https://supabase.com/docs/guides/auth/passwordless-login/phone-sms-otp-vonage + https://supabase.com/docs/guides/storage/storage-sample weekly 0.5 - https://supabase.com/docs/guides/auth/auth-helpers/auth-ui + https://supabase.com/docs/learn/auth-deep-dive/auth-deep-dive-jwts weekly 0.5 - https://supabase.com/docs/guides/auth/auth-helpers/nextjs-server-components + https://supabase.com/docs/learn/auth-deep-dive/auth-google-oauth weekly 0.5 - https://supabase.com/docs/guides/auth/auth-helpers/nextjs + https://supabase.com/docs/learn/auth-deep-dive/auth-gotrue weekly 0.5 - https://supabase.com/docs/guides/auth/auth-helpers/remix + https://supabase.com/docs/learn/auth-deep-dive/auth-policies weekly 0.5 - https://supabase.com/docs/guides/auth/auth-helpers/sveltekit + https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security + weekly + 0.5 + + + + https://supabase.com/docs/new/auth/auth-login weekly 0.5 @@ -1044,12 +966,6 @@ 0.5 - - https://supabase.com/docs/guides/functions/examples/og-image - weekly - 0.5 - - https://supabase.com/docs/guides/auth/social-login/auth-apple weekly @@ -1158,6 +1074,90 @@ 0.5 + + https://supabase.com/docs/guides/auth/passwordless-login/email-otp-magic-link + weekly + 0.5 + + + + https://supabase.com/docs/guides/auth/passwordless-login/phone-sms-otp-messagebird + weekly + 0.5 + + + + https://supabase.com/docs/guides/auth/passwordless-login/phone-sms-otp-twilio + weekly + 0.5 + + + + https://supabase.com/docs/guides/auth/passwordless-login/phone-sms-otp-vonage + weekly + 0.5 + + + + https://supabase.com/docs/guides/auth/auth-helpers/auth-ui + weekly + 0.5 + + + + https://supabase.com/docs/guides/auth/auth-helpers/nextjs-server-components + weekly + 0.5 + + + + https://supabase.com/docs/guides/auth/auth-helpers/nextjs + weekly + 0.5 + + + + https://supabase.com/docs/guides/auth/auth-helpers/remix + weekly + 0.5 + + + + https://supabase.com/docs/guides/auth/auth-helpers/sveltekit + weekly + 0.5 + + + + https://supabase.com/docs/guides/functions/examples/og-image + weekly + 0.5 + + + + https://supabase.com/docs/guides/resources/migrating-to-supabase/firebase-auth + weekly + 0.5 + + + + https://supabase.com/docs/guides/resources/migrating-to-supabase/firebase-data + weekly + 0.5 + + + + https://supabase.com/docs/guides/resources/migrating-to-supabase/firebase-storage + weekly + 0.5 + + + + https://supabase.com/docs/guides/resources/migrating-to-supabase/heroku + weekly + 0.5 + + https://supabase.com/docs/guides/getting-started/quickstarts/nextjs weekly @@ -1260,12 +1260,6 @@ 0.5 - - https://supabase.com/docs/guides/resources/self-hosting/docker - weekly - 0.5 - - https://supabase.com/docs/guides/resources/supabase-cli/local-development weekly @@ -1279,25 +1273,7 @@ - https://supabase.com/docs/guides/resources/migrating-to-supabase/firebase-auth - weekly - 0.5 - - - - https://supabase.com/docs/guides/resources/migrating-to-supabase/firebase-data - weekly - 0.5 - - - - https://supabase.com/docs/guides/resources/migrating-to-supabase/firebase-storage - weekly - 0.5 - - - - https://supabase.com/docs/guides/resources/migrating-to-supabase/heroku + https://supabase.com/docs/guides/resources/self-hosting/docker weekly 0.5 From 914f0a22c4866efc0a36fca508cc4ef77b87d8d5 Mon Sep 17 00:00:00 2001 From: Inian Date: Tue, 13 Dec 2022 01:48:16 +0800 Subject: [PATCH 06/92] feat: add transform docs --- spec/enrichments/tsdoc_v2/combined.json | 985 +++++++++++------- spec/enrichments/tsdoc_v2/storage.json | 945 ++++++++++------- .../tsdoc_v2/storage_dereferenced.json | 985 +++++++++++------- 3 files changed, 1762 insertions(+), 1153 deletions(-) diff --git a/spec/enrichments/tsdoc_v2/combined.json b/spec/enrichments/tsdoc_v2/combined.json index 373c4bc4f59..60c12845bc2 100644 --- a/spec/enrichments/tsdoc_v2/combined.json +++ b/spec/enrichments/tsdoc_v2/combined.json @@ -55787,14 +55787,14 @@ "flags": {}, "children": [ { - "id": 390, + "id": 402, "name": "StorageApiError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 391, + "id": 403, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -55808,14 +55808,14 @@ ], "signatures": [ { - "id": 392, + "id": 404, "name": "new StorageApiError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 393, + "id": 405, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -55826,7 +55826,7 @@ } }, { - "id": 394, + "id": 406, "name": "status", "kind": 32768, "kindString": "Parameter", @@ -55839,24 +55839,24 @@ ], "type": { "type": "reference", - "id": 390, + "id": 402, "name": "StorageApiError" }, "overwrites": { "type": "reference", - "id": 387, + "id": 399, "name": "StorageError.constructor" } } ], "overwrites": { "type": "reference", - "id": 386, + "id": 398, "name": "StorageError.constructor" } }, { - "id": 395, + "id": 407, "name": "status", "kind": 1024, "kindString": "Property", @@ -55874,7 +55874,7 @@ } }, { - "id": 396, + "id": 408, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -55888,7 +55888,7 @@ ], "signatures": [ { - "id": 397, + "id": 409, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -55896,14 +55896,14 @@ "type": { "type": "reflection", "declaration": { - "id": 398, + "id": 410, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 400, + "id": 412, "name": "message", "kind": 1024, "kindString": "Property", @@ -55922,7 +55922,7 @@ "defaultValue": "..." }, { - "id": 399, + "id": 411, "name": "name", "kind": 1024, "kindString": "Property", @@ -55941,7 +55941,7 @@ "defaultValue": "..." }, { - "id": 401, + "id": 413, "name": "status", "kind": 1024, "kindString": "Property", @@ -55964,7 +55964,7 @@ { "title": "Properties", "kind": 1024, - "children": [400, 399, 401] + "children": [412, 411, 413] } ] } @@ -55977,17 +55977,17 @@ { "title": "Constructors", "kind": 512, - "children": [391] + "children": [403] }, { "title": "Properties", "kind": 1024, - "children": [395] + "children": [407] }, { "title": "Methods", "kind": 2048, - "children": [396] + "children": [408] } ], "sources": [ @@ -56000,20 +56000,20 @@ "extendedTypes": [ { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } ] }, { - "id": 258, + "id": 266, "name": "StorageClient", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 259, + "id": 267, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -56027,14 +56027,14 @@ ], "signatures": [ { - "id": 260, + "id": 268, "name": "new StorageClient", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 261, + "id": 269, "name": "url", "kind": 32768, "kindString": "Parameter", @@ -56045,7 +56045,7 @@ } }, { - "id": 262, + "id": 270, "name": "headers", "kind": 32768, "kindString": "Parameter", @@ -56053,20 +56053,20 @@ "type": { "type": "reflection", "declaration": { - "id": 263, + "id": 271, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "indexSignature": { - "id": 264, + "id": 272, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 265, + "id": 273, "name": "key", "kind": 32768, "flags": {}, @@ -56086,7 +56086,7 @@ "defaultValue": "{}" }, { - "id": 266, + "id": 274, "name": "fetch", "kind": 32768, "kindString": "Parameter", @@ -56096,21 +56096,21 @@ "type": { "type": "reflection", "declaration": { - "id": 267, + "id": 275, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "signatures": [ { - "id": 268, + "id": 276, "name": "__type", "kind": 4096, "kindString": "Call signature", "flags": {}, "parameters": [ { - "id": 269, + "id": 277, "name": "input", "kind": 32768, "kindString": "Parameter", @@ -56123,7 +56123,7 @@ } }, { - "id": 270, + "id": 278, "name": "init", "kind": 32768, "kindString": "Parameter", @@ -56160,7 +56160,7 @@ ], "type": { "type": "reference", - "id": 258, + "id": 266, "name": "StorageClient" }, "overwrites": { @@ -56177,7 +56177,7 @@ } }, { - "id": 301, + "id": 309, "name": "createBucket", "kind": 2048, "kindString": "Method", @@ -56191,7 +56191,7 @@ ], "signatures": [ { - "id": 302, + "id": 310, "name": "createBucket", "kind": 4096, "kindString": "Call signature", @@ -56202,7 +56202,7 @@ }, "parameters": [ { - "id": 303, + "id": 311, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -56216,7 +56216,7 @@ } }, { - "id": 304, + "id": 312, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -56224,14 +56224,14 @@ "type": { "type": "reflection", "declaration": { - "id": 305, + "id": 313, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 306, + "id": 314, "name": "public", "kind": 1024, "kindString": "Property", @@ -56256,7 +56256,7 @@ { "title": "Properties", "kind": 1024, - "children": [306] + "children": [314] } ] } @@ -56273,14 +56273,14 @@ { "type": "reflection", "declaration": { - "id": 307, + "id": 315, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 308, + "id": 316, "name": "data", "kind": 1024, "kindString": "Property", @@ -56297,7 +56297,7 @@ "typeArguments": [ { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" }, { @@ -56311,7 +56311,7 @@ } }, { - "id": 309, + "id": 317, "name": "error", "kind": 1024, "kindString": "Property", @@ -56333,7 +56333,7 @@ { "title": "Properties", "kind": 1024, - "children": [308, 309] + "children": [316, 317] } ] } @@ -56341,14 +56341,14 @@ { "type": "reflection", "declaration": { - "id": 310, + "id": 318, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 311, + "id": 319, "name": "data", "kind": 1024, "kindString": "Property", @@ -56366,7 +56366,7 @@ } }, { - "id": 312, + "id": 320, "name": "error", "kind": 1024, "kindString": "Property", @@ -56380,7 +56380,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -56389,7 +56389,7 @@ { "title": "Properties", "kind": 1024, - "children": [311, 312] + "children": [319, 320] } ] } @@ -56415,7 +56415,7 @@ } }, { - "id": 338, + "id": 346, "name": "deleteBucket", "kind": 2048, "kindString": "Method", @@ -56429,7 +56429,7 @@ ], "signatures": [ { - "id": 339, + "id": 347, "name": "deleteBucket", "kind": 4096, "kindString": "Call signature", @@ -56439,7 +56439,7 @@ }, "parameters": [ { - "id": 340, + "id": 348, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -56462,14 +56462,14 @@ { "type": "reflection", "declaration": { - "id": 341, + "id": 349, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 342, + "id": 350, "name": "data", "kind": 1024, "kindString": "Property", @@ -56484,14 +56484,14 @@ "type": { "type": "reflection", "declaration": { - "id": 343, + "id": 351, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 344, + "id": 352, "name": "message", "kind": 1024, "kindString": "Property", @@ -56513,14 +56513,14 @@ { "title": "Properties", "kind": 1024, - "children": [344] + "children": [352] } ] } } }, { - "id": 345, + "id": 353, "name": "error", "kind": 1024, "kindString": "Property", @@ -56542,7 +56542,7 @@ { "title": "Properties", "kind": 1024, - "children": [342, 345] + "children": [350, 353] } ] } @@ -56550,14 +56550,14 @@ { "type": "reflection", "declaration": { - "id": 346, + "id": 354, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 347, + "id": 355, "name": "data", "kind": 1024, "kindString": "Property", @@ -56575,7 +56575,7 @@ } }, { - "id": 348, + "id": 356, "name": "error", "kind": 1024, "kindString": "Property", @@ -56589,7 +56589,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -56598,7 +56598,7 @@ { "title": "Properties", "kind": 1024, - "children": [347, 348] + "children": [355, 356] } ] } @@ -56624,7 +56624,7 @@ } }, { - "id": 327, + "id": 335, "name": "emptyBucket", "kind": 2048, "kindString": "Method", @@ -56638,7 +56638,7 @@ ], "signatures": [ { - "id": 328, + "id": 336, "name": "emptyBucket", "kind": 4096, "kindString": "Call signature", @@ -56648,7 +56648,7 @@ }, "parameters": [ { - "id": 329, + "id": 337, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -56671,14 +56671,14 @@ { "type": "reflection", "declaration": { - "id": 330, + "id": 338, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 331, + "id": 339, "name": "data", "kind": 1024, "kindString": "Property", @@ -56693,14 +56693,14 @@ "type": { "type": "reflection", "declaration": { - "id": 332, + "id": 340, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 333, + "id": 341, "name": "message", "kind": 1024, "kindString": "Property", @@ -56722,14 +56722,14 @@ { "title": "Properties", "kind": 1024, - "children": [333] + "children": [341] } ] } } }, { - "id": 334, + "id": 342, "name": "error", "kind": 1024, "kindString": "Property", @@ -56751,7 +56751,7 @@ { "title": "Properties", "kind": 1024, - "children": [331, 334] + "children": [339, 342] } ] } @@ -56759,14 +56759,14 @@ { "type": "reflection", "declaration": { - "id": 335, + "id": 343, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 336, + "id": 344, "name": "data", "kind": 1024, "kindString": "Property", @@ -56784,7 +56784,7 @@ } }, { - "id": 337, + "id": 345, "name": "error", "kind": 1024, "kindString": "Property", @@ -56798,7 +56798,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -56807,7 +56807,7 @@ { "title": "Properties", "kind": 1024, - "children": [336, 337] + "children": [344, 345] } ] } @@ -56833,7 +56833,7 @@ } }, { - "id": 271, + "id": 279, "name": "from", "kind": 2048, "kindString": "Method", @@ -56847,7 +56847,7 @@ ], "signatures": [ { - "id": 272, + "id": 280, "name": "from", "kind": 4096, "kindString": "Call signature", @@ -56857,7 +56857,7 @@ }, "parameters": [ { - "id": 273, + "id": 281, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -56880,7 +56880,7 @@ ] }, { - "id": 292, + "id": 300, "name": "getBucket", "kind": 2048, "kindString": "Method", @@ -56894,7 +56894,7 @@ ], "signatures": [ { - "id": 293, + "id": 301, "name": "getBucket", "kind": 4096, "kindString": "Call signature", @@ -56904,7 +56904,7 @@ }, "parameters": [ { - "id": 294, + "id": 302, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -56927,14 +56927,14 @@ { "type": "reflection", "declaration": { - "id": 295, + "id": 303, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 296, + "id": 304, "name": "data", "kind": 1024, "kindString": "Property", @@ -56948,12 +56948,12 @@ ], "type": { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" } }, { - "id": 297, + "id": 305, "name": "error", "kind": 1024, "kindString": "Property", @@ -56975,7 +56975,7 @@ { "title": "Properties", "kind": 1024, - "children": [296, 297] + "children": [304, 305] } ] } @@ -56983,14 +56983,14 @@ { "type": "reflection", "declaration": { - "id": 298, + "id": 306, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 299, + "id": 307, "name": "data", "kind": 1024, "kindString": "Property", @@ -57008,7 +57008,7 @@ } }, { - "id": 300, + "id": 308, "name": "error", "kind": 1024, "kindString": "Property", @@ -57022,7 +57022,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -57031,7 +57031,7 @@ { "title": "Properties", "kind": 1024, - "children": [299, 300] + "children": [307, 308] } ] } @@ -57057,7 +57057,7 @@ } }, { - "id": 284, + "id": 292, "name": "listBuckets", "kind": 2048, "kindString": "Method", @@ -57071,7 +57071,7 @@ ], "signatures": [ { - "id": 285, + "id": 293, "name": "listBuckets", "kind": 4096, "kindString": "Call signature", @@ -57088,14 +57088,14 @@ { "type": "reflection", "declaration": { - "id": 286, + "id": 294, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 287, + "id": 295, "name": "data", "kind": 1024, "kindString": "Property", @@ -57111,13 +57111,13 @@ "type": "array", "elementType": { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" } } }, { - "id": 288, + "id": 296, "name": "error", "kind": 1024, "kindString": "Property", @@ -57139,7 +57139,7 @@ { "title": "Properties", "kind": 1024, - "children": [287, 288] + "children": [295, 296] } ] } @@ -57147,14 +57147,14 @@ { "type": "reflection", "declaration": { - "id": 289, + "id": 297, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 290, + "id": 298, "name": "data", "kind": 1024, "kindString": "Property", @@ -57172,7 +57172,7 @@ } }, { - "id": 291, + "id": 299, "name": "error", "kind": 1024, "kindString": "Property", @@ -57186,7 +57186,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -57195,7 +57195,7 @@ { "title": "Properties", "kind": 1024, - "children": [290, 291] + "children": [298, 299] } ] } @@ -57221,7 +57221,7 @@ } }, { - "id": 313, + "id": 321, "name": "updateBucket", "kind": 2048, "kindString": "Method", @@ -57235,7 +57235,7 @@ ], "signatures": [ { - "id": 314, + "id": 322, "name": "updateBucket", "kind": 4096, "kindString": "Call signature", @@ -57245,7 +57245,7 @@ }, "parameters": [ { - "id": 315, + "id": 323, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -57259,7 +57259,7 @@ } }, { - "id": 316, + "id": 324, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -57267,14 +57267,14 @@ "type": { "type": "reflection", "declaration": { - "id": 317, + "id": 325, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 318, + "id": 326, "name": "public", "kind": 1024, "kindString": "Property", @@ -57299,7 +57299,7 @@ { "title": "Properties", "kind": 1024, - "children": [318] + "children": [326] } ] } @@ -57315,14 +57315,14 @@ { "type": "reflection", "declaration": { - "id": 319, + "id": 327, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 320, + "id": 328, "name": "data", "kind": 1024, "kindString": "Property", @@ -57337,14 +57337,14 @@ "type": { "type": "reflection", "declaration": { - "id": 321, + "id": 329, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 322, + "id": 330, "name": "message", "kind": 1024, "kindString": "Property", @@ -57366,14 +57366,14 @@ { "title": "Properties", "kind": 1024, - "children": [322] + "children": [330] } ] } } }, { - "id": 323, + "id": 331, "name": "error", "kind": 1024, "kindString": "Property", @@ -57395,7 +57395,7 @@ { "title": "Properties", "kind": 1024, - "children": [320, 323] + "children": [328, 331] } ] } @@ -57403,14 +57403,14 @@ { "type": "reflection", "declaration": { - "id": 324, + "id": 332, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 325, + "id": 333, "name": "data", "kind": 1024, "kindString": "Property", @@ -57428,7 +57428,7 @@ } }, { - "id": 326, + "id": 334, "name": "error", "kind": 1024, "kindString": "Property", @@ -57442,7 +57442,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -57451,7 +57451,7 @@ { "title": "Properties", "kind": 1024, - "children": [325, 326] + "children": [333, 334] } ] } @@ -57481,12 +57481,12 @@ { "title": "Constructors", "kind": 512, - "children": [259] + "children": [267] }, { "title": "Methods", "kind": 2048, - "children": [301, 338, 327, 271, 292, 284, 313] + "children": [309, 346, 335, 279, 300, 292, 321] } ], "sources": [ @@ -57505,14 +57505,14 @@ ] }, { - "id": 385, + "id": 397, "name": "StorageError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 386, + "id": 398, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -57526,14 +57526,14 @@ ], "signatures": [ { - "id": 387, + "id": 399, "name": "new StorageError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 388, + "id": 400, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -57546,7 +57546,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" }, "overwrites": { @@ -57565,7 +57565,7 @@ { "title": "Constructors", "kind": 512, - "children": [386] + "children": [398] } ], "sources": [ @@ -57586,25 +57586,25 @@ "extendedBy": [ { "type": "reference", - "id": 390, + "id": 402, "name": "StorageApiError" }, { "type": "reference", - "id": 403, + "id": 415, "name": "StorageUnknownError" } ] }, { - "id": 403, + "id": 415, "name": "StorageUnknownError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 404, + "id": 416, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -57618,14 +57618,14 @@ ], "signatures": [ { - "id": 405, + "id": 417, "name": "new StorageUnknownError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 406, + "id": 418, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -57636,7 +57636,7 @@ } }, { - "id": 407, + "id": 419, "name": "originalError", "kind": 32768, "kindString": "Parameter", @@ -57649,24 +57649,24 @@ ], "type": { "type": "reference", - "id": 403, + "id": 415, "name": "StorageUnknownError" }, "overwrites": { "type": "reference", - "id": 387, + "id": 399, "name": "StorageError.constructor" } } ], "overwrites": { "type": "reference", - "id": 386, + "id": 398, "name": "StorageError.constructor" } }, { - "id": 408, + "id": 420, "name": "originalError", "kind": 1024, "kindString": "Property", @@ -57688,12 +57688,12 @@ { "title": "Constructors", "kind": 512, - "children": [404] + "children": [416] }, { "title": "Properties", "kind": 1024, - "children": [408] + "children": [420] } ], "sources": [ @@ -57706,20 +57706,20 @@ "extendedTypes": [ { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } ] }, { - "id": 349, + "id": 357, "name": "Bucket", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 353, + "id": 361, "name": "created_at", "kind": 1024, "kindString": "Property", @@ -57737,7 +57737,7 @@ } }, { - "id": 350, + "id": 358, "name": "id", "kind": 1024, "kindString": "Property", @@ -57755,7 +57755,7 @@ } }, { - "id": 351, + "id": 359, "name": "name", "kind": 1024, "kindString": "Property", @@ -57773,7 +57773,7 @@ } }, { - "id": 352, + "id": 360, "name": "owner", "kind": 1024, "kindString": "Property", @@ -57791,7 +57791,7 @@ } }, { - "id": 355, + "id": 363, "name": "public", "kind": 1024, "kindString": "Property", @@ -57809,7 +57809,7 @@ } }, { - "id": 354, + "id": 362, "name": "updated_at", "kind": 1024, "kindString": "Property", @@ -57831,7 +57831,7 @@ { "title": "Properties", "kind": 1024, - "children": [353, 350, 351, 352, 355, 354] + "children": [361, 358, 359, 360, 363, 362] } ], "sources": [ @@ -57843,14 +57843,14 @@ ] }, { - "id": 378, + "id": 386, "name": "FetchParameters", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 379, + "id": 387, "name": "signal", "kind": 1024, "kindString": "Property", @@ -57879,7 +57879,7 @@ { "title": "Properties", "kind": 1024, - "children": [379] + "children": [387] } ], "sources": [ @@ -57891,14 +57891,14 @@ ] }, { - "id": 356, + "id": 364, "name": "FileObject", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 358, + "id": 366, "name": "bucket_id", "kind": 1024, "kindString": "Property", @@ -57916,7 +57916,7 @@ } }, { - "id": 365, + "id": 373, "name": "buckets", "kind": 1024, "kindString": "Property", @@ -57930,12 +57930,12 @@ ], "type": { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" } }, { - "id": 362, + "id": 370, "name": "created_at", "kind": 1024, "kindString": "Property", @@ -57953,7 +57953,7 @@ } }, { - "id": 360, + "id": 368, "name": "id", "kind": 1024, "kindString": "Property", @@ -57971,7 +57971,7 @@ } }, { - "id": 363, + "id": 371, "name": "last_accessed_at", "kind": 1024, "kindString": "Property", @@ -57989,7 +57989,7 @@ } }, { - "id": 364, + "id": 372, "name": "metadata", "kind": 1024, "kindString": "Property", @@ -58019,7 +58019,7 @@ } }, { - "id": 357, + "id": 365, "name": "name", "kind": 1024, "kindString": "Property", @@ -58037,7 +58037,7 @@ } }, { - "id": 359, + "id": 367, "name": "owner", "kind": 1024, "kindString": "Property", @@ -58055,7 +58055,7 @@ } }, { - "id": 361, + "id": 369, "name": "updated_at", "kind": 1024, "kindString": "Property", @@ -58077,7 +58077,7 @@ { "title": "Properties", "kind": 1024, - "children": [358, 365, 362, 360, 363, 364, 357, 359, 361] + "children": [366, 373, 370, 368, 371, 372, 365, 367, 369] } ], "sources": [ @@ -58089,14 +58089,14 @@ ] }, { - "id": 369, + "id": 377, "name": "FileOptions", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 370, + "id": 378, "name": "cacheControl", "kind": 1024, "kindString": "Property", @@ -58119,7 +58119,7 @@ } }, { - "id": 371, + "id": 379, "name": "contentType", "kind": 1024, "kindString": "Property", @@ -58142,7 +58142,7 @@ } }, { - "id": 372, + "id": 380, "name": "upsert", "kind": 1024, "kindString": "Property", @@ -58169,7 +58169,7 @@ { "title": "Properties", "kind": 1024, - "children": [370, 371, 372] + "children": [378, 379, 380] } ], "sources": [ @@ -58181,14 +58181,14 @@ ] }, { - "id": 380, + "id": 388, "name": "Metadata", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 381, + "id": 389, "name": "name", "kind": 1024, "kindString": "Property", @@ -58210,7 +58210,7 @@ { "title": "Properties", "kind": 1024, - "children": [381] + "children": [389] } ], "sources": [ @@ -58222,14 +58222,14 @@ ] }, { - "id": 373, + "id": 381, "name": "SearchOptions", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 374, + "id": 382, "name": "limit", "kind": 1024, "kindString": "Property", @@ -58252,7 +58252,7 @@ } }, { - "id": 375, + "id": 383, "name": "offset", "kind": 1024, "kindString": "Property", @@ -58275,7 +58275,7 @@ } }, { - "id": 377, + "id": 385, "name": "search", "kind": 1024, "kindString": "Property", @@ -58298,7 +58298,7 @@ } }, { - "id": 376, + "id": 384, "name": "sortBy", "kind": 1024, "kindString": "Property", @@ -58317,7 +58317,7 @@ ], "type": { "type": "reference", - "id": 366, + "id": 374, "name": "SortBy" } } @@ -58326,7 +58326,7 @@ { "title": "Properties", "kind": 1024, - "children": [374, 375, 377, 376] + "children": [382, 383, 385, 384] } ], "sources": [ @@ -58338,14 +58338,14 @@ ] }, { - "id": 366, + "id": 374, "name": "SortBy", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 367, + "id": 375, "name": "column", "kind": 1024, "kindString": "Property", @@ -58365,7 +58365,7 @@ } }, { - "id": 368, + "id": 376, "name": "order", "kind": 1024, "kindString": "Property", @@ -58389,7 +58389,7 @@ { "title": "Properties", "kind": 1024, - "children": [367, 368] + "children": [375, 376] } ], "sources": [ @@ -58401,7 +58401,112 @@ ] }, { - "id": 382, + "id": 390, + "name": "TransformOptions", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "children": [ + { + "id": 392, + "name": "height", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The height of the image in pixels. If the width is not specified, the image will be resized to the height while maintaining the aspect ratio." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 84, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "number" + } + }, + { + "id": 393, + "name": "resize", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The resize mode can be cover, contain or fill. Default is cover.\nCover resizes the image to maintain it's aspect ratio while filling the entire width and height.\nContain resizes the image to maintain it's aspect ratio while fitting the entire image within the width and height.\nFill resizes the image to fill the entire width and height. If the object's aspect ratio does not match the width and height, the image will be stretched to fit." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 91, + "character": 2 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "literal", + "value": "cover" + }, + { + "type": "literal", + "value": "contain" + }, + { + "type": "literal", + "value": "fill" + } + ] + } + }, + { + "id": 391, + "name": "width", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The width of the image in pixels. If the height is not specified, the image will be resized to the width while maintaining the aspect ratio." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 80, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "number" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [392, 393, 391] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 76, + "character": 17 + } + ] + }, + { + "id": 394, "name": "isStorageError", "kind": 64, "kindString": "Function", @@ -58415,14 +58520,14 @@ ], "signatures": [ { - "id": 383, + "id": 395, "name": "isStorageError", "kind": 4096, "kindString": "Call signature", "flags": {}, "parameters": [ { - "id": 384, + "id": 396, "name": "error", "kind": 32768, "kindString": "Parameter", @@ -58439,7 +58544,7 @@ "asserts": false, "targetType": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -58451,17 +58556,17 @@ { "title": "Classes", "kind": 128, - "children": [390, 258, 385, 403] + "children": [402, 266, 397, 415] }, { "title": "Interfaces", "kind": 256, - "children": [349, 378, 356, 369, 380, 373, 366] + "children": [357, 386, 364, 377, 388, 381, 374, 390] }, { "title": "Functions", "kind": 64, - "children": [382] + "children": [394] } ], "sources": [ @@ -58761,7 +58866,7 @@ "typeArguments": [ { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" }, { @@ -58844,7 +58949,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -59043,7 +59148,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -59242,7 +59347,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -59335,7 +59440,7 @@ ], "type": { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" } }, @@ -59409,7 +59514,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -59488,7 +59593,7 @@ "type": "array", "elementType": { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" } } @@ -59563,7 +59668,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -59809,7 +59914,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -59856,7 +59961,7 @@ "extendedBy": [ { "type": "reference", - "id": 258, + "id": 266, "name": "StorageClient" } ] @@ -59900,7 +60005,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 27, + "line": 33, "character": 2 } ], @@ -60067,7 +60172,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 226, + "line": 232, "character": 8 } ], @@ -60135,7 +60240,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 231, + "line": 237, "character": 8 } ], @@ -60157,7 +60262,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 231, + "line": 237, "character": 16 } ], @@ -60186,7 +60291,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 232, + "line": 238, "character": 8 } ], @@ -60223,7 +60328,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 235, + "line": 241, "character": 8 } ], @@ -60241,13 +60346,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 236, + "line": 242, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -60280,7 +60385,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 263, + "line": 269, "character": 8 } ], @@ -60345,14 +60450,16 @@ "name": "download", "kind": 1024, "kindString": "Property", - "flags": {}, + "flags": { + "isOptional": true + }, "comment": { "shortText": "triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename.\n" }, "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 266, + "line": 272, "character": 16 } ], @@ -60369,13 +60476,34 @@ } ] } + }, + { + "id": 188, + "name": "transform", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/packages/StorageFileApi.ts", + "line": 272, + "character": 45 + } + ], + "type": { + "type": "reference", + "id": 390, + "name": "TransformOptions" + } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [187] + "children": [187, 188] } ] } @@ -60391,14 +60519,14 @@ { "type": "reflection", "declaration": { - "id": 188, + "id": 189, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 189, + "id": 190, "name": "data", "kind": 1024, "kindString": "Property", @@ -60406,21 +60534,21 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 269, + "line": 275, "character": 8 } ], "type": { "type": "reflection", "declaration": { - "id": 190, + "id": 191, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 191, + "id": 192, "name": "signedUrl", "kind": 1024, "kindString": "Property", @@ -60428,7 +60556,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 269, + "line": 275, "character": 16 } ], @@ -60442,14 +60570,14 @@ { "title": "Properties", "kind": 1024, - "children": [191] + "children": [192] } ] } } }, { - "id": 192, + "id": 193, "name": "error", "kind": 1024, "kindString": "Property", @@ -60457,7 +60585,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 270, + "line": 276, "character": 8 } ], @@ -60471,7 +60599,7 @@ { "title": "Properties", "kind": 1024, - "children": [189, 192] + "children": [190, 193] } ] } @@ -60479,14 +60607,14 @@ { "type": "reflection", "declaration": { - "id": 193, + "id": 194, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 194, + "id": 195, "name": "data", "kind": 1024, "kindString": "Property", @@ -60494,7 +60622,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 273, + "line": 279, "character": 8 } ], @@ -60504,7 +60632,7 @@ } }, { - "id": 195, + "id": 196, "name": "error", "kind": 1024, "kindString": "Property", @@ -60512,13 +60640,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 274, + "line": 280, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -60527,7 +60655,7 @@ { "title": "Properties", "kind": 1024, - "children": [194, 195] + "children": [195, 196] } ] } @@ -60543,7 +60671,7 @@ ] }, { - "id": 196, + "id": 197, "name": "createSignedUrls", "kind": 2048, "kindString": "Method", @@ -60551,13 +60679,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 307, + "line": 314, "character": 8 } ], "signatures": [ { - "id": 197, + "id": 198, "name": "createSignedUrls", "kind": 4096, "kindString": "Call signature", @@ -60567,7 +60695,7 @@ }, "parameters": [ { - "id": 198, + "id": 199, "name": "paths", "kind": 32768, "kindString": "Parameter", @@ -60584,7 +60712,7 @@ } }, { - "id": 199, + "id": 200, "name": "expiresIn", "kind": 32768, "kindString": "Parameter", @@ -60598,7 +60726,7 @@ } }, { - "id": 200, + "id": 201, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -60608,14 +60736,14 @@ "type": { "type": "reflection", "declaration": { - "id": 201, + "id": 202, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 202, + "id": 203, "name": "download", "kind": 1024, "kindString": "Property", @@ -60626,7 +60754,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 310, + "line": 317, "character": 16 } ], @@ -60649,7 +60777,7 @@ { "title": "Properties", "kind": 1024, - "children": [202] + "children": [203] } ] } @@ -60665,14 +60793,14 @@ { "type": "reflection", "declaration": { - "id": 203, + "id": 204, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 204, + "id": 205, "name": "data", "kind": 1024, "kindString": "Property", @@ -60680,7 +60808,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 313, + "line": 320, "character": 8 } ], @@ -60689,14 +60817,14 @@ "elementType": { "type": "reflection", "declaration": { - "id": 205, + "id": 206, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 206, + "id": 207, "name": "error", "kind": 1024, "kindString": "Property", @@ -60704,7 +60832,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 313, + "line": 320, "character": 16 } ], @@ -60723,7 +60851,7 @@ } }, { - "id": 207, + "id": 208, "name": "path", "kind": 1024, "kindString": "Property", @@ -60731,7 +60859,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 313, + "line": 320, "character": 38 } ], @@ -60750,7 +60878,7 @@ } }, { - "id": 208, + "id": 209, "name": "signedUrl", "kind": 1024, "kindString": "Property", @@ -60758,7 +60886,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 313, + "line": 320, "character": 59 } ], @@ -60772,7 +60900,7 @@ { "title": "Properties", "kind": 1024, - "children": [206, 207, 208] + "children": [207, 208, 209] } ] } @@ -60780,7 +60908,7 @@ } }, { - "id": 209, + "id": 210, "name": "error", "kind": 1024, "kindString": "Property", @@ -60788,7 +60916,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 314, + "line": 321, "character": 8 } ], @@ -60802,7 +60930,7 @@ { "title": "Properties", "kind": 1024, - "children": [204, 209] + "children": [205, 210] } ] } @@ -60810,14 +60938,14 @@ { "type": "reflection", "declaration": { - "id": 210, + "id": 211, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 211, + "id": 212, "name": "data", "kind": 1024, "kindString": "Property", @@ -60825,7 +60953,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 317, + "line": 324, "character": 8 } ], @@ -60835,7 +60963,7 @@ } }, { - "id": 212, + "id": 213, "name": "error", "kind": 1024, "kindString": "Property", @@ -60843,13 +60971,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 318, + "line": 325, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -60858,7 +60986,7 @@ { "title": "Properties", "kind": 1024, - "children": [211, 212] + "children": [212, 213] } ] } @@ -60874,7 +61002,7 @@ ] }, { - "id": 213, + "id": 214, "name": "download", "kind": 2048, "kindString": "Method", @@ -60882,13 +61010,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 355, + "line": 363, "character": 8 } ], "signatures": [ { - "id": 214, + "id": 215, "name": "download", "kind": 4096, "kindString": "Call signature", @@ -60898,18 +61026,67 @@ }, "parameters": [ { - "id": 215, + "id": 216, "name": "path", "kind": 32768, "kindString": "Parameter", "flags": {}, "comment": { - "shortText": "The full path and file name of the file to be downloaded. For example `folder/image.png`.\n" + "shortText": "The full path and file name of the file to be downloaded. For example `folder/image.png`." }, "type": { "type": "intrinsic", "name": "string" } + }, + { + "id": 217, + "name": "options", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "type": { + "type": "reflection", + "declaration": { + "id": 218, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 219, + "name": "transform", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/packages/StorageFileApi.ts", + "line": 365, + "character": 16 + } + ], + "type": { + "type": "reference", + "id": 390, + "name": "TransformOptions" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [219] + } + ] + } + } } ], "type": { @@ -60921,14 +61098,14 @@ { "type": "reflection", "declaration": { - "id": 216, + "id": 220, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 217, + "id": 221, "name": "data", "kind": 1024, "kindString": "Property", @@ -60936,7 +61113,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 359, + "line": 368, "character": 8 } ], @@ -60948,7 +61125,7 @@ } }, { - "id": 218, + "id": 222, "name": "error", "kind": 1024, "kindString": "Property", @@ -60956,7 +61133,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 360, + "line": 369, "character": 8 } ], @@ -60970,7 +61147,7 @@ { "title": "Properties", "kind": 1024, - "children": [217, 218] + "children": [221, 222] } ] } @@ -60978,14 +61155,14 @@ { "type": "reflection", "declaration": { - "id": 219, + "id": 223, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 220, + "id": 224, "name": "data", "kind": 1024, "kindString": "Property", @@ -60993,7 +61170,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 363, + "line": 372, "character": 8 } ], @@ -61003,7 +61180,7 @@ } }, { - "id": 221, + "id": 225, "name": "error", "kind": 1024, "kindString": "Property", @@ -61011,13 +61188,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 364, + "line": 373, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -61026,7 +61203,7 @@ { "title": "Properties", "kind": 1024, - "children": [220, 221] + "children": [224, 225] } ] } @@ -61042,7 +61219,7 @@ ] }, { - "id": 222, + "id": 226, "name": "getPublicUrl", "kind": 2048, "kindString": "Method", @@ -61050,13 +61227,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 391, + "line": 406, "character": 2 } ], "signatures": [ { - "id": 223, + "id": 227, "name": "getPublicUrl", "kind": 4096, "kindString": "Call signature", @@ -61066,7 +61243,7 @@ }, "parameters": [ { - "id": 224, + "id": 228, "name": "path", "kind": 32768, "kindString": "Parameter", @@ -61080,7 +61257,7 @@ } }, { - "id": 225, + "id": 229, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -61090,25 +61267,27 @@ "type": { "type": "reflection", "declaration": { - "id": 226, + "id": 230, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 227, + "id": 231, "name": "download", "kind": 1024, "kindString": "Property", - "flags": {}, + "flags": { + "isOptional": true + }, "comment": { - "shortText": "triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename.\n" + "shortText": "triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename." }, "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 393, + "line": 408, "character": 16 } ], @@ -61125,13 +61304,37 @@ } ] } + }, + { + "id": 232, + "name": "transform", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "adds image transformations parameters to the generated url\n" + }, + "sources": [ + { + "fileName": "src/packages/StorageFileApi.ts", + "line": 408, + "character": 45 + } + ], + "type": { + "type": "reference", + "id": 390, + "name": "TransformOptions" + } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [227] + "children": [231, 232] } ] } @@ -61141,14 +61344,14 @@ "type": { "type": "reflection", "declaration": { - "id": 228, + "id": 233, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 229, + "id": 234, "name": "data", "kind": 1024, "kindString": "Property", @@ -61156,21 +61359,21 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 394, + "line": 409, "character": 7 } ], "type": { "type": "reflection", "declaration": { - "id": 230, + "id": 235, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 231, + "id": 236, "name": "publicUrl", "kind": 1024, "kindString": "Property", @@ -61178,7 +61381,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 394, + "line": 409, "character": 15 } ], @@ -61192,7 +61395,7 @@ { "title": "Properties", "kind": 1024, - "children": [231] + "children": [236] } ] } @@ -61203,7 +61406,7 @@ { "title": "Properties", "kind": 1024, - "children": [229] + "children": [234] } ] } @@ -61212,7 +61415,7 @@ ] }, { - "id": 241, + "id": 246, "name": "list", "kind": 2048, "kindString": "Method", @@ -61220,13 +61423,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 506, + "line": 540, "character": 8 } ], "signatures": [ { - "id": 242, + "id": 247, "name": "list", "kind": 4096, "kindString": "Call signature", @@ -61236,7 +61439,7 @@ }, "parameters": [ { - "id": 243, + "id": 248, "name": "path", "kind": 32768, "kindString": "Parameter", @@ -61252,7 +61455,7 @@ } }, { - "id": 244, + "id": 249, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -61261,17 +61464,17 @@ }, "type": { "type": "reference", - "id": 373, + "id": 381, "name": "SearchOptions", "dereferenced": { - "id": 373, + "id": 381, "name": "SearchOptions", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 374, + "id": 382, "name": "limit", "kind": 1024, "kindString": "Property", @@ -61294,7 +61497,7 @@ } }, { - "id": 375, + "id": 383, "name": "offset", "kind": 1024, "kindString": "Property", @@ -61317,7 +61520,7 @@ } }, { - "id": 377, + "id": 385, "name": "search", "kind": 1024, "kindString": "Property", @@ -61340,7 +61543,7 @@ } }, { - "id": 376, + "id": 384, "name": "sortBy", "kind": 1024, "kindString": "Property", @@ -61359,7 +61562,7 @@ ], "type": { "type": "reference", - "id": 366, + "id": 374, "name": "SortBy" } } @@ -61368,7 +61571,7 @@ { "title": "Properties", "kind": 1024, - "children": [374, 375, 377, 376] + "children": [382, 383, 385, 384] } ], "sources": [ @@ -61382,7 +61585,7 @@ } }, { - "id": 245, + "id": 250, "name": "parameters", "kind": 32768, "kindString": "Parameter", @@ -61391,17 +61594,17 @@ }, "type": { "type": "reference", - "id": 378, + "id": 386, "name": "FetchParameters", "dereferenced": { - "id": 378, + "id": 386, "name": "FetchParameters", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 379, + "id": 387, "name": "signal", "kind": 1024, "kindString": "Property", @@ -61430,7 +61633,7 @@ { "title": "Properties", "kind": 1024, - "children": [379] + "children": [387] } ], "sources": [ @@ -61453,14 +61656,14 @@ { "type": "reflection", "declaration": { - "id": 246, + "id": 251, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 247, + "id": 252, "name": "data", "kind": 1024, "kindString": "Property", @@ -61468,7 +61671,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 512, + "line": 546, "character": 8 } ], @@ -61476,13 +61679,13 @@ "type": "array", "elementType": { "type": "reference", - "id": 356, + "id": 364, "name": "FileObject" } } }, { - "id": 248, + "id": 253, "name": "error", "kind": 1024, "kindString": "Property", @@ -61490,7 +61693,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 513, + "line": 547, "character": 8 } ], @@ -61504,7 +61707,7 @@ { "title": "Properties", "kind": 1024, - "children": [247, 248] + "children": [252, 253] } ] } @@ -61512,14 +61715,14 @@ { "type": "reflection", "declaration": { - "id": 249, + "id": 254, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 250, + "id": 255, "name": "data", "kind": 1024, "kindString": "Property", @@ -61527,7 +61730,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 516, + "line": 550, "character": 8 } ], @@ -61537,7 +61740,7 @@ } }, { - "id": 251, + "id": 256, "name": "error", "kind": 1024, "kindString": "Property", @@ -61545,13 +61748,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 517, + "line": 551, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -61560,7 +61763,7 @@ { "title": "Properties", "kind": 1024, - "children": [250, 251] + "children": [255, 256] } ] } @@ -61584,7 +61787,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 190, + "line": 196, "character": 8 } ], @@ -61652,7 +61855,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 195, + "line": 201, "character": 8 } ], @@ -61674,7 +61877,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 195, + "line": 201, "character": 16 } ], @@ -61703,7 +61906,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 196, + "line": 202, "character": 8 } ], @@ -61740,7 +61943,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 199, + "line": 205, "character": 8 } ], @@ -61758,13 +61961,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 200, + "line": 206, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -61789,7 +61992,7 @@ ] }, { - "id": 232, + "id": 237, "name": "remove", "kind": 2048, "kindString": "Method", @@ -61797,13 +62000,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 410, + "line": 444, "character": 8 } ], "signatures": [ { - "id": 233, + "id": 238, "name": "remove", "kind": 4096, "kindString": "Call signature", @@ -61813,7 +62016,7 @@ }, "parameters": [ { - "id": 234, + "id": 239, "name": "paths", "kind": 32768, "kindString": "Parameter", @@ -61839,14 +62042,14 @@ { "type": "reflection", "declaration": { - "id": 235, + "id": 240, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 236, + "id": 241, "name": "data", "kind": 1024, "kindString": "Property", @@ -61854,7 +62057,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 414, + "line": 448, "character": 8 } ], @@ -61862,13 +62065,13 @@ "type": "array", "elementType": { "type": "reference", - "id": 356, + "id": 364, "name": "FileObject" } } }, { - "id": 237, + "id": 242, "name": "error", "kind": 1024, "kindString": "Property", @@ -61876,7 +62079,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 415, + "line": 449, "character": 8 } ], @@ -61890,7 +62093,7 @@ { "title": "Properties", "kind": 1024, - "children": [236, 237] + "children": [241, 242] } ] } @@ -61898,14 +62101,14 @@ { "type": "reflection", "declaration": { - "id": 238, + "id": 243, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 239, + "id": 244, "name": "data", "kind": 1024, "kindString": "Property", @@ -61913,7 +62116,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 418, + "line": 452, "character": 8 } ], @@ -61923,7 +62126,7 @@ } }, { - "id": 240, + "id": 245, "name": "error", "kind": 1024, "kindString": "Property", @@ -61931,13 +62134,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 419, + "line": 453, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -61946,7 +62149,7 @@ { "title": "Properties", "kind": 1024, - "children": [239, 240] + "children": [244, 245] } ] } @@ -61970,7 +62173,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 157, + "line": 163, "character": 8 } ], @@ -62090,17 +62293,17 @@ }, "type": { "type": "reference", - "id": 369, + "id": 377, "name": "FileOptions", "dereferenced": { - "id": 369, + "id": 377, "name": "FileOptions", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 370, + "id": 378, "name": "cacheControl", "kind": 1024, "kindString": "Property", @@ -62123,7 +62326,7 @@ } }, { - "id": 371, + "id": 379, "name": "contentType", "kind": 1024, "kindString": "Property", @@ -62146,7 +62349,7 @@ } }, { - "id": 372, + "id": 380, "name": "upsert", "kind": 1024, "kindString": "Property", @@ -62173,7 +62376,7 @@ { "title": "Properties", "kind": 1024, - "children": [370, 371, 372] + "children": [378, 379, 380] } ], "sources": [ @@ -62211,7 +62414,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 173, + "line": 179, "character": 8 } ], @@ -62233,7 +62436,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 173, + "line": 179, "character": 16 } ], @@ -62262,7 +62465,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 174, + "line": 180, "character": 8 } ], @@ -62299,7 +62502,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 177, + "line": 183, "character": 8 } ], @@ -62317,13 +62520,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 178, + "line": 184, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -62356,7 +62559,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 124, + "line": 130, "character": 8 } ], @@ -62476,17 +62679,17 @@ }, "type": { "type": "reference", - "id": 369, + "id": 377, "name": "FileOptions", "dereferenced": { - "id": 369, + "id": 377, "name": "FileOptions", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 370, + "id": 378, "name": "cacheControl", "kind": 1024, "kindString": "Property", @@ -62509,7 +62712,7 @@ } }, { - "id": 371, + "id": 379, "name": "contentType", "kind": 1024, "kindString": "Property", @@ -62532,7 +62735,7 @@ } }, { - "id": 372, + "id": 380, "name": "upsert", "kind": 1024, "kindString": "Property", @@ -62559,7 +62762,7 @@ { "title": "Properties", "kind": 1024, - "children": [370, 371, 372] + "children": [378, 379, 380] } ], "sources": [ @@ -62597,7 +62800,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 140, + "line": 146, "character": 8 } ], @@ -62619,7 +62822,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 140, + "line": 146, "character": 16 } ], @@ -62648,7 +62851,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 141, + "line": 147, "character": 8 } ], @@ -62685,7 +62888,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 144, + "line": 150, "character": 8 } ], @@ -62703,13 +62906,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 145, + "line": 151, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -62743,13 +62946,13 @@ { "title": "Methods", "kind": 2048, - "children": [169, 181, 196, 213, 222, 241, 157, 232, 144, 131] + "children": [169, 181, 197, 214, 226, 246, 157, 237, 144, 131] } ], "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 21, + "line": 27, "character": 21 } ] diff --git a/spec/enrichments/tsdoc_v2/storage.json b/spec/enrichments/tsdoc_v2/storage.json index 989b1a8b754..243616270e4 100644 --- a/spec/enrichments/tsdoc_v2/storage.json +++ b/spec/enrichments/tsdoc_v2/storage.json @@ -13,14 +13,14 @@ "flags": {}, "children": [ { - "id": 390, + "id": 402, "name": "StorageApiError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 391, + "id": 403, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -34,14 +34,14 @@ ], "signatures": [ { - "id": 392, + "id": 404, "name": "new StorageApiError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 393, + "id": 405, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -52,7 +52,7 @@ } }, { - "id": 394, + "id": 406, "name": "status", "kind": 32768, "kindString": "Parameter", @@ -65,24 +65,24 @@ ], "type": { "type": "reference", - "id": 390, + "id": 402, "name": "StorageApiError" }, "overwrites": { "type": "reference", - "id": 387, + "id": 399, "name": "StorageError.constructor" } } ], "overwrites": { "type": "reference", - "id": 386, + "id": 398, "name": "StorageError.constructor" } }, { - "id": 395, + "id": 407, "name": "status", "kind": 1024, "kindString": "Property", @@ -100,7 +100,7 @@ } }, { - "id": 396, + "id": 408, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -114,7 +114,7 @@ ], "signatures": [ { - "id": 397, + "id": 409, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -122,14 +122,14 @@ "type": { "type": "reflection", "declaration": { - "id": 398, + "id": 410, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 400, + "id": 412, "name": "message", "kind": 1024, "kindString": "Property", @@ -148,7 +148,7 @@ "defaultValue": "..." }, { - "id": 399, + "id": 411, "name": "name", "kind": 1024, "kindString": "Property", @@ -167,7 +167,7 @@ "defaultValue": "..." }, { - "id": 401, + "id": 413, "name": "status", "kind": 1024, "kindString": "Property", @@ -190,7 +190,7 @@ { "title": "Properties", "kind": 1024, - "children": [400, 399, 401] + "children": [412, 411, 413] } ] } @@ -203,17 +203,17 @@ { "title": "Constructors", "kind": 512, - "children": [391] + "children": [403] }, { "title": "Properties", "kind": 1024, - "children": [395] + "children": [407] }, { "title": "Methods", "kind": 2048, - "children": [396] + "children": [408] } ], "sources": [ @@ -226,20 +226,20 @@ "extendedTypes": [ { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } ] }, { - "id": 258, + "id": 266, "name": "StorageClient", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 259, + "id": 267, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -253,14 +253,14 @@ ], "signatures": [ { - "id": 260, + "id": 268, "name": "new StorageClient", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 261, + "id": 269, "name": "url", "kind": 32768, "kindString": "Parameter", @@ -271,7 +271,7 @@ } }, { - "id": 262, + "id": 270, "name": "headers", "kind": 32768, "kindString": "Parameter", @@ -279,20 +279,20 @@ "type": { "type": "reflection", "declaration": { - "id": 263, + "id": 271, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "indexSignature": { - "id": 264, + "id": 272, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 265, + "id": 273, "name": "key", "kind": 32768, "flags": {}, @@ -312,7 +312,7 @@ "defaultValue": "{}" }, { - "id": 266, + "id": 274, "name": "fetch", "kind": 32768, "kindString": "Parameter", @@ -322,21 +322,21 @@ "type": { "type": "reflection", "declaration": { - "id": 267, + "id": 275, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "signatures": [ { - "id": 268, + "id": 276, "name": "__type", "kind": 4096, "kindString": "Call signature", "flags": {}, "parameters": [ { - "id": 269, + "id": 277, "name": "input", "kind": 32768, "kindString": "Parameter", @@ -349,7 +349,7 @@ } }, { - "id": 270, + "id": 278, "name": "init", "kind": 32768, "kindString": "Parameter", @@ -386,7 +386,7 @@ ], "type": { "type": "reference", - "id": 258, + "id": 266, "name": "StorageClient" }, "overwrites": { @@ -403,7 +403,7 @@ } }, { - "id": 301, + "id": 309, "name": "createBucket", "kind": 2048, "kindString": "Method", @@ -417,7 +417,7 @@ ], "signatures": [ { - "id": 302, + "id": 310, "name": "createBucket", "kind": 4096, "kindString": "Call signature", @@ -428,7 +428,7 @@ }, "parameters": [ { - "id": 303, + "id": 311, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -442,7 +442,7 @@ } }, { - "id": 304, + "id": 312, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -450,14 +450,14 @@ "type": { "type": "reflection", "declaration": { - "id": 305, + "id": 313, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 306, + "id": 314, "name": "public", "kind": 1024, "kindString": "Property", @@ -482,7 +482,7 @@ { "title": "Properties", "kind": 1024, - "children": [306] + "children": [314] } ] } @@ -499,14 +499,14 @@ { "type": "reflection", "declaration": { - "id": 307, + "id": 315, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 308, + "id": 316, "name": "data", "kind": 1024, "kindString": "Property", @@ -523,7 +523,7 @@ "typeArguments": [ { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" }, { @@ -537,7 +537,7 @@ } }, { - "id": 309, + "id": 317, "name": "error", "kind": 1024, "kindString": "Property", @@ -559,7 +559,7 @@ { "title": "Properties", "kind": 1024, - "children": [308, 309] + "children": [316, 317] } ] } @@ -567,14 +567,14 @@ { "type": "reflection", "declaration": { - "id": 310, + "id": 318, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 311, + "id": 319, "name": "data", "kind": 1024, "kindString": "Property", @@ -592,7 +592,7 @@ } }, { - "id": 312, + "id": 320, "name": "error", "kind": 1024, "kindString": "Property", @@ -606,7 +606,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -615,7 +615,7 @@ { "title": "Properties", "kind": 1024, - "children": [311, 312] + "children": [319, 320] } ] } @@ -641,7 +641,7 @@ } }, { - "id": 338, + "id": 346, "name": "deleteBucket", "kind": 2048, "kindString": "Method", @@ -655,7 +655,7 @@ ], "signatures": [ { - "id": 339, + "id": 347, "name": "deleteBucket", "kind": 4096, "kindString": "Call signature", @@ -665,7 +665,7 @@ }, "parameters": [ { - "id": 340, + "id": 348, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -688,14 +688,14 @@ { "type": "reflection", "declaration": { - "id": 341, + "id": 349, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 342, + "id": 350, "name": "data", "kind": 1024, "kindString": "Property", @@ -710,14 +710,14 @@ "type": { "type": "reflection", "declaration": { - "id": 343, + "id": 351, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 344, + "id": 352, "name": "message", "kind": 1024, "kindString": "Property", @@ -739,14 +739,14 @@ { "title": "Properties", "kind": 1024, - "children": [344] + "children": [352] } ] } } }, { - "id": 345, + "id": 353, "name": "error", "kind": 1024, "kindString": "Property", @@ -768,7 +768,7 @@ { "title": "Properties", "kind": 1024, - "children": [342, 345] + "children": [350, 353] } ] } @@ -776,14 +776,14 @@ { "type": "reflection", "declaration": { - "id": 346, + "id": 354, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 347, + "id": 355, "name": "data", "kind": 1024, "kindString": "Property", @@ -801,7 +801,7 @@ } }, { - "id": 348, + "id": 356, "name": "error", "kind": 1024, "kindString": "Property", @@ -815,7 +815,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -824,7 +824,7 @@ { "title": "Properties", "kind": 1024, - "children": [347, 348] + "children": [355, 356] } ] } @@ -850,7 +850,7 @@ } }, { - "id": 327, + "id": 335, "name": "emptyBucket", "kind": 2048, "kindString": "Method", @@ -864,7 +864,7 @@ ], "signatures": [ { - "id": 328, + "id": 336, "name": "emptyBucket", "kind": 4096, "kindString": "Call signature", @@ -874,7 +874,7 @@ }, "parameters": [ { - "id": 329, + "id": 337, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -897,14 +897,14 @@ { "type": "reflection", "declaration": { - "id": 330, + "id": 338, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 331, + "id": 339, "name": "data", "kind": 1024, "kindString": "Property", @@ -919,14 +919,14 @@ "type": { "type": "reflection", "declaration": { - "id": 332, + "id": 340, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 333, + "id": 341, "name": "message", "kind": 1024, "kindString": "Property", @@ -948,14 +948,14 @@ { "title": "Properties", "kind": 1024, - "children": [333] + "children": [341] } ] } } }, { - "id": 334, + "id": 342, "name": "error", "kind": 1024, "kindString": "Property", @@ -977,7 +977,7 @@ { "title": "Properties", "kind": 1024, - "children": [331, 334] + "children": [339, 342] } ] } @@ -985,14 +985,14 @@ { "type": "reflection", "declaration": { - "id": 335, + "id": 343, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 336, + "id": 344, "name": "data", "kind": 1024, "kindString": "Property", @@ -1010,7 +1010,7 @@ } }, { - "id": 337, + "id": 345, "name": "error", "kind": 1024, "kindString": "Property", @@ -1024,7 +1024,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -1033,7 +1033,7 @@ { "title": "Properties", "kind": 1024, - "children": [336, 337] + "children": [344, 345] } ] } @@ -1059,7 +1059,7 @@ } }, { - "id": 271, + "id": 279, "name": "from", "kind": 2048, "kindString": "Method", @@ -1073,7 +1073,7 @@ ], "signatures": [ { - "id": 272, + "id": 280, "name": "from", "kind": 4096, "kindString": "Call signature", @@ -1083,7 +1083,7 @@ }, "parameters": [ { - "id": 273, + "id": 281, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -1106,7 +1106,7 @@ ] }, { - "id": 292, + "id": 300, "name": "getBucket", "kind": 2048, "kindString": "Method", @@ -1120,7 +1120,7 @@ ], "signatures": [ { - "id": 293, + "id": 301, "name": "getBucket", "kind": 4096, "kindString": "Call signature", @@ -1130,7 +1130,7 @@ }, "parameters": [ { - "id": 294, + "id": 302, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -1153,14 +1153,14 @@ { "type": "reflection", "declaration": { - "id": 295, + "id": 303, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 296, + "id": 304, "name": "data", "kind": 1024, "kindString": "Property", @@ -1174,12 +1174,12 @@ ], "type": { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" } }, { - "id": 297, + "id": 305, "name": "error", "kind": 1024, "kindString": "Property", @@ -1201,7 +1201,7 @@ { "title": "Properties", "kind": 1024, - "children": [296, 297] + "children": [304, 305] } ] } @@ -1209,14 +1209,14 @@ { "type": "reflection", "declaration": { - "id": 298, + "id": 306, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 299, + "id": 307, "name": "data", "kind": 1024, "kindString": "Property", @@ -1234,7 +1234,7 @@ } }, { - "id": 300, + "id": 308, "name": "error", "kind": 1024, "kindString": "Property", @@ -1248,7 +1248,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -1257,7 +1257,7 @@ { "title": "Properties", "kind": 1024, - "children": [299, 300] + "children": [307, 308] } ] } @@ -1283,7 +1283,7 @@ } }, { - "id": 284, + "id": 292, "name": "listBuckets", "kind": 2048, "kindString": "Method", @@ -1297,7 +1297,7 @@ ], "signatures": [ { - "id": 285, + "id": 293, "name": "listBuckets", "kind": 4096, "kindString": "Call signature", @@ -1314,14 +1314,14 @@ { "type": "reflection", "declaration": { - "id": 286, + "id": 294, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 287, + "id": 295, "name": "data", "kind": 1024, "kindString": "Property", @@ -1337,13 +1337,13 @@ "type": "array", "elementType": { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" } } }, { - "id": 288, + "id": 296, "name": "error", "kind": 1024, "kindString": "Property", @@ -1365,7 +1365,7 @@ { "title": "Properties", "kind": 1024, - "children": [287, 288] + "children": [295, 296] } ] } @@ -1373,14 +1373,14 @@ { "type": "reflection", "declaration": { - "id": 289, + "id": 297, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 290, + "id": 298, "name": "data", "kind": 1024, "kindString": "Property", @@ -1398,7 +1398,7 @@ } }, { - "id": 291, + "id": 299, "name": "error", "kind": 1024, "kindString": "Property", @@ -1412,7 +1412,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -1421,7 +1421,7 @@ { "title": "Properties", "kind": 1024, - "children": [290, 291] + "children": [298, 299] } ] } @@ -1447,7 +1447,7 @@ } }, { - "id": 313, + "id": 321, "name": "updateBucket", "kind": 2048, "kindString": "Method", @@ -1461,7 +1461,7 @@ ], "signatures": [ { - "id": 314, + "id": 322, "name": "updateBucket", "kind": 4096, "kindString": "Call signature", @@ -1471,7 +1471,7 @@ }, "parameters": [ { - "id": 315, + "id": 323, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -1485,7 +1485,7 @@ } }, { - "id": 316, + "id": 324, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -1493,14 +1493,14 @@ "type": { "type": "reflection", "declaration": { - "id": 317, + "id": 325, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 318, + "id": 326, "name": "public", "kind": 1024, "kindString": "Property", @@ -1525,7 +1525,7 @@ { "title": "Properties", "kind": 1024, - "children": [318] + "children": [326] } ] } @@ -1541,14 +1541,14 @@ { "type": "reflection", "declaration": { - "id": 319, + "id": 327, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 320, + "id": 328, "name": "data", "kind": 1024, "kindString": "Property", @@ -1563,14 +1563,14 @@ "type": { "type": "reflection", "declaration": { - "id": 321, + "id": 329, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 322, + "id": 330, "name": "message", "kind": 1024, "kindString": "Property", @@ -1592,14 +1592,14 @@ { "title": "Properties", "kind": 1024, - "children": [322] + "children": [330] } ] } } }, { - "id": 323, + "id": 331, "name": "error", "kind": 1024, "kindString": "Property", @@ -1621,7 +1621,7 @@ { "title": "Properties", "kind": 1024, - "children": [320, 323] + "children": [328, 331] } ] } @@ -1629,14 +1629,14 @@ { "type": "reflection", "declaration": { - "id": 324, + "id": 332, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 325, + "id": 333, "name": "data", "kind": 1024, "kindString": "Property", @@ -1654,7 +1654,7 @@ } }, { - "id": 326, + "id": 334, "name": "error", "kind": 1024, "kindString": "Property", @@ -1668,7 +1668,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -1677,7 +1677,7 @@ { "title": "Properties", "kind": 1024, - "children": [325, 326] + "children": [333, 334] } ] } @@ -1707,12 +1707,12 @@ { "title": "Constructors", "kind": 512, - "children": [259] + "children": [267] }, { "title": "Methods", "kind": 2048, - "children": [301, 338, 327, 271, 292, 284, 313] + "children": [309, 346, 335, 279, 300, 292, 321] } ], "sources": [ @@ -1731,14 +1731,14 @@ ] }, { - "id": 385, + "id": 397, "name": "StorageError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 386, + "id": 398, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -1752,14 +1752,14 @@ ], "signatures": [ { - "id": 387, + "id": 399, "name": "new StorageError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 388, + "id": 400, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -1772,7 +1772,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" }, "overwrites": { @@ -1791,7 +1791,7 @@ { "title": "Constructors", "kind": 512, - "children": [386] + "children": [398] } ], "sources": [ @@ -1812,25 +1812,25 @@ "extendedBy": [ { "type": "reference", - "id": 390, + "id": 402, "name": "StorageApiError" }, { "type": "reference", - "id": 403, + "id": 415, "name": "StorageUnknownError" } ] }, { - "id": 403, + "id": 415, "name": "StorageUnknownError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 404, + "id": 416, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -1844,14 +1844,14 @@ ], "signatures": [ { - "id": 405, + "id": 417, "name": "new StorageUnknownError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 406, + "id": 418, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -1862,7 +1862,7 @@ } }, { - "id": 407, + "id": 419, "name": "originalError", "kind": 32768, "kindString": "Parameter", @@ -1875,24 +1875,24 @@ ], "type": { "type": "reference", - "id": 403, + "id": 415, "name": "StorageUnknownError" }, "overwrites": { "type": "reference", - "id": 387, + "id": 399, "name": "StorageError.constructor" } } ], "overwrites": { "type": "reference", - "id": 386, + "id": 398, "name": "StorageError.constructor" } }, { - "id": 408, + "id": 420, "name": "originalError", "kind": 1024, "kindString": "Property", @@ -1914,12 +1914,12 @@ { "title": "Constructors", "kind": 512, - "children": [404] + "children": [416] }, { "title": "Properties", "kind": 1024, - "children": [408] + "children": [420] } ], "sources": [ @@ -1932,20 +1932,20 @@ "extendedTypes": [ { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } ] }, { - "id": 349, + "id": 357, "name": "Bucket", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 353, + "id": 361, "name": "created_at", "kind": 1024, "kindString": "Property", @@ -1963,7 +1963,7 @@ } }, { - "id": 350, + "id": 358, "name": "id", "kind": 1024, "kindString": "Property", @@ -1981,7 +1981,7 @@ } }, { - "id": 351, + "id": 359, "name": "name", "kind": 1024, "kindString": "Property", @@ -1999,7 +1999,7 @@ } }, { - "id": 352, + "id": 360, "name": "owner", "kind": 1024, "kindString": "Property", @@ -2017,7 +2017,7 @@ } }, { - "id": 355, + "id": 363, "name": "public", "kind": 1024, "kindString": "Property", @@ -2035,7 +2035,7 @@ } }, { - "id": 354, + "id": 362, "name": "updated_at", "kind": 1024, "kindString": "Property", @@ -2057,7 +2057,7 @@ { "title": "Properties", "kind": 1024, - "children": [353, 350, 351, 352, 355, 354] + "children": [361, 358, 359, 360, 363, 362] } ], "sources": [ @@ -2069,14 +2069,14 @@ ] }, { - "id": 378, + "id": 386, "name": "FetchParameters", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 379, + "id": 387, "name": "signal", "kind": 1024, "kindString": "Property", @@ -2105,7 +2105,7 @@ { "title": "Properties", "kind": 1024, - "children": [379] + "children": [387] } ], "sources": [ @@ -2117,14 +2117,14 @@ ] }, { - "id": 356, + "id": 364, "name": "FileObject", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 358, + "id": 366, "name": "bucket_id", "kind": 1024, "kindString": "Property", @@ -2142,7 +2142,7 @@ } }, { - "id": 365, + "id": 373, "name": "buckets", "kind": 1024, "kindString": "Property", @@ -2156,12 +2156,12 @@ ], "type": { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" } }, { - "id": 362, + "id": 370, "name": "created_at", "kind": 1024, "kindString": "Property", @@ -2179,7 +2179,7 @@ } }, { - "id": 360, + "id": 368, "name": "id", "kind": 1024, "kindString": "Property", @@ -2197,7 +2197,7 @@ } }, { - "id": 363, + "id": 371, "name": "last_accessed_at", "kind": 1024, "kindString": "Property", @@ -2215,7 +2215,7 @@ } }, { - "id": 364, + "id": 372, "name": "metadata", "kind": 1024, "kindString": "Property", @@ -2245,7 +2245,7 @@ } }, { - "id": 357, + "id": 365, "name": "name", "kind": 1024, "kindString": "Property", @@ -2263,7 +2263,7 @@ } }, { - "id": 359, + "id": 367, "name": "owner", "kind": 1024, "kindString": "Property", @@ -2281,7 +2281,7 @@ } }, { - "id": 361, + "id": 369, "name": "updated_at", "kind": 1024, "kindString": "Property", @@ -2303,7 +2303,7 @@ { "title": "Properties", "kind": 1024, - "children": [358, 365, 362, 360, 363, 364, 357, 359, 361] + "children": [366, 373, 370, 368, 371, 372, 365, 367, 369] } ], "sources": [ @@ -2315,14 +2315,14 @@ ] }, { - "id": 369, + "id": 377, "name": "FileOptions", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 370, + "id": 378, "name": "cacheControl", "kind": 1024, "kindString": "Property", @@ -2345,7 +2345,7 @@ } }, { - "id": 371, + "id": 379, "name": "contentType", "kind": 1024, "kindString": "Property", @@ -2368,7 +2368,7 @@ } }, { - "id": 372, + "id": 380, "name": "upsert", "kind": 1024, "kindString": "Property", @@ -2395,7 +2395,7 @@ { "title": "Properties", "kind": 1024, - "children": [370, 371, 372] + "children": [378, 379, 380] } ], "sources": [ @@ -2407,14 +2407,14 @@ ] }, { - "id": 380, + "id": 388, "name": "Metadata", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 381, + "id": 389, "name": "name", "kind": 1024, "kindString": "Property", @@ -2436,7 +2436,7 @@ { "title": "Properties", "kind": 1024, - "children": [381] + "children": [389] } ], "sources": [ @@ -2448,14 +2448,14 @@ ] }, { - "id": 373, + "id": 381, "name": "SearchOptions", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 374, + "id": 382, "name": "limit", "kind": 1024, "kindString": "Property", @@ -2478,7 +2478,7 @@ } }, { - "id": 375, + "id": 383, "name": "offset", "kind": 1024, "kindString": "Property", @@ -2501,7 +2501,7 @@ } }, { - "id": 377, + "id": 385, "name": "search", "kind": 1024, "kindString": "Property", @@ -2524,7 +2524,7 @@ } }, { - "id": 376, + "id": 384, "name": "sortBy", "kind": 1024, "kindString": "Property", @@ -2543,7 +2543,7 @@ ], "type": { "type": "reference", - "id": 366, + "id": 374, "name": "SortBy" } } @@ -2552,7 +2552,7 @@ { "title": "Properties", "kind": 1024, - "children": [374, 375, 377, 376] + "children": [382, 383, 385, 384] } ], "sources": [ @@ -2564,14 +2564,14 @@ ] }, { - "id": 366, + "id": 374, "name": "SortBy", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 367, + "id": 375, "name": "column", "kind": 1024, "kindString": "Property", @@ -2591,7 +2591,7 @@ } }, { - "id": 368, + "id": 376, "name": "order", "kind": 1024, "kindString": "Property", @@ -2615,7 +2615,7 @@ { "title": "Properties", "kind": 1024, - "children": [367, 368] + "children": [375, 376] } ], "sources": [ @@ -2627,7 +2627,112 @@ ] }, { - "id": 382, + "id": 390, + "name": "TransformOptions", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "children": [ + { + "id": 392, + "name": "height", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The height of the image in pixels. If the width is not specified, the image will be resized to the height while maintaining the aspect ratio." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 84, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "number" + } + }, + { + "id": 393, + "name": "resize", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The resize mode can be cover, contain or fill. Default is cover.\nCover resizes the image to maintain it's aspect ratio while filling the entire width and height.\nContain resizes the image to maintain it's aspect ratio while fitting the entire image within the width and height.\nFill resizes the image to fill the entire width and height. If the object's aspect ratio does not match the width and height, the image will be stretched to fit." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 91, + "character": 2 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "literal", + "value": "cover" + }, + { + "type": "literal", + "value": "contain" + }, + { + "type": "literal", + "value": "fill" + } + ] + } + }, + { + "id": 391, + "name": "width", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The width of the image in pixels. If the height is not specified, the image will be resized to the width while maintaining the aspect ratio." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 80, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "number" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [392, 393, 391] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 76, + "character": 17 + } + ] + }, + { + "id": 394, "name": "isStorageError", "kind": 64, "kindString": "Function", @@ -2641,14 +2746,14 @@ ], "signatures": [ { - "id": 383, + "id": 395, "name": "isStorageError", "kind": 4096, "kindString": "Call signature", "flags": {}, "parameters": [ { - "id": 384, + "id": 396, "name": "error", "kind": 32768, "kindString": "Parameter", @@ -2665,7 +2770,7 @@ "asserts": false, "targetType": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -2677,17 +2782,17 @@ { "title": "Classes", "kind": 128, - "children": [390, 258, 385, 403] + "children": [402, 266, 397, 415] }, { "title": "Interfaces", "kind": 256, - "children": [349, 378, 356, 369, 380, 373, 366] + "children": [357, 386, 364, 377, 388, 381, 374, 390] }, { "title": "Functions", "kind": 64, - "children": [382] + "children": [394] } ], "sources": [ @@ -2987,7 +3092,7 @@ "typeArguments": [ { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" }, { @@ -3070,7 +3175,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -3269,7 +3374,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -3468,7 +3573,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -3561,7 +3666,7 @@ ], "type": { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" } }, @@ -3635,7 +3740,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -3714,7 +3819,7 @@ "type": "array", "elementType": { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" } } @@ -3789,7 +3894,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -4035,7 +4140,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -4082,7 +4187,7 @@ "extendedBy": [ { "type": "reference", - "id": 258, + "id": 266, "name": "StorageClient" } ] @@ -4126,7 +4231,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 27, + "line": 33, "character": 2 } ], @@ -4293,7 +4398,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 226, + "line": 232, "character": 8 } ], @@ -4361,7 +4466,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 231, + "line": 237, "character": 8 } ], @@ -4383,7 +4488,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 231, + "line": 237, "character": 16 } ], @@ -4412,7 +4517,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 232, + "line": 238, "character": 8 } ], @@ -4449,7 +4554,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 235, + "line": 241, "character": 8 } ], @@ -4467,13 +4572,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 236, + "line": 242, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -4506,7 +4611,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 263, + "line": 269, "character": 8 } ], @@ -4571,14 +4676,16 @@ "name": "download", "kind": 1024, "kindString": "Property", - "flags": {}, + "flags": { + "isOptional": true + }, "comment": { "shortText": "triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename.\n" }, "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 266, + "line": 272, "character": 16 } ], @@ -4595,13 +4702,34 @@ } ] } + }, + { + "id": 188, + "name": "transform", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/packages/StorageFileApi.ts", + "line": 272, + "character": 45 + } + ], + "type": { + "type": "reference", + "id": 390, + "name": "TransformOptions" + } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [187] + "children": [187, 188] } ] } @@ -4617,14 +4745,14 @@ { "type": "reflection", "declaration": { - "id": 188, + "id": 189, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 189, + "id": 190, "name": "data", "kind": 1024, "kindString": "Property", @@ -4632,21 +4760,21 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 269, + "line": 275, "character": 8 } ], "type": { "type": "reflection", "declaration": { - "id": 190, + "id": 191, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 191, + "id": 192, "name": "signedUrl", "kind": 1024, "kindString": "Property", @@ -4654,7 +4782,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 269, + "line": 275, "character": 16 } ], @@ -4668,14 +4796,14 @@ { "title": "Properties", "kind": 1024, - "children": [191] + "children": [192] } ] } } }, { - "id": 192, + "id": 193, "name": "error", "kind": 1024, "kindString": "Property", @@ -4683,7 +4811,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 270, + "line": 276, "character": 8 } ], @@ -4697,7 +4825,7 @@ { "title": "Properties", "kind": 1024, - "children": [189, 192] + "children": [190, 193] } ] } @@ -4705,14 +4833,14 @@ { "type": "reflection", "declaration": { - "id": 193, + "id": 194, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 194, + "id": 195, "name": "data", "kind": 1024, "kindString": "Property", @@ -4720,7 +4848,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 273, + "line": 279, "character": 8 } ], @@ -4730,7 +4858,7 @@ } }, { - "id": 195, + "id": 196, "name": "error", "kind": 1024, "kindString": "Property", @@ -4738,13 +4866,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 274, + "line": 280, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -4753,7 +4881,7 @@ { "title": "Properties", "kind": 1024, - "children": [194, 195] + "children": [195, 196] } ] } @@ -4769,7 +4897,7 @@ ] }, { - "id": 196, + "id": 197, "name": "createSignedUrls", "kind": 2048, "kindString": "Method", @@ -4777,13 +4905,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 307, + "line": 314, "character": 8 } ], "signatures": [ { - "id": 197, + "id": 198, "name": "createSignedUrls", "kind": 4096, "kindString": "Call signature", @@ -4793,7 +4921,7 @@ }, "parameters": [ { - "id": 198, + "id": 199, "name": "paths", "kind": 32768, "kindString": "Parameter", @@ -4810,7 +4938,7 @@ } }, { - "id": 199, + "id": 200, "name": "expiresIn", "kind": 32768, "kindString": "Parameter", @@ -4824,7 +4952,7 @@ } }, { - "id": 200, + "id": 201, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -4834,14 +4962,14 @@ "type": { "type": "reflection", "declaration": { - "id": 201, + "id": 202, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 202, + "id": 203, "name": "download", "kind": 1024, "kindString": "Property", @@ -4852,7 +4980,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 310, + "line": 317, "character": 16 } ], @@ -4875,7 +5003,7 @@ { "title": "Properties", "kind": 1024, - "children": [202] + "children": [203] } ] } @@ -4891,14 +5019,14 @@ { "type": "reflection", "declaration": { - "id": 203, + "id": 204, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 204, + "id": 205, "name": "data", "kind": 1024, "kindString": "Property", @@ -4906,7 +5034,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 313, + "line": 320, "character": 8 } ], @@ -4915,14 +5043,14 @@ "elementType": { "type": "reflection", "declaration": { - "id": 205, + "id": 206, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 206, + "id": 207, "name": "error", "kind": 1024, "kindString": "Property", @@ -4930,7 +5058,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 313, + "line": 320, "character": 16 } ], @@ -4949,7 +5077,7 @@ } }, { - "id": 207, + "id": 208, "name": "path", "kind": 1024, "kindString": "Property", @@ -4957,7 +5085,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 313, + "line": 320, "character": 38 } ], @@ -4976,7 +5104,7 @@ } }, { - "id": 208, + "id": 209, "name": "signedUrl", "kind": 1024, "kindString": "Property", @@ -4984,7 +5112,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 313, + "line": 320, "character": 59 } ], @@ -4998,7 +5126,7 @@ { "title": "Properties", "kind": 1024, - "children": [206, 207, 208] + "children": [207, 208, 209] } ] } @@ -5006,7 +5134,7 @@ } }, { - "id": 209, + "id": 210, "name": "error", "kind": 1024, "kindString": "Property", @@ -5014,7 +5142,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 314, + "line": 321, "character": 8 } ], @@ -5028,7 +5156,7 @@ { "title": "Properties", "kind": 1024, - "children": [204, 209] + "children": [205, 210] } ] } @@ -5036,14 +5164,14 @@ { "type": "reflection", "declaration": { - "id": 210, + "id": 211, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 211, + "id": 212, "name": "data", "kind": 1024, "kindString": "Property", @@ -5051,7 +5179,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 317, + "line": 324, "character": 8 } ], @@ -5061,7 +5189,7 @@ } }, { - "id": 212, + "id": 213, "name": "error", "kind": 1024, "kindString": "Property", @@ -5069,13 +5197,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 318, + "line": 325, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -5084,7 +5212,7 @@ { "title": "Properties", "kind": 1024, - "children": [211, 212] + "children": [212, 213] } ] } @@ -5100,7 +5228,7 @@ ] }, { - "id": 213, + "id": 214, "name": "download", "kind": 2048, "kindString": "Method", @@ -5108,13 +5236,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 355, + "line": 363, "character": 8 } ], "signatures": [ { - "id": 214, + "id": 215, "name": "download", "kind": 4096, "kindString": "Call signature", @@ -5124,18 +5252,67 @@ }, "parameters": [ { - "id": 215, + "id": 216, "name": "path", "kind": 32768, "kindString": "Parameter", "flags": {}, "comment": { - "shortText": "The full path and file name of the file to be downloaded. For example `folder/image.png`.\n" + "shortText": "The full path and file name of the file to be downloaded. For example `folder/image.png`." }, "type": { "type": "intrinsic", "name": "string" } + }, + { + "id": 217, + "name": "options", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "type": { + "type": "reflection", + "declaration": { + "id": 218, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 219, + "name": "transform", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/packages/StorageFileApi.ts", + "line": 365, + "character": 16 + } + ], + "type": { + "type": "reference", + "id": 390, + "name": "TransformOptions" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [219] + } + ] + } + } } ], "type": { @@ -5147,14 +5324,14 @@ { "type": "reflection", "declaration": { - "id": 216, + "id": 220, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 217, + "id": 221, "name": "data", "kind": 1024, "kindString": "Property", @@ -5162,7 +5339,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 359, + "line": 368, "character": 8 } ], @@ -5174,7 +5351,7 @@ } }, { - "id": 218, + "id": 222, "name": "error", "kind": 1024, "kindString": "Property", @@ -5182,7 +5359,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 360, + "line": 369, "character": 8 } ], @@ -5196,7 +5373,7 @@ { "title": "Properties", "kind": 1024, - "children": [217, 218] + "children": [221, 222] } ] } @@ -5204,14 +5381,14 @@ { "type": "reflection", "declaration": { - "id": 219, + "id": 223, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 220, + "id": 224, "name": "data", "kind": 1024, "kindString": "Property", @@ -5219,7 +5396,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 363, + "line": 372, "character": 8 } ], @@ -5229,7 +5406,7 @@ } }, { - "id": 221, + "id": 225, "name": "error", "kind": 1024, "kindString": "Property", @@ -5237,13 +5414,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 364, + "line": 373, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -5252,7 +5429,7 @@ { "title": "Properties", "kind": 1024, - "children": [220, 221] + "children": [224, 225] } ] } @@ -5268,7 +5445,7 @@ ] }, { - "id": 222, + "id": 226, "name": "getPublicUrl", "kind": 2048, "kindString": "Method", @@ -5276,13 +5453,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 391, + "line": 406, "character": 2 } ], "signatures": [ { - "id": 223, + "id": 227, "name": "getPublicUrl", "kind": 4096, "kindString": "Call signature", @@ -5292,7 +5469,7 @@ }, "parameters": [ { - "id": 224, + "id": 228, "name": "path", "kind": 32768, "kindString": "Parameter", @@ -5306,7 +5483,7 @@ } }, { - "id": 225, + "id": 229, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -5316,25 +5493,27 @@ "type": { "type": "reflection", "declaration": { - "id": 226, + "id": 230, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 227, + "id": 231, "name": "download", "kind": 1024, "kindString": "Property", - "flags": {}, + "flags": { + "isOptional": true + }, "comment": { - "shortText": "triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename.\n" + "shortText": "triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename." }, "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 393, + "line": 408, "character": 16 } ], @@ -5351,13 +5530,37 @@ } ] } + }, + { + "id": 232, + "name": "transform", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "adds image transformations parameters to the generated url\n" + }, + "sources": [ + { + "fileName": "src/packages/StorageFileApi.ts", + "line": 408, + "character": 45 + } + ], + "type": { + "type": "reference", + "id": 390, + "name": "TransformOptions" + } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [227] + "children": [231, 232] } ] } @@ -5367,14 +5570,14 @@ "type": { "type": "reflection", "declaration": { - "id": 228, + "id": 233, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 229, + "id": 234, "name": "data", "kind": 1024, "kindString": "Property", @@ -5382,21 +5585,21 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 394, + "line": 409, "character": 7 } ], "type": { "type": "reflection", "declaration": { - "id": 230, + "id": 235, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 231, + "id": 236, "name": "publicUrl", "kind": 1024, "kindString": "Property", @@ -5404,7 +5607,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 394, + "line": 409, "character": 15 } ], @@ -5418,7 +5621,7 @@ { "title": "Properties", "kind": 1024, - "children": [231] + "children": [236] } ] } @@ -5429,7 +5632,7 @@ { "title": "Properties", "kind": 1024, - "children": [229] + "children": [234] } ] } @@ -5438,7 +5641,7 @@ ] }, { - "id": 241, + "id": 246, "name": "list", "kind": 2048, "kindString": "Method", @@ -5446,13 +5649,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 506, + "line": 540, "character": 8 } ], "signatures": [ { - "id": 242, + "id": 247, "name": "list", "kind": 4096, "kindString": "Call signature", @@ -5462,7 +5665,7 @@ }, "parameters": [ { - "id": 243, + "id": 248, "name": "path", "kind": 32768, "kindString": "Parameter", @@ -5478,7 +5681,7 @@ } }, { - "id": 244, + "id": 249, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -5487,12 +5690,12 @@ }, "type": { "type": "reference", - "id": 373, + "id": 381, "name": "SearchOptions" } }, { - "id": 245, + "id": 250, "name": "parameters", "kind": 32768, "kindString": "Parameter", @@ -5501,7 +5704,7 @@ }, "type": { "type": "reference", - "id": 378, + "id": 386, "name": "FetchParameters" } } @@ -5515,14 +5718,14 @@ { "type": "reflection", "declaration": { - "id": 246, + "id": 251, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 247, + "id": 252, "name": "data", "kind": 1024, "kindString": "Property", @@ -5530,7 +5733,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 512, + "line": 546, "character": 8 } ], @@ -5538,13 +5741,13 @@ "type": "array", "elementType": { "type": "reference", - "id": 356, + "id": 364, "name": "FileObject" } } }, { - "id": 248, + "id": 253, "name": "error", "kind": 1024, "kindString": "Property", @@ -5552,7 +5755,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 513, + "line": 547, "character": 8 } ], @@ -5566,7 +5769,7 @@ { "title": "Properties", "kind": 1024, - "children": [247, 248] + "children": [252, 253] } ] } @@ -5574,14 +5777,14 @@ { "type": "reflection", "declaration": { - "id": 249, + "id": 254, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 250, + "id": 255, "name": "data", "kind": 1024, "kindString": "Property", @@ -5589,7 +5792,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 516, + "line": 550, "character": 8 } ], @@ -5599,7 +5802,7 @@ } }, { - "id": 251, + "id": 256, "name": "error", "kind": 1024, "kindString": "Property", @@ -5607,13 +5810,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 517, + "line": 551, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -5622,7 +5825,7 @@ { "title": "Properties", "kind": 1024, - "children": [250, 251] + "children": [255, 256] } ] } @@ -5646,7 +5849,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 190, + "line": 196, "character": 8 } ], @@ -5714,7 +5917,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 195, + "line": 201, "character": 8 } ], @@ -5736,7 +5939,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 195, + "line": 201, "character": 16 } ], @@ -5765,7 +5968,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 196, + "line": 202, "character": 8 } ], @@ -5802,7 +6005,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 199, + "line": 205, "character": 8 } ], @@ -5820,13 +6023,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 200, + "line": 206, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -5851,7 +6054,7 @@ ] }, { - "id": 232, + "id": 237, "name": "remove", "kind": 2048, "kindString": "Method", @@ -5859,13 +6062,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 410, + "line": 444, "character": 8 } ], "signatures": [ { - "id": 233, + "id": 238, "name": "remove", "kind": 4096, "kindString": "Call signature", @@ -5875,7 +6078,7 @@ }, "parameters": [ { - "id": 234, + "id": 239, "name": "paths", "kind": 32768, "kindString": "Parameter", @@ -5901,14 +6104,14 @@ { "type": "reflection", "declaration": { - "id": 235, + "id": 240, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 236, + "id": 241, "name": "data", "kind": 1024, "kindString": "Property", @@ -5916,7 +6119,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 414, + "line": 448, "character": 8 } ], @@ -5924,13 +6127,13 @@ "type": "array", "elementType": { "type": "reference", - "id": 356, + "id": 364, "name": "FileObject" } } }, { - "id": 237, + "id": 242, "name": "error", "kind": 1024, "kindString": "Property", @@ -5938,7 +6141,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 415, + "line": 449, "character": 8 } ], @@ -5952,7 +6155,7 @@ { "title": "Properties", "kind": 1024, - "children": [236, 237] + "children": [241, 242] } ] } @@ -5960,14 +6163,14 @@ { "type": "reflection", "declaration": { - "id": 238, + "id": 243, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 239, + "id": 244, "name": "data", "kind": 1024, "kindString": "Property", @@ -5975,7 +6178,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 418, + "line": 452, "character": 8 } ], @@ -5985,7 +6188,7 @@ } }, { - "id": 240, + "id": 245, "name": "error", "kind": 1024, "kindString": "Property", @@ -5993,13 +6196,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 419, + "line": 453, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -6008,7 +6211,7 @@ { "title": "Properties", "kind": 1024, - "children": [239, 240] + "children": [244, 245] } ] } @@ -6032,7 +6235,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 157, + "line": 163, "character": 8 } ], @@ -6152,7 +6355,7 @@ }, "type": { "type": "reference", - "id": 369, + "id": 377, "name": "FileOptions" } } @@ -6181,7 +6384,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 173, + "line": 179, "character": 8 } ], @@ -6203,7 +6406,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 173, + "line": 179, "character": 16 } ], @@ -6232,7 +6435,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 174, + "line": 180, "character": 8 } ], @@ -6269,7 +6472,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 177, + "line": 183, "character": 8 } ], @@ -6287,13 +6490,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 178, + "line": 184, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -6326,7 +6529,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 124, + "line": 130, "character": 8 } ], @@ -6446,7 +6649,7 @@ }, "type": { "type": "reference", - "id": 369, + "id": 377, "name": "FileOptions" } } @@ -6475,7 +6678,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 140, + "line": 146, "character": 8 } ], @@ -6497,7 +6700,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 140, + "line": 146, "character": 16 } ], @@ -6526,7 +6729,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 141, + "line": 147, "character": 8 } ], @@ -6563,7 +6766,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 144, + "line": 150, "character": 8 } ], @@ -6581,13 +6784,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 145, + "line": 151, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -6621,13 +6824,13 @@ { "title": "Methods", "kind": 2048, - "children": [169, 181, 196, 213, 222, 241, 157, 232, 144, 131] + "children": [169, 181, 197, 214, 226, 246, 157, 237, 144, 131] } ], "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 21, + "line": 27, "character": 21 } ] diff --git a/spec/enrichments/tsdoc_v2/storage_dereferenced.json b/spec/enrichments/tsdoc_v2/storage_dereferenced.json index fe03bc12964..b6399268967 100644 --- a/spec/enrichments/tsdoc_v2/storage_dereferenced.json +++ b/spec/enrichments/tsdoc_v2/storage_dereferenced.json @@ -13,14 +13,14 @@ "flags": {}, "children": [ { - "id": 390, + "id": 402, "name": "StorageApiError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 391, + "id": 403, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -34,14 +34,14 @@ ], "signatures": [ { - "id": 392, + "id": 404, "name": "new StorageApiError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 393, + "id": 405, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -52,7 +52,7 @@ } }, { - "id": 394, + "id": 406, "name": "status", "kind": 32768, "kindString": "Parameter", @@ -65,24 +65,24 @@ ], "type": { "type": "reference", - "id": 390, + "id": 402, "name": "StorageApiError" }, "overwrites": { "type": "reference", - "id": 387, + "id": 399, "name": "StorageError.constructor" } } ], "overwrites": { "type": "reference", - "id": 386, + "id": 398, "name": "StorageError.constructor" } }, { - "id": 395, + "id": 407, "name": "status", "kind": 1024, "kindString": "Property", @@ -100,7 +100,7 @@ } }, { - "id": 396, + "id": 408, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -114,7 +114,7 @@ ], "signatures": [ { - "id": 397, + "id": 409, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -122,14 +122,14 @@ "type": { "type": "reflection", "declaration": { - "id": 398, + "id": 410, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 400, + "id": 412, "name": "message", "kind": 1024, "kindString": "Property", @@ -148,7 +148,7 @@ "defaultValue": "..." }, { - "id": 399, + "id": 411, "name": "name", "kind": 1024, "kindString": "Property", @@ -167,7 +167,7 @@ "defaultValue": "..." }, { - "id": 401, + "id": 413, "name": "status", "kind": 1024, "kindString": "Property", @@ -190,7 +190,7 @@ { "title": "Properties", "kind": 1024, - "children": [400, 399, 401] + "children": [412, 411, 413] } ] } @@ -203,17 +203,17 @@ { "title": "Constructors", "kind": 512, - "children": [391] + "children": [403] }, { "title": "Properties", "kind": 1024, - "children": [395] + "children": [407] }, { "title": "Methods", "kind": 2048, - "children": [396] + "children": [408] } ], "sources": [ @@ -226,20 +226,20 @@ "extendedTypes": [ { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } ] }, { - "id": 258, + "id": 266, "name": "StorageClient", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 259, + "id": 267, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -253,14 +253,14 @@ ], "signatures": [ { - "id": 260, + "id": 268, "name": "new StorageClient", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 261, + "id": 269, "name": "url", "kind": 32768, "kindString": "Parameter", @@ -271,7 +271,7 @@ } }, { - "id": 262, + "id": 270, "name": "headers", "kind": 32768, "kindString": "Parameter", @@ -279,20 +279,20 @@ "type": { "type": "reflection", "declaration": { - "id": 263, + "id": 271, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "indexSignature": { - "id": 264, + "id": 272, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 265, + "id": 273, "name": "key", "kind": 32768, "flags": {}, @@ -312,7 +312,7 @@ "defaultValue": "{}" }, { - "id": 266, + "id": 274, "name": "fetch", "kind": 32768, "kindString": "Parameter", @@ -322,21 +322,21 @@ "type": { "type": "reflection", "declaration": { - "id": 267, + "id": 275, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "signatures": [ { - "id": 268, + "id": 276, "name": "__type", "kind": 4096, "kindString": "Call signature", "flags": {}, "parameters": [ { - "id": 269, + "id": 277, "name": "input", "kind": 32768, "kindString": "Parameter", @@ -349,7 +349,7 @@ } }, { - "id": 270, + "id": 278, "name": "init", "kind": 32768, "kindString": "Parameter", @@ -386,7 +386,7 @@ ], "type": { "type": "reference", - "id": 258, + "id": 266, "name": "StorageClient" }, "overwrites": { @@ -403,7 +403,7 @@ } }, { - "id": 301, + "id": 309, "name": "createBucket", "kind": 2048, "kindString": "Method", @@ -417,7 +417,7 @@ ], "signatures": [ { - "id": 302, + "id": 310, "name": "createBucket", "kind": 4096, "kindString": "Call signature", @@ -428,7 +428,7 @@ }, "parameters": [ { - "id": 303, + "id": 311, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -442,7 +442,7 @@ } }, { - "id": 304, + "id": 312, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -450,14 +450,14 @@ "type": { "type": "reflection", "declaration": { - "id": 305, + "id": 313, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 306, + "id": 314, "name": "public", "kind": 1024, "kindString": "Property", @@ -482,7 +482,7 @@ { "title": "Properties", "kind": 1024, - "children": [306] + "children": [314] } ] } @@ -499,14 +499,14 @@ { "type": "reflection", "declaration": { - "id": 307, + "id": 315, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 308, + "id": 316, "name": "data", "kind": 1024, "kindString": "Property", @@ -523,7 +523,7 @@ "typeArguments": [ { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" }, { @@ -537,7 +537,7 @@ } }, { - "id": 309, + "id": 317, "name": "error", "kind": 1024, "kindString": "Property", @@ -559,7 +559,7 @@ { "title": "Properties", "kind": 1024, - "children": [308, 309] + "children": [316, 317] } ] } @@ -567,14 +567,14 @@ { "type": "reflection", "declaration": { - "id": 310, + "id": 318, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 311, + "id": 319, "name": "data", "kind": 1024, "kindString": "Property", @@ -592,7 +592,7 @@ } }, { - "id": 312, + "id": 320, "name": "error", "kind": 1024, "kindString": "Property", @@ -606,7 +606,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -615,7 +615,7 @@ { "title": "Properties", "kind": 1024, - "children": [311, 312] + "children": [319, 320] } ] } @@ -641,7 +641,7 @@ } }, { - "id": 338, + "id": 346, "name": "deleteBucket", "kind": 2048, "kindString": "Method", @@ -655,7 +655,7 @@ ], "signatures": [ { - "id": 339, + "id": 347, "name": "deleteBucket", "kind": 4096, "kindString": "Call signature", @@ -665,7 +665,7 @@ }, "parameters": [ { - "id": 340, + "id": 348, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -688,14 +688,14 @@ { "type": "reflection", "declaration": { - "id": 341, + "id": 349, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 342, + "id": 350, "name": "data", "kind": 1024, "kindString": "Property", @@ -710,14 +710,14 @@ "type": { "type": "reflection", "declaration": { - "id": 343, + "id": 351, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 344, + "id": 352, "name": "message", "kind": 1024, "kindString": "Property", @@ -739,14 +739,14 @@ { "title": "Properties", "kind": 1024, - "children": [344] + "children": [352] } ] } } }, { - "id": 345, + "id": 353, "name": "error", "kind": 1024, "kindString": "Property", @@ -768,7 +768,7 @@ { "title": "Properties", "kind": 1024, - "children": [342, 345] + "children": [350, 353] } ] } @@ -776,14 +776,14 @@ { "type": "reflection", "declaration": { - "id": 346, + "id": 354, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 347, + "id": 355, "name": "data", "kind": 1024, "kindString": "Property", @@ -801,7 +801,7 @@ } }, { - "id": 348, + "id": 356, "name": "error", "kind": 1024, "kindString": "Property", @@ -815,7 +815,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -824,7 +824,7 @@ { "title": "Properties", "kind": 1024, - "children": [347, 348] + "children": [355, 356] } ] } @@ -850,7 +850,7 @@ } }, { - "id": 327, + "id": 335, "name": "emptyBucket", "kind": 2048, "kindString": "Method", @@ -864,7 +864,7 @@ ], "signatures": [ { - "id": 328, + "id": 336, "name": "emptyBucket", "kind": 4096, "kindString": "Call signature", @@ -874,7 +874,7 @@ }, "parameters": [ { - "id": 329, + "id": 337, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -897,14 +897,14 @@ { "type": "reflection", "declaration": { - "id": 330, + "id": 338, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 331, + "id": 339, "name": "data", "kind": 1024, "kindString": "Property", @@ -919,14 +919,14 @@ "type": { "type": "reflection", "declaration": { - "id": 332, + "id": 340, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 333, + "id": 341, "name": "message", "kind": 1024, "kindString": "Property", @@ -948,14 +948,14 @@ { "title": "Properties", "kind": 1024, - "children": [333] + "children": [341] } ] } } }, { - "id": 334, + "id": 342, "name": "error", "kind": 1024, "kindString": "Property", @@ -977,7 +977,7 @@ { "title": "Properties", "kind": 1024, - "children": [331, 334] + "children": [339, 342] } ] } @@ -985,14 +985,14 @@ { "type": "reflection", "declaration": { - "id": 335, + "id": 343, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 336, + "id": 344, "name": "data", "kind": 1024, "kindString": "Property", @@ -1010,7 +1010,7 @@ } }, { - "id": 337, + "id": 345, "name": "error", "kind": 1024, "kindString": "Property", @@ -1024,7 +1024,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -1033,7 +1033,7 @@ { "title": "Properties", "kind": 1024, - "children": [336, 337] + "children": [344, 345] } ] } @@ -1059,7 +1059,7 @@ } }, { - "id": 271, + "id": 279, "name": "from", "kind": 2048, "kindString": "Method", @@ -1073,7 +1073,7 @@ ], "signatures": [ { - "id": 272, + "id": 280, "name": "from", "kind": 4096, "kindString": "Call signature", @@ -1083,7 +1083,7 @@ }, "parameters": [ { - "id": 273, + "id": 281, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -1106,7 +1106,7 @@ ] }, { - "id": 292, + "id": 300, "name": "getBucket", "kind": 2048, "kindString": "Method", @@ -1120,7 +1120,7 @@ ], "signatures": [ { - "id": 293, + "id": 301, "name": "getBucket", "kind": 4096, "kindString": "Call signature", @@ -1130,7 +1130,7 @@ }, "parameters": [ { - "id": 294, + "id": 302, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -1153,14 +1153,14 @@ { "type": "reflection", "declaration": { - "id": 295, + "id": 303, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 296, + "id": 304, "name": "data", "kind": 1024, "kindString": "Property", @@ -1174,12 +1174,12 @@ ], "type": { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" } }, { - "id": 297, + "id": 305, "name": "error", "kind": 1024, "kindString": "Property", @@ -1201,7 +1201,7 @@ { "title": "Properties", "kind": 1024, - "children": [296, 297] + "children": [304, 305] } ] } @@ -1209,14 +1209,14 @@ { "type": "reflection", "declaration": { - "id": 298, + "id": 306, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 299, + "id": 307, "name": "data", "kind": 1024, "kindString": "Property", @@ -1234,7 +1234,7 @@ } }, { - "id": 300, + "id": 308, "name": "error", "kind": 1024, "kindString": "Property", @@ -1248,7 +1248,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -1257,7 +1257,7 @@ { "title": "Properties", "kind": 1024, - "children": [299, 300] + "children": [307, 308] } ] } @@ -1283,7 +1283,7 @@ } }, { - "id": 284, + "id": 292, "name": "listBuckets", "kind": 2048, "kindString": "Method", @@ -1297,7 +1297,7 @@ ], "signatures": [ { - "id": 285, + "id": 293, "name": "listBuckets", "kind": 4096, "kindString": "Call signature", @@ -1314,14 +1314,14 @@ { "type": "reflection", "declaration": { - "id": 286, + "id": 294, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 287, + "id": 295, "name": "data", "kind": 1024, "kindString": "Property", @@ -1337,13 +1337,13 @@ "type": "array", "elementType": { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" } } }, { - "id": 288, + "id": 296, "name": "error", "kind": 1024, "kindString": "Property", @@ -1365,7 +1365,7 @@ { "title": "Properties", "kind": 1024, - "children": [287, 288] + "children": [295, 296] } ] } @@ -1373,14 +1373,14 @@ { "type": "reflection", "declaration": { - "id": 289, + "id": 297, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 290, + "id": 298, "name": "data", "kind": 1024, "kindString": "Property", @@ -1398,7 +1398,7 @@ } }, { - "id": 291, + "id": 299, "name": "error", "kind": 1024, "kindString": "Property", @@ -1412,7 +1412,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -1421,7 +1421,7 @@ { "title": "Properties", "kind": 1024, - "children": [290, 291] + "children": [298, 299] } ] } @@ -1447,7 +1447,7 @@ } }, { - "id": 313, + "id": 321, "name": "updateBucket", "kind": 2048, "kindString": "Method", @@ -1461,7 +1461,7 @@ ], "signatures": [ { - "id": 314, + "id": 322, "name": "updateBucket", "kind": 4096, "kindString": "Call signature", @@ -1471,7 +1471,7 @@ }, "parameters": [ { - "id": 315, + "id": 323, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -1485,7 +1485,7 @@ } }, { - "id": 316, + "id": 324, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -1493,14 +1493,14 @@ "type": { "type": "reflection", "declaration": { - "id": 317, + "id": 325, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 318, + "id": 326, "name": "public", "kind": 1024, "kindString": "Property", @@ -1525,7 +1525,7 @@ { "title": "Properties", "kind": 1024, - "children": [318] + "children": [326] } ] } @@ -1541,14 +1541,14 @@ { "type": "reflection", "declaration": { - "id": 319, + "id": 327, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 320, + "id": 328, "name": "data", "kind": 1024, "kindString": "Property", @@ -1563,14 +1563,14 @@ "type": { "type": "reflection", "declaration": { - "id": 321, + "id": 329, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 322, + "id": 330, "name": "message", "kind": 1024, "kindString": "Property", @@ -1592,14 +1592,14 @@ { "title": "Properties", "kind": 1024, - "children": [322] + "children": [330] } ] } } }, { - "id": 323, + "id": 331, "name": "error", "kind": 1024, "kindString": "Property", @@ -1621,7 +1621,7 @@ { "title": "Properties", "kind": 1024, - "children": [320, 323] + "children": [328, 331] } ] } @@ -1629,14 +1629,14 @@ { "type": "reflection", "declaration": { - "id": 324, + "id": 332, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 325, + "id": 333, "name": "data", "kind": 1024, "kindString": "Property", @@ -1654,7 +1654,7 @@ } }, { - "id": 326, + "id": 334, "name": "error", "kind": 1024, "kindString": "Property", @@ -1668,7 +1668,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -1677,7 +1677,7 @@ { "title": "Properties", "kind": 1024, - "children": [325, 326] + "children": [333, 334] } ] } @@ -1707,12 +1707,12 @@ { "title": "Constructors", "kind": 512, - "children": [259] + "children": [267] }, { "title": "Methods", "kind": 2048, - "children": [301, 338, 327, 271, 292, 284, 313] + "children": [309, 346, 335, 279, 300, 292, 321] } ], "sources": [ @@ -1731,14 +1731,14 @@ ] }, { - "id": 385, + "id": 397, "name": "StorageError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 386, + "id": 398, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -1752,14 +1752,14 @@ ], "signatures": [ { - "id": 387, + "id": 399, "name": "new StorageError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 388, + "id": 400, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -1772,7 +1772,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" }, "overwrites": { @@ -1791,7 +1791,7 @@ { "title": "Constructors", "kind": 512, - "children": [386] + "children": [398] } ], "sources": [ @@ -1812,25 +1812,25 @@ "extendedBy": [ { "type": "reference", - "id": 390, + "id": 402, "name": "StorageApiError" }, { "type": "reference", - "id": 403, + "id": 415, "name": "StorageUnknownError" } ] }, { - "id": 403, + "id": 415, "name": "StorageUnknownError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 404, + "id": 416, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -1844,14 +1844,14 @@ ], "signatures": [ { - "id": 405, + "id": 417, "name": "new StorageUnknownError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 406, + "id": 418, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -1862,7 +1862,7 @@ } }, { - "id": 407, + "id": 419, "name": "originalError", "kind": 32768, "kindString": "Parameter", @@ -1875,24 +1875,24 @@ ], "type": { "type": "reference", - "id": 403, + "id": 415, "name": "StorageUnknownError" }, "overwrites": { "type": "reference", - "id": 387, + "id": 399, "name": "StorageError.constructor" } } ], "overwrites": { "type": "reference", - "id": 386, + "id": 398, "name": "StorageError.constructor" } }, { - "id": 408, + "id": 420, "name": "originalError", "kind": 1024, "kindString": "Property", @@ -1914,12 +1914,12 @@ { "title": "Constructors", "kind": 512, - "children": [404] + "children": [416] }, { "title": "Properties", "kind": 1024, - "children": [408] + "children": [420] } ], "sources": [ @@ -1932,20 +1932,20 @@ "extendedTypes": [ { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } ] }, { - "id": 349, + "id": 357, "name": "Bucket", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 353, + "id": 361, "name": "created_at", "kind": 1024, "kindString": "Property", @@ -1963,7 +1963,7 @@ } }, { - "id": 350, + "id": 358, "name": "id", "kind": 1024, "kindString": "Property", @@ -1981,7 +1981,7 @@ } }, { - "id": 351, + "id": 359, "name": "name", "kind": 1024, "kindString": "Property", @@ -1999,7 +1999,7 @@ } }, { - "id": 352, + "id": 360, "name": "owner", "kind": 1024, "kindString": "Property", @@ -2017,7 +2017,7 @@ } }, { - "id": 355, + "id": 363, "name": "public", "kind": 1024, "kindString": "Property", @@ -2035,7 +2035,7 @@ } }, { - "id": 354, + "id": 362, "name": "updated_at", "kind": 1024, "kindString": "Property", @@ -2057,7 +2057,7 @@ { "title": "Properties", "kind": 1024, - "children": [353, 350, 351, 352, 355, 354] + "children": [361, 358, 359, 360, 363, 362] } ], "sources": [ @@ -2069,14 +2069,14 @@ ] }, { - "id": 378, + "id": 386, "name": "FetchParameters", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 379, + "id": 387, "name": "signal", "kind": 1024, "kindString": "Property", @@ -2105,7 +2105,7 @@ { "title": "Properties", "kind": 1024, - "children": [379] + "children": [387] } ], "sources": [ @@ -2117,14 +2117,14 @@ ] }, { - "id": 356, + "id": 364, "name": "FileObject", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 358, + "id": 366, "name": "bucket_id", "kind": 1024, "kindString": "Property", @@ -2142,7 +2142,7 @@ } }, { - "id": 365, + "id": 373, "name": "buckets", "kind": 1024, "kindString": "Property", @@ -2156,12 +2156,12 @@ ], "type": { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" } }, { - "id": 362, + "id": 370, "name": "created_at", "kind": 1024, "kindString": "Property", @@ -2179,7 +2179,7 @@ } }, { - "id": 360, + "id": 368, "name": "id", "kind": 1024, "kindString": "Property", @@ -2197,7 +2197,7 @@ } }, { - "id": 363, + "id": 371, "name": "last_accessed_at", "kind": 1024, "kindString": "Property", @@ -2215,7 +2215,7 @@ } }, { - "id": 364, + "id": 372, "name": "metadata", "kind": 1024, "kindString": "Property", @@ -2245,7 +2245,7 @@ } }, { - "id": 357, + "id": 365, "name": "name", "kind": 1024, "kindString": "Property", @@ -2263,7 +2263,7 @@ } }, { - "id": 359, + "id": 367, "name": "owner", "kind": 1024, "kindString": "Property", @@ -2281,7 +2281,7 @@ } }, { - "id": 361, + "id": 369, "name": "updated_at", "kind": 1024, "kindString": "Property", @@ -2303,7 +2303,7 @@ { "title": "Properties", "kind": 1024, - "children": [358, 365, 362, 360, 363, 364, 357, 359, 361] + "children": [366, 373, 370, 368, 371, 372, 365, 367, 369] } ], "sources": [ @@ -2315,14 +2315,14 @@ ] }, { - "id": 369, + "id": 377, "name": "FileOptions", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 370, + "id": 378, "name": "cacheControl", "kind": 1024, "kindString": "Property", @@ -2345,7 +2345,7 @@ } }, { - "id": 371, + "id": 379, "name": "contentType", "kind": 1024, "kindString": "Property", @@ -2368,7 +2368,7 @@ } }, { - "id": 372, + "id": 380, "name": "upsert", "kind": 1024, "kindString": "Property", @@ -2395,7 +2395,7 @@ { "title": "Properties", "kind": 1024, - "children": [370, 371, 372] + "children": [378, 379, 380] } ], "sources": [ @@ -2407,14 +2407,14 @@ ] }, { - "id": 380, + "id": 388, "name": "Metadata", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 381, + "id": 389, "name": "name", "kind": 1024, "kindString": "Property", @@ -2436,7 +2436,7 @@ { "title": "Properties", "kind": 1024, - "children": [381] + "children": [389] } ], "sources": [ @@ -2448,14 +2448,14 @@ ] }, { - "id": 373, + "id": 381, "name": "SearchOptions", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 374, + "id": 382, "name": "limit", "kind": 1024, "kindString": "Property", @@ -2478,7 +2478,7 @@ } }, { - "id": 375, + "id": 383, "name": "offset", "kind": 1024, "kindString": "Property", @@ -2501,7 +2501,7 @@ } }, { - "id": 377, + "id": 385, "name": "search", "kind": 1024, "kindString": "Property", @@ -2524,7 +2524,7 @@ } }, { - "id": 376, + "id": 384, "name": "sortBy", "kind": 1024, "kindString": "Property", @@ -2543,7 +2543,7 @@ ], "type": { "type": "reference", - "id": 366, + "id": 374, "name": "SortBy" } } @@ -2552,7 +2552,7 @@ { "title": "Properties", "kind": 1024, - "children": [374, 375, 377, 376] + "children": [382, 383, 385, 384] } ], "sources": [ @@ -2564,14 +2564,14 @@ ] }, { - "id": 366, + "id": 374, "name": "SortBy", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 367, + "id": 375, "name": "column", "kind": 1024, "kindString": "Property", @@ -2591,7 +2591,7 @@ } }, { - "id": 368, + "id": 376, "name": "order", "kind": 1024, "kindString": "Property", @@ -2615,7 +2615,7 @@ { "title": "Properties", "kind": 1024, - "children": [367, 368] + "children": [375, 376] } ], "sources": [ @@ -2627,7 +2627,112 @@ ] }, { - "id": 382, + "id": 390, + "name": "TransformOptions", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "children": [ + { + "id": 392, + "name": "height", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The height of the image in pixels. If the width is not specified, the image will be resized to the height while maintaining the aspect ratio." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 84, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "number" + } + }, + { + "id": 393, + "name": "resize", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The resize mode can be cover, contain or fill. Default is cover.\nCover resizes the image to maintain it's aspect ratio while filling the entire width and height.\nContain resizes the image to maintain it's aspect ratio while fitting the entire image within the width and height.\nFill resizes the image to fill the entire width and height. If the object's aspect ratio does not match the width and height, the image will be stretched to fit." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 91, + "character": 2 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "literal", + "value": "cover" + }, + { + "type": "literal", + "value": "contain" + }, + { + "type": "literal", + "value": "fill" + } + ] + } + }, + { + "id": 391, + "name": "width", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The width of the image in pixels. If the height is not specified, the image will be resized to the width while maintaining the aspect ratio." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 80, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "number" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [392, 393, 391] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 76, + "character": 17 + } + ] + }, + { + "id": 394, "name": "isStorageError", "kind": 64, "kindString": "Function", @@ -2641,14 +2746,14 @@ ], "signatures": [ { - "id": 383, + "id": 395, "name": "isStorageError", "kind": 4096, "kindString": "Call signature", "flags": {}, "parameters": [ { - "id": 384, + "id": 396, "name": "error", "kind": 32768, "kindString": "Parameter", @@ -2665,7 +2770,7 @@ "asserts": false, "targetType": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -2677,17 +2782,17 @@ { "title": "Classes", "kind": 128, - "children": [390, 258, 385, 403] + "children": [402, 266, 397, 415] }, { "title": "Interfaces", "kind": 256, - "children": [349, 378, 356, 369, 380, 373, 366] + "children": [357, 386, 364, 377, 388, 381, 374, 390] }, { "title": "Functions", "kind": 64, - "children": [382] + "children": [394] } ], "sources": [ @@ -2987,7 +3092,7 @@ "typeArguments": [ { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" }, { @@ -3070,7 +3175,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -3269,7 +3374,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -3468,7 +3573,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -3561,7 +3666,7 @@ ], "type": { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" } }, @@ -3635,7 +3740,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -3714,7 +3819,7 @@ "type": "array", "elementType": { "type": "reference", - "id": 349, + "id": 357, "name": "Bucket" } } @@ -3789,7 +3894,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -4035,7 +4140,7 @@ ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -4082,7 +4187,7 @@ "extendedBy": [ { "type": "reference", - "id": 258, + "id": 266, "name": "StorageClient" } ] @@ -4126,7 +4231,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 27, + "line": 33, "character": 2 } ], @@ -4293,7 +4398,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 226, + "line": 232, "character": 8 } ], @@ -4361,7 +4466,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 231, + "line": 237, "character": 8 } ], @@ -4383,7 +4488,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 231, + "line": 237, "character": 16 } ], @@ -4412,7 +4517,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 232, + "line": 238, "character": 8 } ], @@ -4449,7 +4554,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 235, + "line": 241, "character": 8 } ], @@ -4467,13 +4572,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 236, + "line": 242, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -4506,7 +4611,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 263, + "line": 269, "character": 8 } ], @@ -4571,14 +4676,16 @@ "name": "download", "kind": 1024, "kindString": "Property", - "flags": {}, + "flags": { + "isOptional": true + }, "comment": { "shortText": "triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename.\n" }, "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 266, + "line": 272, "character": 16 } ], @@ -4595,13 +4702,34 @@ } ] } + }, + { + "id": 188, + "name": "transform", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/packages/StorageFileApi.ts", + "line": 272, + "character": 45 + } + ], + "type": { + "type": "reference", + "id": 390, + "name": "TransformOptions" + } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [187] + "children": [187, 188] } ] } @@ -4617,14 +4745,14 @@ { "type": "reflection", "declaration": { - "id": 188, + "id": 189, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 189, + "id": 190, "name": "data", "kind": 1024, "kindString": "Property", @@ -4632,21 +4760,21 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 269, + "line": 275, "character": 8 } ], "type": { "type": "reflection", "declaration": { - "id": 190, + "id": 191, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 191, + "id": 192, "name": "signedUrl", "kind": 1024, "kindString": "Property", @@ -4654,7 +4782,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 269, + "line": 275, "character": 16 } ], @@ -4668,14 +4796,14 @@ { "title": "Properties", "kind": 1024, - "children": [191] + "children": [192] } ] } } }, { - "id": 192, + "id": 193, "name": "error", "kind": 1024, "kindString": "Property", @@ -4683,7 +4811,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 270, + "line": 276, "character": 8 } ], @@ -4697,7 +4825,7 @@ { "title": "Properties", "kind": 1024, - "children": [189, 192] + "children": [190, 193] } ] } @@ -4705,14 +4833,14 @@ { "type": "reflection", "declaration": { - "id": 193, + "id": 194, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 194, + "id": 195, "name": "data", "kind": 1024, "kindString": "Property", @@ -4720,7 +4848,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 273, + "line": 279, "character": 8 } ], @@ -4730,7 +4858,7 @@ } }, { - "id": 195, + "id": 196, "name": "error", "kind": 1024, "kindString": "Property", @@ -4738,13 +4866,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 274, + "line": 280, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -4753,7 +4881,7 @@ { "title": "Properties", "kind": 1024, - "children": [194, 195] + "children": [195, 196] } ] } @@ -4769,7 +4897,7 @@ ] }, { - "id": 196, + "id": 197, "name": "createSignedUrls", "kind": 2048, "kindString": "Method", @@ -4777,13 +4905,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 307, + "line": 314, "character": 8 } ], "signatures": [ { - "id": 197, + "id": 198, "name": "createSignedUrls", "kind": 4096, "kindString": "Call signature", @@ -4793,7 +4921,7 @@ }, "parameters": [ { - "id": 198, + "id": 199, "name": "paths", "kind": 32768, "kindString": "Parameter", @@ -4810,7 +4938,7 @@ } }, { - "id": 199, + "id": 200, "name": "expiresIn", "kind": 32768, "kindString": "Parameter", @@ -4824,7 +4952,7 @@ } }, { - "id": 200, + "id": 201, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -4834,14 +4962,14 @@ "type": { "type": "reflection", "declaration": { - "id": 201, + "id": 202, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 202, + "id": 203, "name": "download", "kind": 1024, "kindString": "Property", @@ -4852,7 +4980,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 310, + "line": 317, "character": 16 } ], @@ -4875,7 +5003,7 @@ { "title": "Properties", "kind": 1024, - "children": [202] + "children": [203] } ] } @@ -4891,14 +5019,14 @@ { "type": "reflection", "declaration": { - "id": 203, + "id": 204, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 204, + "id": 205, "name": "data", "kind": 1024, "kindString": "Property", @@ -4906,7 +5034,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 313, + "line": 320, "character": 8 } ], @@ -4915,14 +5043,14 @@ "elementType": { "type": "reflection", "declaration": { - "id": 205, + "id": 206, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 206, + "id": 207, "name": "error", "kind": 1024, "kindString": "Property", @@ -4930,7 +5058,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 313, + "line": 320, "character": 16 } ], @@ -4949,7 +5077,7 @@ } }, { - "id": 207, + "id": 208, "name": "path", "kind": 1024, "kindString": "Property", @@ -4957,7 +5085,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 313, + "line": 320, "character": 38 } ], @@ -4976,7 +5104,7 @@ } }, { - "id": 208, + "id": 209, "name": "signedUrl", "kind": 1024, "kindString": "Property", @@ -4984,7 +5112,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 313, + "line": 320, "character": 59 } ], @@ -4998,7 +5126,7 @@ { "title": "Properties", "kind": 1024, - "children": [206, 207, 208] + "children": [207, 208, 209] } ] } @@ -5006,7 +5134,7 @@ } }, { - "id": 209, + "id": 210, "name": "error", "kind": 1024, "kindString": "Property", @@ -5014,7 +5142,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 314, + "line": 321, "character": 8 } ], @@ -5028,7 +5156,7 @@ { "title": "Properties", "kind": 1024, - "children": [204, 209] + "children": [205, 210] } ] } @@ -5036,14 +5164,14 @@ { "type": "reflection", "declaration": { - "id": 210, + "id": 211, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 211, + "id": 212, "name": "data", "kind": 1024, "kindString": "Property", @@ -5051,7 +5179,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 317, + "line": 324, "character": 8 } ], @@ -5061,7 +5189,7 @@ } }, { - "id": 212, + "id": 213, "name": "error", "kind": 1024, "kindString": "Property", @@ -5069,13 +5197,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 318, + "line": 325, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -5084,7 +5212,7 @@ { "title": "Properties", "kind": 1024, - "children": [211, 212] + "children": [212, 213] } ] } @@ -5100,7 +5228,7 @@ ] }, { - "id": 213, + "id": 214, "name": "download", "kind": 2048, "kindString": "Method", @@ -5108,13 +5236,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 355, + "line": 363, "character": 8 } ], "signatures": [ { - "id": 214, + "id": 215, "name": "download", "kind": 4096, "kindString": "Call signature", @@ -5124,18 +5252,67 @@ }, "parameters": [ { - "id": 215, + "id": 216, "name": "path", "kind": 32768, "kindString": "Parameter", "flags": {}, "comment": { - "shortText": "The full path and file name of the file to be downloaded. For example `folder/image.png`.\n" + "shortText": "The full path and file name of the file to be downloaded. For example `folder/image.png`." }, "type": { "type": "intrinsic", "name": "string" } + }, + { + "id": 217, + "name": "options", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "type": { + "type": "reflection", + "declaration": { + "id": 218, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 219, + "name": "transform", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/packages/StorageFileApi.ts", + "line": 365, + "character": 16 + } + ], + "type": { + "type": "reference", + "id": 390, + "name": "TransformOptions" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [219] + } + ] + } + } } ], "type": { @@ -5147,14 +5324,14 @@ { "type": "reflection", "declaration": { - "id": 216, + "id": 220, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 217, + "id": 221, "name": "data", "kind": 1024, "kindString": "Property", @@ -5162,7 +5339,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 359, + "line": 368, "character": 8 } ], @@ -5174,7 +5351,7 @@ } }, { - "id": 218, + "id": 222, "name": "error", "kind": 1024, "kindString": "Property", @@ -5182,7 +5359,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 360, + "line": 369, "character": 8 } ], @@ -5196,7 +5373,7 @@ { "title": "Properties", "kind": 1024, - "children": [217, 218] + "children": [221, 222] } ] } @@ -5204,14 +5381,14 @@ { "type": "reflection", "declaration": { - "id": 219, + "id": 223, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 220, + "id": 224, "name": "data", "kind": 1024, "kindString": "Property", @@ -5219,7 +5396,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 363, + "line": 372, "character": 8 } ], @@ -5229,7 +5406,7 @@ } }, { - "id": 221, + "id": 225, "name": "error", "kind": 1024, "kindString": "Property", @@ -5237,13 +5414,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 364, + "line": 373, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -5252,7 +5429,7 @@ { "title": "Properties", "kind": 1024, - "children": [220, 221] + "children": [224, 225] } ] } @@ -5268,7 +5445,7 @@ ] }, { - "id": 222, + "id": 226, "name": "getPublicUrl", "kind": 2048, "kindString": "Method", @@ -5276,13 +5453,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 391, + "line": 406, "character": 2 } ], "signatures": [ { - "id": 223, + "id": 227, "name": "getPublicUrl", "kind": 4096, "kindString": "Call signature", @@ -5292,7 +5469,7 @@ }, "parameters": [ { - "id": 224, + "id": 228, "name": "path", "kind": 32768, "kindString": "Parameter", @@ -5306,7 +5483,7 @@ } }, { - "id": 225, + "id": 229, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -5316,25 +5493,27 @@ "type": { "type": "reflection", "declaration": { - "id": 226, + "id": 230, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 227, + "id": 231, "name": "download", "kind": 1024, "kindString": "Property", - "flags": {}, + "flags": { + "isOptional": true + }, "comment": { - "shortText": "triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename.\n" + "shortText": "triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename." }, "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 393, + "line": 408, "character": 16 } ], @@ -5351,13 +5530,37 @@ } ] } + }, + { + "id": 232, + "name": "transform", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "adds image transformations parameters to the generated url\n" + }, + "sources": [ + { + "fileName": "src/packages/StorageFileApi.ts", + "line": 408, + "character": 45 + } + ], + "type": { + "type": "reference", + "id": 390, + "name": "TransformOptions" + } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [227] + "children": [231, 232] } ] } @@ -5367,14 +5570,14 @@ "type": { "type": "reflection", "declaration": { - "id": 228, + "id": 233, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 229, + "id": 234, "name": "data", "kind": 1024, "kindString": "Property", @@ -5382,21 +5585,21 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 394, + "line": 409, "character": 7 } ], "type": { "type": "reflection", "declaration": { - "id": 230, + "id": 235, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 231, + "id": 236, "name": "publicUrl", "kind": 1024, "kindString": "Property", @@ -5404,7 +5607,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 394, + "line": 409, "character": 15 } ], @@ -5418,7 +5621,7 @@ { "title": "Properties", "kind": 1024, - "children": [231] + "children": [236] } ] } @@ -5429,7 +5632,7 @@ { "title": "Properties", "kind": 1024, - "children": [229] + "children": [234] } ] } @@ -5438,7 +5641,7 @@ ] }, { - "id": 241, + "id": 246, "name": "list", "kind": 2048, "kindString": "Method", @@ -5446,13 +5649,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 506, + "line": 540, "character": 8 } ], "signatures": [ { - "id": 242, + "id": 247, "name": "list", "kind": 4096, "kindString": "Call signature", @@ -5462,7 +5665,7 @@ }, "parameters": [ { - "id": 243, + "id": 248, "name": "path", "kind": 32768, "kindString": "Parameter", @@ -5478,7 +5681,7 @@ } }, { - "id": 244, + "id": 249, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -5487,17 +5690,17 @@ }, "type": { "type": "reference", - "id": 373, + "id": 381, "name": "SearchOptions", "dereferenced": { - "id": 373, + "id": 381, "name": "SearchOptions", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 374, + "id": 382, "name": "limit", "kind": 1024, "kindString": "Property", @@ -5520,7 +5723,7 @@ } }, { - "id": 375, + "id": 383, "name": "offset", "kind": 1024, "kindString": "Property", @@ -5543,7 +5746,7 @@ } }, { - "id": 377, + "id": 385, "name": "search", "kind": 1024, "kindString": "Property", @@ -5566,7 +5769,7 @@ } }, { - "id": 376, + "id": 384, "name": "sortBy", "kind": 1024, "kindString": "Property", @@ -5585,7 +5788,7 @@ ], "type": { "type": "reference", - "id": 366, + "id": 374, "name": "SortBy" } } @@ -5594,7 +5797,7 @@ { "title": "Properties", "kind": 1024, - "children": [374, 375, 377, 376] + "children": [382, 383, 385, 384] } ], "sources": [ @@ -5608,7 +5811,7 @@ } }, { - "id": 245, + "id": 250, "name": "parameters", "kind": 32768, "kindString": "Parameter", @@ -5617,17 +5820,17 @@ }, "type": { "type": "reference", - "id": 378, + "id": 386, "name": "FetchParameters", "dereferenced": { - "id": 378, + "id": 386, "name": "FetchParameters", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 379, + "id": 387, "name": "signal", "kind": 1024, "kindString": "Property", @@ -5656,7 +5859,7 @@ { "title": "Properties", "kind": 1024, - "children": [379] + "children": [387] } ], "sources": [ @@ -5679,14 +5882,14 @@ { "type": "reflection", "declaration": { - "id": 246, + "id": 251, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 247, + "id": 252, "name": "data", "kind": 1024, "kindString": "Property", @@ -5694,7 +5897,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 512, + "line": 546, "character": 8 } ], @@ -5702,13 +5905,13 @@ "type": "array", "elementType": { "type": "reference", - "id": 356, + "id": 364, "name": "FileObject" } } }, { - "id": 248, + "id": 253, "name": "error", "kind": 1024, "kindString": "Property", @@ -5716,7 +5919,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 513, + "line": 547, "character": 8 } ], @@ -5730,7 +5933,7 @@ { "title": "Properties", "kind": 1024, - "children": [247, 248] + "children": [252, 253] } ] } @@ -5738,14 +5941,14 @@ { "type": "reflection", "declaration": { - "id": 249, + "id": 254, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 250, + "id": 255, "name": "data", "kind": 1024, "kindString": "Property", @@ -5753,7 +5956,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 516, + "line": 550, "character": 8 } ], @@ -5763,7 +5966,7 @@ } }, { - "id": 251, + "id": 256, "name": "error", "kind": 1024, "kindString": "Property", @@ -5771,13 +5974,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 517, + "line": 551, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -5786,7 +5989,7 @@ { "title": "Properties", "kind": 1024, - "children": [250, 251] + "children": [255, 256] } ] } @@ -5810,7 +6013,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 190, + "line": 196, "character": 8 } ], @@ -5878,7 +6081,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 195, + "line": 201, "character": 8 } ], @@ -5900,7 +6103,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 195, + "line": 201, "character": 16 } ], @@ -5929,7 +6132,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 196, + "line": 202, "character": 8 } ], @@ -5966,7 +6169,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 199, + "line": 205, "character": 8 } ], @@ -5984,13 +6187,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 200, + "line": 206, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -6015,7 +6218,7 @@ ] }, { - "id": 232, + "id": 237, "name": "remove", "kind": 2048, "kindString": "Method", @@ -6023,13 +6226,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 410, + "line": 444, "character": 8 } ], "signatures": [ { - "id": 233, + "id": 238, "name": "remove", "kind": 4096, "kindString": "Call signature", @@ -6039,7 +6242,7 @@ }, "parameters": [ { - "id": 234, + "id": 239, "name": "paths", "kind": 32768, "kindString": "Parameter", @@ -6065,14 +6268,14 @@ { "type": "reflection", "declaration": { - "id": 235, + "id": 240, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 236, + "id": 241, "name": "data", "kind": 1024, "kindString": "Property", @@ -6080,7 +6283,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 414, + "line": 448, "character": 8 } ], @@ -6088,13 +6291,13 @@ "type": "array", "elementType": { "type": "reference", - "id": 356, + "id": 364, "name": "FileObject" } } }, { - "id": 237, + "id": 242, "name": "error", "kind": 1024, "kindString": "Property", @@ -6102,7 +6305,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 415, + "line": 449, "character": 8 } ], @@ -6116,7 +6319,7 @@ { "title": "Properties", "kind": 1024, - "children": [236, 237] + "children": [241, 242] } ] } @@ -6124,14 +6327,14 @@ { "type": "reflection", "declaration": { - "id": 238, + "id": 243, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 239, + "id": 244, "name": "data", "kind": 1024, "kindString": "Property", @@ -6139,7 +6342,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 418, + "line": 452, "character": 8 } ], @@ -6149,7 +6352,7 @@ } }, { - "id": 240, + "id": 245, "name": "error", "kind": 1024, "kindString": "Property", @@ -6157,13 +6360,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 419, + "line": 453, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -6172,7 +6375,7 @@ { "title": "Properties", "kind": 1024, - "children": [239, 240] + "children": [244, 245] } ] } @@ -6196,7 +6399,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 157, + "line": 163, "character": 8 } ], @@ -6316,17 +6519,17 @@ }, "type": { "type": "reference", - "id": 369, + "id": 377, "name": "FileOptions", "dereferenced": { - "id": 369, + "id": 377, "name": "FileOptions", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 370, + "id": 378, "name": "cacheControl", "kind": 1024, "kindString": "Property", @@ -6349,7 +6552,7 @@ } }, { - "id": 371, + "id": 379, "name": "contentType", "kind": 1024, "kindString": "Property", @@ -6372,7 +6575,7 @@ } }, { - "id": 372, + "id": 380, "name": "upsert", "kind": 1024, "kindString": "Property", @@ -6399,7 +6602,7 @@ { "title": "Properties", "kind": 1024, - "children": [370, 371, 372] + "children": [378, 379, 380] } ], "sources": [ @@ -6437,7 +6640,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 173, + "line": 179, "character": 8 } ], @@ -6459,7 +6662,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 173, + "line": 179, "character": 16 } ], @@ -6488,7 +6691,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 174, + "line": 180, "character": 8 } ], @@ -6525,7 +6728,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 177, + "line": 183, "character": 8 } ], @@ -6543,13 +6746,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 178, + "line": 184, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -6582,7 +6785,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 124, + "line": 130, "character": 8 } ], @@ -6702,17 +6905,17 @@ }, "type": { "type": "reference", - "id": 369, + "id": 377, "name": "FileOptions", "dereferenced": { - "id": 369, + "id": 377, "name": "FileOptions", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 370, + "id": 378, "name": "cacheControl", "kind": 1024, "kindString": "Property", @@ -6735,7 +6938,7 @@ } }, { - "id": 371, + "id": 379, "name": "contentType", "kind": 1024, "kindString": "Property", @@ -6758,7 +6961,7 @@ } }, { - "id": 372, + "id": 380, "name": "upsert", "kind": 1024, "kindString": "Property", @@ -6785,7 +6988,7 @@ { "title": "Properties", "kind": 1024, - "children": [370, 371, 372] + "children": [378, 379, 380] } ], "sources": [ @@ -6823,7 +7026,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 140, + "line": 146, "character": 8 } ], @@ -6845,7 +7048,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 140, + "line": 146, "character": 16 } ], @@ -6874,7 +7077,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 141, + "line": 147, "character": 8 } ], @@ -6911,7 +7114,7 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 144, + "line": 150, "character": 8 } ], @@ -6929,13 +7132,13 @@ "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 145, + "line": 151, "character": 8 } ], "type": { "type": "reference", - "id": 385, + "id": 397, "name": "StorageError" } } @@ -6969,13 +7172,13 @@ { "title": "Methods", "kind": 2048, - "children": [169, 181, 196, 213, 222, 241, 157, 232, 144, 131] + "children": [169, 181, 197, 214, 226, 246, 157, 237, 144, 131] } ], "sources": [ { "fileName": "src/packages/StorageFileApi.ts", - "line": 21, + "line": 27, "character": 21 } ] From cc8cb5b9317ec229160e5410af9914f6b79dfeff Mon Sep 17 00:00:00 2001 From: Inian Date: Tue, 13 Dec 2022 01:55:15 +0800 Subject: [PATCH 07/92] add makefile hack todo: remember to revert before merge to main --- spec/Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/spec/Makefile b/spec/Makefile index 706d5e5e342..a365362f5da 100644 --- a/spec/Makefile +++ b/spec/Makefile @@ -1,6 +1,6 @@ REPO_DIR=$(shell pwd) -run: download transform format +run: transform format ############################################################################### @@ -118,4 +118,3 @@ combine-raw.tsdoc.v2: ############################################################################### format: npx prettier --write . - From 80ee00fdd5036efe843c9d2dff40348841f1c998 Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Tue, 13 Dec 2022 02:51:47 +0800 Subject: [PATCH 08/92] remove more state stuff --- apps/docs/layouts/SiteRefLayout.tsx | 2 +- apps/docs/pages/_app.tsx | 36 ++++++++++++++--------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/apps/docs/layouts/SiteRefLayout.tsx b/apps/docs/layouts/SiteRefLayout.tsx index 276dc27540a..783865fcf1b 100644 --- a/apps/docs/layouts/SiteRefLayout.tsx +++ b/apps/docs/layouts/SiteRefLayout.tsx @@ -15,7 +15,7 @@ const SiteRefLayout = ({ children }) => { const menuLevel = 'home' // useMenuLevelId() - const mobileMenuOpen = () => void console.log('menuLevel', menuLevel) + const mobileMenuOpen = false const levelsData = { home: { diff --git a/apps/docs/pages/_app.tsx b/apps/docs/pages/_app.tsx index 53cd9ec927b..0c258410622 100644 --- a/apps/docs/pages/_app.tsx +++ b/apps/docs/pages/_app.tsx @@ -13,7 +13,7 @@ import '../styles/main.scss?v=1.0.0' import '../styles/new-docs.scss' import '../styles/prism-okaidia.scss' import { post } from '~/lib/fetchWrappers' -import { menuState } from '~/hooks/useMenuState' +// import { menuState } from '~/hooks/useMenuState' function MyApp({ Component, pageProps }: AppPropsWithLayout) { const router = useRouter() @@ -35,25 +35,25 @@ function MyApp({ Component, pageProps }: AppPropsWithLayout) { /* * handle "scroll to top" behaviour on route change */ - if (document) { - console.log('url', url) - // do not scroll to top for reference docs - if (!url.includes('reference/')) { - // scroll container div to top - const container = document.getElementById('docs-content-container') - // check container exists (only avail on new docs) - if (container) container.scrollTop = 0 - } - } - menuState.setMenuMobileOpen(false) + // if (document) { + // console.log('url', url) + // // do not scroll to top for reference docs + // if (!url.includes('reference/')) { + // // scroll container div to top + // const container = document.getElementById('docs-content-container') + // // check container exists (only avail on new docs) + // if (container) container.scrollTop = 0 + // } + // } + // menuState.setMenuMobileOpen(false) } - function handlePagrScroll() {} - // Listen for page changes after a navigation or when the query changes - router.events.on('routeChangeComplete', handleRouteChange) - return () => { - router.events.off('routeChangeComplete', handleRouteChange) - } + // function handlePagrScroll() {} + // // Listen for page changes after a navigation or when the query changes + // router.events.on('routeChangeComplete', handleRouteChange) + // return () => { + // router.events.off('routeChangeComplete', handleRouteChange) + // } }, [router.events]) const SITE_TITLE = 'Supabase Documentation' From d2f96c7f73a48778adbc723aaa6d72ae44e95a40 Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Tue, 13 Dec 2022 03:06:06 +0800 Subject: [PATCH 09/92] remove old packages --- apps/docs/lib/mdx/generateRefMarkdown.tsx | 4 +- apps/docs/package.json | 13 +- package-lock.json | 859 ++++------------------ 3 files changed, 146 insertions(+), 730 deletions(-) diff --git a/apps/docs/lib/mdx/generateRefMarkdown.tsx b/apps/docs/lib/mdx/generateRefMarkdown.tsx index 935db038833..1d5f7a539e9 100644 --- a/apps/docs/lib/mdx/generateRefMarkdown.tsx +++ b/apps/docs/lib/mdx/generateRefMarkdown.tsx @@ -3,9 +3,9 @@ import fs from 'fs' import matter from 'gray-matter' import { serialize } from 'next-mdx-remote/serialize' -import { remarkCodeHike } from '@code-hike/mdx' +// import { remarkCodeHike } from '@code-hike/mdx' // import codeHikeTheme from '~/codeHikeTheme.js' -import theme from 'shiki/themes/solarized-dark.json' +// import theme from 'shiki/themes/solarized-dark.json' async function generateRefMarkdown(sections, slug) { let markdownContent = [] diff --git a/apps/docs/package.json b/apps/docs/package.json index 4b1199eb0b5..4c40db4e3d1 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -35,21 +35,15 @@ "dependencies": { "@algolia/autocomplete-js": "^1.7.2", "@algolia/autocomplete-plugin-recent-searches": "^1.7.2", - "@apollo/client": "^3.6.6", - "@code-hike/mdx": "^0.7.4", "@docsearch/react": "^3.3.0", "@mdx-js/loader": "^1.6.22", "@mdx-js/react": "^1.6.22", "@next/mdx": "^12.0.4", "@radix-ui/react-accordion": "^1.0.1", - "@radix-ui/react-collapsible": "^1.0.1", - "@tailwindcss/typography": "^0.4.1", "algoliasearch": "^4.14.2", "babel": "^6.23.0", "common": "*", "config": "*", - "dotenv": "^16.0.3", - "graphql": "^16.5.0", "gray-matter": "^4.0.3", "isbot": "^3.6.5", "jsrsasign": "^10.5.26", @@ -62,9 +56,7 @@ "next-mdx-toc": "^0.1.3", "next-plugin-yaml": "^1.0.1", "next-seo": "^5.14.1", - "next-themes": "0.0.15", "next-transpile-modules": "^9.0.0", - "octokit": "^2.0.10", "react": "17.0.2", "react-copy-to-clipboard": "^5.0.2", "react-dom": "17.0.2", @@ -73,17 +65,14 @@ "react-syntax-highlighter": "^15.3.1", "remark": "^14.0.2", "remark-admonitions": "^1.2.1", - "remark-autolink-headings": "^7.0.1", "remark-gfm": "^3.0.1", - "remark-html": "^15.0.0", - "remark-mdx": "^2.0.0-rc.2", - "remark-prism": "^1.3.6", "remark-slug": "^7.0.1", "shiki": "^0.11.1", "ui": "*", "valtio": "^1.7.6" }, "devDependencies": { + "dotenv": "^16.0.3", "@types/node": "^17.0.12", "@types/react": "17.0.39", "config": "*", diff --git a/package-lock.json b/package-lock.json index 77745d0f540..b26a8f23bc9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,21 +42,15 @@ "dependencies": { "@algolia/autocomplete-js": "^1.7.2", "@algolia/autocomplete-plugin-recent-searches": "^1.7.2", - "@apollo/client": "^3.6.6", - "@code-hike/mdx": "^0.7.4", "@docsearch/react": "^3.3.0", "@mdx-js/loader": "^1.6.22", "@mdx-js/react": "^1.6.22", "@next/mdx": "^12.0.4", "@radix-ui/react-accordion": "^1.0.1", - "@radix-ui/react-collapsible": "^1.0.1", - "@tailwindcss/typography": "^0.4.1", "algoliasearch": "^4.14.2", "babel": "^6.23.0", "common": "*", "config": "*", - "dotenv": "^16.0.3", - "graphql": "^16.5.0", "gray-matter": "^4.0.3", "isbot": "^3.6.5", "jsrsasign": "^10.5.26", @@ -69,9 +63,7 @@ "next-mdx-toc": "^0.1.3", "next-plugin-yaml": "^1.0.1", "next-seo": "^5.14.1", - "next-themes": "0.0.15", "next-transpile-modules": "^9.0.0", - "octokit": "^2.0.10", "react": "17.0.2", "react-copy-to-clipboard": "^5.0.2", "react-dom": "17.0.2", @@ -80,11 +72,7 @@ "react-syntax-highlighter": "^15.3.1", "remark": "^14.0.2", "remark-admonitions": "^1.2.1", - "remark-autolink-headings": "^7.0.1", "remark-gfm": "^3.0.1", - "remark-html": "^15.0.0", - "remark-mdx": "^2.0.0-rc.2", - "remark-prism": "^1.3.6", "remark-slug": "^7.0.1", "shiki": "^0.11.1", "ui": "*", @@ -94,6 +82,7 @@ "@types/node": "^17.0.12", "@types/react": "17.0.39", "config": "*", + "dotenv": "^16.0.3", "ejs": "^3.1.8", "eslint": "8.9.0", "globby": "^12.0.2", @@ -412,51 +401,6 @@ "node": ">= 10" } }, - "apps/docs/node_modules/@radix-ui/react-collapsible": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.0.1.tgz", - "integrity": "sha512-0maX4q91iYa4gjt3PsNf7dq/yqSR+HGAE8I5p54dQ6gnveS+ETWlMoijxrhmgV1k8svxpm34mQAtqIrJt4XZmA==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.0", - "@radix-ui/react-compose-refs": "1.0.0", - "@radix-ui/react-context": "1.0.0", - "@radix-ui/react-id": "1.0.0", - "@radix-ui/react-presence": "1.0.0", - "@radix-ui/react-primitive": "1.0.1", - "@radix-ui/react-use-controllable-state": "1.0.0", - "@radix-ui/react-use-layout-effect": "1.0.0" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - } - }, - "apps/docs/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-presence": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", - "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.0", - "@radix-ui/react-use-layout-effect": "1.0.0" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - } - }, - "apps/docs/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", - "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0" - } - }, "apps/docs/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1271,47 +1215,6 @@ "node": ">=6.0.0" } }, - "node_modules/@apollo/client": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.7.1.tgz", - "integrity": "sha512-xu5M/l7p9gT9Fx7nF3AQivp0XukjB7TM7tOd5wifIpI8RskYveL4I+rpTijzWrnqCPZabkbzJKH7WEAKdctt9w==", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@wry/context": "^0.7.0", - "@wry/equality": "^0.5.0", - "@wry/trie": "^0.3.0", - "graphql-tag": "^2.12.6", - "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.16.1", - "prop-types": "^15.7.2", - "response-iterator": "^0.2.6", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.10.3", - "tslib": "^2.3.0", - "zen-observable-ts": "^1.2.5" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0", - "graphql-ws": "^5.5.5", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" - }, - "peerDependenciesMeta": { - "graphql-ws": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "subscriptions-transport-ws": { - "optional": true - } - } - }, "node_modules/@babel/code-frame": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", @@ -3504,14 +3407,6 @@ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "dev": true }, - "node_modules/@graphql-typed-document-node/core": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", - "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, "node_modules/@hcaptcha/react-hcaptcha": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/@hcaptcha/react-hcaptcha/-/react-hcaptcha-1.4.4.tgz", @@ -10019,20 +9914,6 @@ "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" } }, - "node_modules/@tailwindcss/typography": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.4.1.tgz", - "integrity": "sha512-ovPPLUhs7zAIJfr0y1dbGlyCuPhpuv/jpBoFgqAc658DWGGrOBWBMpAWLw2KlzbNeVk4YBJMzue1ekvIbdw6XA==", - "dependencies": { - "lodash.castarray": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "lodash.uniq": "^4.5.0" - }, - "peerDependencies": { - "tailwindcss": ">=2.0.0" - } - }, "node_modules/@tanstack/match-sorter-utils": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/@tanstack/match-sorter-utils/-/match-sorter-utils-8.1.1.tgz", @@ -10174,6 +10055,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, "engines": { "node": ">= 6" } @@ -11326,39 +11208,6 @@ "@xtuc/long": "4.2.2" } }, - "node_modules/@wry/context": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.0.tgz", - "integrity": "sha512-LcDAiYWRtwAoSOArfk7cuYvFXytxfVrdX7yxoUmK7pPITLk5jYh2F8knCwS7LjgYL8u1eidPlKKV6Ikqq0ODqQ==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/equality": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.3.tgz", - "integrity": "sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/trie": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.2.tgz", - "integrity": "sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -11372,7 +11221,8 @@ "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true }, "node_modules/accepts": { "version": "1.3.8", @@ -11402,6 +11252,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, "dependencies": { "acorn": "^7.1.1", "acorn-walk": "^7.1.1" @@ -12062,7 +11913,8 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "node_modules/at-least-node": { "version": "1.0.0", @@ -12955,7 +12807,8 @@ "node_modules/browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true }, "node_modules/browserify-aes": { "version": "1.2.0", @@ -13859,6 +13712,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -14919,11 +14773,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/css-selector-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", - "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==" - }, "node_modules/css-unit-converter": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", @@ -14967,12 +14816,14 @@ "node_modules/cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true }, "node_modules/cssstyle": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, "dependencies": { "cssom": "~0.3.6" }, @@ -14983,7 +14834,8 @@ "node_modules/cssstyle/node_modules/cssom": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true }, "node_modules/csstype": { "version": "3.1.1", @@ -15715,6 +15567,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, "dependencies": { "abab": "^2.0.3", "whatwg-mimetype": "^2.3.0", @@ -15773,7 +15626,8 @@ "node_modules/decimal.js": { "version": "10.4.2", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", - "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==" + "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==", + "dev": true }, "node_modules/decimal.js-light": { "version": "2.5.1", @@ -15928,6 +15782,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, "engines": { "node": ">=0.4.0" } @@ -16215,6 +16070,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, "dependencies": { "webidl-conversions": "^5.0.0" }, @@ -16226,6 +16082,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, "engines": { "node": ">=8" } @@ -16278,6 +16135,7 @@ "version": "16.0.3", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "dev": true, "engines": { "node": ">=12" } @@ -16624,7 +16482,8 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true }, "node_modules/escape-string-regexp": { "version": "4.0.0", @@ -16641,6 +16500,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -16662,6 +16522,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -16674,6 +16535,7 @@ "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, "dependencies": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -16690,6 +16552,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, "engines": { "node": ">= 0.8.0" } @@ -16698,7 +16561,9 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -16707,6 +16572,7 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, "dependencies": { "prelude-ls": "~1.1.2" }, @@ -18422,6 +18288,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -18968,28 +18835,6 @@ "lodash": "^4.17.15" } }, - "node_modules/graphql": { - "version": "16.6.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", - "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", - "engines": { - "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" - } - }, - "node_modules/graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, "node_modules/gray-matter": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", @@ -19735,6 +19580,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, "dependencies": { "whatwg-encoding": "^1.0.5" }, @@ -19898,6 +19744,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, "dependencies": { "@tootallnate/once": "1", "agent-base": "6", @@ -20620,7 +20467,8 @@ "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true }, "node_modules/is-reference": { "version": "3.0.0", @@ -22838,6 +22686,7 @@ "version": "16.7.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, "dependencies": { "abab": "^2.0.5", "acorn": "^8.2.4", @@ -22883,6 +22732,7 @@ "version": "8.8.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -22894,6 +22744,7 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, "engines": { "node": ">=8.3.0" }, @@ -25262,6 +25113,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -25270,6 +25122,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -26134,16 +25987,6 @@ "react-dom": ">=16.0.0" } }, - "node_modules/next-themes": { - "version": "0.0.15", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.0.15.tgz", - "integrity": "sha512-LTmtqYi03c4gMTJmWwVK9XkHL7h0/+XrtR970Ujvtu3s0kZNeJN24aJsi4rkZOI8i19+qq6f8j+8Duwy5jqcrQ==", - "peerDependencies": { - "next": "*", - "react": "*", - "react-dom": "*" - } - }, "node_modules/next-tick": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", @@ -26573,7 +26416,8 @@ "node_modules/nwsapi": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==" + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "dev": true }, "node_modules/object-assign": { "version": "4.1.1", @@ -26914,15 +26758,6 @@ "opener": "bin/opener-bin.js" } }, - "node_modules/optimism": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.2.tgz", - "integrity": "sha512-zWNbgWj+3vLEjZNIh/okkY2EUfX+vB9TJopzIZwT1xxaMqC5hRLLraePod4c5n4He08xuXNH+zhKFFCu390wiQ==", - "dependencies": { - "@wry/context": "^0.7.0", - "@wry/trie": "^0.3.0" - } - }, "node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -27198,14 +27033,6 @@ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dependencies": { - "parse5": "^6.0.1" - } - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -29644,7 +29471,8 @@ "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true }, "node_modules/public-encrypt": { "version": "4.0.3", @@ -29735,7 +29563,8 @@ "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -31560,127 +31389,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-autolink-headings": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/remark-autolink-headings/-/remark-autolink-headings-7.0.1.tgz", - "integrity": "sha512-a1BIwoJ0cSnX+sPp5u3AFULBFWHGYBt57Fo4a+7IlGiJOQxs8b7uYAE5Iu26Ocl7Y5cvinZy3FaGVruLCKg6vA==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "extend": "^3.0.0", - "unified": "^10.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-autolink-headings/node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark-autolink-headings/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/remark-autolink-headings/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/remark-autolink-headings/node_modules/trough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", - "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark-autolink-headings/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-autolink-headings/node_modules/unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-autolink-headings/node_modules/unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-autolink-headings/node_modules/unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remark-external-links": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/remark-external-links/-/remark-external-links-8.0.0.tgz", @@ -31948,22 +31656,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-prism": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/remark-prism/-/remark-prism-1.3.6.tgz", - "integrity": "sha512-yYSXJ2MEK2DeD9UKDKFkQPcVqRx6aX2FYD1kE27ScogpZ/BBO8MoOO6gf/AKqfXvKGnP51wqvDEBmPseypgaug==", - "dependencies": { - "classnames": "^2.3.1", - "css-selector-parser": "^1.4.1", - "escape-html": "^1.0.3", - "jsdom": "^16.5.3", - "parse-numeric-range": "^1.2.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "prismjs": "^1.23.0", - "unist-util-map": "^2.0.1" - } - }, "node_modules/remark-rehype": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-8.1.0.tgz", @@ -32413,7 +32105,8 @@ "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true }, "node_modules/resize-observer-polyfill": { "version": "1.5.1", @@ -32472,14 +32165,6 @@ "node": ">=10" } }, - "node_modules/response-iterator": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz", - "integrity": "sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==", - "engines": { - "node": ">=0.8" - } - }, "node_modules/ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -32917,6 +32602,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, "dependencies": { "xmlchars": "^2.2.0" }, @@ -34191,18 +33877,11 @@ "react": "^16.11.0 || ^17.0.0" } }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "engines": { - "node": ">=0.10" - } - }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true }, "node_modules/symbol.prototype.description": { "version": "1.0.5", @@ -34770,6 +34449,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -34784,6 +34464,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, "engines": { "node": ">= 4.0.0" } @@ -34792,6 +34473,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, "dependencies": { "punycode": "^2.1.1" }, @@ -34850,17 +34532,6 @@ "node": ">=6.10" } }, - "node_modules/ts-invariant": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", - "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ts-jest": { "version": "27.1.5", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", @@ -35571,19 +35242,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-map/-/unist-util-map-2.0.1.tgz", - "integrity": "sha512-VdNvk4BQUUU9Rgr8iUOvclHa/iN9O+6Dt66FKij8l9OVezGG37gGWCPU5KSax1R2degqXFvl3kWTkvzL79e9tQ==", - "dependencies": { - "@types/mdast": "^3.0.0", - "object-assign": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-position": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", @@ -35888,6 +35546,7 @@ "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -36284,6 +35943,7 @@ "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dev": true, "dependencies": { "browser-process-hrtime": "^1.0.0" } @@ -36292,6 +35952,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, "dependencies": { "xml-name-validator": "^3.0.0" }, @@ -36593,6 +36254,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, "engines": { "node": ">=10.4" } @@ -37213,6 +36875,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, "dependencies": { "iconv-lite": "0.4.24" } @@ -37220,12 +36883,14 @@ "node_modules/whatwg-mimetype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true }, "node_modules/whatwg-url": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, "dependencies": { "lodash": "^4.7.0", "tr46": "^2.1.0", @@ -37424,12 +37089,14 @@ "node_modules/xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true }, "node_modules/xtend": { "version": "4.0.2", @@ -37539,19 +37206,6 @@ "resolved": "https://registry.npmjs.org/yup-password/-/yup-password-0.2.2.tgz", "integrity": "sha512-2PHfqGWtbXg4OfDV7VKFIb3hyEaYgTYpEORnFqgGAYqzENWmGzWMoeGvJg2Ohmq6maTRxhJzLZpNTITrqlZTrA==" }, - "node_modules/zen-observable": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" - }, - "node_modules/zen-observable-ts": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", - "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", - "dependencies": { - "zen-observable": "0.8.15" - } - }, "node_modules/zwitch": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", @@ -38524,26 +38178,6 @@ "@jridgewell/trace-mapping": "^0.3.9" } }, - "@apollo/client": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.7.1.tgz", - "integrity": "sha512-xu5M/l7p9gT9Fx7nF3AQivp0XukjB7TM7tOd5wifIpI8RskYveL4I+rpTijzWrnqCPZabkbzJKH7WEAKdctt9w==", - "requires": { - "@graphql-typed-document-node/core": "^3.1.1", - "@wry/context": "^0.7.0", - "@wry/equality": "^0.5.0", - "@wry/trie": "^0.3.0", - "graphql-tag": "^2.12.6", - "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.16.1", - "prop-types": "^15.7.2", - "response-iterator": "^0.2.6", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.10.3", - "tslib": "^2.3.0", - "zen-observable-ts": "^1.2.5" - } - }, "@babel/code-frame": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", @@ -40066,12 +39700,6 @@ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "dev": true }, - "@graphql-typed-document-node/core": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", - "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", - "requires": {} - }, "@hcaptcha/react-hcaptcha": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/@hcaptcha/react-hcaptcha/-/react-hcaptcha-1.4.4.tgz", @@ -44930,17 +44558,6 @@ "mini-svg-data-uri": "^1.2.3" } }, - "@tailwindcss/typography": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.4.1.tgz", - "integrity": "sha512-ovPPLUhs7zAIJfr0y1dbGlyCuPhpuv/jpBoFgqAc658DWGGrOBWBMpAWLw2KlzbNeVk4YBJMzue1ekvIbdw6XA==", - "requires": { - "lodash.castarray": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "lodash.uniq": "^4.5.0" - } - }, "@tanstack/match-sorter-utils": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/@tanstack/match-sorter-utils/-/match-sorter-utils-8.1.1.tgz", @@ -45027,7 +44644,8 @@ "@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true }, "@tsconfig/node10": { "version": "1.0.9", @@ -46056,30 +45674,6 @@ "@xtuc/long": "4.2.2" } }, - "@wry/context": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.0.tgz", - "integrity": "sha512-LcDAiYWRtwAoSOArfk7cuYvFXytxfVrdX7yxoUmK7pPITLk5jYh2F8knCwS7LjgYL8u1eidPlKKV6Ikqq0ODqQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@wry/equality": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.3.tgz", - "integrity": "sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@wry/trie": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.2.tgz", - "integrity": "sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ==", - "requires": { - "tslib": "^2.3.0" - } - }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -46093,7 +45687,8 @@ "abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true }, "accepts": { "version": "1.3.8", @@ -46114,6 +45709,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, "requires": { "acorn": "^7.1.1", "acorn-walk": "^7.1.1" @@ -46622,7 +46218,8 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "at-least-node": { "version": "1.0.0", @@ -47296,7 +46893,8 @@ "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true }, "browserify-aes": { "version": "1.2.0", @@ -47977,6 +47575,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -48867,11 +48466,6 @@ "nth-check": "^2.0.1" } }, - "css-selector-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", - "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==" - }, "css-unit-converter": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", @@ -48903,12 +48497,14 @@ "cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true }, "cssstyle": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, "requires": { "cssom": "~0.3.6" }, @@ -48916,7 +48512,8 @@ "cssom": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true } } }, @@ -49527,6 +49124,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, "requires": { "abab": "^2.0.3", "whatwg-mimetype": "^2.3.0", @@ -49573,7 +49171,8 @@ "decimal.js": { "version": "10.4.2", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", - "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==" + "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==", + "dev": true }, "decimal.js-light": { "version": "2.5.1", @@ -49691,7 +49290,8 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true }, "delegate": { "version": "3.2.0", @@ -49849,15 +49449,11 @@ "requires": { "@algolia/autocomplete-js": "^1.7.2", "@algolia/autocomplete-plugin-recent-searches": "^1.7.2", - "@apollo/client": "^3.6.6", - "@code-hike/mdx": "^0.7.4", "@docsearch/react": "^3.3.0", "@mdx-js/loader": "^1.6.22", "@mdx-js/react": "^1.6.22", "@next/mdx": "^12.0.4", "@radix-ui/react-accordion": "^1.0.1", - "@radix-ui/react-collapsible": "^1.0.1", - "@tailwindcss/typography": "^0.4.1", "@types/node": "^17.0.12", "@types/react": "17.0.39", "algoliasearch": "^4.14.2", @@ -49868,7 +49464,6 @@ "ejs": "^3.1.8", "eslint": "8.9.0", "globby": "^12.0.2", - "graphql": "^16.5.0", "gray-matter": "^4.0.3", "isbot": "^3.6.5", "jsrsasign": "^10.5.26", @@ -49882,10 +49477,8 @@ "next-mdx-toc": "^0.1.3", "next-plugin-yaml": "^1.0.1", "next-seo": "^5.14.1", - "next-themes": "0.0.15", "next-transpile-modules": "9.0.0", "npm-run-all": "^4.1.5", - "octokit": "^2.0.10", "openapi-types": "^12.0.2", "prettier": "^2.2.1", "react": "17.0.2", @@ -49896,11 +49489,7 @@ "react-syntax-highlighter": "^15.3.1", "remark": "^14.0.2", "remark-admonitions": "^1.2.1", - "remark-autolink-headings": "^7.0.1", "remark-gfm": "^3.0.1", - "remark-html": "^15.0.0", - "remark-mdx": "^2.0.0-rc.2", - "remark-prism": "^1.3.6", "remark-slug": "^7.0.1", "sass": "^1.55.0", "shiki": "^0.11.1", @@ -50087,42 +49676,6 @@ "integrity": "sha512-tpQJYUH+TzPMIsdVl9fH8uDg47iwiNjKY+8e9da3dXqlkztKzjSw0OwSADoqh3KrifplXeKSta+BBGLdBqg3sg==", "optional": true }, - "@radix-ui/react-collapsible": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.0.1.tgz", - "integrity": "sha512-0maX4q91iYa4gjt3PsNf7dq/yqSR+HGAE8I5p54dQ6gnveS+ETWlMoijxrhmgV1k8svxpm34mQAtqIrJt4XZmA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.0", - "@radix-ui/react-compose-refs": "1.0.0", - "@radix-ui/react-context": "1.0.0", - "@radix-ui/react-id": "1.0.0", - "@radix-ui/react-presence": "1.0.0", - "@radix-ui/react-primitive": "1.0.1", - "@radix-ui/react-use-controllable-state": "1.0.0", - "@radix-ui/react-use-layout-effect": "1.0.0" - }, - "dependencies": { - "@radix-ui/react-presence": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", - "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.0", - "@radix-ui/react-use-layout-effect": "1.0.0" - } - }, - "@radix-ui/react-use-layout-effect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", - "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", - "requires": { - "@babel/runtime": "^7.13.10" - } - } - } - }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -50463,6 +50016,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, "requires": { "webidl-conversions": "^5.0.0" }, @@ -50470,7 +50024,8 @@ "webidl-conversions": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true } } }, @@ -50512,7 +50067,8 @@ "dotenv": { "version": "16.0.3", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "dev": true }, "dotenv-expand": { "version": "5.1.0", @@ -50802,7 +50358,8 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true }, "escape-string-regexp": { "version": "4.0.0", @@ -50813,6 +50370,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, "requires": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -50825,6 +50383,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, "requires": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -50834,6 +50393,7 @@ "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, "requires": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -50846,18 +50406,22 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true + "dev": true, + "optional": true, + "peer": true }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, "requires": { "prelude-ls": "~1.1.2" } @@ -52199,6 +51763,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -52592,19 +52157,6 @@ "lodash": "^4.17.15" } }, - "graphql": { - "version": "16.6.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", - "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==" - }, - "graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "requires": { - "tslib": "^2.1.0" - } - }, "gray-matter": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", @@ -53139,6 +52691,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, "requires": { "whatwg-encoding": "^1.0.5" } @@ -53262,6 +52815,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, "requires": { "@tootallnate/once": "1", "agent-base": "6", @@ -53771,7 +53325,8 @@ "is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true }, "is-reference": { "version": "3.0.0", @@ -55581,6 +55136,7 @@ "version": "16.7.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, "requires": { "abab": "^2.0.5", "acorn": "^8.2.4", @@ -55614,12 +55170,14 @@ "acorn": { "version": "8.8.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true }, "ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, "requires": {} } } @@ -57324,12 +56882,14 @@ "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "requires": { "mime-db": "1.52.0" } @@ -57975,12 +57535,6 @@ "integrity": "sha512-NiJeQbxYP3z+EMp52q8k3Q+OfX2+Yv2WehERDj98r2wjXxL+woKpRBdsSVYolTD0Hm8IWs42SzaISE93RoQdOw==", "requires": {} }, - "next-themes": { - "version": "0.0.15", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.0.15.tgz", - "integrity": "sha512-LTmtqYi03c4gMTJmWwVK9XkHL7h0/+XrtR970Ujvtu3s0kZNeJN24aJsi4rkZOI8i19+qq6f8j+8Duwy5jqcrQ==", - "requires": {} - }, "next-tick": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", @@ -58317,7 +57871,8 @@ "nwsapi": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==" + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "dev": true }, "object-assign": { "version": "4.1.1", @@ -58563,15 +58118,6 @@ "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" }, - "optimism": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.2.tgz", - "integrity": "sha512-zWNbgWj+3vLEjZNIh/okkY2EUfX+vB9TJopzIZwT1xxaMqC5hRLLraePod4c5n4He08xuXNH+zhKFFCu390wiQ==", - "requires": { - "@wry/context": "^0.7.0", - "@wry/trie": "^0.3.0" - } - }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -58784,14 +58330,6 @@ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "requires": { - "parse5": "^6.0.1" - } - }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -60602,7 +60140,8 @@ "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true }, "public-encrypt": { "version": "4.0.3", @@ -60681,7 +60220,8 @@ "querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true }, "queue-microtask": { "version": "1.2.3", @@ -62047,78 +61587,6 @@ } } }, - "remark-autolink-headings": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/remark-autolink-headings/-/remark-autolink-headings-7.0.1.tgz", - "integrity": "sha512-a1BIwoJ0cSnX+sPp5u3AFULBFWHGYBt57Fo4a+7IlGiJOQxs8b7uYAE5Iu26Ocl7Y5cvinZy3FaGVruLCKg6vA==", - "requires": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "extend": "^3.0.0", - "unified": "^10.0.0", - "unist-util-visit": "^4.0.0" - }, - "dependencies": { - "bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==" - }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" - }, - "is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" - }, - "trough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", - "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==" - }, - "unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "requires": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - } - }, - "unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" - }, - "unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - } - }, - "unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - } - } - }, "remark-external-links": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/remark-external-links/-/remark-external-links-8.0.0.tgz", @@ -62280,22 +61748,6 @@ } } }, - "remark-prism": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/remark-prism/-/remark-prism-1.3.6.tgz", - "integrity": "sha512-yYSXJ2MEK2DeD9UKDKFkQPcVqRx6aX2FYD1kE27ScogpZ/BBO8MoOO6gf/AKqfXvKGnP51wqvDEBmPseypgaug==", - "requires": { - "classnames": "^2.3.1", - "css-selector-parser": "^1.4.1", - "escape-html": "^1.0.3", - "jsdom": "^16.5.3", - "parse-numeric-range": "^1.2.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "prismjs": "^1.23.0", - "unist-util-map": "^2.0.1" - } - }, "remark-rehype": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-8.1.0.tgz", @@ -62544,7 +61996,8 @@ "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true }, "resize-observer-polyfill": { "version": "1.5.1", @@ -62587,11 +62040,6 @@ "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", "dev": true }, - "response-iterator": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz", - "integrity": "sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==" - }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -62929,6 +62377,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, "requires": { "xmlchars": "^2.2.0" } @@ -64355,15 +63804,11 @@ "dequal": "2.0.2" } }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==" - }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true }, "symbol.prototype.description": { "version": "1.0.5", @@ -64804,6 +64249,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, "requires": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -64814,7 +64260,8 @@ "universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true } } }, @@ -64822,6 +64269,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, "requires": { "punycode": "^2.1.1" } @@ -64859,14 +64307,6 @@ "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", "dev": true }, - "ts-invariant": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", - "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", - "requires": { - "tslib": "^2.1.0" - } - }, "ts-jest": { "version": "27.1.5", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", @@ -65481,15 +64921,6 @@ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" }, - "unist-util-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-map/-/unist-util-map-2.0.1.tgz", - "integrity": "sha512-VdNvk4BQUUU9Rgr8iUOvclHa/iN9O+6Dt66FKij8l9OVezGG37gGWCPU5KSax1R2degqXFvl3kWTkvzL79e9tQ==", - "requires": { - "@types/mdast": "^3.0.0", - "object-assign": "^4.0.0" - } - }, "unist-util-position": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", @@ -65709,6 +65140,7 @@ "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -65977,6 +65409,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, "requires": { "browser-process-hrtime": "^1.0.0" } @@ -65985,6 +65418,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, "requires": { "xml-name-validator": "^3.0.0" } @@ -66235,7 +65669,8 @@ "webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true }, "webpack": { "version": "4.46.0", @@ -66718,6 +66153,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, "requires": { "iconv-lite": "0.4.24" } @@ -66725,12 +66161,14 @@ "whatwg-mimetype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true }, "whatwg-url": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, "requires": { "lodash": "^4.7.0", "tr46": "^2.1.0", @@ -67046,12 +66484,14 @@ "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true }, "xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true }, "xtend": { "version": "4.0.2", @@ -67131,19 +66571,6 @@ "resolved": "https://registry.npmjs.org/yup-password/-/yup-password-0.2.2.tgz", "integrity": "sha512-2PHfqGWtbXg4OfDV7VKFIb3hyEaYgTYpEORnFqgGAYqzENWmGzWMoeGvJg2Ohmq6maTRxhJzLZpNTITrqlZTrA==" }, - "zen-observable": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" - }, - "zen-observable-ts": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", - "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", - "requires": { - "zen-observable": "0.8.15" - } - }, "zwitch": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", From e32e28e5f8dcafeff4d897c281e94c442c3899d1 Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Tue, 13 Dec 2022 03:20:54 +0800 Subject: [PATCH 10/92] test 3 --- apps/docs/pages/_app.tsx | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/apps/docs/pages/_app.tsx b/apps/docs/pages/_app.tsx index 0c258410622..fc8e21d0279 100644 --- a/apps/docs/pages/_app.tsx +++ b/apps/docs/pages/_app.tsx @@ -2,18 +2,16 @@ import { DefaultSeo } from 'next-seo' import { useRouter } from 'next/router' import { useEffect } from 'react' import { AppPropsWithLayout } from 'types' -import { SearchProvider } from '~/components/DocSearch' import Favicons from '~/components/Favicons' -import { ThemeProvider } from 'common/Providers' -import SiteLayout from '~/layouts/SiteLayout' +import { post } from '~/lib/fetchWrappers' import '../styles/algolia-search.scss' import '../styles/ch.scss' import '../styles/docsearch.scss' import '../styles/main.scss?v=1.0.0' import '../styles/new-docs.scss' import '../styles/prism-okaidia.scss' -import { post } from '~/lib/fetchWrappers' // import { menuState } from '~/hooks/useMenuState' +import SiteRefLayout from '~/layouts/SiteRefLayout' function MyApp({ Component, pageProps }: AppPropsWithLayout) { const router = useRouter() @@ -85,13 +83,13 @@ function MyApp({ Component, pageProps }: AppPropsWithLayout) { cardType: 'summary_large_image', }} /> - - - - - - - + {/* */} + {/* */} + + + + {/* */} + {/* */} ) } From 4f68a0d383717f630224be707b6673ee2aa16b94 Mon Sep 17 00:00:00 2001 From: Francisco Mazzoni Date: Mon, 12 Dec 2022 16:24:26 -0300 Subject: [PATCH 11/92] links to new guides for storage --- apps/www/pages/storage/Storage.tsx | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/apps/www/pages/storage/Storage.tsx b/apps/www/pages/storage/Storage.tsx index f9934a488b3..15ba7dab12e 100644 --- a/apps/www/pages/storage/Storage.tsx +++ b/apps/www/pages/storage/Storage.tsx @@ -187,6 +187,17 @@ function StoragePage() { title="CDN" text="Serve from the edge to reduce latency." /> + + +
- New + + +
, ]} From d95057203a6881e1567651334776b210745b1e81 Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Tue, 13 Dec 2022 03:25:00 +0800 Subject: [PATCH 12/92] remove more --- .../NavigationMenu/TopNavBarRef.tsx | 21 ++++--------------- apps/docs/pages/_app.tsx | 10 ++++----- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/apps/docs/components/Navigation/NavigationMenu/TopNavBarRef.tsx b/apps/docs/components/Navigation/NavigationMenu/TopNavBarRef.tsx index 6fcae17712d..650a3560734 100644 --- a/apps/docs/components/Navigation/NavigationMenu/TopNavBarRef.tsx +++ b/apps/docs/components/Navigation/NavigationMenu/TopNavBarRef.tsx @@ -1,23 +1,10 @@ +import { useTheme } from 'common/Providers' import Image from 'next/image' import Link from 'next/link' import { useRouter } from 'next/router' import { FC, useEffect, useState } from 'react' -import { - Badge, - Button, - Dropdown, - IconCommand, - IconMenu, - IconMessageSquare, - IconMoon, - IconSearch, - IconSun, - Input, - Listbox, -} from 'ui' -import { SearchButton } from '~/components/DocSearch' +import { Button, IconMoon, IconSun } from 'ui' import { REFERENCES } from '~/components/Navigation/Navigation.constants' -import { useTheme } from 'common/Providers' import { getPageType } from '~/lib/helpers' @@ -96,7 +83,7 @@ const TopNavBarRef: FC = () => {
- + {/* - - - - - - - - - - + + + + + + + + + + {/* // Client Libs */} { { { { @@ -428,21 +396,18 @@ const SideNav = () => { diff --git a/apps/docs/components/Navigation/NavigationMenu/NavigationMenuGuideList.tsx b/apps/docs/components/Navigation/NavigationMenu/NavigationMenuGuideList.tsx index 5493e13a68a..80c5fe9f422 100644 --- a/apps/docs/components/Navigation/NavigationMenu/NavigationMenuGuideList.tsx +++ b/apps/docs/components/Navigation/NavigationMenu/NavigationMenuGuideList.tsx @@ -5,14 +5,14 @@ import Link from 'next/link' import { useRouter } from 'next/router' import React from 'react' import { IconChevronLeft } from '~/../../packages/ui' +import { useMenuLevelId } from '~/hooks/useMenuState' import * as NavItems from './NavigationMenu.constants' interface Props { - currentLevel: string id: string setMenuLevelId?: any } -const NavigationMenuGuideList: React.FC = ({ currentLevel, id, setMenuLevelId }) => { +const NavigationMenuGuideList: React.FC = ({ id, setMenuLevelId }) => { const router = useRouter() const { isDarkMode } = useTheme() @@ -36,12 +36,12 @@ const NavigationMenuGuideList: React.FC = ({ currentLevel, id, setMenuLev className={[ 'transition-all ml-8 duration-150 ease-out', // enabled - currentLevel === id && 'opacity-100 ml-0 delay-150', - currentLevel === 'home' && 'ml-12', + level === id && 'opacity-100 ml-0 delay-150', + level === 'home' && 'ml-12', // disabled - currentLevel !== 'home' && currentLevel !== id ? '-ml-8' : '', - currentLevel !== id ? 'opacity-0 invisible absolute' : '', + level !== 'home' && level !== id ? '-ml-8' : '', + level !== id ? 'opacity-0 invisible absolute' : '', ].join(' ')} >
    @@ -83,7 +83,7 @@ const NavigationMenuGuideList: React.FC = ({ currentLevel, id, setMenuLev : 'hover:text-brand-900 text-scale-1200', ].join(' ')} > - {menu.title ?? currentLevel} + {menu.title ?? level}
diff --git a/apps/docs/components/Navigation/NavigationMenu/NavigationMenuRefList.tsx b/apps/docs/components/Navigation/NavigationMenu/NavigationMenuRefList.tsx index b9cc5359eac..a40dd2688bd 100644 --- a/apps/docs/components/Navigation/NavigationMenu/NavigationMenuRefList.tsx +++ b/apps/docs/components/Navigation/NavigationMenu/NavigationMenuRefList.tsx @@ -11,7 +11,7 @@ import { useTheme } from 'common/Providers' // import apiCommonSections from '~/../../spec/common-client-libs-sections.json' import RevVersionDropdown from '~/components/RefVersionDropdown' -import { useMenuActiveRefId } from '~/hooks/useMenuState' +import { useMenuActiveRefId, useMenuLevelId } from '~/hooks/useMenuState' import { RefIdOptions, RefKeyOptions } from './NavigationMenu' const FunctionLink = ({ @@ -63,8 +63,6 @@ const Divider = () => { } interface INavigationMenuRefList { - currentLevel: string - id: RefIdOptions lib: RefKeyOptions commonSections: any[] // to do type up @@ -75,7 +73,6 @@ interface INavigationMenuRefList { } const NavigationMenuRefList: React.FC = ({ - currentLevel, id, lib, commonSections, @@ -136,17 +133,19 @@ const NavigationMenuRefList: React.FC = ({ // console.log(filterIds) // console.log(modifierIds) + const level = useMenuLevelId() + return (
From a52bc021c6cb1dd69db583b4219a9d49798c2a31 Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Tue, 13 Dec 2022 03:45:29 +0800 Subject: [PATCH 15/92] =?UTF-8?q?use=20rust=20compiler=20=F0=9F=99=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/docs/next.config.mjs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/docs/next.config.mjs b/apps/docs/next.config.mjs index 58bb4bde63b..9762c179622 100644 --- a/apps/docs/next.config.mjs +++ b/apps/docs/next.config.mjs @@ -50,6 +50,9 @@ const nextConfig = { dangerouslyAllowSVG: true, domains: ['avatars.githubusercontent.com', 'github.com', 'user-images.githubusercontent.com'], }, + experimental: { + mdxRs: true, + }, async headers() { return [ { From 2232dd1331225541f1738c9a9f286114bf98f811 Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Tue, 13 Dec 2022 04:06:47 +0800 Subject: [PATCH 16/92] try more --- .../NavigationMenu/NavigationMenu.tsx | 163 ++++---- .../NavigationMenuGuideList.tsx | 12 +- apps/docs/layouts/SiteRefLayout.tsx | 383 +++++++++--------- apps/docs/layouts/guides/archived.tsx | 114 ------ apps/docs/layouts/guides/current.tsx | 143 ------- apps/docs/layouts/guides/index.tsx | 144 ++++++- 6 files changed, 408 insertions(+), 551 deletions(-) delete mode 100644 apps/docs/layouts/guides/archived.tsx delete mode 100644 apps/docs/layouts/guides/current.tsx diff --git a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.tsx b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.tsx index d72d2a61158..6addb68bfd6 100644 --- a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.tsx +++ b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.tsx @@ -71,8 +71,6 @@ const SideNav = () => { const router = useRouter() const { isDarkMode } = useTheme() - const level = useMenuLevelId() - console.log() let version = '' @@ -85,84 +83,84 @@ const SideNav = () => { version = '_v0' } - function handleRouteChange(url: string) { - switch (url) { - case `/docs`: - menuState.setMenuLevelId('home') - break - case url.includes(`/docs/guides/getting-started`) && url: - menuState.setMenuLevelId('gettingstarted') - break - case url.includes(`/docs/guides/database`) && url: - menuState.setMenuLevelId('database') - break - case url.includes(`/docs/guides/auth`) && url: - menuState.setMenuLevelId('auth') - break - case url.includes(`/docs/guides/functions`) && url: - menuState.setMenuLevelId('functions') - break - case url.includes(`/docs/guides/realtime`) && url: - menuState.setMenuLevelId('realtime') - break - case url.includes(`/docs/guides/storage`) && url: - menuState.setMenuLevelId('storage') - break - case url.includes(`/docs/guides/platform`) || - (url.includes(`/docs/guides/hosting/platform`) && url): - menuState.setMenuLevelId('platform') - break - case url.includes(`/docs/guides/resources`) && url: - menuState.setMenuLevelId('resources') - break - case url.includes(`/docs/guides/integrations`) && url: - menuState.setMenuLevelId('integrations') - break - // JS v1 - case url.includes(`/docs/reference/javascript/v1`) && url: - menuState.setMenuLevelId('reference_javascript_v1') - break - // JS v2 (latest) - case url.includes(`/docs/reference/javascript`) && url: - menuState.setMenuLevelId('reference_javascript_v2') - break - // dart v0 - case url.includes(`/docs/reference/dart/v0`) && url: - menuState.setMenuLevelId('reference_dart_v0') - break - // dart v1 (latest) - case url.includes(`/docs/reference/dart`) && url: - menuState.setMenuLevelId('reference_dart_v1') - break - case url.includes(`/docs/reference/cli`) && url: - menuState.setMenuLevelId('reference_cli') - break - case url.includes(`/docs/reference/api`) && url: - menuState.setMenuLevelId('reference_api') - break - case url.includes(`/docs/reference/self-hosting-auth`) && url: - menuState.setMenuLevelId('reference_self_hosting_auth') - break - case url.includes(`/docs/reference/self-hosting-storage`) && url: - menuState.setMenuLevelId('reference_self_hosting_storage') - break - case url.includes(`/docs/reference/self-hosting-realtime`) && url: - menuState.setMenuLevelId('reference_self_hosting_realtime') - break + // function handleRouteChange(url: string) { + // switch (url) { + // case `/docs`: + // menuState.setMenuLevelId('home') + // break + // case url.includes(`/docs/guides/getting-started`) && url: + // menuState.setMenuLevelId('gettingstarted') + // break + // case url.includes(`/docs/guides/database`) && url: + // menuState.setMenuLevelId('database') + // break + // case url.includes(`/docs/guides/auth`) && url: + // menuState.setMenuLevelId('auth') + // break + // case url.includes(`/docs/guides/functions`) && url: + // menuState.setMenuLevelId('functions') + // break + // case url.includes(`/docs/guides/realtime`) && url: + // menuState.setMenuLevelId('realtime') + // break + // case url.includes(`/docs/guides/storage`) && url: + // menuState.setMenuLevelId('storage') + // break + // case url.includes(`/docs/guides/platform`) || + // (url.includes(`/docs/guides/hosting/platform`) && url): + // menuState.setMenuLevelId('platform') + // break + // case url.includes(`/docs/guides/resources`) && url: + // menuState.setMenuLevelId('resources') + // break + // case url.includes(`/docs/guides/integrations`) && url: + // menuState.setMenuLevelId('integrations') + // break + // // JS v1 + // case url.includes(`/docs/reference/javascript/v1`) && url: + // menuState.setMenuLevelId('reference_javascript_v1') + // break + // // JS v2 (latest) + // case url.includes(`/docs/reference/javascript`) && url: + // menuState.setMenuLevelId('reference_javascript_v2') + // break + // // dart v0 + // case url.includes(`/docs/reference/dart/v0`) && url: + // menuState.setMenuLevelId('reference_dart_v0') + // break + // // dart v1 (latest) + // case url.includes(`/docs/reference/dart`) && url: + // menuState.setMenuLevelId('reference_dart_v1') + // break + // case url.includes(`/docs/reference/cli`) && url: + // menuState.setMenuLevelId('reference_cli') + // break + // case url.includes(`/docs/reference/api`) && url: + // menuState.setMenuLevelId('reference_api') + // break + // case url.includes(`/docs/reference/self-hosting-auth`) && url: + // menuState.setMenuLevelId('reference_self_hosting_auth') + // break + // case url.includes(`/docs/reference/self-hosting-storage`) && url: + // menuState.setMenuLevelId('reference_self_hosting_storage') + // break + // case url.includes(`/docs/reference/self-hosting-realtime`) && url: + // menuState.setMenuLevelId('reference_self_hosting_realtime') + // break - default: - break - } - } + // default: + // break + // } + // } - useEffect(() => { - handleRouteChange(router.basePath + router.asPath) - // Listen for page changes after a navigation or when the query changes - router.events.on('routeChangeComplete', handleRouteChange) - return () => { - router.events.off('routeChangeComplete', handleRouteChange) - } - }, [router.events]) + // useEffect(() => { + // handleRouteChange(router.basePath + router.asPath) + // // Listen for page changes after a navigation or when the query changes + // router.events.on('routeChangeComplete', handleRouteChange) + // return () => { + // router.events.off('routeChangeComplete', handleRouteChange) + // } + // }, [router.events]) const home = [ [ @@ -275,9 +273,10 @@ const SideNav = () => {
    @@ -304,7 +303,7 @@ const SideNav = () => { ) } else { return ( - +
  • = ({ id, setMenuLevelId }) => { ].join(' ')} >
      - + = ({ id, setMenuLevelId }) => { - +
      = ({ id, setMenuLevelId }) => { const LinkContainer = (props) => { return ( - + {props.children} ) @@ -147,7 +147,7 @@ const NavigationMenuGuideList: React.FC = ({ id, setMenuLevelId }) => { {subItem.items.map((subSubItem, subSubItemIndex) => { return (
    • - + = ({ id, setMenuLevelId }) => { ) : ( <>
    • - + = ({ id, setMenuLevelId }) => { return (
    • - + {x.icon && } {x.name} diff --git a/apps/docs/layouts/SiteRefLayout.tsx b/apps/docs/layouts/SiteRefLayout.tsx index 783865fcf1b..2fc18390eb6 100644 --- a/apps/docs/layouts/SiteRefLayout.tsx +++ b/apps/docs/layouts/SiteRefLayout.tsx @@ -6,7 +6,6 @@ import NavigationMenu from '~/components/Navigation/NavigationMenu/NavigationMen import TopNavBarRef from '~/components/Navigation/NavigationMenu/TopNavBarRef' import FooterHelpCallout from '~/components/FooterHelpCallout' -import { NavigationMenuContextProvider } from '~/components/Navigation/NavigationMenu/NavigationMenu.Context' import { menuState } from '~/hooks/useMenuState' @@ -97,218 +96,214 @@ const SiteRefLayout = ({ children }) => { } return ( - {}}> -
      - {/* + {/* */} -
      +
      +
      - +
      +
      + {/* */} +
      + +
      +
      +
      +
      + +
      + +
      + + {mobileMenuOpen + ? 'Close' + : menuLevel + ? levelsData[menuLevel].name + : levelsData['home'].name} + +
      +
      + +
      +
      +
      +
      + {children} + +
      + +
      +
      +
      + Supabase 2022 + — + + Contributing + + + Changelog + + + + Author Styleguide + + + Open Source + + + Supasquad + +
      +
      + + +
      +
      +
    • + ) } diff --git a/apps/docs/layouts/guides/archived.tsx b/apps/docs/layouts/guides/archived.tsx deleted file mode 100644 index 7ec09aaebfc..00000000000 --- a/apps/docs/layouts/guides/archived.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import { MDXProvider } from '@mdx-js/react' -import { NextSeo } from 'next-seo' -import { useRouter } from 'next/router' -import { FC, useEffect, useRef, useState } from 'react' -import components from '~/components' -import Footer from '~/components/Footer' -import GuidesTableOfContents from '~/components/GuidesTableOfContents' -import NavBar from '~/components/Navigation/NavBar' -import { menuItems } from '~/components/Navigation/Navigation.constants' -import SideBar from '~/components/Navigation/SideBar' -import { getPageType } from '~/lib/helpers' - -interface Props { - meta: { title: string; description?: string; hide_table_of_contents?: boolean } - children: any - toc?: any - currentPage?: string -} - -const Layout: FC = ({ meta, children }) => { - const { asPath } = useRouter() - const page = getPageType(asPath) - - useEffect(() => { - const key = localStorage.getItem('supabaseDarkMode') - if (!key) { - // Default to dark mode if no preference config - document.documentElement.className = 'dark' - } else { - document.documentElement.className = key === 'true' ? 'dark' : '' - } - }, []) - - const articleRef = useRef() - const [tocList, setTocList] = useState([]) - - useEffect(() => { - const articleEl = articleRef.current as HTMLElement - - if (!articleRef.current) return - const headings = Array.from(articleEl.querySelectorAll('h2, h3')) - const newHeadings = headings - .filter((heading) => heading.id) - .map((heading) => { - const text = heading.textContent.replace('#', '') - const link = heading.querySelector('a').getAttribute('href') - const level = heading.tagName === 'H2' ? 2 : 3 - return { text, link, level } - }) - setTocList(newHeadings) - }, []) - - const hasTableOfContents = tocList.length > 0 - - return ( - <> - - -
      - -
      - -
      -
      -
      - {meta?.title &&

      {meta.title}

      } - {children} -
      -
      - {hasTableOfContents && !meta?.hide_table_of_contents && ( - - )} -
      -
      -
      -
      - - ) -} - -export default Layout diff --git a/apps/docs/layouts/guides/current.tsx b/apps/docs/layouts/guides/current.tsx deleted file mode 100644 index 3d583c453f9..00000000000 --- a/apps/docs/layouts/guides/current.tsx +++ /dev/null @@ -1,143 +0,0 @@ -import { MDXProvider } from '@mdx-js/react' -import { NextSeo } from 'next-seo' -import { useRouter } from 'next/router' -import { FC, useEffect, useRef, useState } from 'react' -import components from '~/components' -import { highlightSelectedTocItem } from '~/components/CustomHTMLElements/CustomHTMLElements.utils' -import GuidesTableOfContents from '~/components/GuidesTableOfContents' -import useHash from '~/hooks/useHash' -import { getPageType } from '~/lib/helpers' - -interface Props { - meta: { - title: string - description?: string - hide_table_of_contents?: boolean - breadcrumb?: string - subtitle?: string - } - children: any - toc?: any - currentPage?: string - hideToc?: boolean -} - -const Layout: FC = (props) => { - const [hash] = useHash() - const [active, setActive] = useState(false) - - const articleRef = useRef() - const [tocList, setTocList] = useState([]) - - const { asPath } = useRouter() - const page = getPageType(asPath) - - useEffect(() => { - const key = localStorage.getItem('supabaseDarkMode') - if (!key) { - // Default to dark mode if no preference config - document.documentElement.className = 'dark' - } else { - document.documentElement.className = key === 'true' ? 'dark' : '' - } - }, []) - - useEffect(() => { - if (hash && tocList.length > 0) { - highlightSelectedTocItem(hash as string) - } - }, [hash, JSON.stringify(tocList)]) - - useEffect(() => { - const articleEl = articleRef.current as HTMLElement - - if (!articleRef.current) return - const headings = Array.from(articleEl.querySelectorAll('h2, h3')) - const newHeadings = headings - .filter((heading) => heading.id) - .map((heading) => { - const text = heading.textContent.replace('#', '') - const link = heading.querySelector('a').getAttribute('href') - const level = heading.tagName === 'H2' ? 2 : 3 - return { text, link, level } - }) - setTocList(newHeadings) - }, []) - - useEffect(() => { - setTimeout(function () { - setActive(true) - }, 150) - }, []) - - const hasTableOfContents = tocList.length > 0 - - return ( - <> - - -
      -
      - {props.meta.breadcrumb && ( -

      {props.meta.breadcrumb}

      - )} -
      -

      {props.meta.title}

      - {props.meta.subtitle && ( -

      {props.meta.subtitle}

      - )} -
      - {props.children} -
      -
      - {!props.hideToc && hasTableOfContents && !props.meta?.hide_table_of_contents && ( - - )} -
      - - ) -} - -export default Layout diff --git a/apps/docs/layouts/guides/index.tsx b/apps/docs/layouts/guides/index.tsx index 59a33376068..99a70d0cd34 100644 --- a/apps/docs/layouts/guides/index.tsx +++ b/apps/docs/layouts/guides/index.tsx @@ -1,23 +1,143 @@ -import NewLayout from './current' -import OldLayout from './archived' -import { FC } from 'react' +import { MDXProvider } from '@mdx-js/react' +import { NextSeo } from 'next-seo' +import { useRouter } from 'next/router' +import { FC, useEffect, useRef, useState } from 'react' +import components from '~/components' +import { highlightSelectedTocItem } from '~/components/CustomHTMLElements/CustomHTMLElements.utils' +import GuidesTableOfContents from '~/components/GuidesTableOfContents' +import useHash from '~/hooks/useHash' +import { getPageType } from '~/lib/helpers' interface Props { - meta: { title: string; description?: string; hide_table_of_contents?: boolean; video?: string } + meta: { + title: string + description?: string + hide_table_of_contents?: boolean + breadcrumb?: string + subtitle?: string + } children: any toc?: any currentPage?: string + hideToc?: boolean } const Layout: FC = (props) => { - switch (process.env.NEXT_PUBLIC_NEW_DOCS) { - case 'true': - return NewLayout(props) - break - default: - return OldLayout(props) - break - } + const [hash] = useHash() + const [active, setActive] = useState(false) + + const articleRef = useRef() + const [tocList, setTocList] = useState([]) + + const { asPath } = useRouter() + const page = getPageType(asPath) + + useEffect(() => { + const key = localStorage.getItem('supabaseDarkMode') + if (!key) { + // Default to dark mode if no preference config + document.documentElement.className = 'dark' + } else { + document.documentElement.className = key === 'true' ? 'dark' : '' + } + }, []) + + useEffect(() => { + if (hash && tocList.length > 0) { + highlightSelectedTocItem(hash as string) + } + }, [hash, JSON.stringify(tocList)]) + + useEffect(() => { + const articleEl = articleRef.current as HTMLElement + + if (!articleRef.current) return + const headings = Array.from(articleEl.querySelectorAll('h2, h3')) + const newHeadings = headings + .filter((heading) => heading.id) + .map((heading) => { + const text = heading.textContent.replace('#', '') + const link = heading.querySelector('a').getAttribute('href') + const level = heading.tagName === 'H2' ? 2 : 3 + return { text, link, level } + }) + setTocList(newHeadings) + }, []) + + useEffect(() => { + setTimeout(function () { + setActive(true) + }, 150) + }, []) + + const hasTableOfContents = tocList.length > 0 + + return ( + <> + + +
      +
      + {props.meta.breadcrumb && ( +

      {props.meta.breadcrumb}

      + )} +
      +

      {props.meta.title}

      + {props.meta.subtitle && ( +

      {props.meta.subtitle}

      + )} +
      + {props.children} +
      +
      + {!props.hideToc && hasTableOfContents && !props.meta?.hide_table_of_contents && ( + + )} +
      + + ) } export default Layout From 061e7f295f5f7c91077823b475cc598edff42e51 Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Tue, 13 Dec 2022 04:24:47 +0800 Subject: [PATCH 17/92] =?UTF-8?q?SPEED=20INCREASE=20=F0=9F=8F=8E=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/Navigation/NavigationMenu/NavigationMenu.tsx | 2 ++ apps/docs/layouts/guides/index.tsx | 4 +--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.tsx b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.tsx index 6addb68bfd6..3c24db52efa 100644 --- a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.tsx +++ b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.tsx @@ -44,6 +44,8 @@ function generateAllowedClientLibKeys(sections, spec) { return func.id }) + console.log('final', final) + return final } diff --git a/apps/docs/layouts/guides/index.tsx b/apps/docs/layouts/guides/index.tsx index 99a70d0cd34..48d9d2e9144 100644 --- a/apps/docs/layouts/guides/index.tsx +++ b/apps/docs/layouts/guides/index.tsx @@ -65,9 +65,7 @@ const Layout: FC = (props) => { }, []) useEffect(() => { - setTimeout(function () { - setActive(true) - }, 150) + setActive(true) }, []) const hasTableOfContents = tocList.length > 0 From 17c11d2bfb1704791316cf1019da2ef74a85cefd Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Tue, 13 Dec 2022 04:48:08 +0800 Subject: [PATCH 18/92] add some things back in --- .../NavigationMenu/NavigationMenu.tsx | 167 +++++++++--------- .../NavigationMenu/TopNavBarRef.tsx | 21 ++- apps/docs/layouts/guides/index.tsx | 8 +- apps/docs/pages/_app.tsx | 64 +++---- 4 files changed, 138 insertions(+), 122 deletions(-) diff --git a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.tsx b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.tsx index 3c24db52efa..3f370838df0 100644 --- a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.tsx +++ b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.tsx @@ -44,8 +44,6 @@ function generateAllowedClientLibKeys(sections, spec) { return func.id }) - console.log('final', final) - return final } @@ -73,6 +71,8 @@ const SideNav = () => { const router = useRouter() const { isDarkMode } = useTheme() + // const level = useMenuLevelId() + console.log() let version = '' @@ -85,84 +85,84 @@ const SideNav = () => { version = '_v0' } - // function handleRouteChange(url: string) { - // switch (url) { - // case `/docs`: - // menuState.setMenuLevelId('home') - // break - // case url.includes(`/docs/guides/getting-started`) && url: - // menuState.setMenuLevelId('gettingstarted') - // break - // case url.includes(`/docs/guides/database`) && url: - // menuState.setMenuLevelId('database') - // break - // case url.includes(`/docs/guides/auth`) && url: - // menuState.setMenuLevelId('auth') - // break - // case url.includes(`/docs/guides/functions`) && url: - // menuState.setMenuLevelId('functions') - // break - // case url.includes(`/docs/guides/realtime`) && url: - // menuState.setMenuLevelId('realtime') - // break - // case url.includes(`/docs/guides/storage`) && url: - // menuState.setMenuLevelId('storage') - // break - // case url.includes(`/docs/guides/platform`) || - // (url.includes(`/docs/guides/hosting/platform`) && url): - // menuState.setMenuLevelId('platform') - // break - // case url.includes(`/docs/guides/resources`) && url: - // menuState.setMenuLevelId('resources') - // break - // case url.includes(`/docs/guides/integrations`) && url: - // menuState.setMenuLevelId('integrations') - // break - // // JS v1 - // case url.includes(`/docs/reference/javascript/v1`) && url: - // menuState.setMenuLevelId('reference_javascript_v1') - // break - // // JS v2 (latest) - // case url.includes(`/docs/reference/javascript`) && url: - // menuState.setMenuLevelId('reference_javascript_v2') - // break - // // dart v0 - // case url.includes(`/docs/reference/dart/v0`) && url: - // menuState.setMenuLevelId('reference_dart_v0') - // break - // // dart v1 (latest) - // case url.includes(`/docs/reference/dart`) && url: - // menuState.setMenuLevelId('reference_dart_v1') - // break - // case url.includes(`/docs/reference/cli`) && url: - // menuState.setMenuLevelId('reference_cli') - // break - // case url.includes(`/docs/reference/api`) && url: - // menuState.setMenuLevelId('reference_api') - // break - // case url.includes(`/docs/reference/self-hosting-auth`) && url: - // menuState.setMenuLevelId('reference_self_hosting_auth') - // break - // case url.includes(`/docs/reference/self-hosting-storage`) && url: - // menuState.setMenuLevelId('reference_self_hosting_storage') - // break - // case url.includes(`/docs/reference/self-hosting-realtime`) && url: - // menuState.setMenuLevelId('reference_self_hosting_realtime') - // break + function handleRouteChange(url: string) { + switch (url) { + case `/docs`: + menuState.setMenuLevelId('home') + break + case url.includes(`/docs/guides/getting-started`) && url: + menuState.setMenuLevelId('gettingstarted') + break + case url.includes(`/docs/guides/database`) && url: + menuState.setMenuLevelId('database') + break + case url.includes(`/docs/guides/auth`) && url: + menuState.setMenuLevelId('auth') + break + case url.includes(`/docs/guides/functions`) && url: + menuState.setMenuLevelId('functions') + break + case url.includes(`/docs/guides/realtime`) && url: + menuState.setMenuLevelId('realtime') + break + case url.includes(`/docs/guides/storage`) && url: + menuState.setMenuLevelId('storage') + break + case url.includes(`/docs/guides/platform`) || + (url.includes(`/docs/guides/hosting/platform`) && url): + menuState.setMenuLevelId('platform') + break + case url.includes(`/docs/guides/resources`) && url: + menuState.setMenuLevelId('resources') + break + case url.includes(`/docs/guides/integrations`) && url: + menuState.setMenuLevelId('integrations') + break + // JS v1 + case url.includes(`/docs/reference/javascript/v1`) && url: + menuState.setMenuLevelId('reference_javascript_v1') + break + // JS v2 (latest) + case url.includes(`/docs/reference/javascript`) && url: + menuState.setMenuLevelId('reference_javascript_v2') + break + // dart v0 + case url.includes(`/docs/reference/dart/v0`) && url: + menuState.setMenuLevelId('reference_dart_v0') + break + // dart v1 (latest) + case url.includes(`/docs/reference/dart`) && url: + menuState.setMenuLevelId('reference_dart_v1') + break + case url.includes(`/docs/reference/cli`) && url: + menuState.setMenuLevelId('reference_cli') + break + case url.includes(`/docs/reference/api`) && url: + menuState.setMenuLevelId('reference_api') + break + case url.includes(`/docs/reference/self-hosting-auth`) && url: + menuState.setMenuLevelId('reference_self_hosting_auth') + break + case url.includes(`/docs/reference/self-hosting-storage`) && url: + menuState.setMenuLevelId('reference_self_hosting_storage') + break + case url.includes(`/docs/reference/self-hosting-realtime`) && url: + menuState.setMenuLevelId('reference_self_hosting_realtime') + break - // default: - // break - // } - // } + default: + break + } + } - // useEffect(() => { - // handleRouteChange(router.basePath + router.asPath) - // // Listen for page changes after a navigation or when the query changes - // router.events.on('routeChangeComplete', handleRouteChange) - // return () => { - // router.events.off('routeChangeComplete', handleRouteChange) - // } - // }, [router.events]) + useEffect(() => { + handleRouteChange(router.basePath + router.asPath) + // Listen for page changes after a navigation or when the query changes + router.events.on('routeChangeComplete', handleRouteChange) + return () => { + router.events.off('routeChangeComplete', handleRouteChange) + } + }, [router.events]) const home = [ [ @@ -269,16 +269,17 @@ const SideNav = () => { ], ] + const level = useMenuLevelId() + return (
      {/* // main menu */}
        @@ -348,7 +349,7 @@ const SideNav = () => { - + {/* // Client Libs */} diff --git a/apps/docs/components/Navigation/NavigationMenu/TopNavBarRef.tsx b/apps/docs/components/Navigation/NavigationMenu/TopNavBarRef.tsx index 650a3560734..6fcae17712d 100644 --- a/apps/docs/components/Navigation/NavigationMenu/TopNavBarRef.tsx +++ b/apps/docs/components/Navigation/NavigationMenu/TopNavBarRef.tsx @@ -1,10 +1,23 @@ -import { useTheme } from 'common/Providers' import Image from 'next/image' import Link from 'next/link' import { useRouter } from 'next/router' import { FC, useEffect, useState } from 'react' -import { Button, IconMoon, IconSun } from 'ui' +import { + Badge, + Button, + Dropdown, + IconCommand, + IconMenu, + IconMessageSquare, + IconMoon, + IconSearch, + IconSun, + Input, + Listbox, +} from 'ui' +import { SearchButton } from '~/components/DocSearch' import { REFERENCES } from '~/components/Navigation/Navigation.constants' +import { useTheme } from 'common/Providers' import { getPageType } from '~/lib/helpers' @@ -83,7 +96,7 @@ const TopNavBarRef: FC = () => {
      - {/* + +
      + +
      +
      +
      +
      + {children} + +
      + +
      +
      +
      + Supabase 2022 + — + + Contributing + + + Changelog + + + + Author Styleguide + + + Open Source + + + Supasquad + +
      +
      + + +
+
+
+ ) } -export default Layout +export default SiteRefLayout diff --git a/apps/docs/layouts/SiteRefLayout.tsx b/apps/docs/layouts/SiteRefLayout.tsx index 2fc18390eb6..c4f01f01efd 100644 --- a/apps/docs/layouts/SiteRefLayout.tsx +++ b/apps/docs/layouts/SiteRefLayout.tsx @@ -8,10 +8,21 @@ import TopNavBarRef from '~/components/Navigation/NavigationMenu/TopNavBarRef' import FooterHelpCallout from '~/components/FooterHelpCallout' import { menuState } from '~/hooks/useMenuState' +import { useEffect } from 'react' const SiteRefLayout = ({ children }) => { const { isDarkMode } = useTheme() + useEffect(() => { + const key = localStorage.getItem('supabaseDarkMode') + if (!key) { + // Default to dark mode if no preference config + document.documentElement.className = 'dark' + } else { + document.documentElement.className = key === 'true' ? 'dark' : '' + } + }, []) + const menuLevel = 'home' // useMenuLevelId() const mobileMenuOpen = false diff --git a/apps/docs/layouts/guides/index.tsx b/apps/docs/layouts/guides/index.tsx index e648ff68216..365bcdce23c 100644 --- a/apps/docs/layouts/guides/index.tsx +++ b/apps/docs/layouts/guides/index.tsx @@ -24,7 +24,6 @@ interface Props { const Layout: FC = (props) => { const [hash] = useHash() - const [active, setActive] = useState(false) const articleRef = useRef() const [tocList, setTocList] = useState([]) @@ -32,16 +31,6 @@ const Layout: FC = (props) => { const { asPath } = useRouter() const page = getPageType(asPath) - useEffect(() => { - const key = localStorage.getItem('supabaseDarkMode') - if (!key) { - // Default to dark mode if no preference config - document.documentElement.className = 'dark' - } else { - document.documentElement.className = key === 'true' ? 'dark' : '' - } - }, []) - useEffect(() => { if (hash && tocList.length > 0) { highlightSelectedTocItem(hash as string) @@ -64,10 +53,6 @@ const Layout: FC = (props) => { setTocList(newHeadings) }, []) - useEffect(() => { - setActive(true) - }, []) - const hasTableOfContents = tocList.length > 0 return ( @@ -94,7 +79,6 @@ const Layout: FC = (props) => { !props.hideToc ? 'col-span-12 md:col-span-9' : 'col-span-12', 'transition-all ease-out', 'duration-100', - active ? 'opacity-100' : 'opacity-0', ].join(' ')} > {props.meta.breadcrumb && ( @@ -122,7 +106,6 @@ const Layout: FC = (props) => { 'thin-scrollbar overflow-y-auto sticky hidden md:block md:col-span-3 px-2', 'transition-all ease-out', 'duration-100', - active ? 'opacity-100' : 'opacity-0', ].join(' ')} >
diff --git a/apps/docs/public/sitemap.xml b/apps/docs/public/sitemap.xml index 6271b66956a..3ffb9a899a7 100644 --- a/apps/docs/public/sitemap.xml +++ b/apps/docs/public/sitemap.xml @@ -60,6 +60,24 @@ 0.5 + + https://supabase.com/docs/handbook/contributing + weekly + 0.5 + + + + https://supabase.com/docs/handbook/introduction + weekly + 0.5 + + + + https://supabase.com/docs/handbook/supasquad + weekly + 0.5 + + https://supabase.com/docs/guides/api weekly @@ -108,6 +126,12 @@ 0.5 + + https://supabase.com/docs/guides/platform + weekly + 0.5 + + https://supabase.com/docs/guides/realtime weekly @@ -217,19 +241,7 @@ - https://supabase.com/docs/handbook/contributing - weekly - 0.5 - - - - https://supabase.com/docs/handbook/introduction - weekly - 0.5 - - - - https://supabase.com/docs/handbook/supasquad + https://supabase.com/docs/reference/index weekly 0.5 @@ -246,126 +258,48 @@ 0.5 - - https://supabase.com/docs/reference/index - weekly - 0.5 - - https://supabase.com/docs/tutorials/nextjs weekly 0.5 + + https://supabase.com/docs/learn/auth-deep-dive/auth-deep-dive-jwts + weekly + 0.5 + + + + https://supabase.com/docs/learn/auth-deep-dive/auth-google-oauth + weekly + 0.5 + + + + https://supabase.com/docs/learn/auth-deep-dive/auth-gotrue + weekly + 0.5 + + + + https://supabase.com/docs/learn/auth-deep-dive/auth-policies + weekly + 0.5 + + + + https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security + weekly + 0.5 + + https://supabase.com/docs/guides/api/generating-types weekly 0.5 - - https://supabase.com/docs/guides/cli/local-development - weekly - 0.5 - - - - https://supabase.com/docs/guides/cli/managing-environments - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/arrays - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/connecting-to-postgres - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/extensions - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/full-text-search - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/functions - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/json - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/managing-passwords - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/managing-timezones - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/overview - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/replication - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/sql-to-api - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/tables - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/testing - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/timeouts - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/webhooks - weekly - 0.5 - - https://supabase.com/docs/guides/auth/auth-apple weekly @@ -552,6 +486,18 @@ 0.5 + + https://supabase.com/docs/guides/cli/local-development + weekly + 0.5 + + + + https://supabase.com/docs/guides/cli/managing-environments + weekly + 0.5 + + https://supabase.com/docs/guides/functions/auth weekly @@ -576,6 +522,18 @@ 0.5 + + https://supabase.com/docs/guides/getting-started/architecture + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/features + weekly + 0.5 + + https://supabase.com/docs/guides/hosting/docker weekly @@ -589,19 +547,91 @@ - https://supabase.com/docs/guides/platform + https://supabase.com/docs/guides/database/arrays weekly 0.5 - https://supabase.com/docs/guides/getting-started/architecture + https://supabase.com/docs/guides/database/connecting-to-postgres weekly 0.5 - https://supabase.com/docs/guides/getting-started/features + https://supabase.com/docs/guides/database/extensions + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/full-text-search + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/functions + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/json + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/managing-passwords + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/managing-timezones + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/overview + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/replication + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/sql-to-api + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/tables + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/testing + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/timeouts + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/webhooks weekly 0.5 @@ -744,6 +774,48 @@ 0.5 + + https://supabase.com/docs/guides/realtime/postgres-changes + weekly + 0.5 + + + + https://supabase.com/docs/guides/realtime/quickstart + weekly + 0.5 + + + + https://supabase.com/docs/guides/realtime/rate-limits + weekly + 0.5 + + + + https://supabase.com/docs/guides/storage/access-control + weekly + 0.5 + + + + https://supabase.com/docs/guides/storage/cdn + weekly + 0.5 + + + + https://supabase.com/docs/guides/storage/quickstart + weekly + 0.5 + + + + https://supabase.com/docs/guides/storage/storage-sample + weekly + 0.5 + + https://supabase.com/docs/guides/migrations/firebase-auth weekly @@ -853,79 +925,139 @@ - https://supabase.com/docs/guides/realtime/postgres-changes + https://supabase.com/docs/guides/auth/auth-helpers/auth-ui weekly 0.5 - https://supabase.com/docs/guides/realtime/quickstart + https://supabase.com/docs/guides/auth/auth-helpers/nextjs-server-components weekly 0.5 - https://supabase.com/docs/guides/realtime/rate-limits + https://supabase.com/docs/guides/auth/auth-helpers/nextjs weekly 0.5 - https://supabase.com/docs/guides/storage/access-control + https://supabase.com/docs/guides/auth/auth-helpers/remix weekly 0.5 - https://supabase.com/docs/guides/storage/cdn + https://supabase.com/docs/guides/auth/auth-helpers/sveltekit weekly 0.5 - https://supabase.com/docs/guides/storage/quickstart + https://supabase.com/docs/guides/functions/examples/og-image weekly 0.5 - https://supabase.com/docs/guides/storage/storage-sample + https://supabase.com/docs/guides/getting-started/quickstarts/nextjs weekly 0.5 - https://supabase.com/docs/learn/auth-deep-dive/auth-deep-dive-jwts + https://supabase.com/docs/guides/getting-started/quickstarts/nuxtjs weekly 0.5 - https://supabase.com/docs/learn/auth-deep-dive/auth-google-oauth + https://supabase.com/docs/guides/getting-started/quickstarts/reactjs weekly 0.5 - https://supabase.com/docs/learn/auth-deep-dive/auth-gotrue + https://supabase.com/docs/guides/getting-started/tutorials/with-angular weekly 0.5 - https://supabase.com/docs/learn/auth-deep-dive/auth-policies + https://supabase.com/docs/guides/getting-started/tutorials/with-expo weekly 0.5 - https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security + https://supabase.com/docs/guides/getting-started/tutorials/with-flutter weekly 0.5 - https://supabase.com/docs/new/auth/auth-login + https://supabase.com/docs/guides/getting-started/tutorials/with-ionic-angular + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-ionic-react + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-ionic-vue + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-nextjs + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-nuxt-3 + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-react + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-redwoodjs + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-solidjs + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-svelte + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-sveltekit + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-vue-3 weekly 0.5 @@ -966,6 +1098,78 @@ 0.5 + + https://supabase.com/docs/new/auth/auth-login + weekly + 0.5 + + + + https://supabase.com/docs/guides/resources/migrating-to-supabase/firebase-auth + weekly + 0.5 + + + + https://supabase.com/docs/guides/resources/migrating-to-supabase/firebase-data + weekly + 0.5 + + + + https://supabase.com/docs/guides/resources/migrating-to-supabase/firebase-storage + weekly + 0.5 + + + + https://supabase.com/docs/guides/resources/migrating-to-supabase/heroku + weekly + 0.5 + + + + https://supabase.com/docs/guides/resources/self-hosting/docker + weekly + 0.5 + + + + https://supabase.com/docs/guides/auth/passwordless-login/email-otp-magic-link + weekly + 0.5 + + + + https://supabase.com/docs/guides/auth/passwordless-login/phone-sms-otp-messagebird + weekly + 0.5 + + + + https://supabase.com/docs/guides/auth/passwordless-login/phone-sms-otp-twilio + weekly + 0.5 + + + + https://supabase.com/docs/guides/auth/passwordless-login/phone-sms-otp-vonage + weekly + 0.5 + + + + https://supabase.com/docs/guides/resources/supabase-cli/local-development + weekly + 0.5 + + + + https://supabase.com/docs/guides/resources/supabase-cli/managing-enviroments + weekly + 0.5 + + https://supabase.com/docs/guides/auth/social-login/auth-apple weekly @@ -1074,210 +1278,6 @@ 0.5 - - https://supabase.com/docs/guides/auth/passwordless-login/email-otp-magic-link - weekly - 0.5 - - - - https://supabase.com/docs/guides/auth/passwordless-login/phone-sms-otp-messagebird - weekly - 0.5 - - - - https://supabase.com/docs/guides/auth/passwordless-login/phone-sms-otp-twilio - weekly - 0.5 - - - - https://supabase.com/docs/guides/auth/passwordless-login/phone-sms-otp-vonage - weekly - 0.5 - - - - https://supabase.com/docs/guides/auth/auth-helpers/auth-ui - weekly - 0.5 - - - - https://supabase.com/docs/guides/auth/auth-helpers/nextjs-server-components - weekly - 0.5 - - - - https://supabase.com/docs/guides/auth/auth-helpers/nextjs - weekly - 0.5 - - - - https://supabase.com/docs/guides/auth/auth-helpers/remix - weekly - 0.5 - - - - https://supabase.com/docs/guides/auth/auth-helpers/sveltekit - weekly - 0.5 - - - - https://supabase.com/docs/guides/functions/examples/og-image - weekly - 0.5 - - - - https://supabase.com/docs/guides/resources/migrating-to-supabase/firebase-auth - weekly - 0.5 - - - - https://supabase.com/docs/guides/resources/migrating-to-supabase/firebase-data - weekly - 0.5 - - - - https://supabase.com/docs/guides/resources/migrating-to-supabase/firebase-storage - weekly - 0.5 - - - - https://supabase.com/docs/guides/resources/migrating-to-supabase/heroku - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/quickstarts/nextjs - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/quickstarts/nuxtjs - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/quickstarts/reactjs - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-angular - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-expo - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-flutter - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-ionic-angular - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-ionic-react - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-ionic-vue - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-nextjs - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-nuxt-3 - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-react - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-redwoodjs - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-solidjs - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-svelte - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-sveltekit - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-vue-3 - weekly - 0.5 - - - - https://supabase.com/docs/guides/resources/supabase-cli/local-development - weekly - 0.5 - - - - https://supabase.com/docs/guides/resources/supabase-cli/managing-enviroments - weekly - 0.5 - - - - https://supabase.com/docs/guides/resources/self-hosting/docker - weekly - 0.5 - - https://supabase.com/docs/reference/api weekly @@ -1392,6 +1392,18 @@ 0.5 + + https://supabase.com/docs/reference/javascript/auth-admin-mfa-deletefactor + weekly + 0.5 + + + + https://supabase.com/docs/reference/javascript/auth-admin-mfa-listfactors + weekly + 0.5 + + https://supabase.com/docs/reference/javascript/auth-admin-resetpasswordforemail weekly @@ -1404,6 +1416,12 @@ 0.5 + + https://supabase.com/docs/reference/javascript/auth-api + weekly + 0.5 + + https://supabase.com/docs/reference/javascript/auth-getsession weekly @@ -1416,6 +1434,44 @@ 0.5 + + https://supabase.com/docs/reference/javascript/auth-mfa-challenge + weekly + 0.5 + + + + https://supabase.com/docs/reference/javascript/auth-mfa-challengeandverify + weekly + 0.5 + + + + https://supabase.com/docs/reference/javascript/auth-mfa-enroll + weekly + 0.5 + + + + https://supabase.com/docs/reference/javascript/auth-mfa-getauthenticatorassurancelevel + weekly + 0.5 + + + + https://supabase.com/docs/reference/javascript/auth-mfa-unenroll + weekly + 0.5 + + + + https://supabase.com/docs/reference/javascript/auth-mfa-verify + weekly + 0.5 + + https://supabase.com/docs/reference/javascript/auth-onauthstatechange weekly diff --git a/apps/www/public/rss.xml b/apps/www/public/rss.xml index 122ff39e516..5b059e21a4c 100644 --- a/apps/www/public/rss.xml +++ b/apps/www/public/rss.xml @@ -11,7 +11,7 @@ https://supabase.com/blog/new-supabase-docs-built-with-nextjs New Supabase Docs, built with Next.js https://supabase.com/blog/new-supabase-docs-built-with-nextjs - We've redesign our Docs and migrated to Next.js + We've redesignd our Docs and migrated to Next.js Sun, 11 Dec 2022 16:04:00 +0000 diff --git a/apps/www/public/sitemap_www.xml b/apps/www/public/sitemap_www.xml index ee99ac2420f..ad197067af9 100644 --- a/apps/www/public/sitemap_www.xml +++ b/apps/www/public/sitemap_www.xml @@ -66,18 +66,6 @@ 0.5 - - https://supabase.com/database - weekly - 0.5 - - - - https://supabase.com/edge-functions - weekly - 0.5 - - https://supabase.com/contact/enterprise weekly @@ -91,7 +79,13 @@ - https://supabase.com/launch-week/ticket-image + https://supabase.com/database + weekly + 0.5 + + + + https://supabase.com/edge-functions weekly 0.5 @@ -108,6 +102,12 @@ 0.5 + + https://supabase.com/launch-week/ticket-image + weekly + 0.5 + + https://supabase.com/nextjs weekly From c7b7e457c26094d419663a03c4b3d109dee60ebb Mon Sep 17 00:00:00 2001 From: Inian Date: Tue, 13 Dec 2022 18:44:56 +0800 Subject: [PATCH 36/92] more storage doc updates --- apps/docs/pages/features.mdx | 16 +++++++++----- apps/docs/pages/guides/storage/cdn.mdx | 28 ++++++++++++++---------- apps/docs/public/img/cdn-cache-hit.png | Bin 0 -> 102946 bytes apps/docs/public/img/cdn-cache-miss.png | Bin 0 -> 122078 bytes 4 files changed, 27 insertions(+), 17 deletions(-) create mode 100644 apps/docs/public/img/cdn-cache-hit.png create mode 100644 apps/docs/public/img/cdn-cache-miss.png diff --git a/apps/docs/pages/features.mdx b/apps/docs/pages/features.mdx index 22a1dfd567a..be70ad3e47f 100755 --- a/apps/docs/pages/features.mdx +++ b/apps/docs/pages/features.mdx @@ -109,16 +109,20 @@ Unofficial libraries [supported by the community](https://github.com/supabase-co
-## File Storage +## Storage -### Large File storage +### File storage -Supabase Storage makes it simple to store and serve large files. [Docs](/docs/guides/storage). +Supabase Storage makes it simple to store and serve files. [Docs](/docs/guides/storage). ### Storage CDN Cache large files using the Supabase CDN. [Docs](/docs/guides/storage-cdn). +### Image Transformations + +Transform images on the fly. [Docs](/docs/guides/storage/image-resizing). +
## Edge Functions @@ -159,9 +163,11 @@ Both Postgres and the Supabase Platform are production-ready. Some tools we offe | Realtime | Postgres Changes | `GA` | | Realtime | Broadcast | `beta` | | Realtime | Presence | `beta` | -| Storage | Backend (S3) | `GA` | -| Storage | API | `beta` | +| Storage | | `beta` | +| Storage | S3 Backend | `GA` | | Storage | CDN | `beta` | +| Storage | Smart CDN | `alpha` | +| Storage | Image Transformations | `alpha` | | Edge Functions | | `beta` | | Auth | OAuth Providers | `beta` | | Auth | Passwordless | `beta` | diff --git a/apps/docs/pages/guides/storage/cdn.mdx b/apps/docs/pages/guides/storage/cdn.mdx index e54a8d3df4e..03bb1989db9 100644 --- a/apps/docs/pages/guides/storage/cdn.mdx +++ b/apps/docs/pages/guides/storage/cdn.mdx @@ -9,7 +9,9 @@ export const meta = { All assets uploaded to Supabase Storage are cached on a Content Delivery Network (CDN) to improve the latency for users all around the world. CDNs are a geographically distributed set of servers or **nodes** which caches content from an **origin server**. For Supabase Storage, the origin is the storage server running in the [same region as your project](https://app.supabase.com/project/_/settings/general). Aside from performance, CDNs also help with security and availability by mitigating Distributed Denial of Service and other application attacks. -## Basic CDN - TTL Caching +## Basic CDN + +Our basic CDN caches objects based on the cache time set when uploading objects. ### Example @@ -17,7 +19,11 @@ Let’s walk through an example of how a CDN helps with performance. A new bucket is created for a Supabase project launched in Singapore. All requests to the Supabase Storage API are routed to the CDN first. -A user from the United States requests an object and is routed to the U.S. CDN. At this point, that CDN node does not have the object in its cache and pings the origin server in Singapore. Another user, also in the United States, requests the same object and is served directly from the CDN cache in the United States instead of routing the request back to Singapore. +A user from the United States requests an object and is routed to the U.S. CDN. At this point, that CDN node does not have the object in its cache and pings the origin server in Singapore. +![CDN cache miss](/docs/img/cdn-cache-miss.png) + +Another user, also in the United States, requests the same object and is served directly from the CDN cache in the United States instead of routing the request back to Singapore. +![CDN cache hit](/docs/img/cdn-cache-hit.png) ### Cache duration @@ -34,28 +40,26 @@ Note that CDNs might still evict your object from their cache if it has not been The cache status of a particular request is sent in the `cf-cache-status` header. A cache status of `MISS` indicates that the CDN node did not have the object in its cache and had to ping the origin to get it. A cache status of `HIT` indicates that the object was sent directly from the CDN. - ## Smart CDN Caching - Smart CDN caching is enabled for [PRO tiers and above](https://supabase.com/pricing). + Smart CDN caching is automatically enabled for [Pro tiers and + above](https://supabase.com/pricing). -With Smart CDN caching enabled, the asset metadata (not the content) in your database is synchronized to the edge. This automatically revalidates the cache when the content of an asset is changed or deleted. +With Smart CDN caching enabled, the asset metadata in your database is synchronized to the edge. This automatically revalidates the cache when the asset is changed or deleted. -Additionally, the cache HIT ratio is increased as the origin server is shielded from asset requests that haven't changed when using a different query string URL. +Additionally, the smart CDN has a higher cache hit ratio as the origin server is shielded from asset requests that haven't changed when using different query strings in the URL. ### Cache duration -The Smart CDN cache duration is controlled on the server and cached for as long as possible. However, you can still control the browser caching TTL using the [cacheControl](/docs/reference/javascript/storage-from-upload) option when uploading a file. Smart CDN caching works with all types of operations including signed URLs. +When Smart CDN is enabled, the asset is cached on the CDN for as long as possible. You can still control how long assets are stored in the browser using the [cacheControl](/docs/reference/javascript/storage-from-upload) option when uploading a file. Smart CDN caching works with all types of storage operations including signed URLs. When a file is updated or deleted, the CDN cache is automatically invalidated to reflect the change (including transformed images). -It can take **up to 60 seconds** for the CDN cache to be invalidated as it has to propagate across all the data-centers around the globe. - -When an asset is invalidated at the CDN level, it doesn't affect browser caching. -If you don't see the changes, make sure the browser cache has been updated. -If your asset is updated frequently, we recommend setting a low browser TTL value using the `cacheControl` option when using smart CDN caching. +It can take **up to 60 seconds** for the CDN cache to be invalidated as the asset metadata has to propagate across all the data-centers around the globe. +When an asset is invalidated at the CDN level, browsers may not update its cache. +If your asset is updated frequently, we recommend setting a lower value using the `cacheControl` option even when using smart CDN. ## Public vs Private Buckets diff --git a/apps/docs/public/img/cdn-cache-hit.png b/apps/docs/public/img/cdn-cache-hit.png new file mode 100644 index 0000000000000000000000000000000000000000..799d1fac9a7561fdba601755e1ba6e95182b3767 GIT binary patch literal 102946 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́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 V!=bBal^XKTebWxNJlB99{|Bk&_fY@< literal 0 HcmV?d00001 diff --git a/apps/docs/public/img/cdn-cache-miss.png b/apps/docs/public/img/cdn-cache-miss.png new file mode 100644 index 0000000000000000000000000000000000000000..5fed8dcadbc15f4105a8f3e6553167142b801826 GIT binary patch literal 122078 zcmd?Rc{J4h-#>0QLPIK9hlGj}vM)nqiO?!bwy~5YiBOoa6|yC=WGzYAmuy)k+t`-~ zV_(L;#4s4Me&2OnpX=6)I)x>OJo@JeAOrw8zh<)NOLCk@SU(VyS6`qxiw(a;Fd=xb}<^i5l@ zXGu79tAf(y=R+O|*t}aTB-4&IyE}AulwD>#@S}!otPCg|B$IvetWal^$V~s~;9$iN zdZCaPr{mvcf#~KK`5S3^a zA+%gaS9d>eWUUPtD)#%@?%LWep%3^LX<%qz_)o|DH8qpXofAU+(%T0VnBpSmIE zik$0L4wf!q(;jUkI3u&HilNmP*wrH!ZT`+RnGcApNjE*Lr&F0$QM$){3S`{T>O()wsQwH7#to5dsUQqOkG${iiP zrLm?+!*m`Du|`e%47{1lYEyyFwe7cUhD{r9gzep+YEt#7*QlfTMtleU8{UkfLD8n@ zQ4A?2l$(@06ic!OS(~g!HYAt$0TXerFh3_A7#kI(`mEtDXk{AM4PtMK?2^){*V&Of z<%4WE2f)gVfkT1Dm}5WUgwxuz-mIoD$hZCdVE=n#bG|Aj5cfK!_ijNfB_A+>2e>V1 z+5YTBl@}_^Lu%jL`A=N$7|GAfHuzmk>RO>nqzmGJJGG`)K?nSo2jt>K9u~|>3qDZr)QlUVO10nqpqI+HgzZS z9$;)vfFCpK>gw)XTKyhe^`SxPt<>9pG}oRsq0jDK4{;B@u+IpJ$_GeB+|R)D5n4aV znKSOxn^qHk$o-$jKl$i3A)GsI>s^A1@`0t-PTh|uK>T@YRh)Ufcm$&10O8?zl6P|^ zmmuaE6Z8+J3mneH%YCaWq`{l7QlzhZdM z*sHi_lsiDQR4;yJl|Pi2s^+(61Vn9*fk9mzo#WRgRc>?< z_ie0H_a(%8tK!YeEc*w*>FEk*?1atE&gRYqmI~?|?7w~cc0yUH_jd3+t_q);DC6aau zw0CK}RYF>RcY72)er}Js#*(=HA}b>*j9W=#9 zn@-OE?O7-u5Iz;kSI~X=XQ4GbXzU^{JtL0R7xd3kj7jRYw21~JFwEwk1)YjBkpC|a zw<4TXeq$YdKX+(&e1P-l$j2V-e$>L;PvJ-|GBaYFmvsOtCKa9A17u_<*{IjmgAg$ynm-{te<=@^?f(VgT_SArHR*mw{h| zCqiFBOZUoA}DBO-)5xpo}Hb2;eTcYYi>-0_I5ptu-CTG+$O(P?!{OiQcLV+>@*me zIR@UyrG!x8DcO{AYzQ_Un~g0e1(701aikQ|Thb>|DXE4KM2H~75mE@V^J}@4=9`ST zZQxlnU16pH;lJ-@-vBrJ)TdFbuJJ#d&WHxYoh7L3_oJfe&!{MsrJ#}(Z&XW8{oNQ= zQUxU5VHMhRsNz;|XVR7bjC%NGbtV?wZCUPg%0$!O9{u6=?hT6`Ho&PO|9|d?H#E2z z;GnxQ%lkRQqHffdcyH@jX?hmU8@b&eL6HwWBDSz=| z!vD+)3afaQ0p=z;tiK~99O=oHKA`&B0HXM3{lVSe1w4yh5@NM0{Ped=8C}55KB&{z z6KH-P&-|K>HGM#xC`0G(M@7q@u%bS2YCX_Md1KH0w`17U>d$b<;6<7F%6iuN>_5mc z8g9~%kOr3Jb!)fZ9=&74*iB9r$Zk@>{|u4;Z)L>)El2#{Dp@Mvz=0iA@gBQh@!0R$ zZ=YMluO!NV189WH-s_*W#`^nB9{l#xep*4rlw%gaBwiG}Bo01F>6P}n^83iR;b;9} zr6C0Yo>k)SI~2D3+ocRY;AW`=Hry)x?=uX)rUPfkVG}t{|1B!^HH^iMMcqujW>7KY z^qwcbAj7dh+u~fIk;RjWiy_lhD_X=H@-X5XVh}NeP=K!>NR?x&vI9G}Q{oc+rlLNt zzc8*^FwM((Z7Og@*7@H^6sM5R%$^x>WM=78UUP@mi=GP$16!Sa0bdHs{NL1!b>6>+ zTBT0;d@cGLy|nb|0o3*X88mp-?a>FR@_qg`d(kiCDet83gFN>#9p1@%4|vV|ym@&A zI|HJ)VPjGoRg_3dDkYy%y9Xof#b@RhtBbJr738pISQ}V8xMMKxe%(N&?qgyldTV96 zhySVAY!P{g;*6+3j#+OM@A<4^Mi7xpvfH6mw=$6)=1<6lgI9LE^(5S@J z3VIbOB4##-r%Kl0$$o3=J6XW4d^rzk-*fSz%y*74x4)RdppNFRtE?FP z&>e7{qay)Z)4a0D&7RwKp2x@s;p<5F>hgRbayUO{RyfqV^o)G#pVdDbKa(SHkZe7M z`9-_$a0OcD4XN0e>GwIuNwVi2J6@qK&1dE~SWzgSx1U93e0@%#p%^WoFE z$mW$;ZnoStt0fd047!gDcThfMo;mZ+O?Be_%}4rxE@{|Wrz^LMi| z=XNP=gVf!OumP&)_vrhr-1R35)m7g(=NArKJO1UrN^fi|wr?H?#lng{&bl)&1kV<6-k>~l0R^G%V6rIpt>0%u>)wxbs)jK`}eS$L?+j~~=dEhK6 zb8gT*;g2lC#>RBpLaDH9@5B9-`o3m^G$~i(fcvwX!1NKd4;9l(`b^Bd z8QnhL+3^$kqe~VN9Q5{el0lc-4grTSs#%(Tcfg!M*hgkBxZ=bIUZnm=a?USyJhM;h z>;2dEwrIFbjL}1TH1JLlw4p$?X)a`(7Bife%g%7u`HpBr=4vlHA6-_VlI9 zN^ZO{gLJf=%`zs-e*VKSgIf9M^9!vEJRSS=bbnkU`cxhyjelO#86aBA%APB)qa)me zs{FOMprDjK3$bF4hVM1U8tYO5;f`0j+yQ2H6h?u~J6{3%kh)bVU3+V7A3%81)fwTDquWp;) z&-uLFDX~;R}hpxRTA=UI3iD?P`$coSECBm z{1$y}mqHA-_y(;r^NxuL_#iiadVA2=*XSTR0*xxepF4LVm(yb7K5annq6;vwQkj0v zey2he0uFnl?yxfL>I;dY%Qo-_inGyR9iW|J=qYoDL>_larLy`ewAd;rwX)XT$2t|>_6b|d`EsH z@c(OD=WVhuY`AA@@1%$W@q^C0yJELAz!t{qq`DcU?72vqRKyx8mIS=u(DQn;2{>b;7m0M@9^*Ida!$GD_bUazSZm z#N|(7w&HTbEa`J-t<-a==RbYfX3W;+%c12H){X)|^)Md@CvH?3hY5J!QQr7GIPhdC zJ*ih|DGe6{_7@WHnebS7UF`30e2BA7dbki2KoFtvn_RO>I((ajZRKBD0HyhtpNGv| z7N(yq8wKiQQg@)#_y=EBK1^%^{nXs6Voy^vXV^AAAq0P|Kj;Ai?(xXSoOr9zw}J2t zJ;MAq*&6}FNFT@@n_+$$-64ae;?lX-E5#jT%D!j5>xnf$;0*g$+O6vn+E;9g!_YQV93k z1bhs`AaLK9(mu8Q34W(c4;0Tzk2~CR%x|;4{A0u78y9)8bg76v^&hDbOj3x0u0c*+ z{^DEzhS`v!s;Q^<*9xnQm<4@pnyC!&_^jNtM_0xI_9q9$Qe9ugpS~iP zd#ra)Mi|Xc|118z63rS+wvBp7=`e=Nkja|}V`H`5o6eQw zHEZe>C}|cvXfaI~PJ3Za{A`0FZL4FG*vrI z{(%F2oR4MY!pfsJ{ z<3&GRUQ|+THimDpVp z?qk&Vq}P+Tg<4emX-jteq=M8dY^x(BRTtOT>3Z(rCyU7iof z3NE(ee+eB7V*;mskV9z1QkQ^H0xAm)4PnhFyRc$FDPWnhkc1>T5T>c*X;PJVroYUj z_qbciolF&<2j^>R-q%xSAumOD+n^L_HNtZCN(h8xbG$zvBON}n`LDwI+xVsvlmTZ2 zN0wfdG~G+z^cPpd&xDL-z(x>z<(WAa4{Aimi5Bkla&1Gd;cH03Q1O7cIyNFL!f2xI z{b=lUjW%7okjUkm8kwtWka7V&hIw}xS?YBX5$~?;+a6MYWGa(z~RfS0}&Q~`58wzx& zT;R?A?&16iP+0T@GMHSv5@-z!o@h_#G;d~oojUz6G4QaU@`j)e8Wm8aw5 zQ;B=i2&!eC7m~c!Wq)eOs;F+e6Svh2UJ7srUi#c7=r^xE{(69a9t+vTraNYVS9ksX z#cJU8h@&pF^`_JA@JEu;+YU*0hr`24iH39{d#I@!@6s|`CT<3aV3IbfkYu+?>RLg0 zuPj4X>m(&KkTS=OtX^ZoX;xD-)iZW`XC>8lKN;tUXZW6sJ;xtU$(+C zvEO!ktuXMgCItL8o|zM|bV51jZ?xxn7n{j^k;gy>}otVi`{_ z#_)i_mhPNPev&o(fd6yZVTpy2GyAQ3u?Ug~Gl?XqsoraGtlye2kn~|meZMApM=Nv? zqR9=-mrckY>FZ1G=q`0|kyk-J^?%Y=iV!Ei#&8FefOC9U)I;XckGjt7sO?m3Tj8KM zplIGjMnjn-D7;mH>V9@hvC|@WI|bNDUasNFG3R_&r_vf*pVG#Q>lfpP>|kzJ!WUlY zo!>A+XWibn9+NSbCGxDnbfCBR*q)4aGWl$i-i%HyONcSujCB{!!XR!EC5bBx&{^(; zhD#SINE}4@31#6<;)wihXdx-{HbyRyirIH6X@LGR;Hi2j`AEMwfwG;xq?q^KMEV(< zb!aCLnH2W*Z&l_MhHX;NZR&{uXFVI@u~GqTt2_A(;B>tEtxTn< zw~m|HlrYMO*B_F7L484$)x&=y=$&< z_x5KH3tzX-D=&3a&Y4&#e;sJVq#QKrRfWX*_`hn`paRJ;-pMnGi-BpE@F#s|K-h<= z(h+i}E~YKU7_E~$CZ_y0(;E(Y+`V0)LVaMxnLw|d9)%?s-t0*7pc|>p&mRv-x6cC4 z{kyw?Y3sSCH}9N0cecl*Fv@iYP_sBm`rY0$@aN%LM;}&MFX;|SYTBH8fVg)v!%Z{` zOxOj_VX;0WQG5paFi>*TA@HU{m;<%Z1t9)D!XyL9@tiSDggO?v%#C0}vQeYXvU-q& zCXhd|uG7{u#G-JY?rD{*P~P90jZV;YT|i4?g)UwW`O3_hCKR>-q{Rp4M=o<5Er+KH zK+0_n5ROA_-at|GzDIt%fD;|_I>^X60hA4H-{P*DVZ6%nkkVslL8&MHsLdTThN=ZD zYe70kr#aa8BTqE$4j}X|v|ueI_E8PpUp}M>mgg%irB2~Kd?0(Mjt1szH4?09H!3Zr z!q#F~80-(d)WjG0)Jr7QS9VFJAJTznnoZxj66)Z?yd-%1ubpT8d~ zL@i6ImrQ>=Y!->0mhlXf$v`W)Iwq{0T1($fhme7R+9D48(39Kv(~P`y%JKU`u4dPt?F>4hJwbLdyI9$3 zC?On^Dn~g^0mD3-Sj6XvOJnN9(Z0oo)9x=axrmjktWXdnWS~}8;PK4{ogcB%7YM_H`|osbE`l>pfH{-H+%;c_u?$tX}$AIZrZC2hYH@SJk%d$UFSz1 zaAgjR0D8#d9p6ROmo_DZwfv(B#Z&P>%IKpo$&0VwM=uQsR+Z&?WTwTlIg*$NUuJ?? zA6d6_ZV@Nk%?{V42MVUtaz^SRAP4Qb10HPxBPD%lwUax|rn715)aMFy!sAZ~Z=pr; z4FGqTYZ)!&>LE)Tj)3`ny23qjv@#>p-u8w^pyUJp;Mn>+hcg&ogPN#ci*2uZ zpjfGe{KZCCzL6d^1UAyT8%79&l7!s=TX7>ZQy>$;>|23|XV%9kf?OKd`;8LE*gqNS z9VbL9OeJ5&?bmMxtSo288jZV_U&UB;xwMM6AXxcjC=;Gh5CZ|B-f}jZ@+e#$wX3$# zGkX?+wJiR!nnybCu{mLY<7(jV0yRZ=sKU=JIgvh9x7Tlz%&*=#C*7xx?=pN!iy2x9 zD?W7iUtYZ-PZdG?wj88gzCJ)FVeGXK$DczVzeWk$-;s!RxT16G@3~P{r z6$MRgu%3v~8U0(yw>JjI<%jwq*STYSU2`*@uAVfrgbBoI7@7EPRE#(Zr!-WKKd41v zdt~|zXwz-tzrLuLI?a0fu2$M{+6$U|v?m(xyj-LbMvwzPb1FY6u0warpv2}P2+VMjDS z9B}TtUf0f_A);Zi3oc9I@;rQOO0lQeM!B`Eo;=X&tr#|!i0ps)9c>4=_@F6z=V#HH zB6RA8)Vj~-yucVLP2(Yt=zilf*MCH)r=)$I#_|dI3*W-<+{}cGum*L#XCNK-r}3wc zX=@ndUVBQ}3WIj%;Dnup&*g{uCakrXD&qRJWIej1@ys4qC&U}tlNxY2xWuYDQC5+h zz9a0`hp1tGAtnvG!xo-qHwm+EwxDkgpxcmb=(hDX!r%yXwC~6dOg-fu=$rrMXbB^F z!#QQe8MBFIT>k;U*m5;tm-^3rEiHf>o~F=nHRO+QbIo#wlwv@5bU@LWL?ak<*eVxt z#ghvnQq4s#LJ|qJ^UUzy?r;T{DxjT6?5XOsKiigQ#@ODFVHK7K4|v|XQ1N@)+J<1(N%D?vScJ5rJ057cOg?8 zdKy3r4BEn3H=ZYHECT?;L(r7&hj;nw-M@;?4`LKvWT1NKPFR4$HqU$h@kyWQ^zxpQ zTpuRKV&lwiiP{SH3EvXt9c_2k^>urVWiT_p{gQ=fG3F$eT&fxPsx_n@H7sliqc2U} zpY*YY72Xzm8OK;T`<(B*jG0go-}bS0a>L)){9?|92?4eaPwePIbF2x2yGkV)y~Jv5 zLxjN{sK&iZl9yD&5E_UAl`bZpUPWE~Z?8ffx;fd;13(;gAUrQDStHND;i}$nT~$_Z zRyVF2iVAxeev>*+iH^+#8?Dje5 zyCNQhW6?+K?DCrYXIZV=_ZT%V&bh${bX}9Ip03EwZCtMoL8*p^ zv%eUfnR(8BD)BIF`dU^e8`cj!RI-bwpRh(d<#kCL4N1Rky!*1A&m~Z#$x{t|P_6z$ z4bNHjGUbA)kqIWnW-Y}(+?StkBq#ti?CB=$sOqQ48M^eSdu|$k)qaJUnUkVhUg}hr zoMq}L=@a}7FF^M|QnO7_=JpmJtWZtx62k1$%junUJ${u{fsViqDCQW-}6~fWakpg^8C|2c4$!3|o2B$a_6Hi;6r;czBdZUucJzWKLja zo4tO_lG%ln*V2wK#NNW2Mp`5oB0;hcb8NYjfN3&5E8Y5teO4t5`MkKh-a{=)VGfS} zV2@5Z_KMEhCNqjU^9J8>hsmkc7ZYC|u;F6u_Z*>ew_zFp8`000E!;?SPkBBnzYNy@ zL;bYFQT%P0k_KQj@?(xpoxy!;}{iwnR36&@JaBY z&OsTjH`hNh9A!9p(eVKn=r*HQ@MSvRV0On-T)vh7K!36*3uG_aGcB5~;hZn$r5^zP z1=|Z#4Ck3hgJ_1@L?OSS-6fBV|JlV6gU|!|-x2k5StCy8cuTy;o5XC~o8b&R?4=`T zv+ot4?9YjnP6F_)1}f&ExmdAU%teg4An;ybUdCRifi7j%{=&ER3n92?LiQpCsq1|0 zGusm$0n+zrWIlgh;`nlH?+7ufzRe0&wXuMHzkr+i6C9zx`MuViLrKXpSsso-px ze^Jfio9A2X*zSY8l;vB9P@=HNA(dEY(9BogS87M?7k5XjGcO1G7WIIrccz{VyvH+K zV>-r3f8-*GS#SP2jqSQ3{2vk!92qU4kPP2Gx`JhjU>HljhLtQ|rD>uqWMINB}rs!V=!#;b^) z6AAL%2oUmPy4vOCMN)VQzrkxoO0TvGK}(UH7!`PR@j-`Q3t2{ANNl?l8o#?`yro&K zPGVk17%pq|KVvcdsAv|FsL0^Y<%24bzF|n;J z$|SIu+Kj|QMAS&?G-**%s0|gWL8?4a{NUlyW8s$ymeil98_r9344)CKfr~x6z{!PR zjyr*fEAS}F^spPCBer@BVVlJn#PRVn3~X)yJ^iF^Yy4z9pa0zW>%NmD1JaF3y>Obr z8FC=~VLgDbHr;FXZMbH~|4nVHNe%EU*I?eDjtWKPz0T zpSiDRIEy)VOW$xJJX&95CUGrWh7lIH)r-ekDeSoC5^7xm8d<}QaA?`#OuA!^md0iU`K&=D=TQ!gxb&-8{gM`ilLxRw-}2E;%&~q0T^box#~@~wtAVCP8#)?H zPdLiqEG8`5EO3xX_Ink3`f|i5sK7}5U|y0&<6fKjRZ{AaqJ-^}FGZ_`MWQj;H}5j+ zrYV5f92>c|IQuVK7ov=)T2uq-4eB@^=8P%sIMQ#C4p9ld!#3Nhv&T+%;ga$xo}9D7 z{UsgfW1uhIYtfZl{i*3lJ|f$F{p=%b3<@m|6YRB*J~s>vXY=4!VKw7%aK_Zxo41*l z-1G?|#q3^g4ikd0setu6nIgb(yp>g_NFg*~1@E=brf8!b)&c(1W=U9Q6pWy=gCN4B zSzmE_1Wv~{>hKu1`}#+(@-8H7*+WTUdL|jSP=k5-jtF|YvnASt7w#Wc{$3b$-*GDw2_DXRJ##DzVcLBH~MK&gHw#reK zlLFPht$~SQUnBMS_$osR92(Zboj~5UNu>syRr0mZA252wtY~Y1{a%=KR0#KaWH|0I z`B@xl;&cyFYt0lAIgX@721Yod7fU=i#YH&cQ@Y{dD9Jb!b{1SR4KUXO92c6ALZ~G{ zJ2waTt6NcpxnKrw`QB*6kziF=5W8r85(_)}eqN^sKm6(z&w883goS;Dr(qN$qRo1a zpjCH@o=;GS5K-#Xt;o#vV+(s)%4oXLxI}7Bb)lYzxtgu4pr&_5{GKW+gY&CHGvd|f zFK9pt#kwn+&i7?_oD0zSK~LqJW}7}5ml)7^tAN}3m_vTR$yXs#1Uf!RdXw|@T+t0^ zg+$Inna3#4N@>M$J)RCEe85d+x=g%|CBpu#srWtAj!oTH7Fe4nt%xNUhO%dQ*fI~2 z_m^u~+H$9tP0L(k$i%=(aO6GTwqia@wDVPDvtt(PVe7-c2>s8^U%lEj zVgq?Rc*|a!RVB!XB=flMS(M9L(W=pbf~(s5vlF;;K7kUeQ6N`PC&vlUmR;fnO_oL| z?O~qXAvQ0%o7$}54?`nBhgKp3LxjRKqDmvaigqS`Gfqp@kd(m*U09AiQtgnXKIHqa zCSzlVhE#`6`^9kCbxV7_Fg4rB2jLgWvV=@aV>z7A?HoG9^dPG-r@WzlsCaJt^d_!v&kpV5AlKrT2!dD+47 zHhdFJs+NZjKm#s;bf5U?c@pfWtF2{FA5YRB#60}kLPL5XG>93)tI^5LU$8$r3gz#U zowa;fp(zw!*rIsBQL_?tN(aUJEmWV;P(6?>#_v5eLtyPwndZbLhC$sS>MT{s2XrcY zZ{~S-)$Il1A8LX~E+!^9`g&UW(csz`Jzl=PSih+4#cyEp+?sR*jbH3?uUt!o$P1lM zep`XaFewg-ZWMGc4c2b|oGYThp5c4-hX)TkC=(FMiMasRn>{rfmE$sEoP&+0)?8#4 zXE)`z25Qt%g2-1+JX~xc&@)ds_Z(F3?9`=&2N~Z^42#9W5D$-XF{XHhBah$W%I8^5 z%Uq?8vbB*X4f~#tQh{~&hA?J0Jk%+*o{)m^k1j~IhDddlpEsxqLk_ zvHrmKVH!nDYd3_mbZIn8wD)-C@uNLBdDv|t9ta9bqX_Y} zt7ltsmxrWWFcD1_=@&*vvne`8ado%2Za-jQ`&Um_lFhIp(1`UN#}O_Iy+v7hrM#jR zrXYj8p4l)+2Ft|h5VKdwx_|f^Z>VR*yemhdVKpWrZ{*m%R;H$2nPy%R>_j}a8oaJJ(ztmA8nV=i zj!zeSue{%ZU2mQiehIYXzORSO)CwifSTHK_?sq>Kg+Ow;6(z~CpxdNlohS^oWj>;e z5!)BaAal^<^eIvC4`GUA(TNi`Y1Pa@!QqYJFVOcHbXu;6*|qAZ#(?w^W#+634DJ@O zPXUP86)y~$>sh}ao|Ui`voO>S63eeVy1vX^D&=Yd3b(DgVw&iNE8FNS5UfZ9< zD<=E$p2?wA`@RrPF~OO>7OVrp(o-pjqt3%HqWNBwK$B`fx%7&Z_O#;&?@4cb!A&rY z!Yx|0vm!#>7==oU#0#MTsPY1m$*z8*&_2Jxk(Vo1<%FiH2COk=feK}fqsY(y(jq{K^<` zCAoz^_-gfea3zfi&P!HfoXNLTjE0ZFK}~*=9dxDLR0XbnGiAo@47uLy_ltL2;HWq8 z92xcOLzMn%}SYGl^@kG!NF2cPnq4}(fJA36DrWb zSbei=U*pjS=OfF%pp`DEhS~Hp;#T+HMBKLj^y=UR`DCvH8T&}9y0B<=(wJ6_L1W$G zjG}^zp`%mJIyy#q^`m4IjW-y)#KJr*YYMIm8SQW( zo}E>{*|O3Cz2|70QlPgeh3V3HE=@)~*>X!JwTCj34vAedxy0|+gY8*=Ji5hmf|*qF zQSinTq8!$_#OSysHHPI$ue_tqj0}4G;bmf z^DP1emG|#i2Kvs?)bW+%3yriS>7b+Q6?6H@3rXhKTf$jk(5Lfpx{LdnKJU2T=Sdc% z*#}d)Kcj*3ApGB(=5tb6T&J#GIh>o>y>Z(m%eXR7kd{IARmaRpA)$x1Oc(9t${(dx z;SQZL>lA4dhFg zpOko+UN2t6s!81Bx>{N3tk4y}Iv>X57Wm*9@J{yZH!g>HENtS%*R3B(TGC^>PqFy2 ztgBI2D(hYs#!kx$8dlqM-*NJ@)VW=8iiYU_wd zI%pZ&jZW$eE}aD@8mwNdHQKtmr~qr#c?>}nrvw_+1eDda9qE4}HWQ4+_=gkqjG_piK`v zMR#1=i!xc%s?OO`ws@vIOyuK5`pL~V({jHmL?M=C2iEJyQ+ZwPpX84pjjn%wG^*Q) zVf&TP`fUx}YJo0wT^-pJy#z70Ds2{Rflz^#yJ(vh9EXQ6Q_5$Q`5TThj$n>>dxN&; zQglIJC4Md@p;8N$WnqxXmq(IxJi)K^nG1M2QRewOOMTY!Cw|1aIIauz^SBh9Asx~V zVDM^3l(nLPqwzmk#MzXwMxg8?k$R%Eq@zWtY<@Cij^je_0JYNS>D?<(j)j-G!tdf| zhkL0J$a0S;x-Zj8Zs{lPT)%KZfB~0R7`ywrbQ0u@wkpdg#T3Nx-!d$TC$5(pH|yXG zG}?M^TuFa41#`IQd0y;Yn{qGfamhQ{CJV}+hJ#}{_b!TMJWIdiuY2KxIlDKf-}n`c zSUDt;vRl05;e1O;jKM3>tI^u7ISE7+MWwqqyyADLG22X)j?(wDT{{qXcS>Df7FdHQ z>V@IsP(z0ON0qIIXp}FfX7s6bVCcOBPHwWJQw9Ta>9*C z`A*IoT3@G?z&p2t^i!^VI*m$pVDF3~owYu;FpM>|-YZL5=#buMaUr>DZv*}xfAXX- z1EPq_u;n_(tly60mvd`BZ{=&ajs3fL?T$Yq4s?NqM(BRNi=+2hwtldts*!TzX{c~b zHZ|hVvVB6iv`RY9YyoumJiUaYQ#s_l{HPztVW16iZuW;luX`FGputY2|Oaai#*>MDzPAu@;yxNs*bS=t=cdM5~+czdi!40UX9O8#~$@8 z@bE1BN6nHvLje5J_mkBa3;z`Z>rNMoONN(1!@gP{>+jmpj6p8S6?ZJX1MA%ZEnhcT zqO?y%vQ=EyaMJRs1{hUTw?;7mdh^1v_oerLW?GvZ{{>MXnJ%rNf4R@+o`G`hs+ zW<;cK<fqWx;TI!{rGe0vCJ>#Vq_;+H zYHR+oD9~s)elk2~7J*W%+J?f?9}c4(JNU{_B3uH9@TgrZXc_Mb+AiIw+v$zOXBJ*) z^NiBx!&l=UVmN{Jl+TfKcJB`Hap`^KRp(yoj$i0i3*3FwvwhqDRxZynf0xXqLg1Q- zj&=B~CHOVxm_t@lvMrP#qB6~f`&4yRzAbBb3AlvKZ4bZqS52g;0omlu9YQrQs4+Bl z7d>YXtB#6+lDle5>3TC>0 z_j{dFAc^wqkUYS89{*aQprF9MJiM?jUk^WT9%7nE^pegG){c=05HRcXtCWv{F z1tGl5Y-X@0JZi={Z4b4StAm*xzeTfB1~bC2eBO0QIlJlfg6JqJ$_;*d{R z_iT&=MtF_$fLG0>RTpp^LDIp5MKuH1rgpk{TGqXOFnUWatbweU1oBjA1b zDsx$X4qghRLC;X8C6kp_MGWC}Hp`UUXN1pPJutHp7ZdTSWqOM5DlmhnpK$26CXS6P zc8GWsPHx{aluvKxUG^}n+RXlG&{w;vM$~C+U=fphyWPXP;NJS$}?L&PS@EF9l-{ zTJGtEc(ZKt&_%OJuCt1s%YW~>tGK7>6%*aPc3lHH6G%U>->_d#QV^@qoVg?<&qpuz z{_^uD0NcA@B%Ev!QH`Eb+e2r^MQByZjjDYUr#jy4Z$FuRiS6A(`}oV4rw97?Z^@){ zaQqZdexOtKPP+cVe#(R~7k4)g)3$rNz;+iIx3oI=4;G_rtp4u>rQ<-2+ z0}n(SK3wzMV#Ytb#IQlj8l)m1pGy8@ICz%6-ttlI=iO3uVu4xtz#EsMl(tu%s8cll zVZK(Xx}lb&! z3mw#0(X2L4DdHT#SY_ig6MQQqpJ#ArjfwSVO)Ns6vC~5AH_~w5qsVyQ{w^VsfB|OExJL6XU{qMn`1*QvSm(n?VGG- zP%f3Yw;>u!gVH~`4y`M#0z#Fm%+$f#Yt9AZfV#N*(a&qlSlf61mr^Y!aLS$dEWW3} zg^pc5)VZuJ_-2eyiE0KF{4R0*oZbU@$Emq3E;gOO+sFFzMZW+$>Y++|nd8UH@7Aie(#r>(?t#R?Rh#A5>`T zhYmu7M6#p0C5PKi4YJwFfvOzIFwasKj>n~%8bF<#p>VfdF0}C^w z07+T_Vh2O*?f4czMrQ_}PCZ$2fM%ze=te$zi~dn95AxMp z6Y@1^g36$TojcAp`+R)0itE@ElFTNlrFbNaM(wJPN?mDrRjA{Aha-1khqWp5$PYZ{ zE!uQX%{Q3*_1et_C5snp=S#WQrYK7Yij$bXlC?hm`Mn^TuX56wfgKzigQ}ST23Trk z9tG5FJ7}Gz#;gX!AJ@n-tpa|@XXl8|&S@PzMdal?Zh_L?N#6Q?1=pfu(^r~%t>_Jg zL!#NrRwSE2zAMM3&rUyiV6PO)HFRezB>MU+5K~HW!$-p-(C;`(F%+0S&+t)kSQ7g; z4yy2#_ab`b-imxV-AZC&k6-T_QbFBYhYjiO-D*n5tF$;3MMr?pv#Uo$rM=Njeg2EG zN>k#RG;cFSuWu=Ay=_-qvYe0#_-4HOQGyLiP2pVeT*dPPaCke%!ZXcTz{9!5NT^8YoQrd(!XBJa4d@ zvyY-hW;)S{Eb~e2$`Erb<5wqt+5os z@l&#SjVbou?&ghxiQfSEoAn;6li)yxYyRnG6d~(nGlSPPnTx^O9Pd&h41}~+yy;HK z2Om${D{FDNrJ-98OH&I7ju1|2L&?~#sHG90XjVd>ANlcObjp&Omep+Sr&=ZBn_#0P z(R0%t9c!u~o*YziI^?wseV|R6O|(!fri*8m03lctG6~ZtNXRinw1q~dTImk6rjE{u z7SESqh8H4PoO1$LgAe=dd>N@P5`L*=vO|q~%q|_qe(2TlcWDLU?ehbUWl{_Zbn0A4 z~09WL9@K%d9Vjbnv8JPi!!5h+dP`ELv@TN{i#UzeAxXi4oK|fV8m=_Yk8C zb=RysZig`Jm0&@1rnWJazW55+tKx^ohz_3B3(#{O2DL$0npDC~^{)D}WE|@|DYn#F zb1)95n$SXVfB=Y$wP<&JHzA>|hT&~XbeX-BC+l(Y2d&JT0N4@6&@&Bee53b4r)EPg z?jYJ9ow^aRWSn>$ZjN^ygKWg^IhCx(w(Wb92%=fW^9NY6sAG<^A!rsYB&Njam*jo1 zVWHFz6kpsPgGwAo&WdqkL(o`+a0v3bxWK6R0Q>iL?(LR2GFJ^ zUw60{-01a?))Xp=M2LuqNa`}Fo>Xc&yLUlMc+T&dT7p-a zc|Eoe(64yTa&O(}gkRxIbK-I-^8_23e4Tzl#<-u7F-Z?^2tk5q<+mDrugj$Ab8gA4 zcc~@JIRn13`!%j*UX3IZYUpgo%2C6)gth4O zV2sE-Y8SEclECWd!M|iM@Ff|E5lM~6@~q+2ohumN{?%fi7XXCRbtE5FSjy}2wY31RvRNk^zqRn@(*p1P?!!(Z7sOzZ`ZUsO z^`>-BYpiz(EGQv~&WeV=r3@(wFYsYbpA^`0YqGgi5d6%x$L$pPLQl7ta|AnR7QqBf^TC;XCn?$HLXuy%UOEbwIZ_EO5+mebd?6r=mNY z?fsvDIbF)0*Duw*?BdwK`e<*LxvD`As2qKmF#wl``|pKWO0rxPE1h+p32VVW^XMq+YTSO)MmTe|f2uUi*GP0zsA$yGM`&hCsW8e3|46|I%IqI&v`}=#I zf1l?$j_+|D{Sh_Sb)9pbpXGgiKCiR+7{|e0G%r-aFs6R4+-mfCmzdA7_}zU@Dc3Mo zn(SOXec*^{r-=!?NG@6GLXW+#}~%ub<9BIS)MO)mgA% zY+D`V(yZk`3!UApiDHc3W!&7qoMVA$3Vnd+ki@{=zm=|$9NAvsSmA7Z<{j~^8K*#6 zslxTTDElebKBjmgLiO_IVf#R(ay;@TTj&X!$KLUlo<0Nzuzz=6^T8mUznjtSgj<~| zqM=eoITN~xn2%?xtI>uR*`Nbg0+HN$tmoi}2eZ)A5neo~>JF@W#uVFymm7wqo&RhC zw$ZoBB$~47=(*m&D$Pz6iks<~+#tUX>i+AHPcM;R-R8Dj1Ew&7^< zz|la-BTFnRdmSBp@W9(sWCvh!JQTKJpn=mS!2tFza3luN8;;mFQ})G-J$Z%0f_FN0 z?Jj$$@GYQkUVLW$y07O&+X9FBuDsc3?xuw$8O2gC`XHHaUJ+HD^y+0~D`K(kKd>U( z8Lh(Dam=mp;$<2CT*K`AC|WO1B)vS_AY1o?7n85XQ(RB>7>JDgtdoLoz!|C_Ub8*h zj_+i>KZ;F@#XmV1dO|?PqMqJgDnPxqK<$|YQgC;`3+BJxf`t9rb7p~syH+nPQX6vp zo2}y1clwk`p0B-m#hU$~kV#Jw62c&m_8yi|}kF!d(pJAR-?Jk&K$D)V@ zC_GdcvAXVrjt#itQLo8(vGy@43?U5z+9L(sNh#F=!;!KV28}2}>S2?VSO5FOP+!#(7 z`CQaW`df2D{j5==u?r(+qtFOe71$V7e4xV~`+5>9B-R}oKBxH8_n|`apmW@`+Yhr) zNDjr9Zv3|mgKk-w-pGHld=Bd@`u=(`z4sxk%b4zi8&)VyR4>C=hx2*P+h^Q&dskVV z$wdci2lwUh1U*^oR-JzLc^uRPoLW6gc4QHK=oH2nX)&;}dqr5w`^eeQV4u;z&#i)BjUAamHBirbSPP_B<0 zBdK+lv7r5Io?`tVHBlu)zo?)y_22f~0<~yeYXr+}bb8jirsq*jglloTU_mw&veTa9 zbYpPmtV{29-H459V7$|ze(t?wZItw=;kLOQ*gWr*6W?@n7~MAt_cs&Y>x6Z@M35JB zm8GFM70Bd&r;mJpG_@OylW8g1&U6p2JYkY~W^UVnJ+u=}gJkS~K%dVzN`ILBA-n45i(S-4zktp) zN|8gB9IdrXACO9zX0D4f|K+Ee-prpYZQa}`T7N*pk zaSa@rzx-ws#GfqRH1Dkm;68tQ;pP+;yKn8lfL4a737W&W95gLiy;NkJ{rs8)KdM-% z;?5a!r23S5+*;!GO6Bbuu}9aAUI;y*sP#p-F^Zzb)}nUe{N@dXLp)|Ck&#SpVzG|r zEze(wjjT4r&R{Cs8{`lXC=(k+0)vj+IecIleV-fK7%afCujMZ0#kGyQ)otN%}B}(6h5wD5I zSh5B5&BS1%HebEvRC|@tZ@qc2RKs&UC@CkvV%~C=iyrC2o^?_*Ip?c(Z)cI_*m8ZA zNR@#-Iw02v>H!phlP45Ss)wFwzhJ9wR!D^(_XPc!K~4Hp!OBj~Z%X*;W@qb}4x4k{CCvT= zCT^WJmSDBdT$9y}t08C5_3pxk6Mw(eLxO(eY3J-oGF395_O{F+S)M}Y5Hw|S)8XQx zy@zt&)nD{etuD8aZ8);;yqrvDgZz7X#k$uM7M|q-tpdXh6_xx>N^n7e99t`lc?`%4 zh@oWAA!La;W~8Oh_E@Gsj^1Ls?yRLjm9>FHM>RAqXD*pj)6PII4?X1#EDF3;EhoV9 zj3}zegM5GMLL@W4D8K62$PEtLYRwPVW`WWafT=wC&G~@YhLL%b;AcUzhKJ+aZ8PCH z!aU4>y~(-#pxB|lEj0D^?3<#iwE<2RUsv828D#DAKb(VFeKIj^bQ-6juz@Us*S@kj z*wlTq&J2{SQ7=oUjhzI2d)soYhuSQR?&?)o*tHq8ET1C^&r$Tjd|L6p#)ZXMlR1!8 zA(ohi#yci=o~K%Hek}L5tFEi)7G`uYRX^MKEK2*WIV{I5=uHr+m$xxU_y|Zw;Qq|U zGR?suO=-?|sy^f#WvUe3d^P?V7fWXxq@x~Ni&v}Gcv~|Z8OFPLdMO5HPArn7zd2^V zAk|mtWY?=-`%?N5+T1gS?Ou#BXYFGq-(K_W{iqPz>RO?+r96zv7XNwX6th}|2eR;- z0Y{cW299+u?27H!ySJ}2_o!%pRu_r0CLAZLwFaAkZjGgITg|VMVnc2r?Z=9B&(KN* zOV+rIDS=dDWRP$!HYz9a$h8&m7DsLb!y>i!bhEua&E^U>k56xhSz@^1vJxrfA-~8J zDD-6*3s@tiV_rKYG}3XL=9bH?J8n7r43$<64?T`~>*7x{teM5VFyFB+X+2@*YM?~s*U?OwWCKRA<@!IJt;VMPfdoU|Glh0 zfye_Uw>bMIx|mlR_$4nPwX$Slyu`Er;i>dnCfL%D`%`zXZ)a$riDmbD^%f*HnTZ$A z?w^o*ZOj%YZ2O6)^zjVyX#HwXU2jUx_Fa*L3oT<8w~guzFHY|+h2(66xUKu zo}Gez^qqe=LPut66B91K_+rBQxoRysn*L1u@;UbqFiCnX7gRQp87gVqGgfAG2W)~~ zrYLKCv0hwSQ&A|+GVSYh-+YlX&bvM^yWwO9wsD`J+&}~FnrJqEf|0 zr`K1S#Ru_EEkL}s8!g3fKlYLLC}DLNt6m#v^Q2e1>+$My248>6C73Baf<8XEYa(n4aOSj;6~1w z;)15U?y}L}GPvcEZu>0ytMqtDq^%7aBvXZRPVF8>tr-i{b^Ei_^z#_C)U>XI^0_$T zNq}-yf!gVppZvo@4$NfcBHqQxF5Jn`zC7+R=`69h;37-I*C8o0D{#6m^=tY4%a}F5 z_t9W0SpQabv9EzJV7RHUltS_jWhd*C17y5?Gn|riw?RCH9(QQhB`~yz)7(UI zlvBc;$xHetmn?hvn=iHlMM; zYs1Ymq$N;d&=g@N`z!kD_8dKWwY0)2RLs)Put`~pUvI(H8Rl2)oM@gtt_2f|*X%;` z?sLhE*GpYyogUqaTE4x(cONW6F6XkF@R43aq4y6&hMPoKqA&F~!%mRV;^m<1El?6f zP}#E!$o~6$;j)0Y!g;#<^bWq@UZ7u%AYIw%`q8%@9G^Fc@3d$Wzhj#zl!5Ye|0?x(wQQeH zYMaO(G=>{b{AOSJ4L4qWl8LIv`zURe$31#}t+&}dY#QNxM>l53K`)lq0miXWn20v* zo9@s&vP{;oI^lJOU(Y@{#zvtX=b<>P zcDjIL39RRNw5fgldHbGi+Dj>vK)o&WwPA0>J5?cx>!&kc_i{`^ouoM z#!vc=(7`T&9sf%<@t)Qt3%N}lScrnJRiSRun~wWtY+!yAc;-uwxoa2gI{-iU^E;>6 zz5WTg=NE>j|3IB}LgD^uqkS)%-}buq-HBR{omQ&DH{yTtHTUeL+dIR-(Z;^Tk06Z3 z9`Xjvfe)Zfu8Db_rXt_YE0kt(*eEi#V=-s~G+&!nd5AW}Zi0r$51_?R99ja2yw)@d ziRcGin|U*5jPA_sl$f1#|Fhzw_Fi?fDyJd>{sSv%o**zZjGc$Ml0Y##N+S4ue@$=>uwSDhy`Ji*tBzgUlFUAK0Y8m{& zD4hx-z1RVUeK@)2U|TAM`zPDv5!c;7n%%CeqjKke^um0A|L6B$`hDYQ>-!YLt(b%C zD=9nnFB@*TBlQ8XHXF1${kSw8$l(oaZTZ-KhsDB8V`3(`8-b641LQ&Z(Y|GC;?>l7 z{KGm2w$%$46}n>Yk`x>BdEf-fHhGR@lG{~F>i%-5?YNl1QZEx>4ErkS{r}jH%K8)i zrGfzHdFqal$GvPutkgQaJ40VGWg`^_xwrKrgoOY>0KA2HjN<- zNC(n`h6pJht4&3_*Za0H)N4(0O?S;+eiD_)7*Mx|Ansyx2RZ@#sX z#@haykZqGq-6{UhM;ERRJfvUOExRY*!guBuqdEd`s<{tRl3}zZtA+o%@Dn=}%iZht zHji%pAG9feri zqA&i2XgXE;;BWilNoVZ3@n+}T_J#H5l=BPAo0Rc~)%5Qu;S>}ln}P;BHZwUuW)T_m z=0;k|u{Y)9Q%}pmO|@vpIFx%9tV)9Jy1b$3Wr>W>=Qrund}p8rv!O$Z z6X)8$i2YX|jk_feNY01=Ha-rHl>z6qP)b*|m&XfNfkGGt6CPk*edy|XI%Eo9Z)_B% z-dc9}@80)=(*(L(UAJdbQ-z<)3oVw+XGP!DyyEb>m=6x@?Yt{!I8Ci$Q9Mxw$T6Ug zgBm*)uR;vGj;f#?Judee8dT#<8S+SfHNtikbm<#UQdj|2VIA;HzmP2o~ z+*>ZgwWa zb_F5o*#hO!Gl?NPE@l1u4c!#$9j?*(6GN&Uw>N5AU}65 zU}A=E*qgr}qSCc;hln+ji1v=!yrGBVVY6WlK9+ymX6Ad%Is7twz_8U=GjEF~)Gf^*W&u&9+azZ1jkj}TNzk}F+boNDz>5T=gk;d^ zEot*%9-4t>p*e^L;)2|cK)^^X>ydOC+|$Z^rWLW5sh+jK6C$Fa7|<8-gIEOQ4Y%2D zV+S4Z7-l#uTTf0qicl?fBzk5WxrU$PoRga~m^09RhPadNrqtTUDnn<|M(FtANqF`& zgQ_H(UnfeKzW_%TJy4wNZMZ}P!_v!ECy6GltuJ|?75P9&6ZY3Ul^vn5@%=`p0l*_Y zoeBN?e1$iqGo98WT9EQd*H@g+cfEa25g0v z0$*zELmgEd21HnA2fEOtNl8yMmA%tfn+-mf&%h(+pV$o)Giz6KfuOG9!snlaK&K

WN*G=`?d_SJ(1j|m(!ULHu{UtO+i8X3fmtBzVyG`Y1b?lYMc%gsGsphFkZ2@Az z5@vfd=vyrns^p1sw@uX4;Au4~$UU!mVHWJ~iRK7Pe<08j&FgC0Ud4(&~_6WxJ z)wF|0{91XFx2-$uSCn_Z^FLfP`LMUNCB3Ue!5;uex-h>_huZ{O8sr16u&!Z(K& z(V(CYhfR;3>7uYheW)v5x&7?z19zH%C`MNNG2sk(rKCR6diCnaw8rQ>w6zYbvqb-h zR(E1l5mpd!{()ZnPsm(x6V$5ks>`QzT6*`C4!@>S)xIu0Ob^Ye9~)bKu|l02Jo72# z3wI=&xbLfd_Ry}tdDl}SA|g&CLV($2_bM1mWq_`%tO!LLcTsfV#y3;vexZoqfqiea=$M3xmp#n&9si472Y_XiUbgwn` z9OiRstgvX>;^!)s*=i2mE3oahz_phrdu`tM_kmh<9O7o|r+C>c_83eKl`zo>jA{&i zzz5fYvyvBWzi#wY#GH-NhY~TbPlE$&22SQQNLPJANapkirJgMZ)=jjjCo zh|-^4I9bRDkP#EYu*;mc9M!hLYsQg749e#8`ZOys_ofWmu=`9`{CzO7Heh`qgSTiO1eS+by-)G(-4Khc7z}MW;h;Nw=Bjqv{@?PAgr3 z?gX!XpfmueCg9Boml0|tThDK9&u63T5cf25x_VuG7~Ys|0i;Mg0-#(bCQU%WGctur zwDXi1p!Tk-0FcFpIQRZf*Hy|+)U@i-TZ{J%0;1fGpHUcn%#rIz0T782i*fec3#xTu z70X3b+8UKP;~chGq$xV;r1bi}JS+Y&nuC~Q)k2Nhi*(%Lz?UkgOm!Q8QsOXJmsvRc zPKB}>KHU)T3O)UH?N(0pe#?p@Yge=;Afsnf({RXhT!kx~3S*1FQ8SL6GX*~CRQ-9> z&-m%v)_ZMJcny-eUnh`NsGI4g-f9ytnXP`Noh( z@B#e{R_z2o2L8LfGr)|Vu*+*X8^Q~tR06n}P zHWQx`7|VmJXj*k4aWU9tqv4kByR3i&5@&n6bbBrx2bv$_R`##()fXUV-UqI!kS4zJ zUg-0tU;kL((sHI}g2_8*=8mYsd;`evTEmEU&eQnjl7Y|FrW&m^^{0})v)Z#7l3v#h zC~tnn9sRqW{}*!#i0c2&L8ZDtyS=Q{1`3e=o_8}ZpMAlf4Jv~I*?@Cw!sS?fu>+?0 z9>|&P`k?2EOK&N_K`TbRyK{Tj0HD5&-#Yw;oGxN;=)cCl>vRH;z!;uprx2agl z*i{|whucYwI&44jtjq0DKt(xnU>3U#1B(#ddGW6sJTH-sOQZl0946;DSf)X*RAM`(U2L12?^IQig=uRy)9qwrPX zMBzc;B74F~v?R9HrgGrMnkY2f%dhT<;bMs+C6;jykN7&3y~>#07K%Xt0qAb1ww`KT zosdf$F`SZUMR`b;0|!d|xB@713~^(&UvpvR>7|kX6SVPvwq%*B!g#3ckvb|9)Kq=KK{VllIm6{JMli5) zr?ozvFL1fSwi&ngkIA~YV1@>?(LPjtMbcN0G@|0|%eSUtpIl8jtUljsn9ehbf6Q@} z0QGru9Met{w~IjKYsU>rd66_Bkya-b-^` zjpzE!7wwSQiuOkMh%6 zG~UfCxz#8D9_LtP_o`5JPnOC2QaRBcxj#;)+`8oma&g7yA%}_azJ0Eyr3GOIXS^S( zUx`&kV!Vg*K6~3;8hZf=LkviIh%hupr3MQx{*% z54ziCFZcL9UOdE^Jgb}Iclh88^NtHb2v!UXZx(Dlv~PH+!|19Eq&sp2LJH{*`9t$8 zP_TN70VsWX@q4JmNt#_dL-hozM2@0Y%$kvVa9FZlf^NwjS+W@0dOzbBfZx`Lc`lR2o+PbFgOlB4mK6yg*f^nRD)+9u-xR;% zfy8?}VR9XV{kl-1jO#L_a6Pkmd~ta&pUM)>awt*A-D!FHcdh+7U z4oxW_F20`JZubb1>LK1w=TbASo9Exaf!3Kjqr`PyFG^I|!kvA1S75h`=d;l&8{A*o zRGlKrb@hm8-BJ9xjIMTPbV;ftb?Iks^HuW@UHU@^w=<(Qjo)RLHa2O9NuKTOQ_hk@G^>aoTg(lS8 zO{?g}P*Kn@?T`M-+7AR{>TQg#MX4t^^nU(UC;aSq?ilM3{#5D082BTD2i)HVj`g*1 zFBUrtWkL+@X)*B7ga`s%9Ai-PC)RH1-AsG+SAKzbvojWYDMGn*!wxD32*Rz$9+zH-vCoVi z{(P^eo9MNCPuKfh_I5|Oc==61o9UP-!8Q@CR!QT6X0ds_%QjXOprU9rayczSTevM4 z8T9K~BXs97t>==$gX6~e_&Z-tc!yohr|??~MXIN90;0YW?+GAivkgaE3ACq7c=d!?UZqeJ^7^6g*Qi1q9!1T;~REloi>F zhCXU4H=;W2yJq{#O|bW*pSxNdn%i^%id;#!?}BAC#vJn=TQc=2HNM2L>?rL}!DC59 zMDovJ(sbM82yPT^TO@HEWc|!#Xuga2kzavD!UI}9H3sTmXry-SX{=GTpe0Xv()zl4 zeWriJK9g1pg2GatL<8f3rJOqc^7|6YZm+C3k5htmeJV|SH@eF2>kMQaq2UuNa?`&@ zirr8zd+-1`6>U=j_*5J9f@a9%b`rd38L>*d+zJQA;8|EgfQ5h~kSf3%I=b=RJX zU0l29%A~IC_8U&Vo73N9Msdaip`(JRspp)YIB=UjVjfI5qY+QWWm8J|F+Y3h7h_B{ zd_W6LM`Nh@EG0k4He#T_xAgXFDN5TifqRZhH0KomPK*$uSMX=qxq-PrKeOvKZa@Ak zTIRx{e@&ee(DmJZ&w$4`5z`#CX`mXSJrh?2>)l^(=@-4a@46gki#-CD(s^E^^xCM{RCr0kw?_t)F&=i@^{adxXqIer)u4*<5(!z zpE2C2zo=D<1&LXCX4-ca`H@{_uj31zcpvez@5#@!^ceQEK|Q1lEhDA}K2@4P`wBfI z&nFB_yJ6>hvOR!0Q3{cOo?7f!D{*KhRBz!7m`mp7E@`S!7>*qBGlQ>{RIHl|pgy8Y zfyjI~Xr$V5TJx`O~)X<9w3COJt#jNB`tS z`f^e+A719t?h^H!fbwym7Uxir=%g|ExZteaPT(X5PM_V|3~+)PQoqDb$03pHE)WWx z0TWD)>~h!Gy@tI*r{n7Bjsf7F#D-WEW(3d@&rJth{_=ZHt_a*&bcuqUH1uBk6li{| zLqC-`F5{vAz6A#A%j{zQa)eHYeMVHMk;<+_=Wm%o+Xg7ra!^#J#GW;gA2F%#c_;Y3 zUOasI9A?!xWloc6d4+l7v_H`k;~lT7#iQns2di z{W|TCIwnEf-OeOCt(d@STqFk8XLL`A&FD4Sduk$goGqpA~?Z5ppp%uAZw=UJce=@9DU`i*bFbPVnbSzn-b^NY$oI zdS++c$JOkj_rm!;N}vPQ4gBP;tY6lq)?SI|tW3j=q?6b5-e=Mm92hKklE&Vx`>>K@ zFjy>p1`YvQFtK_YFq64a>IHLar~MT_(VASoujhE&2ud?3YxD&o&1sqi&)nL z#R8T20&O`dy?;>$LiMy27$pZaF@c#K%iosDkwnY4U=IIbEEBr8?$Y_$+a!xe+cQ~_ zk40pPpR$|JvZ8K^&lFxLqq+pWDDuYx+IkCG)peM+AsmBRU((A8uCi(jq$2R8ST`!S zms2G@v&)P;XHZJrKM;m#o|?ZPcmJq;ebHwX=Z0tI<~8ZVXe?&cVWF9d*fQ?-wPjLC$)%c zQRszivGb&p4xSS?V^oSt4pAxqnf_MbZj#%c$$AaP6DT2dFNVvoR{lWTJneE9un#|5V)e|J3r)TD=~4cetJB~q zQWn{IQ>Uc7RYdR5-`O?=>Lub0m9lO5ZltTgH8h;f{$*~n*k`6BMTFWlq-@n<^}^;g zs|$jxBWm@X>?s85(IVb`O{N9cKJnM`7VOdu8B~{9?mPhd|b(vm&i9O8vz7-P<*FIz_=Z9U(z*#kQh4UL<-xP7GWiKBL&e{ZqD}*eY zBGUgW!nsGko%CG3$8I$%Ons}E6)(`H>n5D1SbR4*ez)O}!$yl%X%q0+q<4c=@1fEAuzn6SH^Y##Xmjd=yX~T>H9BeR>9JU}3$+qmo zBWp^C?;%T<(Ha@H+OB#v^Ucn7yUnbmW3rOYDlD5&ZsDCkRZ+nATT93%_!PX}8BD{>~_(AgRzRr%=wetqN_6 zD2)U&X|pHg1D|Y7POG5F-W}W)1Q>~x!T<$8-ykV!#CTRg^nh=(vNu$(?3&3w!;{{^ zF`)~4=bG)?T112!>&ro3P7dj9-I;!3yOe&?V56`s6Y%m6FnX^M?{T@4rqD!UPP^wPX~=dU zx{h3$R(}#>hsx1f%~&pknvngg$4cVWORFFEXs_jn9yUJ8$8_T~LK+pn&g?l3GiEc# zygUdUHMxN0tUb7DBLJ~NG!PxM8|pz&ID+@iDnzRGoRb=5z?rr&7>tjb-VLWzu#Phj z{m2=WNP>Wc<)Q64&TJ=dvvt=(>={kZ+`$4nEIv1^YZ_)cUFeA&4Km@s7x+hb{mGSb z_Uz%}%tAgF?`7U%U9?lBvg=~93rx4Sg#7gQw2Jg3+-0JC+`h?fE(CS*cox<|=pErT z;Wde23$|u90o5bz*K@QBoQ>g>drL_4OqG2|VN2vh%!A4DRV317&0y%P1m10YK&4yb zIOWS6L1KORB|)eFfnya^b8x!Q@0;I;m?;lNj!3?%ge|ti2>0ws0-!&rL_f($Y+{zt z+sw}OIurF579?}{XO!L+>%cSLO(u!KQ#_mQ#IN{h+;oDO=VN2<$q1Zt4ZHoacKoP* z+1;?1ev5l!8!Ki6hcV7ExnFr`;@xJuQmf{c7WJjwx?zKSoL5TFK8DF#$u2#*3LaG? z2ljdRLrk*bQZ$D>vDm55>J=fHdXe^RiLE(Iz>Fi2e0)wxH}aNXc!VDjX@;jOtU1Tp z;?RTmcCj5htu#SF8z6?1ry3+Zl4K=roz4y8v27xE@{|2wwXB#)lI-0JC+(-B7DhLH>fYO9S^3Lz4v-xSF(Md8MHO#3xqNac z56|V{^DNL4NE9K65Jrd~Y$$&Xk#q)%=J8LfYJFdCWuF=_^h6B3B6gmMTqMKz|8-v38K~{c+4N z;*)W~z}~`f!P27Ffs1nmaP!y3CG)W{Z)4uUiAn`-ihrtj+gmYMEjQO@WqYHE_@WyV zEJH4paSy+TdT&|CE`20_801$BFFllpTTHrS+|CZ?09PbZ5K^avkt~hZvddrkJopar z$Hlu0*rRLh%BEe0^mP?$>^8o040U@eV@?_shx5cl$B1F%5Ctdy^%`OnI$GtlF{%Jm z!SpWyNSs_(>As|0d+W>MTVn;e`Kf{!7un8Ed#iMj^7Caqp4J3OlHBUPRi0IeRYhFX z{b`4R6WlK0efOK~WMxL(eFpz399lDyJEBvJ9Q<2vZv513N9E99`!{A zDWjVhzNNLknh9GJ6{{Uucb6Dye#S?}awH8Dt+w02wjMMsp?*&c3q0)7O%=cR?*bT& zkaEpmUxW=e<$_;T^Ll8EiNZW`9Jzw7hE+92Ptj7vvV(&3Iu#EjBhE1{a#YK;FDRlvZ6510|C1eq)v6z-!F}jKllD zF`7ek`>4*M4Z(ausLjUuE3DIjWQg+(_$QXX6!U1VS4wnygpP-X8r$!p8~XN0tW8X8 zs3S$Y0alm*-^pdDzc3e=WAV$v)crBwnuIj14&|)BZmA)b za5Eu*dtndt_8>ak_h({EBgNJgk2c@uv4@|Ib>}rNGpqiQIVW;lV|0}Y7~1*okNoT{ zcF~q?sr(F;sHyeGP10_91-fuQhMfmEx(CFj%XI(5M5^sf$LJN_ezX4(BB>Tifl$i_ z_A}t$1#*C!-V|EeIKR4zAK~kP|AenI^apAAn$6{YrUb@ZAYu5|`))a>S3STqy+8fGm)>>z^>;nk(&IKNjoHJU=3iwv&I3E*SnZx(V|aHoyH3*KY>B zN84Car`vMd=;$BQ`&|rDL`PLjOe`9bhAb&{r0^{m4!#!1*N75jpP2|R?L_`#o48Dg z!Rk+3<1QyiaP5V^#rwZpU3HTD=eHGz?pgT6_h$!Y{#@2`(+>B5kO8lSjfaz%wuIMg zCRj^f!UiyLB}{ee%GJmbD>pSV4}&TP8Qp|6ZVR6yexs$0*y-c18QVU-n zigo<*BSx)a8JHuGV}391^yQCYX^VDV$IUWCxMl+V-x0 zSpK)2!T~!);hrJe3$pF~?X}&u!qr;A%}3F}WvtVpA`lcMR$z_kiwhiS9RJa3IN1c%UJBC`^5lW9IVywOe0iynjFCn^E{d`GX>DIY4J# zVBHM-VKg>yg~?1Gr(*B*RQyXu1n*zIWqSaO)^CSdNy;SS35s zkK<&UVOHA1zw-c*|FJp1rn1eL?u-(UG{JG-1>TQa3x+%`(Z--gV$QNwCW;q^+1V5G?gd%gLUZVj1@R zkxy>qMU_^{t+wt1af8KUfOo~Ya6?V3B(sNi_M(k`(P}0I<0ImAE%Q0$8*Ci( zZIElA5##^|QsBCviOqo-i@(z9cZ=*ri2ROT^rzudSk7}QWnR$(7DMAhVC|ycz%9QG|A$Nvs*T|;S!I^GhLiT}m)S(2U0aLYjf7XHH=6$($?CtGYc7p7Q z$_nb%y+a>MADhU?$*uT1*fIBG4G3xECu@r6?OTv>A+|^n5*c6mAS*fqRF7hZufF|5 zYacG-3!<(T32*XwbViQb&)dOPmz&`+(a6*=RI*d@S)qzIr%XylFm|Cr)Nj~Nh;qw? zuIYkk-}{U$O;e%t{u7FUrMoeBw% zUGX$dso_+EP+J2m5-vuurhFrXY>DBPw{fhOZl3bX3U=grJhfl7>mujtwtq*tpC=Y4 z*6tNLlR1Wlqm-%^JzB2YqtnBkZL<|Rb|h&^5AUQqoT!Q~x?oVe`e~wq7J97<-Ftk4 zt4JiDH9HBCkp3WV36K_`{$z0c$CetFs~4OCS9bFH+R%YzPqL=ZSi{bo337~>j^v0i zF14Ld*{Eg0uV{XVE%j_H4%caIYPmr{3U#smEsGs)y>^FUge4hUihc6!7dohY^zL9V zebw{PCSW9vHK8Opj}s3RS~_{Znn2@3Uq(ZR)?t=O<+(mFuZhKw@4^`%lBrA-JdAQN zzEyO6cy#bEr#xORyQsyk4CiP6;C7=%lJ;MhUDtIfyp&y($6K5@-6`w_E|n?)@VlRn zXJJ;991i|Hm)^|6znm#WEUym^4f1pHE_73f5%!Cdnh%7CCT_{z9WgA91Il(?iSC5# z+uInSwv!2$Y#p%g)rrpzNnFZ(X|)^3{jSW%Rpmezbtwf@0W1>LV4h&y@8KKU9QM~mM#CAKbisv6)i`8;HkbM;UtwJE# zlkoT1+LueCwDF)o0T;D4C7EOijE!q^rZG=3Hb{x{IwDTIRgAM9_XM3Cnf z#Ie*KE`rFCMO+oabk>IORSB&rH6X`3bEXNdQrDisdu+E{`eHK14LYV^6Ov6EuyJE} zzw*@ax>9I*9j0JIvY$XY+0^NuP{uYM#4uhBdo>|NYzAV zruDDJ0=3veyU4L=w)Wra;tjN-H!&U&W2!u#j=`hdhlC&RxxHKApIQLVE1P8`$3p1L z{NTGh)SRfb*!1P~$BVmG&HA>NC+o(y_hr9NYjX@SIIwWk;PU4HKN$&3Rgci-7q+6F z&CWXxf_30@`2n=m52f^RRqeC{#=-DPJY0we^1!_+9TDLGl5iVxh@jn1d+s>PwdbnF zCoa6RtXds6Pq>e=4;dTVJn`kaHTqe z>fEV#QfH`^4|<&mofb-qLKdn9s7nOvgWPBCQqjCaUu;pFmQd?B(-uNBfe`M>XQwDL z<^DH+ap!Y>lvsVXZg2UJ!FvZ1aq2kUK@w#sFMEh=5Q28RRUIjH&r;Ls@Wi#LT(qAS z$()VvwpX)Nvx!o2}dY96}a+|O?M|zU23LoPwtWlH|Z@WNC9_cBH=;ON~ z@w@s5EME00t%N#*^xvAbQ33SPA7tfs=Ha@#ZCU;supEkoU)(j>%V zj0vB-7ia1ozNHIMN~Qb|H;^E!Ek$p64DSteRO7A7F)v-knkQUEW?}W8n0~jO%yA)v z`%sd^Y5B;J@Id$@xF6gf9stik!8H=k2V z2bw#Xx0}eY-f>%cuk1yW=tuhFia_+s*2QQQ91S}Ze7G-JuJPQ;+lit}$j5oXP1MKttb>RViCBZI4V|p)B#iwSHSR_yom#cp5(U}XR z`BE0f1zJ^YR-_3(q=qVxGSew6M;Ph~wY^?A5Uf%8`mqFvGIefd)G)1QBr8m(zFC$N zXd9Ss>TG4cdW3c1SOB>;Fu?DFw3M=PS^dRB(NRasE|66qLS zS1KOvqWclevF(p$5oj}RWBNIH*JrB*s2{ynj@o>;*Y!Z=(SdKOk;dg8>_+1?-f`wU zxl{oD{eWMDQr+jHWt`dTr+-$seR-lPIaakgOD3`dsnGY_KO6Pn3khpZ>Z^?VRyXoP z3S|LO=mz~>&!F`$)n5_1SFh$iQM{~wU=g4Kn2)m0+}lhGTD-7E{W|yzXWb^WhU2&d z+E#4{vQlkt_O2f-eVre07~v}gr}Z2DD*0pHP~XMxV}$2vdWC@SZ$A`UUZB|Ww0XXG zm78~c90Fg+<)X+3BBLyO`mZDickO&U;mCT1Iiu?Xc?2)BtHnMKZ_Lzj0<=bA1XV5N zy#I)uKsecCpV2V5Uu*Di(`ER`Z;z!cu}6Ejk`K!J1fBfrb#%9W4n4iX<(?0bS@kP( z0uH;k1ypuH5m}`QjIQfgo>EY|113#N>)pV zyerZN239ozul1qHy1`T$dEA52E$63lfpqH*i5EiZ6CM9A&fWwX>h}NtzmqJH^+qL; zwaC&&*=7`F2`z@~2`Otb$U2F#6`?GNk(3(ClzpEPAu*QhTb3AECX8*?|MjNsxS4Aiios)L%EI`@8XC^W&q-y=5%69 z21E8ol1XGr5s+k=8&Fb2C_#96BFjl$oM^Wal-tki9az(NCrBF&bCUH1|=PF!0@0 zV{AK06pT8o`RFag!np~9ST;rlhA8fQ> zQ0(urlz7dvv!FtgV4c=JGy5+0EeCk`V+XaJ*Pg(QEq+{_WPY?JWqpRmPaxpVQXPSp znBTIC(0hY=9P0gY*Hmx$xIFWGfzicBAc#^A(Lu+sEvV#|rmSs+x?`7FqF7BhWjC^y z!iUa*od+yp6tf%X?2*~Si&Xl&livs3Rp-mJLZYE1(x*Is>M;K+ZKx z;ttonU0XpTWE`R&bb_bix^yzeaZB~a*Dv8aY}a6|aF5}a`v{jW9eSvpG4+<_$L713 zR1KQQnN`WGsQa)r{xylUBby%lBTKv{7ij8eQ@Zxc1_%(2eXroY$qpW+4IcFluF0fv zovFVlcEBoZJ1C=wHK}A*8&Rqd&p-m+?1$Xt40&e%^96fGG?N+7PZW*$RfGfi35g{q zkaHCc-7I6B0ELzw(W8Isse?mzS*i)V>)Tu0n%xJC!%GgdTwNybxp0=1hcH+BIl~Ej zx{6094^k<2=l+7b0UcG_aNq%;&NLh@@jJTz(n#IK^zX}gi0yE1?LW)p$yA-xq95>p zlnq)^TDGczmo;#hS%g!KsVm;LWcpmiEkK18 z7_>jDV`3Nt_?4WhEFv43>_U*q#wwm`q%eL2@dN9_AH$})^D1W@9!`9GHk+^73bGY} zRbQG>Qw!6|_rQ<)wT;T|2EaH1_I0o>iGtrnx$&#M_t(yd-6=3|p8jP{W;p&{q{9yM zae+^(<<(;Sa6jZB9G`#;2VCJ;;2nr6E{850Utk7?N&ZyZ`#1KNd4OZMhefYv3$yCl z<-pBiA^7Zj&`XjhF#miU8F|HZbl74Rd<5D-8+byOs_q8h*nQ*YLf4^1Z@^v*iLrf; zy&aOD22NREVBj9KW`-#ADuw=dl_nJR-UcmDANKL-ZWde#mppr1AkAvZ@WSsfqc3*z z27NID^XR&|AD9jYsdli5OhfjLe5y`*(5#m99+gFjg)9~t7ObDsIQxz98ayWv9EaXR z4}DntpX_J`--gjhgki*h>00+%+q!uk);^HeFG|X0&75Vj9>||Gw5o$;3#99q`TeeO zrSza4>4Bot;yPO0vLf8A4{S3B=roFKEznz#A6)tjTkO@Op7CIqgVXoy4JTR4YWU>0=BNLZ6v;9%*$5R&fD+%bz9KEX+s7(lHUX5e{XW&$u7#I={j zrTB9pF(M5~p&=!F1oIWSmZ@=EG$j_phMXLkz>ji&HQtQzX2!YWUIj8~%!a9p?DVmz z;=le+OV7b()FVT1&9JPFcy{QaPGuzAa8n(P;wp$FJ!oxUO#936d19j5tNBm#&Z-DW&V))aps2; zu-=OsSp^&9Hr=YNzn=~oicFxVM3p#$-A3#$td%=z1F4sHHyvkg;5Lc`yo zvh7v$(B|YqWyo>aJd%wULp1k;xALkK`1qlqlDfi5iDtZKbPI#b7-;f|AEvoKduS4Q z`ggt5oc5tq1tM;kQn;XxS|_n ztY`(gYm}fLZpcn5gBcgt`GKqaOfcj8H^KQj<9{vusPV?a8;_|Io&K<=V9~*b!}){# z&LboQOgK(582AGvH;6hJt1gruqJ65fXt0!*x~M0nIY~C?XG|h$F^a5P-Nf4xbV=%( zRo6IgGq5qhllmj*Yk>mVy&>+FZ!>S*u7Ae_InzZuwmR|?bem{}hpul6F{&+|4wE}P zs0vv$EW6B7#`{36U+RzDG?m@<+c=CsOF^kU zj^Jn1_IL^>Uk)D8k(8yl^V-rbf?kO&L#|@SZn{Jt>WfasbH)|AnhU2xb$V**hnM!9 zpiTOk;Wqz78h%FThv+)VL;x)Drq2asWZrKcn*T*>aD9taa_=3uO#9i)U7SS^;KXBF z3{#KptM`U)^H=jsDDFHdSk4s^v*B2lm}LmjVDZMRpf^L{<96t7h8**2jmZCKMExi@ zUkoAuv%?<~h&%+zOL_(1V5NbB9bE4w%D(y@^1#)`2alHo@DiT>bDN4uwsp=T`WXfE z*a=`UR4>`({y%P19zxznE+=rKUW0DbMl*23m83}q_|<^G!VmTI?s`$r0%#OnkXhqb z0`2%BuZ_W-{Pn>C3(IEMCARyp2t1=Sga2pK386DmE2D=`GOK#ND-nu}3}q~U&!W4{ zAGgA7o(t~j6+3a`dTFN&d)UIW%NaQWgzG+>yP%u?a>OC#|Kn37tLGozzXSKsY=T0$ zH_340LO0LKM28XGnpL6!h`5BNCg1x8s^4Hy)!c?=V(Is1@!!i=eZ8{s1Qf0O?!gBx z!~g8j*9bXjdPkPKN%O>s=|n}_;aeR$Ky-8Y_@Rf{Od4+Sk5+a!VZjgZ8I_9sn|L<} z#LL4mPz6AepRiEQT2rOU*aF@H_wU^a+GExWV?(8-2WMwsLJBNs}8{L44qNLEy| zO12@6C8~JxGM>sRN13|)&S3wtVNvVogEtQh3o@l;DeBoOwM~N9l+qO)=s=H0(M^Au zuhuDCXUSFK3z!7njk5(r1)XoF!J#;6l+l3K;+`|xiwa@vpNBO|w=Il77A&421!6HF z`kP=#H!Iba{qm*Ywr76)JDs0L>;JyjpzB;~)0hAoW?7bSO}ZUKfPug~)9@}^7exE$ zg&s^n_twgz)=s!>u`&&iZF@Vq=Bd=yy`5x3SCb#T&rq0$0X5WrL{T3PXv1-G0d zaL9Z(CDTIo8t)wd`QzqQQ3O!v+WzYb|F&_3R};2Byv6$4XE49J8HJq>8AfLEfNh&W zKGGIo2oI=NT8njM^nnKFEKB816w?;QkVJ44NFb0oO8r3OCpsGY4vPGa3MWokoui&P z#4u+C`$igdmYz&Kv;bQYokVrDqT*gzFsX zc57YO=HD;aOYIaWcInO=FB`sfGDpf+r7e2UYH#eZpqbHh749 zIrb|oY8@|IdgIT?la2mrFP#lag)cFu`@v5Aemt<5APi$XPP5uw2RsE8^bPH{_e%C+ z>RUCM((7%*`P;PSM3>N7z)Lfe3XaDdNzlzM12N|@&6m&_yvM&)&nd%c{fAc2Q991z z-=j@YQNmx> z_>F)I|LcYF5)21E+Qowi>$m6p*Vc9=K7w9O*KhCRVCUv`?eIqX3OHE(egqF6VIgm@ z&{b$D>E@(|H!p!?>%G=B@~=Dp6e@l4L-ee8D1(?+2t2NhK>9N*8Fh%^K(|KGw?y8Y z>1)vXqqW8bwAKVE(aaZLn?2;=ZjEBO0Yak3fOpmkY2z90WSfV>K{~JOGYI)TAfl;ZAcs8=6Wf{n{peM)V_yV6ycNr* zc{0;XfHi+I^xa7%uVjEMt%n4@@xnhMEGTAtyYr9l1SP^KJwuI+5i&-;U^t-87A@@U zeRJLx!r;c2@ifb~ng)~z6hlq&TAa@`e4_DtSI!V%DOCKZm=5UQgNJi7u#(=q0X;fz zr{WbK9<;7lxCNptqh+*f=#BK^=V#4FWKvR7T>{Taq>|YljLN8wveQ*GGpl#LNB3BU z)STcU_;tkN*9yLNpLd<$UEN*~Ph)4t37~i1vK1eXKVi zo;<|fwtfZ9(u)Ng)9?Vm2%4n>VOSr|Ou4+;weRrimu$_h zG{4D|c?r?=h=5NQ)5j9x4P_GJ3=cgU!2;ppklM()k?){qgFG2_VSX23pP%MgAd@Nu zy0nye0Np_v`*$Qz3q1h%<^^v7*c+XwZdk#{On07_aX^2k`uj2On)alm5N=8;2wVoN z)?MXw+b_k#Q0>t+6EQIQEk-HZ{NbPqYKY*e^c%J8^D6@$tH;kB3_)E>iY?MKV?0IC z*XON?{z<5oJCEpWq}+0SP^c?W^iNMoSy)o;BSV5M#lSABd`?SSZIBAz%l)gu0QI+G zKq8k#B$R6-pKcEF0;^cHI0^jK*&(Es`j99;gKKg)^0n@ zoy1Sz6H7+DzU|vHYq7G9$@#%jj#GEb9bwQ$7(+n-XXg#+X;C{uZ0LgXE4YWpV{xVB zks3Wuj=2mjrLU^v;Nt))UJ?LQ*|R=Cd}{oc>K71aO=_s4sLi-%CY5 zXz%Ka) z;hhv0ml`iK`v<-^ZeKS@)$uyKZofX6R5c+r+${=dx$Z!Ay2x?!@9~JU*zptK0&Lj& zM}qr*D%C=H3HoIDUd|am-M`O8+dod8Z@lSX$qjrG&(pNDWdSM7 zVLAZx%>*y!*sg1@Rj&?L{s=aWw=STq3{dJI721St4)?g;Wm+C1$M#VerBE~C3BX867QFI!Imu;Jwe}t6Zq!4jWVY?oF44gHE<2rE)l%*DsB4o+$@;J z;?uu8OEKhLSe-jjOF1(1GESuXol6v23AP!En1tg|IMFIm84r6azB|+lr&_ z3)a47NGjfX&oKxnQUtgAuG+V1f_hi|N|o=y6|WjQ0{TIa@9HPBnhwP<05c^k67i5+ zzYImrMlD*-%f!7r{q>1;68g>D`l$;&v(@Vdh`p#Dwqi$0 z;H4}sNeMqYBwK3`%|q_m%IvSfTtPlK3$y%NM$J*uA9p;PsTze+Ktb%WN=Q^Z557{3 zsIfVsVNqVZZbF9S=QiLPT@Pmpuv zxpXDkPN81oU9^lv=+tt2P(Gtod^M>7ojQ^zngmO-<)*23jO-$W&OhwXVbYk-ab(;* zW%oKsUepBm4*xoPa}uDD;PP4hbfM}4zl$URrW#4NSSsTAeOT6%8o^$k?#{QaglD+S z+%Wh^@Q@lVenAA&KxY#o#Et#a3Y{WzZ!L#no{Lczr84E4a%GDlK1|JSjR$bE!-hf6 zb-2ZAbxNXq)Z2t#C__|*##X

30OtY!p$ZjDQ5eeBy$2x+=2J(g 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ⅆJ1En-IGL-Eeg1{2ZAf@sL#`6V~(b%OQ%Zjc3V}$>u3@)~2t#p9$!i z)|U#)&<@va6Gh0byy=BxyCT&lhG7~Ztv$?X>00bq253Z0c8f zB9UQI<24s5%PC#8PYljCgC2cbV0V{3wzXg`wK?qGr+Wwr-o0~RfsjQMSxaHqUyuwYc_kzP5l!Kol6HKjs&}^yuI_? zx!YBI{sD|PjI_L=CDghzxZaA${w9|T$u)WC{h66pNXTs^*gx)wes+1lX2okj@G zB%Ge6@4u>g+Qu?`WRp*ZTkyBQsb%I%q?dL9$ecIw-V)WIx!+>Z)0>4_9~M)kd7-J&#Ub81&(6 z+qqzhi#ulb?yTea`dEy3$f_rcRS^o2yLI4H#`P)F$!PH{Ug{^#S%hfVoO|Bebo)B% zD*I^H9Hc%t?ay4DCW%eA)aBlJult7!@S#)tEb!!QGP2%NUXNTWo%^tKze(wROeucb znWnzZ8$Z@|_v?fxpG~nXnVfb~f!rDNA%s=MJuGifMV>Nv5})Ib+!K>##_lMwlEBOs z5$F;64p2$c2ZZ}w!48p^`Y~&_{S`p`?!c%7QRM#_I8a>wr9&UuBY9^jz z1nh@tAp8*V9knwUq~ZG_Y@wLdEUL4B*;@tR7?#r7F6eM9myMmz2b9Q3&P zoWY?6wRXIBa-$>PpPnsrxA@*an$GzY6o56GTobB)`pDPda`QIt-R%tC?kmC*(AIl1 zubaGlRnUbg`3D=md7EW{jZpnUvt~=cI~$+O4i^GoSQ5>I&B!cPqD41Oj+Pa+{7H=V z-yF!kRqzZW!kvR_ZDYRJR-}vVTU*+PBO2m;@r?$nvo^b4Pm#jV^qsdHJ{>fhkD+9T zX`#1WhOHQ{7zBaI-^%WI%f`)TC+8?AyBQt56@7d6FG*c!h8C)g6rz3C zNG&lqa>v6wPLjrr)lJ?K{ ztu(?2LdGfVu#MQl2t|xDk}9fyF=bs!+IEIzDO?@P#=8>xS^{AB9N$qAclM|{-_m+0 z4RONg(JQ0Mkn@gJBe5FO;|=%jK~Yl{tXNH?zmLVBWo>lkew=;qS9^8!yn=(}9S`lF zevR9v-vG@nu+pyjF19eALay0k2_^I9k%tmbgZ7A()+2~>Sj;+-7~1q0bO`6L&WDWa zfWKnMI;q;m*U4wg;CG=G#3~#?X(NAhvC#I4CmwJj~XTl%I9O5h4NR+yB=buDRJi@H+dfI zEIBOmb-_7b?)2()elZye{!ASl@lL!kwJQQrZ`bOl@u(n5fqN$tjErWoQi_?7mqBk8 zj+84`7ia0rR<%r9`W55{S4MaT6oBiRb+j_#Lv-=3JFZpTn8STyrzWugjbj}?)<=%O z%hE_P(JgZW3X?PIZg9#`_7QG3<)!w*c8T$y+MF|!qb+O}v5?vOkHN;dE+2k}L4&`- zV7i#z|H45IRg0WQg;-u(UB3ByS>)!`7Jlt;s!4AD3e26$nEV@`lA^11;>P(t`)+%b zJ$}JsACsk(X##xa{W`Y`Brp%?ejk8uYiFHkKTh3R9OVtxC!9OsSAkWHzsxmx=Qz^E zS{))2B&)PPRqqN{dDHSSO6cKbFePDHDUQ7^pT6Up79F@ch>^sI;KoF4KAxfD-XT;O zXISX%=W)qJ5@LfS8Z%SP;ByVDAmC7n8`6t^>ERla#H4AuVS0gOVjg5Cc|N(Qb6Z`X z*f_wm3CkZ8NEe1cb<=H}=~h}Y>BD<#XJs7gtsz^m1R1gQC=aiw7}@wdXaAd8Y>>K~ z^Qc*3ZC{1)xa|a&DvUTgPZo9KKQ%AeJ9gztHR%g`8Vv0zQw=b|buf$oedPg)TUfy| zKr9h)vjyB<1#xqe;BV9W5|Ev*r|CJ`1k&uX=+}raGm0u8uYCmHb=sxc6~*deRh?{m zeWT-UkZ5dQJJem*h3K#7$_~m%5f5g}g-;%3mC;E_p zZ$wN}ZhQdpTk5oe_<#bn6Wtkt{CP^embpth=jH6{xxT(r8cbR^K6y>ht30|PXxj2V z{}5FStk5YdKTQZcui0^CDx&ma-|Q(zyNRmVi`RcnS)vK`S&cW@s)oZS51(zz(^?zk zXAoC0^fhEPnKuq?5e*&fOmHc6G6OoL!P7+_u*|Jt$Il6lYdl|aUn3mPsL**czmCgG zUtT3kgI?X)jxC#9NSM7D=~Om;tt^7E^1yj?Q)m&a_OYjfmwJnln!tirSr>6vv^nv$ z3pd8LSO2OCfOjNfB^`q_e=)!EFXF%$;mNVYJt5DBz-b65>oTH@o8PG~y}@OdzOeN_ z6oV04&o6ukd9;ZaQv%EB4gd(yt_TUj;#d23?lj~s+JzU}Xw{o`ukQ2^GLxQKRNOa? zIB_{j$Jiz$5FgW+JFvow3j7`-Aol^!t52oNUpq1aptuF*%1Uw`Fdwr^9&y#p*L9~t zX2b~vY&!?I2bgnKc3B*x6Qj>~1gu-9z0Ic#2`~zFcU{&R-$$q*SEtYFP-|Q4AG*#E zYkm3S>Lb<-S%Jy2CHp?O^|nBM25Y^7j@V@4)=)xg>F{7ZhNrePy{ga5xH{T%IbiuZ z@kCO68suKGYM!(wf2t3;Y*SZm9Cd%Tzhcl9CObSmxA=k}5cSX0xg1NB_t|11rIOH& zV#KY2d}pPij@vnrnv5N&sZWh4&ByxOPEj_!&p+eG@|iTc7C~MZt?ehq@oO$B@NZT!GOS?)MuHuh8Ett8=qLb^Mp%g zb)QXD`!dA$-g^LFcm~^(DjdHqIM#$OeN;Xy8aPk8=VGtraJ>$#fLk(ljtpvZiz>cW zh>M1b-l(g=n}@%350eFS@)t?NACY#)ag}K>x6^4B4fB+o<+L?H_>-EeP(zt?>7dIz zeJjLM_|sQk*Tn(%p1%cL7jQ2e#0;2M{`gIihI2&Zsk1*c-@nDBMPG+S%R$aFQ;jDz z){vb|+B{9D@-(~l7VY8f-mvYy4@Bh5t9LV<_Z@%lF1z=GzQ!tPs&?a_+h_t_J>IFw z_*>lhS;OA_%HNe-7!mJSlAO)ACM8T$d7)Tw!us!h;}xutyQu2)9R5TOLj~!Uh=c4H zOul@{Z<5R0FGmZx6(pMu2{MU~eYjaKKkHMne4!>Hb$y`@1}J|j8|k7ZA&jMZ$L4Zm zH2!shAz{ymuS9XvzHe;sp~GvVD%M;}41frN;+fhXYGWOXJ25<#$JvI3f&hLb{3A<+JT*>Z=(I- z0#0vDVvT6HO&>4Oy6)w`-YA=I>44742%Fm0W%vt=J>#GF>F_$YjKfJo!7$=LO)a)G z?$8^%EwymCSw^yC1b~z~^EU0h>)H@RViwK#d!#nEM*pbje@&|*(Ve>Pa|%OjQBPY0 z3s_-IMD>ZP5(ZTEoN+yQ5nnWzr$)Tg4oC*INIS7GEn>?ZOs+zFQO$f4K`G?k%32ki z=FLPJ@=Bc7pe3}Gwt7{;wc;0Rn2uL`ug2%xiYt75IAz0&@OzC$1!6b_mClL~{H_sOyWVlUo@K8p+zlmJ$y(3Kr3-H~HnBOv=@ojPDg< zL)x?M3;Zr4TwZGkx?3~|pGdOM&N1`rl}H4Z-L5KxXxB%6t`N8r5u%tJQ+Os|>Re`I z_}j)KD8g9LrM-}kCN&y?j!`+qs;<+=rmWcbx~wMpi@rP;Ffcf#@IE)|qsIegPM20W zBUbQKD=+MA%@6-FO7bocl8rKu)fUT^=1BzZb&DVrLtYUSyZnRp;ms~Xmke1smR-%6 zc}4pUxYm(TC7&sXoVPX1Ogi0?52utd-V%DW)Pf3&))8eYTDuNRdHm63!`Tv9nAPTC zp?RF&c-pYk-@)S%U3Dc9T3egacZyvKz0hOOZc;}__Q@GjN*NHicUy?ouA;!s#oPp) zhGdksjw?6UA|)hv6TVW1jaMM(3+IB zZ|n9=6Crh731iAL-Aem~JC9AdvM#nnPPokmWAx~eG6y^jdD|vtCxvHiTf=+O+R9o7 zJz7a^vDNJ0K-0^tsdx2~V~8%#&g`)V=JgML@4CA$l1Bckzj^mVobYO_*JB`AFJouQ zoh$oCT#w5$QnJ72l_HZ{%KNB)Rthy5^A$FnSg9f6U_TW7L%J&Mf$TH#C086&KybLx z)yH$Z|AKd~)Ewnf4IPUK5s)(#McKXz`Rl#YQLm>~jhX4G8FW4yM%?gk@4!79$u_;JF zw$S6N$#-+xb1sFh5zFJj5@kPfeJ_Q!1z&_W-=|wb6W+FPIdiAKevt$??qF4Sk;Qs?Ar@cw=f5zKvsNs4VZpQ`9+BA9DHyfEf}Bp2^NzZ~)jh zKv{cWw)y&5jW3N4_Sz^WZcw_QbZzKlOEppHVk?UFaZ~B!(yG?5=v&|KDn-pstboNn zZ`{(n*cj0pVg54CQSGl7VY~akrNm{&al}gp^fot^S}fl$l{eBpbqC7gL+B!kZ~HAuDlWA|y}_!w8aZZ$u7 z%H%VtAl6xr8yd|HVQ1sE%0J&{?a({k2X!9H8@$_hMaJUbmddB4&XUfZ)j{-To0{g>YC z&!a$CW>9e9xtR4@Yi|V9MLSy)}k@!8gSa0W%u80&yCAC1gJ=nOkFh9Suf;u?#QI1BiY&=(Z<++L2 zAj^THO~iSCebq53j7Pwsj?Iy4xZa%UFVbZLd6qfP7d- z?5RrPAY`Jf?Cuv)h=4xy!FLh z$!4^%;clzlD|`cSTJzyrFt26#R%mZgLkhagaooc#l|F^*H+M4!I#PLef>dEj&go;K zSs}M*kaKlt9LM6mK(&PvmJumi7lZ-^+ISp|;5Bmsg-2oazQ<n91?vu9raN!hEym zL&OiTYGKJ})LUWuPI8N%zYV!D<8~?c=$#EGw$b*_>n^4?hW3W0R_{qIs#O}7G_G$_ z0Q?D;Z8ZO*%@5*u)~AZsm@-=SQ42zBw#V*B&6Z~F$?yXGcy3YSY1v<#6?%vRY|B*M zI1&Gnu%=w2sHP(v5E$}e{4L()=3{~=*)!41T?UOxSLsR~vGlo5(1@RI9f0$2$3^8% zu_r6LBm*;_&zqC^gcFih;6m2$6}NzSl=hp zh$nCggYU;)g{`AZSI-#sac7AEXT|Ar8FAXV>=Xxs;4gA`=PPb1ED;BiN}aZBOAo|{ zlNOgSt$6WjV*afdS|4)dspkTY&8g}>d&;-{U8j-XviqD_N#{BvM6LGO5g+mo{$hWT zwtK%tGa>Gw{S~5blxi*hOi81EmrGr3v?H84)J!^?iM@H{V;LrBg2+6gfD+!F;X@kIk zuzV&U+BaI6?HsW?ZgsHS+R@0}s7Z3)H+W81L24O6K!175@wumAy=#~OnSa#o zHK~m47HCk(>UVz(0B^dI;Anp?rGea?)e`gHiXM1d%Jh~Ly1_( zL3}w+1idXP1!>9hoehp(&sO)agBL6Wp>ly1zV;2unEcTVgaL%#|QtS@48Yj_@*oFE$oHERW@!uTIB?!NG z8h)z*fK07Ijw@tZZR*{WWf$KWZp3~|pDGH%sS>dO&a1@AQ>G)Rtin*d#d4lYnv)rl2gXXn=PP!E*J$ihOHUE&AVP{4VC%9cXG9!4eewxfOY(b?l z*R|*cc)tjAOWBx6EAn{}fE!uSj6=c52$_Em@EV$2cI{~kz6BP?cv?qUMt;_nq>B@~#X#b$Q#qkH&( zuih>we8S>*w-SS(TnT59?Zn2f*_c420~ugK{WNe=mZrHnrl-O zf)OQQ`MV^n$NqZUReMCNQ7Au;+qq5-Qpd8CpPqJSyebsfDNpG`CKUzd8tq+V|ChCZ zlo&8KIPBoqjq+KyVi21<$r`!yXZ|QlCz^9Y7zF+BJZNVJf*lNqyOq?US4N?WSNBq9 zThkTxF-IQ!m|YXZ0`lyA2FG!2bIl?F=3nl+IA^!j1P?D=VP=W$2``Zw->4)oSl-cu z21@?P!a1mWuF4CS4C@$tJE`))Ct&c{Ao*5~BS+e;Ss! z&b*O0#~na8OmstaHbl-kBsa`BT>a3=pJ`PaIVGPxzq&NoqMT~s1p~93YLbxXG6Fat z*GAMkQ*z0>(qN0da>D#%BZc8TV#^$QQ9#U@M->0nl{2+r+fFrHjR}^eZP@NC2k&a+ zoVAGevGlfM$6mG@FI{t-$Z+o#afxyVKf*)HV0a#ku;M@h!$!Vi2A z;#$u}Vw{CA1?ULLo6fWi#_kZsV5oc_{E|Cq>@+#zRmMut;Hl8^uoj2_mRn9RHuV7|P${jCItz~IKaCTaAYrHFu z5%a7m)g~GA>L8_BSDeBgrgeP015s40!Eb#h&QjB_X z4)^5a&@g#00Ir@VAcvayfiGr9izD#27F)&rmec`a0G;0QU zJ_WI8*_m^Q{>8vEXk_AX&bJ#A{@81wHT^Jnp4Ac5l%rNcA(s;1J^AB%;dq*bN**AW zE>sDUm5h-@^+5P(=uT5fWXTEscj$Yl!PP_3ilgK+xFd}h%`O)LuGy4_lwBJA7LgN( zq%^P0U8MZl02fZmQ$hg_o1%XuHU4<5Ib5?OhsQJykoB$LuoT$rrs}s~a)Q z)OB9F{A37!O*r}_ zKH(L#d#GU<5SC)V04Fa;-fG9nyd9<#2U?gxnOofr&Ux3@$71p}$Jf5hT9|UAoXVK9 zhI&?WX%&Icn_0ZX-Cu*T5iSP8!^!onQ2K!0&!Q|LvBuf~J(x0le}-<&pHgCm(MUV0 zm8YR>V*H$&h5nC((95+SacFJDBJQ{SyHHWZW1K@lHALO)zz24f@Z-{zKCT}ObkS0+ z$_E4pVJOtG`qtUm)g$0Q{Q472a7E+)<3QBf-OZRiQv9(^jIYW|7kL+8#aQ>Hgmj?i zrGyCjS6>^{-N{lAL-9xC$|2?Gsg#HuFp`?Ou*>HkE&!?h<*{3(*M&f&(}uTr9+Hw7 z+)T|ipX1M=(F>v==owETWjm8tfbC@X#C6u~v~ewFpsVz){$g6#tXIERfDL1%dZ|lP zRUSbuQjiVAVvMxRzA}48xiFur(C2O^R@d<`n_&!WAK&zTKRT;xa0AMG!?QVmTS%m4`Pm z&uenw`gqUTXkDkT@%;4Ic@I-Y_(P_jZ;e>`pimL^dHSYZEEb zAS7&|63wk_K?qrh%DNhtKkUPjBWNd;z1eTObV~fCTp513?j{{^rV8nW-t0;6DqC7~ zsRQAxJcQqzW!J*2z?hWR!7CC>7xmRz3<_|N$zYO*P|p}j&pqd$YM{ay-q}vnxF00s z1OyPtC2J2)z{Uk(=0FtdmuHk9Yqe{BhZrhCq|Ar^a%*_Wk1a5CXDR1wy+Gl$Z5HPw zVX=!e8Qz}}z`eWe<9FC&Z$~k>*&NAY&63^Ka^M&H;OAZbyNC@_uzF`;Y!MuwSZB)I z7&+9H&XtZNxm}kZ?i1Q1Q*);Q4rXx4#3&DKq8)dH67dp(hadfvD4P9=hTXg~pQ^59 zc$ng|X$6%-eY}q_-bsr~aR(_sozL-OEW1Y1>O!WjP=tPtuCFP&aLn$LgTf{ zxf#I9BrM)c0#43+js5a^)kQU9+=Cf(sF?RF@Tk6mz*yCRpVa!LoRe#vm=t;S z_LA`>oj;3J#A@ke;$kyLY=_|EEUZD~=y6uCL$E?1E?6Uw7F_#7usP>G_=G;s513h? zU;lfdfXWu6GIw+ns@%iLkq>+l0y4T7qdDgOc9-*Nvo37fzX(rLbNF8_^(Alju46a zz)Z{KyGO4>w#$^1=%ys!ColStyXD%Qk+s}f{2e}*G{^00`l(wpyxvch>sLA0&HD!9 z+gLpHu?)7$Ro1(aS#Uw2m;c!^qVyJE7*j4a+(0{*^4o;Gwl)InG|gw*ExsT_q4q65 zUwr`~7)SWCk5c$oy_OVezOVMfSC75$DfH4{be#h%SKux3@qA?bD{LF(5fI1ju6MS@ zwfTP(`BHue!%f;J?@H0jhiwJ2*nc}0UkhQ@TBy9U3nJBnU)GX_+t1jL&!LHf z2u??evlzU&B+iJ^LC@uMm-Kyf?V7L`gIko-Uk-8s$BJWMj1zvw^2|g+(4y+8H>u7# z@C>03dXdVlrTVbXiGb8W`_i^S<;F#EqT8Mmop62ipp{vJT&sT@A6D{)B(7Hj$b zX}CsO^AS)GW8B_0e?<3>qS3-E zvcD9YBu`@x1X}h_014T}g?vwgyyYA$C&xZbl>RB``U7cSkB#rM^hzo4q*6bYM1@s4 z7hJYjdpS(eD$+3U%jWktW3Np|+&98fF<^vF+25|(9=Pyib9%hx+~n!EMrulzXMQ~y zXj|Tfh|ILs(f)BjL;i9=Q?W9w?OGEVQT0i-GxraLNWp0|^K{EcpkKzE!9+K9?~gx1 zF&yFKrR*sW;2?OP5akx+xUC9a1+h2mZmiQSLNR<&MH0rNCvo(nj6;QMfBcfa=DD$Q z4}{@}K2>Bw>n8=oK$ujhs#~z&=xo*Nfz7vNb;Og7Ofs zU4y!hV7WWC%YY79IV@a5+6vXMrV0$8D z9zAwCBJ&pLf%*r6DR4hlbt@yyfr4y2snl_7=Az8egEqx&u&2B`; zJbr>koDnczc?V;ziGr+b0|bN5tj5@r7g~?HWN<{Ee#A^eL_U1h^)g$8@>JyZ%VI>8 z#1JscQ1${Xe$hb~I}k>h4HE!>rVLJibK~+jF7rT=npF*0U9B5uMCf7QU@!&WO!S!x zVh{^MM2-+Iu!1S9zafCGb#q3s}45h+o$7Q^+ zQ?tZ5e-Vjam(0l{_wmLo1((ByM8f5kN4i5jL)nWS=_0KE9=B`(7 z2b0=;!FJ(sj$44qf@OHda{B|r&VitBXIn(FjR_GfA!3Idf^lBMkXK}wB8~JdFcGJU z$PxbjqU=&7YJ-vk@28*}>4Kh^R7) zh9=MGhN>L$>~TAmvv!)tfQ%%t$GpCAa+K@4hRK?VoK+U(>B&kjkeKYGnP4NX7|ix-((6%K(k);v#7@7j8TG_)M3Ci?Ub zf=^#vqGDIO#iUMSugH!_;o;xQ<$zgmyvW07<*R?Z7A@66#&}oedfWm><|PlNz`0cu zVN_J`0*#K{oZP@$e3Cl1e6QiKq|CreZ?uxsW*^)}uCG_K+$;d$WP^&Ew?^CHc7FqQ z#HiY5bkb(YNJFy7!?N(wh3#Um4B9K%tHH0tb^m)}A&RAYuct4Du243q;u5h46+%&DM}B*sSCgVVO4-1C*)3qPM+kvH9{I2RvGHoN2( zoR2PO|2ccC#QbMx@W7k^f2l2MNBml5kDwJb`R7tX&1}6&`&aZu-sL*9DIxFPFQ3N9 zYAL3*(60nN2F>2x{uQ?5&bx>%CNC-T=9oVvt>vfm&2So1iWW~N@0?f7wSsEI^gfO_{l$p+&372AdD zB`{}j4Kw6J)enVx7nFgSEe*@lT}ICf$Aq7SPlQ-QVS+7~xi!Qq5*;>rpWT`B=$v}` zzolXz=shGr?-5Ie0{iRmA1j(OQeyeodLby2M#&9xFa=4V$K#1S8Hus~ z4-J;l|JGnNIp9J!(G70_TOxD@c)$zqfEiSyzy-BJ@Noi`Epqwsq{HlE(mJqnlfdn3 z-_qtki#Ll6_GTt2+|CzZd3J}k0~4k9%A*Oq{mbt24L=e_=Zj1aX+{?2mXIv=M#)Y6 zzHA%D|7lhD+0hG61p@)LxF^1Td7RKOMhg3JepIf&bMQe{%C*rnm_gj{q~p zAYWaEbe($p$-~V_;c5|63gm|-;I%f7WDiXC=)L{7RN0to1Wki& z=`rF7tA5e2ABt$$3c|a>S84*I+~GAre9@AHyT6t!6dQ{?Qg;vUd|y)4gvLxYC$Z*?(h1CG1`<+98Ei7E6 zofvS}Swr_XIH&nj8T_fGqO#z*x!p9n`kRv}fQ^QQ4Fjt{c)d}I(VX`3A7x&sO|wf0 z-{JV;d%l(touNQR?kBi?GT&TLiDapyNd^;PZdp)c;%YdAd8`683xh zoS;PXgnx(-=Mjr4?xwbZ(8dsboEXY!tGTMP^_adqZAqTDcB><>Lo5qeS{UX@$b%5& z|6d_WxAOW%as9gq?45|OKbW7ZDr1__KYZZiBZ^yB);qoN{(`upvHA|>?yEK-;&PtJe}CsbNo zKgK=@m|98!J7&nEG47EFaWRyjD(AAvHuTXgV3Fbx(hgCHKIh+TeF+#7iz58dhl--y z^~(2 z1HX@d5P%dTcFOg(meY<+s4yz97bFY+b5et;J|It%Hk45Q<$)9|GK<|~x_8;&>3<$M zFx-5q^?E+s6$>0N(F2gHMRHV zNs7|>>0*k{Mb>=u`WFjR;OG9GUV$r`&MRO&@P7N~uSKZfq}5=Pz^9G0eOzq+Zbjkw30Q;3Cw>h5S(qeL6_RkW12UbL(mIA;QniuZ^e=v(^+ecO#V5;>wtf6yhiezWN=!XNkXauYwe<=I)&(ueqzbo+I?=JVVVUoi-xI#K zeV54|l}YrzDOTGrh1oC@l17dBufYDRiszZ&S+F-azATKK466$>de=5M8w|S{`7}iN5K0Ins z)h6;KF3#I(sx_=Mzj93ZK?^J%n8OKDd3wK3_MqrwEpd~3`Y}>^zfbfeH({5^#F4yH z<5Wf{>?E!Yd(F80y|z1!D2en{eblZ}etE-3p4uF_0Rrl-gr$8y<;-Y3{;Tytfc&c} z0FI`WJ!l^L+QOU&Ki2)Z`{#jw?$a^RPX&udB{$2w-D>+wudjOP0zi<=B;88tkectV zeFo6XKbdk2b1k9wz@D^^oKO3uf-cuNHoMF!g6Q>6=88J1Q?Q|a=YMRV2DLuX6vy4< z_d5?iSo|wx=?E2F`f4?PXGfYnSg*2AxT)0h3%Y_$b>9Sbf!`1g8i2)2qFi-R6h}P4 zPJ->27e(J;oaHuA&8NE@_?v+{wQQ5AL$7{x_bpg>BmLLHo4!AdR&$~Vhm*`V(o}Al z&EJW{GenO5f!wN(djQBpl{Dp=fEe}9k0>!{w=fM9K_na3Fg@ysS(%$eul|=W zVAv)a30~T#7rq=K00y%W%Kxzdw`*)+^6&EUi8Oi=`T3o==nZPhf+spK zZFv6Elv=^gb~9em(&|+vW`+IQ*=|2rIBg5OH5gkFej-bqEsl$P?ls*2r(*5vW$?ODcg+Q zV2s($d9Ja9`}=*K=k@&c`{!w1^@=6hm$@)%&;+qLH>KZTDo@CkVSBJ6Uh4bi{nRZS>d&3WWXAYm#D zK#HedMs+@I5Dvf4+gx(yLY8x+fm4=fPR19l3w0r+YiMZQGXRolOk&e*c^cBPI%nw1 z5{h3^HdzfY?E?Gr8;<}qq-$Tgc-SbDR}FMgkUr>#9wrG+vo8~x;$$`UAgl5PVQB@Y zO5Rmv>CAWrKX4{2Pe2QD?_q3>!?(q|kA9>Ooq+L4KCdf66*x|)zCgBoAHvVt(#k;H zMAW4PM`|eg!MU553=pi!7BnLO8=@uH8FbT@J|V@0H8Y-T!f%Mk`d47;&nAx4V4eya zJN{L$cR}>L=^gX;g%&Q^Tf$EroMZ3BfxTZ?k-Kto9*eKBFOUbDF()`2HJrdmJZlT-m{Bm#hnEjff>veZqSnIEViq zPdHaTxz*l@(+jt18*Y&I?g?RIPE(g5~+}!P9iYm+(B3W1j-u zMTK!&8)ZF}Lu=#_hp|!_jJPk7$~MxE#IksA%1u*H!Qcv)+u{mbz%hTAl(1M9@?T00 z@bcWwXEWN#7NMsOf_1WAfc*^*2(Ulu8G0*p91h{B^4dT0b{a1QZHTDyD|w)T>mOgF z9w#7Z9+hg_GnoH2yN?;SXjGrywZf|-J0B{048G#~N*u>LX(xSO1m1w<^|+6lp05-% z6qzTix3#eax#+mwbzsYfumqBbd6~Z|(og|u3h^IPnr-vlTL_pyFhZ_K4(L2x|w zdFn)MK!5Z_R(mQhf7%(K*0=xWdVtlUd>j=(%|$h6Nki&-u=-NDlsBwAqmiX(UJi(& z3)}h~>$Y1jlJr5{q3ys4=MI>T;;F)*xhxj+E_RWdVv0gWy{a=i5D-*zA&-=+5*r*| zvm@$sGF^|y3h~__ZckS(*5h=#%k>X->o)&AggwuvjjqB}X|@?8G>(_%2RbP<7<`cx z_j`J+E_3-S@_3=^HFOQQ%>c;)z-58*fds@2>?L}X5~@ETE6);!UB(6vM`RJHP-6B7 zhu@V$+hCX9+x8cr(xpSRXGT#<<~(X{!hU*6!a?stWJ3Gb&jn_uX@-_e*E%Bknt9)X zjXd%$I6X-hkxaQ-;i~tVV;RlKh&wup3~&)v*SD_uKNe3N_-ut?daU@t z)S>a4M8~WPZaeLfk5c0Xuq6#TUFaszQGq>Q;ayh}rPcNoVoSQx3d(QryE+D)cKpatuGnvGJX-Et^g~j`eX=|^8N-PQrB@+VLdQjdgP@q(k3|%Z-P*P5P@7d@b`#;d0y~G8 z^wXAbSXl?R2=eF|%xXn=U1Gtf%X6_#AF^pK{(H+s$BatTV%fjay3o{*RNm)=fPEA= z%H##jzT4%($B)}b8xCr*amQY(W;I-Ev|I7^2sxs?`g1`h=ohE!C_>a?(WHZ1k5XmY zo;;MO(5woBMkBKaW6;gKTpCR7!sc-h?ZdB0zdw9B*1?ACOGdcoIMH37`0f2LjrPW5 z*Mxs_o&Xb^>aCeWY5P^LcUVxsFQb`(U2cTmY2~Z%?gt%7~VH3;GbN#}w@?|$7 z-WfMN&<*f7!s-3>Y2?r&({h}0gDqh&PVyB69zNhmZelgbH-RO>JxBP!{((ekn51<* zbh%&&MSOLCD`nMwqU}uZXCf|((PAB`vao}~+~j}m+u!#C(p7Xk?O%HRqL3LcH+^AM z@N2=no)}Rw)k*^0v~KE+;IX&dMx0Z|9R&XvkKoUZWp|O-K2-bs&f&OyZY+{YhkDwQ zv~|b>=6O-!qefq3dUZS<-MW!&f>oa;ZwQGKW>vhKuu|4i@@5qg* zJGpOb=zK;WNNId{()7#mpWPE6b>sc{Po3=(;_dI|*_zs5PU<~S!3pJLxm=Y@Q_yk% zeHzgps9L>ZryV=x-O9V_>&7tpK~Y{IMl2sEp8Cyo)TIkK9H(;O938C=O43i7{kiim z(>H26T{n+=w+qdRGTqC{?NKk!(jHh){&a9WqKlXJrq5L(d9~>@=6v<_H7K{az-hV< z-&gg$Pw56B*OU`Omni3_Hdvm_qGlWvy4ZUss)K8`>UP%aEl1pCFNrC6S`2fm24v30 zN(5Emajp8_gFf1lAEFcTyso1z3pFa!a$G(%px=i2f{}bxn(@lbVbt}Sw;yQ*pLEr+ zmx|1Fa{Hb_&OG#x&9o~IeOn47#p;L5p;5c$4KfZwo%!W(dXEseM(Q zHRAu5zU030&xa-LB{mE_>7v5~lW-S%ZqrNLOr)k@$%6I~vs4(*Fmq-`;Wq|O^n{0d z_4@Ui8_(~yuKcAyH1=Vg?7Y0=@0$bJw9Gar!q}lswk<#QV{s;{i$&hY%0B@WH=cO> zw8lgH2Q}(OYB_&t3{jrA`MEXgS%1qRw~`%e6{$M?BBSH6_7y4q8QgHSl)rf;oBj*x15ga!8Q|ozuleka*P(`Khez{Pb>vHA2*aMm2 zj?jq|u6{zSPCdTI>rMHOJd+L$&O)4@>NJw}UI6g7@*LtxqS!g`1 zEPN-+J)V$0X41{JA!3}bX%`RkRJC9H+FVDJE*o_v^r|;wsX_O4NMgP@?)cdidgrPb zR%)QS_^bM-xE()mFW$hkd|2aRfPvk+pULKfDK)X?Hczsz_3ZQLAo%9}b>40eg>|?# zppGLnN|~7L`ulFK85B2kk=-(!?IdnSp?U(j4=<%+>FHh9^MpRz3sjJ5xKzlaIr4K(oOPnH((`{(P|~CK@2w-|OFEMRmdC|5vfI^|2Mtj~;1dYP0;Q3P-aK>M?!Ee{ou*Q8 z1G#};7BsNxgB^3>%+cF4F3BeuEzp2z*N|uF;++A?n!}pvCMd#4&T89WJS#z#ZY*r1;46<Dr@X-0?Vu#HDXyYRSD<&Suc|YEs$>dT53h zJ&5h|`PmvY?vuYSqcGpu?o0)0oD6#J#^h_Sk{SJh@5wf3yKm>N-_7SBS)-?W&S6yd zKPM<@JZ^F8R_E$C9#_PCw4f=SY0`&>c}ajEDhyLQkl*NE&@a+2B!~iSnxs*8qfQ!^ z1iBmFf0beIcqSwzisv0>zTHy-9v)w^;L-q+58KSQO3c|3v}@;y-NjOz_zuEDKi|{o zXQj%sdpjFB{Yr(0=xiJ-%-~fQN4`eKi5j1oW?MXfX7b{DE?@%HoK%`l8JUj`QeBP( zHbKRpZ<Tx#C_BTvRrXflf z1~N5_ey0p(JKj#s_cNB#G)sN9Zb>$+qzJDrJ6?aRd=(H)zC*NYTSrL!Ba&7^;lL4u zA4Y~yL+Byw5L8M-KNUo-mH65J7hjtJ@+15k2vitPNrm+|J%QbT;fS2tmOY@*a?pnz z7#&AkxkSF-M(mqC*Ip=Pi|Sf~;TM6P9*xDxdF6R7l&1;XzH8@pp0nxK17*_Has5gv zY9Dbn{6U3r9P95YojN2{9BJizDO=*^L!(w#c^!*}lL^M{Do#eKceU&Y}?51MfU>p!E7`Z%hAYBWR|zE#;G?h-qVK+<@giazbD0PWP~JhmI+;UtUG!5VpNU89eNgVi35MAN}R8>+x3` zypMIFvuxwx=F7nak}c3%62}sK`hd)B&yDx7SQ(E2be&F&8;YefmV5I%s#+TP%)1Dx zN&X{r`}+0kwdx^gWk-1Z@KaUpx)EYNe@6y2eoR&B2OiHr$M?paD`=`EaJEDjL0yg9 zv3zbWMA?qKxJ^K`;@eFa7zs2y;>486@qR)YWukf^%!`{6q$sXL3n>MuXPS)rp5N$< z+TId(CPb`AvKAg;1gE3q+%?X_`|$8j1;FVGRSNN?e$+`{nZm^tPj*~U5lztzkVntB z&%(Yy;sSqHU+Fw&;YXDnKR+|H>6qZhlJo zskT})w2d8NzTqc{K!;5_?jxZY9`yAsA`YgKX}BbjgKzD&d4_J@WkVrWV;8H%)KPwC zjdJAq!Mzv+#(6B;{Fe;{|JmrF)}n5?OQpp}b$_G3@2KdnLZNRD`_fyb9>>(vEt+qnKA zOGoV1z-}Sq7n>FX3)iOKcDYNk5GjK~kQ187;dh&4L&kImbMNVz&U$#?p=;@)p!Y-~ zgcdvfnsm~5&-3OHv1Cgj^&s8H@_4;|y*i@|ihKe159`TQqQTuRsSr6?ixnZNd~d08 zc@CxppXed3uwC|^6g{5y82l(ci63lW9hZ#nce6#}IJq4hIbM*|>ZVcbwLa%(J#x7n zy+v(kp1d^!^_61;dis>1yoqQs=QEiUgXG|LcI6uD6!bt2V>>THnG8skd)fvuVd$43 z9er6p2@>Za6F4>nw#ipqg}%qrJsOurle9_^f#Pk0KTx_!TNW;|qOL{EQ;1&;C7`sA z3NpyOE^$?K#0YhJXbBG=!cHN9`wiu>Dj7?r&$|a1M9?Ex7_@0zvQKILl@k0cA>lWA z<^Jb__Hnyqi@v?91bV}>A}cB2z^;&gjiW7@vY zqdOS3Ke2t;CKO^WF${JP>pR(0lc9LK#0nivI*E#vs*fTZ{f%~(=*4fBjZP+3pEp3Z zfAaP(`MtH)DE@+*;%}V}k>}$@8%X!IM!s?^c6tbV7hxZ6b3_92_RCxy3}|@HKiUB2 z!?}e7GY_*0B<^8l^N2;ex0J{IYqu&$FFsH*N|@M0qJvIz8!&TfKkK3#ErvpKkW;*? zKVlGGJRz&tD1PL5FHDl|22Q_iD&Qo)t?z*{1wr7xS5Yl*o1E?cvYNcJB#3 zB-_Kuj8CXw$;yL~GHq7oInM=i~%k>(_ay(o`>=>KyPk2n9D?MF)!&;4V?=2z4ywPmK zp8NNr$a)59*)nU2t8jF-iAspy@9L-ByaU0y3Xu5NYPV^|@lG$+>jx+*^$RnjO@_d4 z+^%7P&UZ1PO&ruq#wlHJRs0+xg=Snjc6aPVMC>BE-Lv=cG=uIfOh5RB`lhDFeX(A~ zftt107!CiYzq8$x)kzsxPMFGrod}}NXUeZ|pk?}HD<3#>ms+!@D}ri+R@}F<6P=Uk z%Pt)n30~=0!Ml;ePX8HTk&Me=#00+IxqV#=Ux$|d;C+0WBR8|v#zd*ksDWzv=_#n( z$Lbu|-f3!+V^nlFh`Ze+qu)U$b?5ik3y?59)0r?~;CW(b(fmW89hJ z#T@xnMq{7rm!(~$%ac@9FZ2_2U@hjFH5J5@o)QtOjsCo7*-|Ws?~KF=B9MWsLLaOF z4I7q99VF_NB%iXta4n@&UpQrK8N|`bEjCy?oS{R=IW~UAam!`K&~B zOuPJFmyFxr7iOL1;jy7TTzmrlDEm<}QxUFoAW3Vs)Wrtz>^&aXQLL(n(s{ujvfP7j zH|%1n-`C%nY2ty(y<{LM&;PrPlEnX~8_BDUtU2#&kCuG?mY*`}=(SZ|o%tqasbjX^_01?IZNA2o%SA3k zt{+<)19hcd{$X@g{Dls_Pv_uRj8m&kc<@F(fAK0hNV}Mj+rS=()F{-req)P(whK=@ zvpb&W!`7~%w=WQv>y|Ri7CF65u1g^&u|yjqlQsA*&C>uO`IU`zB7#c0mnI+|79IF*@p zC5Za;yh7xuNF(ofAJ-xO(N4q!FW>tAg2)Ck9q1N%m_?VQti~QarChZ@%NSKFMgEF$; zo#O4_#GcrIF?PlUVEDYkSze z>vT<`Rj_}BpuaVkCbVJ}RXmq4hUH^|t7to2W5bY#%=6gw5B$^Udt};AtVsy+r`C)= z3MWG)pKab4o2{#Y<@UKr&h=>OB?`-+4+0~wXUYhyE{;DCnc|{&_L;SONyVv9vm#%} zecSJ=c?!LZAgUwhn7m0+PJlL4lFlXYwhDA%mr#zIr4Fe8^}B66cAU4GxTwD`2%vqb7u zQ%o{Cx&lK~aUrDzOBnYnX?!U5_J~khWn{+lct;9enJ~7-w{{=LmeFF;kZ!fAdj)X0 z5~i}c!KU}TT60SQ6B)cPqscIH2E;WNLv(~3fWq@b;G41=;5ZV(TtSGxS*seR5rA0r zopWG4u{AM&dG0ky=h!g}%B-=o!o&dyx@SAU@fc`$?Om0h)r{FTKU~xMv`aSQN$yQ? zQ8KuALL|ag?)u$jd?{*FRNU-`R2UK?+^_4U9?9D zE6p+3j}(@anwb@mGP;4&3W-C~7R%CcF?DesuXI&@%1yXDr$hC0K&aj(D+Mv91$t?^ zdt}PS;^~ny0iPC#T-+H05H~aola0oUoEq$i24-iO#GGUZ0)#1J$%0U6Ud+H7BR4E5 zo>t12u7Z*!d1Kl8qC{-tBNSOggSO)9%X<+i{{8DV9&iY(h${$OS)mPy(`xh66tA?3 zA|6AU9n7TLs~ZV1jr~`-AQHef8_CEDXm}bjxG2Ln9Nh^ej%{=yrcrSeDy=boEPh}1 zxcr4`&Nv!@bNVry=GP>t_2TCdOw;o==O%8z`JcB*QMjyb2;;VMAj^)_KPW$@@>h@z ztQj+s(J&~VIVeT%2&k)rra@`FHmHesSmT=%-Qbd$R6IO*_02Pbnbi>6i4N+4Z-(_8JU9uf}E0q zOwT&aZEOVy$O7JUzL?X%y=<}l)6iUyGAT)`@os7{rq9&9m$o*Hr9R0;zw4$gU5A{yt`IrRvRy zxfpN#T<5w*Bv2?fX?ul za=OKZ_<{8vWb6R!SjTe4=Mk{H>ehTw4bD1Abd1Prd_vC6I5%Y~G`fZa6bEMF7`hW} z(yuh8*#&tI5#{)CjV~H0#=MS*uZ@rgkyL{ea?oRn@x8&V5LQULR_CV25;%t=sXcfK zR%3|=F)ZF8#zNZnA)d<`PeXY1WXhxwPZV}!GlW5mdBLGb^4;>e34xA_kf?&F=O9MA zqu)qbY_RZ^R{EAS1EHfBH;hnvv?CBsvkAZ+Tye5oU1@9; zA0I%fN!!jnuT9(6u69}2VNAh^-wf{7qA$M);;_PUP&-}sU*J7ohmGnjax%M$I8uni z=qMUR)}jj0fT{|{oz_^htgQLJ0Sr=^~(B6;|$_x0vi0|yJN&J3Lkx(MOdJ58!P?bAb)wfsYjrebf~$5 zb}5@%sM4fGUVFih*0A+lSnqAz?~8QW_Qxs@Za)azPd@ldGKm`4yZNgPsQUB_y%6iC zGVLVzDOdgZACVm7fzqrU%ncYw^AJS9-6ocYBs*|0;c;B6co;`}-)u|I=SZbQas7|c z3C0>g;fqOV9yuE!=d6?fD{+pWSB@h}X-5yJvihX8&2C&M3R>VT&42C}p5MOF#b0jd z@{fcCn+M!%V~B?h`sc~X{^On z6aI*W-O=v|(-qd)R~j6W*H9d5?*>V`nM*BUQ$mKlvf;(D7B*BaUB%nEG+Qa(J=E<3 z@6zKKgLcJIb|ODwUA458`5<}N4}_&fTkNR(EP)f9hKw0F_7ac?rc0jkI#yBvlA_3* zECdAY_=_zclzjMA+`-VH^$tF6J6k-i^@lz6o54bWJIQ)YbfhcLh2j=^=6_&kE-R1F-LPC zxysLra3a%>8ldwz^?c00+`?(8BlG61qaQnT;FJ#b@#2#w%Qb`mFTG?+OaqO3>m;OIE3oDs5ldk9{(KlNA3BjR&{ zBY#zIdVO9;1u++k%G%!2HQ-ywORZ10HUU$L`s@W?(&^th>tpy=7}`PYNvpqgZ)UBJxm~J_D{)O^$yC+tgIgT(PK8#{e3+q~ zT)ABj{NjYW*9gh_sTNOIFR)EcX$Fx%lEJ^;LKy=m_dbypqN#f6*e)Yil=R)NXu`wj zxAF{>hP@akz14S>uskvN&TlE89-T5s20&5lKAzm2gud>pAJ0$GNKU*5X+6 z(F^LP#4!)Mp8DGqcC8L)&@oRZ-(GCL*%G*p-SsEmk z>t3FAu=|;K>0VY;4VwHBYwZ;$$8?D#>=dV%CmaK>7m_WrR+~MMWjZy$F)^djgg?%%0ngeMIg52? z1)rO6B-JyFfe>~d*-DTjY$nJPKoA_vQ##{W0W!W+;cvtz=uOZO__`JQt1>vFLl~vw zR(0bs0t}w3PM9cdP$FI@7UWM?CMNuMT)G4~!8^!1!ZYAi@GgF0V;+IC+XhM_)nofq z*qev-drMHxw3d#5G-^G*Pi@Ridn|M;Hvt{JHbQss=G_?K+;E!9rs?|u0FgZn5J6n@ z62>~lP6hz1H)!}MG5Y7vpU={);cvW`)27yD z+UC-wQbr9@gO)C*|Lc2bNblbXPz%McVIpVT#RY%mH>T*4jrROeQd2jGj|%|s?-D_}qkH+6>d?dm5(+_TG|yuy z6Lj9{ZQ*wgMtZI3TR6G16PL^#9+W zPdnI4K)%feVM)R1kZLe@euDcK(Fpl$KN&+;kRwRLoi#iNcXtKn-2dS1kF20;e3Si0 zJ6k(3Lv190-Gv2P7lw64&|Od&5`w5A zI9MOPewbao449l-+I;<~fdX14JU6{tJd>^8xgfO38~mH(gMCPSi1neqB>8DVOHSxYN=Q^_h>qxYQ3~;s#v_EJgeit_C)` zT3gmdGG1UR&T$qVQe+?a^VDf8VcfPq#{DZO8aCmBTLQLS5z+=t88sL7NS)ozN?JZN zvyENKK~~L>TO`ZsVC2qeA)K)F-y>!zo_> z=X*T%x_@WH?6tPGn2I)^*ebD%pMd!gUZs)iC+xx{x`pp-JGXpYw9mAk1>Q;P{$&@$!Q6QI=gD1#(-^3`quR>O&o6po~}DSPFbE zYZoq^@Vzis1NZ~${E_&c8|udEitedjI?1QZWEO%1R+8i&paHrZXh9&DT3l=4hKT`Q z2r>v~{Xoo$lOQL>t7V?>1PgIK4?>n^jSnQmVcr4}4dDRK$s|pAkfcc)6rPSF*6kKq zISa{HTm5VJiR;hztSG?!n&@+V#s~DdW^?CFp8zK{=HH(?|2e}8GTAA>DYIv2^{t8d zofh;vpEW;l{{RY$-xQvN!nOD34iAt~$%xD{`v2hV6Lsqj4CwYA^VpuZeP(}fIg)&2 zoY9_ys-`A?{fhj8e9#X`579oPmr$7+viO89i^Y05VaUk505)m_J?y>nJMjT1FhcI_ zMo$mam&`vjEpN66Cn-Gd>+jE)l|%6y)-y~3QpeoYhlYGlNA7`F3o=6#1e(`Vw52JW zDxl_DOn#j)B{nhzy%;ua@T2Hjp^o6a_K>ca)ao-M1!IxPZYz-a` z+*COU&A{5m09g6s_OO17s~Q^zpxHX^WB$1Sek^~WM^b>Fa>K2=3+!p^@L73&X7E?_ z5BWfjoCEvjgqZAxwoXA!fP5N8Os9pq<-q+c_$X--06v+hEoM_9Icv^CC_R8>rl1AL z+w?(J*FxrC+f73=fl&jt$KJwIhsB=}%d%|+74xXVd4nM9bymTE9Y|U^$btPgRteGu z1rJ6p4~uq4J_NRS7i0nReo}$mn}%k%O|e+Ha(mSX{8|JU~@)F)T>3t6EfZ|N3APGp-U&KGWy znw43;>v781PS8}{PrG=+F3b~86cyGH9G0-ofj{MzJg>@%Un zA)AC~z~uZ5|8)qMoO4FV^guY5eub&ZAgg;e{G%Op0gq2vHEaKlq8zRYJQZ_H17I$R zLg5TD;G0j;a?l~zkM}!g*n1)#u|1fPo6MMq+_>q;n@IExT$2n!>V8=1m@2%Obx_A3 zbi)n|5FKS^ZKl#&g3t^9DcVtw9oFv%sC|a+5x64+&Z2D(S^GWy~fW^BR^ zup9d`;1rNlgVOszcG64qGxSDC7f|r~?51H_3JmPtG&B?N&ES60)2r8o_!r)Kc1FjL zreCQrSN$Gx^4CcNP=Zf@&iW)L={7?^x8DX1q&fbYg<657Y~}4e1c2WRlAW-gOXJHl z=p8DC3&ot|_np*=v^hBeCu;9_+KD+$gOPcwLyAqgpz_3(;tjY7`ZI4~trtjzR)Dl1 z;*>TsPmt1k8^oG&s6Uvxl; zfF1K+z-eMceT$;2KeZU0q2*n*j)r0T8STziq+%tHC7uX=KNt*9}>PHBAvz3KH;5cn^)teC%c?pvFSt*s;1$`^NcC>cha z%jcuPYV!^)zeJL+1j|9K#+m;-Cz$!Sl7*~>AA^^gSsnTYnb>dk#g~MwCpbcYmm~wtz~v($IvMqc47@z&k2#@D5tlwUrERZv6zhHAI}NW5%so)@}VFG4A2R0hSFNlTbV3F>S7e z{uw?e@VXD70g;!4MUk((i~rq<$5{!rm^)=ebK_>5_H{f_x_Hs@;TM0!Q9%uFL>1 zKR6A>7m#efOlS<}d3~?>y6?86Z2bFpds}Eua!NukC%0l#MT-o_jZq|n^yVb1B=vIi z;?}sxs~f(qAE8LG?LjyV9%P@F`t1eyRaI$T4RHs zB?+l8uXlxlA+NsMU=*R8UJ@n|Xn0d|d(GeQPJc>$ zQ0_ujBgeV|%Al8^gxE$z5BB9zbB2ikEh9+@Ga(7NV~%w(8cBN?jklwyj76I$;30?t zJM|1SXA6UzU&&-4n&p{LU3Uhx>Ddmmss%atb;TNj%3BlRdAp<++K6Zn#LCXQOdSGe z1qv!i;ee=rjxGb9D=6<|KO*K|uzb=W2m*>=p zt&x|MYse#A>a~5y&r9j*U|;S5%hYf4580>5{2!|hv3o%Usfo+aTNqoQ`*2pNRnJcA zxl~(F-)j12!3^I@zxAqi3(MkVY_8Dk$i6jj8SK9mqN1Y68Ihdvq1Y>pq?lE7!+h8D z23`O-R`Qd3(aF6WlGDzrj8D0T)MCo(jF7|ARKxF)XGMg3KX$Y{WKv!M(xn!*zje5_ z`NjZu79-g$?v#+J!NyM8WI-{e@`Fy-t7uC!3fa^;XZ{bcDYVNSp%LKvIIY`iFbHk% zQDzr|<7hKj9%gk+BCy12&Q?%%a&NBT;0stqS^e&$Qx5=$#lkJ}W;61Mwd?8v(>eMs zzz>3JPN)%jk313MI%W$PEF-yB1&n(?CmG!;S3xSFeG)}nJ};2@NODs!47+vBsxIYi zFQ*pFA`Sd~v0$6n^oyT0py0s$Gy0q_JoWrN%P+k-IM`$qw*N*uFfr!@3mq)4qGYpA dqf|ul@BCFoXVRpK=7B%Q4jUdyK4^XSe*vx1;)nnM literal 0 HcmV?d00001 From cb4d130edc66757a11cbadbe59cbe59147b6003b Mon Sep 17 00:00:00 2001 From: fenos Date: Tue, 13 Dec 2022 10:45:48 +0000 Subject: [PATCH 37/92] docs: storage lw6 --- apps/docs/pages/guides/storage/cdn.mdx | 7 +++- .../pages/guides/storage/image-resizing.mdx | 42 +++++++++++++++++++ 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/apps/docs/pages/guides/storage/cdn.mdx b/apps/docs/pages/guides/storage/cdn.mdx index e54a8d3df4e..bac2f3d9fc4 100644 --- a/apps/docs/pages/guides/storage/cdn.mdx +++ b/apps/docs/pages/guides/storage/cdn.mdx @@ -30,11 +30,12 @@ For example, you can use a URL like `/storage/v1/object/sign/profile-pictures/ca When you want to update the cat picture, you can increment the version query parameter in the URL. The CDN treats `/storage/v1/object/sign/profile-pictures/cat.jpg?token=eyJh...&version=2` as a new object and pings the origin for the updated version. +If your asset is updated frequently, we recommend that you re-upload the new asset in a different key, this way you'll always have the latest changes available immediately. + Note that CDNs might still evict your object from their cache if it has not been requested for a while from a specific region. For example, if no user from United States requests your object, it will be removed from the CDN cache even if you set a very long cache control duration. The cache status of a particular request is sent in the `cf-cache-status` header. A cache status of `MISS` indicates that the CDN node did not have the object in its cache and had to ping the origin to get it. A cache status of `HIT` indicates that the object was sent directly from the CDN. - ## Smart CDN Caching @@ -54,7 +55,9 @@ It can take **up to 60 seconds** for the CDN cache to be invalidated as it has t When an asset is invalidated at the CDN level, it doesn't affect browser caching. If you don't see the changes, make sure the browser cache has been updated. -If your asset is updated frequently, we recommend setting a low browser TTL value using the `cacheControl` option when using smart CDN caching. + +If your asset is updated frequently, we recommend that you re-upload the new asset in a different key, this way you'll always have the latest changes available without waiting the propagation delay. +If your expect your asset to be deleted, we recommend setting a low browser TTL value using the `cacheControl` option when using smart CDN caching, the default is 1hour which generally is a good default. ## Public vs Private Buckets diff --git a/apps/docs/pages/guides/storage/image-resizing.mdx b/apps/docs/pages/guides/storage/image-resizing.mdx index cdfbfd3a729..10cc6eef6e3 100644 --- a/apps/docs/pages/guides/storage/image-resizing.mdx +++ b/apps/docs/pages/guides/storage/image-resizing.mdx @@ -59,6 +59,48 @@ supabase.storage.from('bucket').download('image.jpg', { }) ``` +## Next JS Loader + +You can use Supabase Image Transformation to optimise your NextJS images using a custom [Loader](https://nextjs.org/docs/api-reference/next/image#loader-configuration). + +To get started, create a `supabase-image-loader.js` file in your NextJS project which exports a default function: + +```ts +const projectId = '' // your supabase project id + +export default function supabaseLoader({ src, width, height, quality }) { + return `https://${projectId}.supabase.co/storage/v1/${src}?width=${width}&height=${height || 0}&quality=${quality || 75}` +} +``` + +In your `nextjs.config.js` file add the following configuration to instruct NextJS to use our custom loader + +```js +module.exports = { + images: { + loader: 'custom', + loaderFile: './supabase-image-loader.js', + }, +} +``` + +At this point you are ready to use the `Image` component provided by NextJS + +```tsx +import Image from 'next/image' + +const MyImage = (props) => { + return ( + Picture of the author + ) +} +``` + ## Transformation options We currently support a few transformation options focusing on resizing and cropping images. From 6a1049e5ce5242ebfdf3432bf8877fae2876045f Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Tue, 13 Dec 2022 18:49:26 +0800 Subject: [PATCH 38/92] remove hasOwn() usage --- .../components/Navigation/NavigationMenu/HomeMenu.tsx | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/apps/docs/components/Navigation/NavigationMenu/HomeMenu.tsx b/apps/docs/components/Navigation/NavigationMenu/HomeMenu.tsx index cab8dcce1d4..f21d6eac986 100644 --- a/apps/docs/components/Navigation/NavigationMenu/HomeMenu.tsx +++ b/apps/docs/components/Navigation/NavigationMenu/HomeMenu.tsx @@ -67,6 +67,7 @@ const home = [ { label: 'Integrations', icon: '/img/icons/menu/integrations', + hasLightIcon: true, href: '/guides/integrations', level: 'integrations', }, @@ -78,14 +79,12 @@ const home = [ { label: 'JavaScript', icon: '/img/icons/menu/reference-javascript', - hasLightIcon: true, href: '/reference/javascript/introduction', level: 'reference_javascript', }, { label: 'Flutter', icon: '/img/icons/menu/reference-dart', - hasLightIcon: true, href: '/reference/dart/introduction', level: 'reference_dart', }, @@ -95,14 +94,12 @@ const home = [ { label: 'Management API', icon: '/img/icons/menu/reference-api', - hasLightIcon: true, href: '/reference/api/introduction', level: 'reference_javascript', }, { label: 'Supabase CLI', icon: '/img/icons/menu/reference-cli', - hasLightIcon: true, href: '/reference/cli/introduction', level: 'reference_javascript', }, @@ -158,11 +155,7 @@ const NavigationMenuHome = () => { {link.label} Date: Tue, 13 Dec 2022 11:30:53 +0000 Subject: [PATCH 39/92] adding in new docs .env.local step --- DEVELOPERS.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/DEVELOPERS.md b/DEVELOPERS.md index 9d769ccb70e..e80350d03d3 100644 --- a/DEVELOPERS.md +++ b/DEVELOPERS.md @@ -8,6 +8,7 @@ - [Running turborepo](#running-turborepo) - [Shared components](#shared-components) - [Installing packages](#installing-packages) + - [New Supabase Docs](#new-supabase-docs) 3. [Create a pull request](#create-a-pull-request) - [Common tasks](#common-tasks) @@ -106,6 +107,14 @@ For example: You do not need to install `devDependencies` in each workspace. These can all be installed in the root package. +#### New Supabase docs + +Following the changes to the [Supabase docs](https://supabase.com/blog/new-supabase-docs-built-with-nextjs) the following is needed to run the new docs locally: + +- Inside of `apps/docs` create a `.env.local` file with the following: `NEXT_PUBLIC_NEW_DOCS=true` + +Now when you run a local devlopment docs server you will see the new docs site. + --- ## Create a pull request From 8e8d48a39350df66a3f8d6f7fc6f8748b13f333e Mon Sep 17 00:00:00 2001 From: Ollie Halliday <22655069+Hallidayo@users.noreply.github.com> Date: Tue, 13 Dec 2022 11:36:49 +0000 Subject: [PATCH 40/92] changed content link grammar --- DEVELOPERS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEVELOPERS.md b/DEVELOPERS.md index e80350d03d3..0281b1b0bd7 100644 --- a/DEVELOPERS.md +++ b/DEVELOPERS.md @@ -8,7 +8,7 @@ - [Running turborepo](#running-turborepo) - [Shared components](#shared-components) - [Installing packages](#installing-packages) - - [New Supabase Docs](#new-supabase-docs) + - [New Supabase docs](#new-supabase-docs) 3. [Create a pull request](#create-a-pull-request) - [Common tasks](#common-tasks) From 44065bcfeac81dce8034c6fa7a87bbd4de2d662a Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Tue, 13 Dec 2022 20:08:51 +0800 Subject: [PATCH 41/92] fix mobile menu --- apps/docs/hooks/useMenuState.ts | 1 + apps/docs/layouts/SiteLayout.tsx | 7 +++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/docs/hooks/useMenuState.ts b/apps/docs/hooks/useMenuState.ts index ed1818bd4d8..760796e1244 100644 --- a/apps/docs/hooks/useMenuState.ts +++ b/apps/docs/hooks/useMenuState.ts @@ -9,6 +9,7 @@ export const menuState = proxy({ }, menuLevelId: '', setMenuLevelId: (value) => { + menuState.menuMobileOpen = false menuState.menuLevelId = value }, menuMobileOpen: false, diff --git a/apps/docs/layouts/SiteLayout.tsx b/apps/docs/layouts/SiteLayout.tsx index c4f01f01efd..c6ef90060d3 100644 --- a/apps/docs/layouts/SiteLayout.tsx +++ b/apps/docs/layouts/SiteLayout.tsx @@ -7,7 +7,7 @@ import TopNavBarRef from '~/components/Navigation/NavigationMenu/TopNavBarRef' import FooterHelpCallout from '~/components/FooterHelpCallout' -import { menuState } from '~/hooks/useMenuState' +import { menuState, useMenuLevelId, useMenuMobileOpen } from '~/hooks/useMenuState' import { useEffect } from 'react' const SiteRefLayout = ({ children }) => { @@ -23,9 +23,8 @@ const SiteRefLayout = ({ children }) => { } }, []) - const menuLevel = 'home' - // useMenuLevelId() - const mobileMenuOpen = false + const menuLevel = useMenuLevelId() + const mobileMenuOpen = useMenuMobileOpen() const levelsData = { home: { From 71857411cb05e038b34ff9e5d6c8af813fadfdf6 Mon Sep 17 00:00:00 2001 From: Inian Date: Tue, 13 Dec 2022 20:46:37 +0800 Subject: [PATCH 42/92] undo makefile hack --- spec/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/Makefile b/spec/Makefile index a365362f5da..b138b4d5961 100644 --- a/spec/Makefile +++ b/spec/Makefile @@ -1,6 +1,6 @@ REPO_DIR=$(shell pwd) -run: transform format +run: download transform format ############################################################################### From 8dee42f33d42b14a27046eb2fafa3b1f387e57d7 Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Tue, 13 Dec 2022 19:55:53 +0800 Subject: [PATCH 43/92] update radix portal --- package-lock.json | 863 +++++++++++++++++++++++++++------------ packages/ui/package.json | 6 +- 2 files changed, 615 insertions(+), 254 deletions(-) diff --git a/package-lock.json b/package-lock.json index a8a96a1a548..933722c4f5f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3401,6 +3401,32 @@ "npm": ">=6.0.0" } }, + "node_modules/@floating-ui/core": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.3.tgz", + "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==" + }, + "node_modules/@floating-ui/dom": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.4.tgz", + "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==", + "dependencies": { + "@floating-ui/core": "^0.7.3" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.2.tgz", + "integrity": "sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==", + "dependencies": { + "@floating-ui/dom": "^0.5.3", + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", @@ -5836,107 +5862,133 @@ } }, "node_modules/@radix-ui/react-dialog": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-0.1.7.tgz", - "integrity": "sha512-jXt8srGhHBRvEr9jhEAiwwJzWCWZoGRJ030aC9ja/gkRJbZdy0iD3FwXf+Ff4RtsZyLUMHW7VUwFOlz3Ixe1Vw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.2.tgz", + "integrity": "sha512-EKxxp2WNSmUPkx4trtWNmZ4/vAYEg7JkAfa1HKBUnaubw9eHzf1Orr9B472lJYaYz327RHDrd4R95fsw7VR8DA==", "dependencies": { "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "0.1.0", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-dismissable-layer": "0.1.5", - "@radix-ui/react-focus-guards": "0.1.0", - "@radix-ui/react-focus-scope": "0.1.4", - "@radix-ui/react-id": "0.1.5", - "@radix-ui/react-portal": "0.1.4", - "@radix-ui/react-presence": "0.1.2", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-slot": "0.1.2", - "@radix-ui/react-use-controllable-state": "0.1.0", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-dismissable-layer": "1.0.2", + "@radix-ui/react-focus-guards": "1.0.0", + "@radix-ui/react-focus-scope": "1.0.1", + "@radix-ui/react-id": "1.0.0", + "@radix-ui/react-portal": "1.0.1", + "@radix-ui/react-presence": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-slot": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.0", "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.4.0" + "react-remove-scroll": "2.5.5" }, "peerDependencies": { - "react": "^16.8 || ^17.0", - "react-dom": "^16.8 || ^17.0" + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" } }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-0.1.0.tgz", - "integrity": "sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA==", + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.2.tgz", + "integrity": "sha512-WjJzMrTWROozDqLB0uRWYvj4UuXsM/2L19EmQ3Au+IJWqwvwq9Bwd+P8ivo0Deg9JDPArR1I6MbWNi1CmXsskg==", "dependencies": { - "@babel/runtime": "^7.13.10" + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-use-callback-ref": "1.0.0", + "@radix-ui/react-use-escape-keydown": "1.0.2" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" } }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz", - "integrity": "sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==", + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-guards": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz", + "integrity": "sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==", "dependencies": { "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "react": "^16.8 || ^17.0 || ^18.0" } }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-0.1.1.tgz", - "integrity": "sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg==", + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-scope": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.1.tgz", + "integrity": "sha512-Ej2MQTit8IWJiS2uuujGUmxXjF/y5xZptIIQnyd2JHLwtV0R2j9NRVoRj/1j/gJ7e3REdaBw4Hjf4a1ImhkZcQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-use-callback-ref": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.1.tgz", + "integrity": "sha512-NY2vUWI5WENgAT1nfC6JS7RU5xRYBfjZVLq0HmgEN1Ezy3rk/UruMV4+Rd0F40PEaFC5SrLS1ixYvcYIQrb4Ig==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", + "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-use-layout-effect": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz", + "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==", "dependencies": { "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "react": "^16.8 || ^17.0 || ^18.0" } }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-0.1.5.tgz", - "integrity": "sha512-IPc4H/63bes0IZ1GJJozSEkSWcDyhNGtKFWUpJ+XtaLyQ1X3x7Mf6fWwWhDcpqlYEP+5WtAvfqcyEsyjP+ZhBQ==", + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.2.tgz", + "integrity": "sha512-DXGim3x74WgUv+iMNCF+cAo8xUHHeqvjx8zs7trKf+FkQKPQXLk2sX7Gx1ysH7Q76xCpZuxIJE7HLPxRE+Q+GA==", "dependencies": { "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "0.1.0" + "@radix-ui/react-use-callback-ref": "1.0.0" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "react": "^16.8 || ^17.0 || ^18.0" } }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-0.1.4.tgz", - "integrity": "sha512-6gSl2IidySupIMJFjYnDIkIWRyQdbu/AHK7rbICPani+LW4b0XdxBXc46og/iZvuwW8pjCS8I2SadIerv84xYA==", + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", + "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "0.1.2" + "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-0.1.2.tgz", - "integrity": "sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "0.1.0" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-0.1.0.tgz", - "integrity": "sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "0.1.0" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" + "react": "^16.8 || ^17.0 || ^18.0" } }, "node_modules/@radix-ui/react-dismissable-layer": { @@ -6290,107 +6342,200 @@ } }, "node_modules/@radix-ui/react-popover": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-0.1.6.tgz", - "integrity": "sha512-zQzgUqW4RQDb0ItAL1xNW4K4olUrkfV3jeEPs9rG+nsDQurO+W9TT+YZ9H1mmgAJqlthyv1sBRZGdBm4YjtD6Q==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.2.tgz", + "integrity": "sha512-4tqZEl9w95R5mlZ/sFdgBnfhCBOEPepLIurBA5kt/qaAhldJ1tNQd0ngr0ET0AHbPotT4mwxMPr7a+MA/wbK0g==", "dependencies": { "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "0.1.0", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-dismissable-layer": "0.1.5", - "@radix-ui/react-focus-guards": "0.1.0", - "@radix-ui/react-focus-scope": "0.1.4", - "@radix-ui/react-id": "0.1.5", - "@radix-ui/react-popper": "0.1.4", - "@radix-ui/react-portal": "0.1.4", - "@radix-ui/react-presence": "0.1.2", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-use-controllable-state": "0.1.0", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-dismissable-layer": "1.0.2", + "@radix-ui/react-focus-guards": "1.0.0", + "@radix-ui/react-focus-scope": "1.0.1", + "@radix-ui/react-id": "1.0.0", + "@radix-ui/react-popper": "1.0.1", + "@radix-ui/react-portal": "1.0.1", + "@radix-ui/react-presence": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-slot": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.0", "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.4.0" + "react-remove-scroll": "2.5.5" }, "peerDependencies": { - "react": "^16.8 || ^17.0", - "react-dom": "^16.8 || ^17.0" + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" } }, - "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/primitive": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-0.1.0.tgz", - "integrity": "sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA==", + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-arrow": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz", + "integrity": "sha512-1yientwXqXcErDHEv8av9ZVNEBldH8L9scVR3is20lL+jOCfcJyMFZFEY5cgIrgexsq1qggSXqiEL/d/4f+QXA==", "dependencies": { - "@babel/runtime": "^7.13.10" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" } }, - "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-compose-refs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz", - "integrity": "sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==", + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.2.tgz", + "integrity": "sha512-WjJzMrTWROozDqLB0uRWYvj4UuXsM/2L19EmQ3Au+IJWqwvwq9Bwd+P8ivo0Deg9JDPArR1I6MbWNi1CmXsskg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-use-callback-ref": "1.0.0", + "@radix-ui/react-use-escape-keydown": "1.0.2" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-focus-guards": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz", + "integrity": "sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==", "dependencies": { "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "react": "^16.8 || ^17.0 || ^18.0" } }, - "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-context": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-0.1.1.tgz", - "integrity": "sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg==", + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-focus-scope": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.1.tgz", + "integrity": "sha512-Ej2MQTit8IWJiS2uuujGUmxXjF/y5xZptIIQnyd2JHLwtV0R2j9NRVoRj/1j/gJ7e3REdaBw4Hjf4a1ImhkZcQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-use-callback-ref": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-popper": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.1.tgz", + "integrity": "sha512-J4Vj7k3k+EHNWgcKrE+BLlQfpewxA7Zd76h5I0bIa+/EqaIZ3DuwrbPj49O3wqN+STnXsBuxiHLiF0iU3yfovw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "0.7.2", + "@radix-ui/react-arrow": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.0", + "@radix-ui/react-use-rect": "1.0.0", + "@radix-ui/react-use-size": "1.0.0", + "@radix-ui/rect": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-portal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.1.tgz", + "integrity": "sha512-NY2vUWI5WENgAT1nfC6JS7RU5xRYBfjZVLq0HmgEN1Ezy3rk/UruMV4+Rd0F40PEaFC5SrLS1ixYvcYIQrb4Ig==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-presence": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", + "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-use-layout-effect": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz", + "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==", "dependencies": { "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "react": "^16.8 || ^17.0 || ^18.0" } }, - "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-id": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-0.1.5.tgz", - "integrity": "sha512-IPc4H/63bes0IZ1GJJozSEkSWcDyhNGtKFWUpJ+XtaLyQ1X3x7Mf6fWwWhDcpqlYEP+5WtAvfqcyEsyjP+ZhBQ==", + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.2.tgz", + "integrity": "sha512-DXGim3x74WgUv+iMNCF+cAo8xUHHeqvjx8zs7trKf+FkQKPQXLk2sX7Gx1ysH7Q76xCpZuxIJE7HLPxRE+Q+GA==", "dependencies": { "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "0.1.0" + "@radix-ui/react-use-callback-ref": "1.0.0" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "react": "^16.8 || ^17.0 || ^18.0" } }, - "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-primitive": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-0.1.4.tgz", - "integrity": "sha512-6gSl2IidySupIMJFjYnDIkIWRyQdbu/AHK7rbICPani+LW4b0XdxBXc46og/iZvuwW8pjCS8I2SadIerv84xYA==", + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", + "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "0.1.2" + "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "react": "^16.8 || ^17.0 || ^18.0" } }, - "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-slot": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-0.1.2.tgz", - "integrity": "sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==", + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-use-rect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz", + "integrity": "sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==", "dependencies": { "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "0.1.0" + "@radix-ui/rect": "1.0.0" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "react": "^16.8 || ^17.0 || ^18.0" } }, - "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-use-controllable-state": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-0.1.0.tgz", - "integrity": "sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg==", + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-use-size": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz", + "integrity": "sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==", "dependencies": { "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "0.1.0" + "@radix-ui/react-use-layout-effect": "1.0.0" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/rect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.0.tgz", + "integrity": "sha512-d0O68AYy/9oeEy1DdC07bz1/ZXX+DqCskRd3i4JzLSTXwefzaepQrKjXC7aNM8lTHjFLDO0pDgaEiQ7jEk+HVg==", + "dependencies": { + "@babel/runtime": "^7.13.10" } }, "node_modules/@radix-ui/react-popper": { @@ -35626,6 +35771,19 @@ "react": ">=16.8.0" } }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/use-memo-one": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", @@ -37316,10 +37474,10 @@ "@radix-ui/react-accordion": "^0.1.5", "@radix-ui/react-collapsible": "^0.1.5", "@radix-ui/react-context-menu": "^0.1.0", - "@radix-ui/react-dialog": "^0.1.5", + "@radix-ui/react-dialog": "^1.0.2", "@radix-ui/react-dropdown-menu": "^0.1.4", - "@radix-ui/react-popover": "^0.1.0", - "@radix-ui/react-portal": "^0.1.3", + "@radix-ui/react-popover": "^1.0.2", + "@radix-ui/react-portal": "^1.0.1", "@radix-ui/react-tabs": "^0.1.0", "@tailwindcss/forms": "^0.4.0", "@tailwindcss/typography": "^0.5.0", @@ -37415,6 +37573,55 @@ "react": "^16.8 || ^17.0" } }, + "packages/ui/node_modules/@radix-ui/react-portal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.1.tgz", + "integrity": "sha512-NY2vUWI5WENgAT1nfC6JS7RU5xRYBfjZVLq0HmgEN1Ezy3rk/UruMV4+Rd0F40PEaFC5SrLS1ixYvcYIQrb4Ig==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "packages/ui/node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz", + "integrity": "sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "packages/ui/node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz", + "integrity": "sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "packages/ui/node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz", + "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, "packages/ui/node_modules/@radix-ui/react-primitive": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-0.1.4.tgz", @@ -39707,6 +39914,28 @@ "integrity": "sha512-8YXBE2ZcU/pImVOHX7MWrSR/X5up7t6rPWZlk34RwZEcdr3ua6X+32pSd6XuOQRN+vbuvYNfA6iey8NbrjuMFQ==", "dev": true }, + "@floating-ui/core": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.3.tgz", + "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==" + }, + "@floating-ui/dom": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.4.tgz", + "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==", + "requires": { + "@floating-ui/core": "^0.7.3" + } + }, + "@floating-ui/react-dom": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.2.tgz", + "integrity": "sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==", + "requires": { + "@floating-ui/dom": "^0.5.3", + "use-isomorphic-layout-effect": "^1.1.1" + } + }, "@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", @@ -41516,86 +41745,102 @@ } }, "@radix-ui/react-dialog": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-0.1.7.tgz", - "integrity": "sha512-jXt8srGhHBRvEr9jhEAiwwJzWCWZoGRJ030aC9ja/gkRJbZdy0iD3FwXf+Ff4RtsZyLUMHW7VUwFOlz3Ixe1Vw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.2.tgz", + "integrity": "sha512-EKxxp2WNSmUPkx4trtWNmZ4/vAYEg7JkAfa1HKBUnaubw9eHzf1Orr9B472lJYaYz327RHDrd4R95fsw7VR8DA==", "requires": { "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "0.1.0", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-dismissable-layer": "0.1.5", - "@radix-ui/react-focus-guards": "0.1.0", - "@radix-ui/react-focus-scope": "0.1.4", - "@radix-ui/react-id": "0.1.5", - "@radix-ui/react-portal": "0.1.4", - "@radix-ui/react-presence": "0.1.2", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-slot": "0.1.2", - "@radix-ui/react-use-controllable-state": "0.1.0", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-dismissable-layer": "1.0.2", + "@radix-ui/react-focus-guards": "1.0.0", + "@radix-ui/react-focus-scope": "1.0.1", + "@radix-ui/react-id": "1.0.0", + "@radix-ui/react-portal": "1.0.1", + "@radix-ui/react-presence": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-slot": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.0", "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.4.0" + "react-remove-scroll": "2.5.5" }, "dependencies": { - "@radix-ui/primitive": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-0.1.0.tgz", - "integrity": "sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA==", + "@radix-ui/react-dismissable-layer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.2.tgz", + "integrity": "sha512-WjJzMrTWROozDqLB0uRWYvj4UuXsM/2L19EmQ3Au+IJWqwvwq9Bwd+P8ivo0Deg9JDPArR1I6MbWNi1CmXsskg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-use-callback-ref": "1.0.0", + "@radix-ui/react-use-escape-keydown": "1.0.2" + } + }, + "@radix-ui/react-focus-guards": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz", + "integrity": "sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==", "requires": { "@babel/runtime": "^7.13.10" } }, - "@radix-ui/react-compose-refs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz", - "integrity": "sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==", + "@radix-ui/react-focus-scope": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.1.tgz", + "integrity": "sha512-Ej2MQTit8IWJiS2uuujGUmxXjF/y5xZptIIQnyd2JHLwtV0R2j9NRVoRj/1j/gJ7e3REdaBw4Hjf4a1ImhkZcQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-use-callback-ref": "1.0.0" + } + }, + "@radix-ui/react-portal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.1.tgz", + "integrity": "sha512-NY2vUWI5WENgAT1nfC6JS7RU5xRYBfjZVLq0HmgEN1Ezy3rk/UruMV4+Rd0F40PEaFC5SrLS1ixYvcYIQrb4Ig==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.1" + } + }, + "@radix-ui/react-presence": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", + "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-use-layout-effect": "1.0.0" + } + }, + "@radix-ui/react-use-callback-ref": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz", + "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==", "requires": { "@babel/runtime": "^7.13.10" } }, - "@radix-ui/react-context": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-0.1.1.tgz", - "integrity": "sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg==", + "@radix-ui/react-use-escape-keydown": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.2.tgz", + "integrity": "sha512-DXGim3x74WgUv+iMNCF+cAo8xUHHeqvjx8zs7trKf+FkQKPQXLk2sX7Gx1ysH7Q76xCpZuxIJE7HLPxRE+Q+GA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.0" + } + }, + "@radix-ui/react-use-layout-effect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", + "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", "requires": { "@babel/runtime": "^7.13.10" } - }, - "@radix-ui/react-id": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-0.1.5.tgz", - "integrity": "sha512-IPc4H/63bes0IZ1GJJozSEkSWcDyhNGtKFWUpJ+XtaLyQ1X3x7Mf6fWwWhDcpqlYEP+5WtAvfqcyEsyjP+ZhBQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "0.1.0" - } - }, - "@radix-ui/react-primitive": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-0.1.4.tgz", - "integrity": "sha512-6gSl2IidySupIMJFjYnDIkIWRyQdbu/AHK7rbICPani+LW4b0XdxBXc46og/iZvuwW8pjCS8I2SadIerv84xYA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "0.1.2" - } - }, - "@radix-ui/react-slot": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-0.1.2.tgz", - "integrity": "sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "0.1.0" - } - }, - "@radix-ui/react-use-controllable-state": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-0.1.0.tgz", - "integrity": "sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "0.1.0" - } } } }, @@ -41883,85 +42128,154 @@ } }, "@radix-ui/react-popover": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-0.1.6.tgz", - "integrity": "sha512-zQzgUqW4RQDb0ItAL1xNW4K4olUrkfV3jeEPs9rG+nsDQurO+W9TT+YZ9H1mmgAJqlthyv1sBRZGdBm4YjtD6Q==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.2.tgz", + "integrity": "sha512-4tqZEl9w95R5mlZ/sFdgBnfhCBOEPepLIurBA5kt/qaAhldJ1tNQd0ngr0ET0AHbPotT4mwxMPr7a+MA/wbK0g==", "requires": { "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "0.1.0", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-dismissable-layer": "0.1.5", - "@radix-ui/react-focus-guards": "0.1.0", - "@radix-ui/react-focus-scope": "0.1.4", - "@radix-ui/react-id": "0.1.5", - "@radix-ui/react-popper": "0.1.4", - "@radix-ui/react-portal": "0.1.4", - "@radix-ui/react-presence": "0.1.2", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-use-controllable-state": "0.1.0", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-dismissable-layer": "1.0.2", + "@radix-ui/react-focus-guards": "1.0.0", + "@radix-ui/react-focus-scope": "1.0.1", + "@radix-ui/react-id": "1.0.0", + "@radix-ui/react-popper": "1.0.1", + "@radix-ui/react-portal": "1.0.1", + "@radix-ui/react-presence": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-slot": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.0", "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.4.0" + "react-remove-scroll": "2.5.5" }, "dependencies": { - "@radix-ui/primitive": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-0.1.0.tgz", - "integrity": "sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA==", + "@radix-ui/react-arrow": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz", + "integrity": "sha512-1yientwXqXcErDHEv8av9ZVNEBldH8L9scVR3is20lL+jOCfcJyMFZFEY5cgIrgexsq1qggSXqiEL/d/4f+QXA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.1" + } + }, + "@radix-ui/react-dismissable-layer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.2.tgz", + "integrity": "sha512-WjJzMrTWROozDqLB0uRWYvj4UuXsM/2L19EmQ3Au+IJWqwvwq9Bwd+P8ivo0Deg9JDPArR1I6MbWNi1CmXsskg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-use-callback-ref": "1.0.0", + "@radix-ui/react-use-escape-keydown": "1.0.2" + } + }, + "@radix-ui/react-focus-guards": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz", + "integrity": "sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==", "requires": { "@babel/runtime": "^7.13.10" } }, - "@radix-ui/react-compose-refs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz", - "integrity": "sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==", + "@radix-ui/react-focus-scope": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.1.tgz", + "integrity": "sha512-Ej2MQTit8IWJiS2uuujGUmxXjF/y5xZptIIQnyd2JHLwtV0R2j9NRVoRj/1j/gJ7e3REdaBw4Hjf4a1ImhkZcQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-use-callback-ref": "1.0.0" + } + }, + "@radix-ui/react-popper": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.1.tgz", + "integrity": "sha512-J4Vj7k3k+EHNWgcKrE+BLlQfpewxA7Zd76h5I0bIa+/EqaIZ3DuwrbPj49O3wqN+STnXsBuxiHLiF0iU3yfovw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "0.7.2", + "@radix-ui/react-arrow": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.0", + "@radix-ui/react-use-rect": "1.0.0", + "@radix-ui/react-use-size": "1.0.0", + "@radix-ui/rect": "1.0.0" + } + }, + "@radix-ui/react-portal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.1.tgz", + "integrity": "sha512-NY2vUWI5WENgAT1nfC6JS7RU5xRYBfjZVLq0HmgEN1Ezy3rk/UruMV4+Rd0F40PEaFC5SrLS1ixYvcYIQrb4Ig==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.1" + } + }, + "@radix-ui/react-presence": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", + "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-use-layout-effect": "1.0.0" + } + }, + "@radix-ui/react-use-callback-ref": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz", + "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==", "requires": { "@babel/runtime": "^7.13.10" } }, - "@radix-ui/react-context": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-0.1.1.tgz", - "integrity": "sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg==", + "@radix-ui/react-use-escape-keydown": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.2.tgz", + "integrity": "sha512-DXGim3x74WgUv+iMNCF+cAo8xUHHeqvjx8zs7trKf+FkQKPQXLk2sX7Gx1ysH7Q76xCpZuxIJE7HLPxRE+Q+GA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.0" + } + }, + "@radix-ui/react-use-layout-effect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", + "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", "requires": { "@babel/runtime": "^7.13.10" } }, - "@radix-ui/react-id": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-0.1.5.tgz", - "integrity": "sha512-IPc4H/63bes0IZ1GJJozSEkSWcDyhNGtKFWUpJ+XtaLyQ1X3x7Mf6fWwWhDcpqlYEP+5WtAvfqcyEsyjP+ZhBQ==", + "@radix-ui/react-use-rect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz", + "integrity": "sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==", "requires": { "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "0.1.0" + "@radix-ui/rect": "1.0.0" } }, - "@radix-ui/react-primitive": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-0.1.4.tgz", - "integrity": "sha512-6gSl2IidySupIMJFjYnDIkIWRyQdbu/AHK7rbICPani+LW4b0XdxBXc46og/iZvuwW8pjCS8I2SadIerv84xYA==", + "@radix-ui/react-use-size": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz", + "integrity": "sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==", "requires": { "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "0.1.2" + "@radix-ui/react-use-layout-effect": "1.0.0" } }, - "@radix-ui/react-slot": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-0.1.2.tgz", - "integrity": "sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==", + "@radix-ui/rect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.0.tgz", + "integrity": "sha512-d0O68AYy/9oeEy1DdC07bz1/ZXX+DqCskRd3i4JzLSTXwefzaepQrKjXC7aNM8lTHjFLDO0pDgaEiQ7jEk+HVg==", "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "0.1.0" - } - }, - "@radix-ui/react-use-controllable-state": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-0.1.0.tgz", - "integrity": "sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "0.1.0" + "@babel/runtime": "^7.13.10" } } } @@ -64621,10 +64935,10 @@ "@radix-ui/react-accordion": "^0.1.5", "@radix-ui/react-collapsible": "^0.1.5", "@radix-ui/react-context-menu": "^0.1.0", - "@radix-ui/react-dialog": "^0.1.5", + "@radix-ui/react-dialog": "^1.0.2", "@radix-ui/react-dropdown-menu": "^0.1.4", - "@radix-ui/react-popover": "^0.1.0", - "@radix-ui/react-portal": "^0.1.3", + "@radix-ui/react-popover": "^1.0.2", + "@radix-ui/react-portal": "^1.0.1", "@radix-ui/react-tabs": "^0.1.0", "@tailwindcss/forms": "^0.4.0", "@tailwindcss/typography": "^0.5.0", @@ -64703,6 +65017,47 @@ "@radix-ui/react-use-layout-effect": "0.1.0" } }, + "@radix-ui/react-portal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.1.tgz", + "integrity": "sha512-NY2vUWI5WENgAT1nfC6JS7RU5xRYBfjZVLq0HmgEN1Ezy3rk/UruMV4+Rd0F40PEaFC5SrLS1ixYvcYIQrb4Ig==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.1" + }, + "dependencies": { + "@radix-ui/react-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz", + "integrity": "sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.1" + }, + "dependencies": { + "@radix-ui/react-slot": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz", + "integrity": "sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0" + }, + "dependencies": { + "@radix-ui/react-compose-refs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz", + "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==", + "requires": { + "@babel/runtime": "^7.13.10" + } + } + } + } + } + } + } + }, "@radix-ui/react-primitive": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-0.1.4.tgz", @@ -65197,6 +65552,12 @@ "integrity": "sha512-fOrzIw2wstbAJuv8PC9Vg4XgwyTLEOdq4y/Z3IhVl8DAE4svRcgyEUvrEXu+BMNgMoc3YND6qLT61kkgEKXh7Q==", "requires": {} }, + "use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "requires": {} + }, "use-memo-one": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", diff --git a/packages/ui/package.json b/packages/ui/package.json index 1e1490587d6..c8e2fb7190e 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -14,10 +14,10 @@ "@radix-ui/react-accordion": "^0.1.5", "@radix-ui/react-collapsible": "^0.1.5", "@radix-ui/react-context-menu": "^0.1.0", - "@radix-ui/react-dialog": "^0.1.5", + "@radix-ui/react-dialog": "^1.0.2", "@radix-ui/react-dropdown-menu": "^0.1.4", - "@radix-ui/react-popover": "^0.1.0", - "@radix-ui/react-portal": "^0.1.3", + "@radix-ui/react-popover": "^1.0.2", + "@radix-ui/react-portal": "^1.0.1", "@radix-ui/react-tabs": "^0.1.0", "@tailwindcss/forms": "^0.4.0", "@tailwindcss/typography": "^0.5.0", From 7a89758f67b14f2d1173e90731d2f1cceb094892 Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Tue, 13 Dec 2022 20:02:42 +0800 Subject: [PATCH 44/92] Update Popover.tsx --- packages/ui/src/components/Popover/Popover.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/ui/src/components/Popover/Popover.tsx b/packages/ui/src/components/Popover/Popover.tsx index 9cc6547c5db..9a3280f9de6 100644 --- a/packages/ui/src/components/Popover/Popover.tsx +++ b/packages/ui/src/components/Popover/Popover.tsx @@ -75,7 +75,6 @@ function Popover({ align={align} className={classes.join(' ')} style={style} - portalled={portalled} > {arrow && ( Date: Tue, 13 Dec 2022 13:51:21 +0100 Subject: [PATCH 45/92] Adds the blog post --- ...-12-13-storage-image-reising-smart-cdn.mdx | 209 ++++++++++++++++++ apps/www/lib/authors.json | 7 + 2 files changed, 216 insertions(+) create mode 100644 apps/www/_blog/2022-12-13-storage-image-reising-smart-cdn.mdx diff --git a/apps/www/_blog/2022-12-13-storage-image-reising-smart-cdn.mdx b/apps/www/_blog/2022-12-13-storage-image-reising-smart-cdn.mdx new file mode 100644 index 00000000000..3eb84404b53 --- /dev/null +++ b/apps/www/_blog/2022-12-13-storage-image-reising-smart-cdn.mdx @@ -0,0 +1,209 @@ +--- +title: 'Supabase Storage v2: Image resizing and Smart CDN' +description: "We're introducing three new features for Supabase Storage: Image resizing, webhooks, and a Smart CDN." +author: fabrizio,inian +image: lw6-day-1/lw6-day1-docs.jpg +thumb: lw6-day-1/lw6-day1-docs.jpg +tags: + - launch-week +date: '2022-12-12' +toc_depth: 3 +youtubeHero: https://www.youtube-nocookie.com/embed/Q1Amk6iDlF8 +--- + +Today we're introducing three new features for Supabase Storage: Image resizing, webhooks, and a Smart CDN. + +These features are designed to work together to deliver a next-gen image resizing system. Let's explore how it works. + +

+ +## Image resizing + +Image resizing has been a popular request since we released Supabase Storage. For good reason - if you're providing an image upload function to your users, you can't expect them to optimize the images before uploading. + +Supabase developers have been hacking together all sorts of workarounds using client-side compression, or external providers like Cloudinary and Imgix. + +Today's release changes that. Resizing is now as easy as adding a few lines of code: + +```js +supabase.storage.from('bucket').getPublicUrl('image.jpg', { + transform: { + width: 500, + height: 600, + }, +}) +``` + +### Choosing a resizer + +Supabase Storage uses [imgproxy](https://github.com/imgproxy/imgproxy). As usual, we assessed various open source tools available, including [Imaginary](https://github.com/h2non/imaginary) (MIT) and [Sharp](https://github.com/lovell/sharp) (Apache2). + +All of these have very friendly open source licenses for self-hosting, so ultimately it came down to features and performance. + +While Imaginary doesn't support some modern image formats yet (like AVIF), Sharp and imgproxy are both very feature-complete and well-maintained + +In a head-to-head benchmark, we found the performance to be almost identical, with the deciding factor instead coming down to resources. + +### Developer Experience + +We spent a long time considering what a good developer experience would be for image resizing. + +![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6e7895c7-26c9-4e1a-a315-d047c246ce19/Untitled.png) + +We landed on a simple, on-demand interface. Downloading a resized image in JavaScript looks like this: + +```jsx +supabase.storage.from('bucket').download('image.jpg', { + transform: { + width: 800, + height: 300, + resize: 'contain', // 'contain' | 'cover' | 'fill' + }, +}) +``` + +Or you can make a direct request to the Storage API (see `width` and `height` params): + +```bash +GET https://project_id.supabase.co/storage/v1/render/image/public/bucket/image.jpg?width=500&height=600 +``` + +If you've never used a resizing service before, you might be interested to learn that there are various approaches. Some services require you to resize your images “server side” before you can download them in the browser. Other services allow you to resize directly from the client. We opted for this client-based approach. It feels more developer friendly. + +We might _additionally_ launch server-side presets as we add transformations because they provide a good DX for chaining multiple transformations (resize, rotate, and watermark for example). With server-side presets, transformations can be bundled together into a single command - `?preset=profile` instead of adding `?width=200&rotate=90&watermark=image` to all your image URLs. + +Behind the scenes, we've provided a few small niceties: + +- **No footguns:** an image will never be resized bigger than original dimensions (even if the user specifies larger dimensions) +- **Sane defaults:** default mode maintains aspect ratio and the resize mode is `fill` +- **Standardization**: resize modes mirror the [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) property of CSS. We support the contain, cover and fill modes. + +## Smart CDN + +Resizing images can get expensive, so before this release we knew we needed a better caching system. We already provide a “basic” CDN for all projects (including Free-tier), so the important update here is some smarter cache invalidation whenever there are changes. + +![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/62953cea-f5ef-4331-b621-ce17296cf94e/Untitled.png) + +Our Basic CDN works by adding a 1-hour cache header to every request. After this header expires, we re-check the origin (S3), to see if an image is still available. This parameter is configurable (for example, you can make it one day, or one year). + +This approach introduces the possibility of a “stale” image. If you update an image in S3, users will continue to see the old, stale image for one hour. Similarly for deleted images - the cache will continue serving the deleted image until the cache expires. + +With this release we're introducing a Smart CDN. Whenever you update or delete an image, the cache will be busted within 60 seconds - for every region in the world. + +As a developer, you no longer need to worry about adjusting your cache parameters - the cache “just works”. + +If you're interested in _how_ the cache works, see the deep-dive later in this blog post. + +## Webhooks + Rate-limiting + +As a “pre-release”, we've added webhooks and rate-limiting to the Storage API. We haven't exposed these parameters on our platform yet, but they are coming soon. + +If you're self-hosting then you can use them today. It's as simple as enabling a few environment variables. + +The webhook events we added are: + +```bash +ObjectCreated:Post # A new object is created +ObjectCreated:Put # A new object is updated +ObjectCreated:Copy # An object is duplicated +ObjectCreated:Move # An object is created as part of a move operation +ObjectRemoved:Delete # An object is deleted +ObjectRemoved:Move # An object is deleted as part of a move operation +ObjectUpdated:Metadata # An object's metadata is updated +``` + +## Smart CDN Deep Dive + +Let's put everything together to see how the new Smart CDN works with Imgproxy. + +Some developers have a high “resize” workload, and some have a high “read” workload. This means that there are different scaling requirements for every developer. As a result, we kept the image resizer and the Storage API as two separate containers. This allows them to scale independently depending on your workload. + +Let's step through a few different flows to see how it all works: + +- Cache miss: the image has never been resized +- Cache hit: the image has been resized and is stored in the cache +- Cache refresh: an image is updated/deleted and the CDN needs to be updated + +### Cache miss + +Let's imagine one of your users makes a request for a resized cat (kitten?) image in your application. Here's the flow: + +![Image resizing.jpg](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/54f10302-4736-4072-b83a-85fb1f2bb5ae/Image_resizing.jpg) + +1. The request hits our globally-distributed API Gateway. This gateway reads the image metadata from a global KV store (this metadata is created when the image was uploaded). +2. Inside the image metadata is a Cache Key - this is comprised of an [Etag](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag) + tenant ID + bucketname + image name. The Gateway tries to find a cached object in our CDN using the Cache Key. If the image has never been accessed, it is a “Cache miss”. +3. The request falls back to the Storage server. Because this is a resize request, it is forwards a short-lived S3 URL to Imgproxy. +4. Imgproxy resizes the image and returns it to the Storage Server which in then returns it to the API Gateway, with stores it in the Cache (which means that the next time the Etag is checked, the result will return directly from the cache). + +### Cache hit + +The cat image goes viral, and so now multiple users want to see the resized image. + +![Image resizing-1.jpg](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/733f8cca-84b8-4aa7-bdf9-3ecc5fb368dd/Image_resizing-1.jpg) + +1. The request hits our globally-distributed API Gateway. This gateway reads the image metadata from a global KV store. +2. Using the Cache Key the Gateway tries to find a cached object in our CDN. Because this image has already been resized, it returns it directly from the cache. + +### Cache refresh + +To complete this architecture, we need to keep the global KV store (which stores the image metadata) synchronized whenever an image is changed. To avoid coupling any CDN-specific logic into the Storage server, we added Webhooks that publish events for every object created, updated and deleted. + +Using our cat picture from above: + +![Image resizing-2.jpg](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/da9e15a2-3792-47be-a747-c9f32fa51ba7/Image_resizing-2.jpg) + +1. You update the cat picture to a dog picture. This triggers an `ObjectCreated:Put` event from the Supabase Storage server. +2. A cache manager service subscribes to these events and updates the global metadata store with the new Etag. This takes around 60 seconds to propagate globally. +3. The next time there is a request for the resized image, it will be a cache miss. + +Most CDNs offer this functionality “natively”. However there is usually a hard-limit to the number of daily cache purges. This implementation gives us greater control over when the cache is cleared. + +### The impact + +Besides solving issues with stale data, one of the biggest benefits this architecture offers is higher cache hits. Why is that important? Because image resizing is slow. Every cache miss is increased latency for your users. + +![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a96e7bfa-f8cf-4ecd-8ac2-7c4ce12f8df1/Untitled.png) + +![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/58d197c6-81b4-4cf2-9fcf-43267ef50e9a/Untitled.png) + +The green line here shows the number of cache hits to our CDN. As you can see, when we enabled the Smart CDN, the number of requests cache hits increased significantly (which means faster cat images). + +## Availability and Pricing + +Image Resizing is in Beta. While in Beta it is only enabled for Pro-tier and Enterprise customers. + +When choosing a pricing model there were a few options that competitors offered: + +- Pay for every transformation, but don't pay for a CDN hit +- Don't pay for transformations, but pay for every request (even if it's a CDN hit) + +We tried to find a middle ground, where you pay for the number of images you want to transform rather than the number of transformations: + +- You can transform 100 images per project, at no additional cost. Beyond this, it is $5 per additional 1000 images transformed. +- Each image can be transformed up to 20 times. This is based on fair-usage. If you exceed the limit, we won't return an error and your site will continue to function (but you will get a sternly-worded email from [@AntWilson](https://twitter.com/AntWilson)). + +Of course, all of this functionality is free in the self-hosting setup too. You can self-host the Storage API either as a standalone service or as part of the Supabase stack. + +For local development, this is available in our CLI from v1.23.0. + +Upgrade to supabase-js v2.2.0. + +## Coming soon + +A few features to look out for in the future: + +- **Webhooks**: we'll expose all Storage webhooks and events so that you can consume them from your own services. +- **More Transformations**: quality, rotate, blur? Cast your vote on this GitHub Discussion. +- **Integrations**: Native integration with [next/image](https://nextjs.org/docs/api-reference/next/image) and [Edge Functions](https://supabase.com/edge-functions) for advanced transformations. + +## Getting started + +[Upgrade to Pro](https://supabase.com/pricing) to get started with Image Resizing today. + +- Check out the Docs for [Image Resizing](https://supabase.com/docs/guides/storage/image-resizing). +- Check out the Docs for the [Storage CDN](https://supabase.com/docs/guides/storage/cdn). +- Get Started today with the [JavaScript](https://supabase.com/docs/reference/javascript/storage-from-download) and [Dart](https://supabase.com/docs/reference/dart/storage-from-list) client libraries. diff --git a/apps/www/lib/authors.json b/apps/www/lib/authors.json index b847042a07b..1f2a6e5fead 100644 --- a/apps/www/lib/authors.json +++ b/apps/www/lib/authors.json @@ -243,5 +243,12 @@ "position": "Engineering", "author_url": "https://github.com/mildtomato", "author_image_url": "https://github.com/mildtomato.png" + }, + { + "author_id": "fabrizio", + "author": "Fabrizio Fenoglio", + "position": "Engineering", + "author_url": "https://github.com/fenos", + "author_image_url": "https://github.com/fenos.png" } ] From 43bce779cc3930e2515ad45db852a820b28145de Mon Sep 17 00:00:00 2001 From: Alaister Young Date: Tue, 13 Dec 2022 23:56:00 +1100 Subject: [PATCH 46/92] fix: hide sign in screen when not on platform (#10810) --- .../layouts/AccountLayout/AccountLayout.tsx | 30 +++++++------ .../layouts/SignInLayout/SignInLayout.tsx | 45 ++++++++++--------- studio/hooks/misc/withAuth.tsx | 14 +++--- studio/pages/sign-in.tsx | 17 +++++-- 4 files changed, 63 insertions(+), 43 deletions(-) diff --git a/studio/components/layouts/AccountLayout/AccountLayout.tsx b/studio/components/layouts/AccountLayout/AccountLayout.tsx index 841e5794c5c..76cfacfab2e 100644 --- a/studio/components/layouts/AccountLayout/AccountLayout.tsx +++ b/studio/components/layouts/AccountLayout/AccountLayout.tsx @@ -108,18 +108,22 @@ const AccountLayout: FC = ({ children, title, breadcrumbs }) => { }, ], }, - { - key: 'logout-link', - links: [ - { - key: `logout`, - icon: '/icons/feather/power.svg', - label: 'Logout', - href: undefined, - onClick: onClickLogout, - }, - ], - }, + ...(IS_PLATFORM + ? [ + { + key: 'logout-link', + links: [ + { + key: `logout`, + icon: '/icons/feather/power.svg', + label: 'Logout', + href: undefined, + onClick: onClickLogout, + }, + ], + }, + ] + : []), ] return ( @@ -132,7 +136,7 @@ const AccountLayout: FC = ({ children, title, breadcrumbs }) => {
{children} diff --git a/studio/components/layouts/SignInLayout/SignInLayout.tsx b/studio/components/layouts/SignInLayout/SignInLayout.tsx index 1b520c22ce1..3bc77388456 100644 --- a/studio/components/layouts/SignInLayout/SignInLayout.tsx +++ b/studio/components/layouts/SignInLayout/SignInLayout.tsx @@ -1,5 +1,6 @@ import { useStore } from 'hooks' import { usePushNext } from 'hooks/misc/useAutoAuthRedirect' +import { IS_PLATFORM } from 'lib/constants' import { auth, getReturnToPath, STORAGE_KEY } from 'lib/gotrue' import { observer } from 'mobx-react-lite' import Head from 'next/head' @@ -77,19 +78,21 @@ const SignInLayout = ({ return ( <> - -